一位客户在电话里说,他要把上一次的订金退掉。坐席系统把这句话转成文字之后,工单被派给了负责退款的同事,等到核算时才发现,客户说的是定金而不是订金,两者在合同里的处理方式并不相同。类似的偏差还出现在金额与编号上,一句三十天被听成十三天,一个字母被识别成读音相近的另一个,看上去只是转写里的小误差,落到业务流程中却可能对应到另一条规则。
团队起初的判断是语音模块不够好,换一个更大的模型就能收敛。实际排查之后,转写稿在多数情况下是对的,问题出在识别结果被直接当成了确定的输入,既没有置信度,也没有可回退的候选,后面的环节只能照着这一段文字往下走。坐席系统的语音链路通常包含降噪、分段、转写与意图识别几段,前一段的输出会成为后一段的输入,偏差也会沿着这条链路逐级放大,越靠后的环节越不容易察觉前面已经偏了。
识别结果并不总是单一的
语音识别是否给出若干候选,取决于具体的识别服务与接入配置,并非所有链路都默认返回候选词,不少接入方式只取了排在前面的一条。企业业务里恰好集中着大量近音词,定金与订金、账号与帐号、截止与截至、托运与拖运,写法相近而含义不同,仅靠上下文很难自动区分。系统如果只保留一条结果,等于在产品入口就把一个本就存在歧义的问题写成了确定答案,后面无论怎么补救都晚了一步。候选词本身并不会增加用户的负担,前提是系统只在必要时才把选择权交出去,如果每一次都要求确认,提问反而会变得繁琐,确认的时机同样需要设计。
关键槽位值得多问一句话
金额、日期、证件号与订单号等关键字段一旦识别错误并继续触发后续业务动作,可能造成错误派单、金额计算或其他高风险副作用,因此应尽量在执行前完成校验。一种可行的做法是把这些字段单独标记出来,关键槽位是否确认不能只看 ASR confidence,还要结合字段风险、候选冲突与业务规则。即使置信度较高,只要金额、日期、合同术语等存在近音冲突,或者无法通过业务约束唯一确定,也应进入复述、数据比对或人工确认,例如把金额与日期读回给对方确认。这一步会多花几秒钟,它把纠错放在了执行之前,而不是等工单已经派出之后再回头修改。复述确认并不适用于所有字段,客户编号与订单号这一类用户自己也不容易逐位念准的信息,更适合与档案里已有的记录做一次比对,而不是让人对着屏幕重复一遍。
被固化的错误更难纠正
识别结果往往会进入会话记忆,成为后续推理的依据。如果错误在写回时没有被标记来源,后面的问答就会反复引用它,用户即使当场纠正过,旧结论仍可能被再次取出。纠正不应简单覆盖历史记录。系统保留原始转写及其来源,将旧值标记为已纠正或已失效,再把用户确认后的值写成新的当前有效记录,并保存二者之间的纠正关系;后续默认读取当前有效值,审计时仍可还原最初识别与纠正过程。记忆里的条目如果带着来源标记,后续检索就能区分哪些是用户确认过的、哪些只是识别得到的,纠正时也更清楚该更新哪一条。
通用语音识别服务与Agent平台通常能提供转写与基础的意图理解能力,但行业近音词表的维护、关键槽位的复述确认,以及识别结果的回写纠错,仍需结合企业自身的业务字段单独设计。
在青山不语AI工作室的AI定制方案中,语音输入会被拆成转写文本、候选词与置信度三类信息,金额与日期等关键槽位在存在近音冲突或无法由业务约束唯一确定时进入复述确认或数据比对,纠错结果写回当前有效记忆,同时保留原识别记录、来源与纠正关系,业务近音词表由知识运营与业务侧共同维护,识别失败时转入重述或人工处理。
这套机制的边界在于,它能减少近音词带来的偏差,却无法替代业务侧对合同口径的判断,定金与订金究竟适用哪一条,最终仍要由企业自己的规则确定。
验收时可以让同一句话以不同口音、不同语速各读一遍,观察关键槽位是否都能进入确认环节,再故意说一个容易混淆的近音词,看系统是给出候选还是直接下结论。
在我看来,语音入口的难点不在识别率本身,而在系统是否承认识别结果存在不确定性,并为这种不确定性留出确认的位置,愿意多问一句的系统,通常比一次就答对的系统更值得信任。