语音听不懂:ASR 转写错误导致实体提取失败
问题现象
用户在通话里说了正确的内容(比如"我的订单号是 A12345"),智能体却说"抱歉我没听清,请再说一遍"。看 Conversations 里的原始转写,发现 ASR 把订单号识别成了 "A123456"(多了一个数字)或 "B12345"(A 和 B 发音接近)。
排查步骤
第一步:看 Conversations 里的原始转写
在 Conversations 面板里,每通语音对话都有两层文字记录:
- ASR 原始转写(灰色背景,展示 ASR 引擎直接输出的结果)
- Agent 处理后看到的文字(正常背景,可能经过后处理或 ASR Biasing 纠正)
对比两层记录:如果灰色的 ASR 原始转写已经错了,那就是 ASR 的问题;如果原始转写是对的但处理后的文字错了,那是后续环节(实体提取、LLM)的问题。
第二步:高频 ASR 错误类型和修复
| 错误类型 | 原因 | 修复 |
|---|---|---|
| 数字串识别错 | "1" / "7" / "8" 发音在噪音下容易混淆 | ASR Biasing 配 "1"、"7"、"8" 高频出现 |
| 字母和数字混淆 | "A" 和 "8"、"B" 和 "P" 发音接近 | 给特定实体类型(如账号号、确认码)配 ASR Biasing 列出合法前缀 |
| 发音相近的词 | 中文"退款"和"退钱"、英文"right"和"write" | 示例问题里覆盖变体 + ASR Biasing |
| 口音问题 | 用户有方言口音或非母语口音 | 在 Collect Step 里开启多语言 / 口音支持,或收集用户口音样本做 Biasing |
| 专有名词 | 产品型号、内部缩写、行业术语 ASR 字典里没有 | ASR Biasing 里列出所有专有名词变体 |
第三步:ASR Biasing 的配置位置
ASR Biasing 可以在三个层级配置,层级越近粒度越细:
| 层级 | 配置位置 | 适用 |
|---|---|---|
| 全局 ASR Biasing | Agent Settings → Speech → ASR Biasing | 整个智能体的通用高频词 |
| Flow 级 ASR Biasing | Flow Settings → ASR Biasing | 某个特定 Flow 里的高频词(比如预订流程里的时间段名称) |
| Collect Step 级 ASR Biasing | Collect Step 配置里 | 某个特定实体收集步骤里的高频词(最精细) |
推荐能用最细层级就用最细层级——比如只有预订 Flow 里的 Collect Time Step 里需要 Biasing "晚上八点"、"八点半",就不要配全局 Biasing。
第四步:无法解决的极端情况
如果用户口音特别重、或者环境噪音特别大:
- 在 Collect Step 的实体类型里开启模糊匹配容忍(实体提取器允许一定误差)
- 配置"请再说一遍"的重试逻辑(最多 2-3 次,再不行转人工)
- 考虑让用户输入信息(如果是网页聊天渠道),绕过语音识别
ASR Biasing 不是万能药
ASR Biasing 本质上是"告诉 ASR 引擎在识别特定词时优先匹配某些发音"——它能解决高频、可预见的 ASR 错误,但解决不了随机的、极端的音频问题(比如用户在地铁里打电话、麦克风质量极差)。遇到这种情况,最稳妥的兜底是"重试 2 次后转人工"。