1、语音识别基础:座舱内语音识别的工作原理、关键指标(WER/CER)、常见痛点分析
1.1 座舱语音识别到底怎么工作的?
说实话,很多人觉得语音识别就是「我说一句,车机回一句」。其实没那么简单。
我习惯把座舱语音识别拆成三个环节:
- 前端信号处理——把麦克风收到的声音「洗干净」
- 唤醒与识别——判断是不是在跟它说话,然后转成文字
- 后端语义理解——理解你想干嘛,比如开空调还是导航
你想想看,车里环境多复杂。风噪、胎噪、空调声、旁边人聊天……麦克风收到的信号,说白了就是一堆噪声里藏着你的声音。
所以第一步,得做降噪。我参与过一个项目,测试时发现副驾说话主驾麦克风也能收到,结果系统把两个人的话混在一起识别——那叫一个惨。后来我们加了波束成形(Beamforming),只聚焦驾驶员方向的声音,效果才上来。
核心流程简图:
麦克风阵列 → 降噪/回声消除 → 特征提取 → 声学模型 → 语言模型 → 文本输出
1.2 关键指标:WER 和 CER
做语音识别,绕不开两个指标。我面试新人时也常问这个。
WER(词错误率)
WER 衡量的是「我说了一句话,机器识别对了几个词」。公式长这样:
WER = (S + D + I) / N × 100%
其中:
- S(Substitution)——替换错误,比如我说「导航」,它识别成「倒航」
- D(Deletion)——漏掉,比如我说「打开空调」,它只识别出「空调」
- I(Insertion)——多出来的,比如我说「关窗」,它识别成「关窗户」
- N——总词数
举个例子:我说「我想听周杰伦的歌」,机器识别成「我想听周杰的歌」。
- 替换:1个(「伦」被替换成「的」?不对,这里其实是漏了「伦」,多了「的」)
- 嗯,实际算起来有点绕。我一般直接用工具算,但理解原理很重要。
CER(字符错误率)
中文场景下,我更关注 CER。因为中文词边界模糊,按字算更准。
CER 公式和 WER 一样,只是把「词」换成「字」。
我的经验:座舱场景下,WER 做到 5% 以下才算及格。超过 10% 用户就会明显觉得「这车机听不懂人话」。我曾经测过一款竞品,WER 高达 18%,用户反馈里全是吐槽语音的。
1.3 常见痛点分析
做了这么多年座舱语音,我总结出几个高频痛点。每个都踩过坑。
痛点一:远场识别差
主驾说话还好,后排乘客一开口,识别率直接掉一半。
为什么会这样?因为麦克风通常装在车顶或A柱,距离远了信号衰减严重。再加上后排有座椅遮挡,声音反射路径复杂。
我曾经遇到一个案例:某车型后排语音识别率只有前排的 60%。后来我们调整了麦克风阵列布局,加了自适应增益控制,才拉到 85%。
痛点二:噪声环境下的「失聪」
车速 120km/h,车窗开条缝,这时候你说「导航到公司」——机器大概率回你「好的,正在打开收音机」。
说白了,就是信噪比太低。语音信号被噪声淹没了。
我建议的做法是:
- 用多麦克风做波束成形,定向拾音
- 加风噪检测,动态调整降噪强度
- 实在不行,提示用户「请降低车速或关闭车窗」
痛点三:口音和方言的「水土不服」
这个太常见了。普通话标准的用户用得爽,带点四川口音、东北口音就开始翻车。
我记得有一次测试,用户说「我要切(去)春熙路」,机器识别成「我要吃春熙路」——差点闹笑话。
解决方案其实不复杂:
- 训练数据里多加入方言口音样本
- 做自适应声学模型,根据用户口音动态调整
- 允许用户手动选择「方言模式」
注意:不要以为加了方言数据就万事大吉。我见过一个项目,加了 10 种方言数据,结果普通话识别率反而下降了。原因是数据混合后模型「学偏了」。正确做法是方言数据单独训练一个分支模型,和主模型做融合。
痛点四:语义理解「一根筋」
用户说「我有点冷」,机器识别出文字了,但不知道要干嘛。它可能回你「好的,当前温度 22 度」——而不是自动调高空调温度。
这其实不是语音识别的问题,是语义理解的问题。但用户不会区分,他只会觉得「这语音系统真笨」。
我个人的习惯是:在语音识别阶段就尽量保留更多信息,比如语气、停顿、重复,这些对后端理解很有帮助。
1.4 小结
语音识别在座舱里,远不止「听到声音」那么简单。它要对抗噪声、距离、口音,还要理解意图。
我常说一句话:好的语音识别,是让用户感觉不到它的存在。你只管说,它只管做。中间那些复杂的信号处理、模型推理,都应该是透明的。
下一章,我会聊聊怎么从数据层面提升识别率。嗯,那才是真正「动手」的地方。