🤖 给 AI 的参考
这是 Hearo(听见)的《交互模式与 VAD》文档,可作为开发参考。文档链接:https://hearo.apps.aisp24.com/docs/modes.md
交互模式与 VAD
三种标准交互模式 + 服务端 TEN VAD 调参
交互模式决定「谁来判断一句话的起止」。它是智能体的参数(邀请 AI 时选择),服务端是权威来源。三种标准模式:
| 模式 | 谁决定起止 | 适用 |
|---|---|---|
| ptt(按住说话) | 客户端:按下开始、松开结束 | 嘈杂环境、对讲、明确边界 |
| multi_turn(多轮对话) | 点击启动,云端 VAD 判断每句结束,自动续轮;空闲超时结束 | 问答、客服、回合式 |
| natural(自然对话) | 服务端持续判断,随时打断 | 最自然的全双工对话 |
VAD 来源(vad_source)
多轮/自然模式下,语音端点检测有两种来源:
| vad_source | 说明 | 特点 |
|---|---|---|
| server | Go Runtime 调用私有 TEN VAD sidecar | 音频留在服务内网;打断由 VAD 权威决定,换 ASR 行为一致 |
| asr | 用 ASR 自带的断句/部分结果 | 省一次 VAD 计算;打断灵敏度随 ASR 厂商不同 |
💡 自我打断 / 换 ASR 行为不一致?:用 vad_source=server。VAD 成为唯一的打断裁判,换 ASR 厂商不再改变打断;并用下面的参数过滤 TTS 回声导致的「自我打断」。
VAD 调参
| 参数 | 默认 | 说明 |
|---|---|---|
| vad_threshold | 0–1(默认 0.5) | 语音概率阈值。↑ 更不敏感、更抗回声;↓ 更灵敏 |
| vad_min_speech_ms | 120 | 触发打断所需的持续语音时长。↑ 过滤短回声/杂音,但打断略迟 |
| vad_min_silence_ms | 600 | 判定一句结束的静音时长。↑ 不易被中途截断;↓ 收尾更快 |
| vad_speech_pad_ms | 160 | 起点前保留的预卷,避免吃掉首字 |
抗「自我打断」建议
AI 自己的 TTS 声音回灌进麦克风时,VAD/ASR 会把它当成人声而打断自己。处理顺序:①在浏览器采集约束中开启回声消除(WebRTC(实验)客户端也应显式请求);②外放场景建议戴耳机;③调高 vad_threshold(0.6-0.7)与 vad_min_speech_ms(200-300)。
在演示页实时调
控制台「演示」页连上后,邀请 AI 的面板里就有模式选择与 VAD 灵敏度滑块(阈值 / 最短语音),邀请时带上、连接中还能「应用到当前对话」实时生效。对应到 智能体规格 的 vad.* 字段。
json
// 连接中实时调 VAD(通过控制消息发给智能体)
{ "type": "config",
"vad": { "source": "server", "threshold": 0.6, "min_speech_ms": 240 } }