ASR 语音识别:从用户说话到文字转写
ASR 在对话管道里的位置
PolyAI 的对话管道是一个四阶段流程,ASR 负责第一阶段:
用户语音 → 【ASR 识别】→ 文字转写 → 【RAG + LLM】→ 响应文本 → 【TTS 合成】→ 智能体语音回复
ASR 的输出质量直接影响后续所有环节——转写错了,RAG 就匹配不到正确话题,Flow 实体提取就可能提取错值。
Dialog-RSN-1 的音频原生架构 vs 传统 ASR
传统语音 AI 用三段式管道:
音频 → 传统 ASR(Whisper / DeepSpeech / Google ASR)→ 文字 → 通用 LLM → 响应文本 → TTS → 语音
PolyAI 的 Dialog-RSN-1 模型跳过了中间的文字层——它直接接收原始通话音频,在一个模型里同时完成:
- 回合切换判断:用户什么时候说完、什么时候在打断、什么时候在犹豫
- 语音识别:把这段音频转成文字
- 响应生成:基于识别结果和对话历史生成下一步要说的话
这个架构的优势:
- 延迟更低:省去了 ASR → 文字 → LLM 之间的两次数据传输和等待
- 打断处理更好:模型原生理解打断的语音模式,不需要额外工程
- 上下文感知更强:识别时已经看到了之前的对话历史,不容易把"yes that one"当成独立查询
公开数据显示 Dialog-RSN-1 的回合切换准确率 89.8%、词错误率(WER)约 3.7%。
ASR 结果的可见性
在 Agent Studio 里,你可以在 Conversations 面板里看到每通电话的完整转写——这个转写就是 ASR(或 Dialog-RSN-1)的输出。转写会逐行显示,包括:
- 每一句谁在说话(用户 / 智能体)
- 时间戳
- ASR 识别的文字
这是排查 ASR 问题的主要入口——如果某个实体提取总是失败,先看转写里用户说的那句话 ASR 识别成了什么,是发音问题还是模型问题。
ASR 调优:ASR Biasing(实体词偏置)
当某些词很容易被 ASR 识别错时(比如确认码、账户号、专业术语),可以通过 ASR Biasing 告诉 ASR "这些特定词出现概率更高,优先匹配"。
举个例子:如果你的业务里有一个确认码格式是 "PB-XXX"(字母 P、B 加三个数字),ASR 可能把它识别成 "CB-XXX"(P 和 C 发音接近)或 "BB-XXX"。在对应 Flow 的 Collect Step 里配置 asr_bias: ["PB-"],ASR 就会优先识别出 PB 而不是其他相近组合。
ASR Biasing 只在 Flow 的 Collect Step 里生效,不会影响整个对话的识别。