语音Agent vs 文字Agent:同源不同命的技术分野与选型地图
同样叫AI Agent,语音和文字在延迟预算、打断处理、错误恢复上完全是两套工程。拆开语音栈的7个环节,给出延迟预算表与选型决策树。
一句话结论
文字 Agent 的瓶颈是质量,语音 Agent 的瓶颈是延迟。这条差异会传导到架构的每个角落:模型选型、上下文策略、错误恢复方式全都不一样。把文字架构直接搬到电话场景,几乎必然翻车。
一条语音要过 7 道工序
| 环节 | 典型耗时 | 优化手段 |
|---|---|---|
| VAD 端点检测 | 150–400ms | 语义 VAD,不用纯能量 VAD |
| ASR 识别 | 100–300ms | 流式增量识别,不等整句 |
| 对话编排 | 300–2000ms | 小模型 + 首 token 优先 |
| 工具调用 | 200–3000ms | 预取、并行、超时降级 |
| TTS 首包 | 150–400ms | 流式合成,边生成边播 |
| 网络往返 | 50–200ms | 就近节点、WebRTC |
人对话能容忍的静默约 700ms,超过 1.2 秒用户会怀疑掉线。如果给 LLM 的预算只有 500ms,基本只剩小中模型可选,旗舰模型必须配”填充语”(“好的,我看一下”)掩护。
坑一:VAD 判停是最被低估的环节
文字里”说完了”是回车键,语音里这是猜测。三个真实问题:
- 纯能量 VAD 抢话:用户说”嗯……我觉得”后停顿,系统就插话。解法是语义加权——上下文出现”因为/然后/就是”这类连接词时,把阈值延长到 900ms。
- 背景噪音:键盘声、空调声被判成人声,需要 ASR 置信度参与判停。
- 专名后停顿:报号码”138…1234”中间的停顿不该判停,需热加载领域词表。
较稳的做法:VAD 输出”疑似结束”,再由极小分类模型或规则做二次确认,成本几乎为零。
坑二:打断不是”停播”,是状态回滚
打断真正的难点是:已经说出去的半句话,算不算进对话历史?
- 完整保留——模型以为自己说完了,下一轮基于错误前提,出现重复回答。
- 完全丢弃——用户说”不,我问的是……”,模型忘了自己说过什么,衔接生硬。
- 截断标记(推荐)——历史里记”助手说了前半句被打断”,模型能自然承接。
第 3 种只需在历史层加 interrupted: true 字段并在系统提示里解释它,30 行代码换来的体验差异。
坑三:语音里没有”重试”按钮
文字答错了用户往上翻重问成本很低;电话里用户只会沉默或骂人。所以必须有:
- 置信度追问:“您是说尾号 4412 对吗?“ASR 置信度低时主动确认,比猜错强十倍。
- 兜底话术而非兜底报错:工具超时别报”系统错误”,要说”我转人工帮您查,稍等 10 秒好吗”。
- 静默上限:连续 2 次未识别必须转人工,不能让用户在死循环里耗。
实测:加了置信度追问后,某外呼场景信息采集准确率从 82% 提到 96%,代价是通话时长多 11 秒。这笔交易通常值得。
什么时候该用语音,什么时候别用
适合:用户在移动中或双手被占用(开车、巡检);情感浓度高的沟通(关怀、投诉安抚);无障碍场景;高频短交互(预约确认、地址确认)。
别用:需要展示复杂信息(价格对比、长列表,用户记不住也听不清);精细操作(填表单、选日期);需要可回溯文本记录的确认;口音极重的多语言场景——ASR 错误会拖垮整条链路。
务实的形态是语音 + 短信/小程序混合:电话里完成意图识别和关键信息采集,复杂内容发链接。这不是妥协,是正确分工。
选型决策树
- 用户能否单手操作?不能 → 语音优先
- 交互是否以短回答为主(短于 15 秒)?否 → 语音 + 文本混合
- 有强合规留痕要求?是 → 语音必须同步转文本存档
- 并发 少于 50 路?→ 自建三段式(ASR + LLM + TTS)更可控
- 高并发且无运维团队 → 用托管语音平台,接受模型限制
最后一句实话
端到端语音大模型正在逼近,但工程坑并没有减少,只是从”拼接三段式”变成”控制端到端模型的不可控性”。只做过文字 Agent 的团队,上语音前先做 200 通真实电话灰度,把 VAD、打断、兜底三关跑通,再谈规模化。