1、唤醒词技术概述
什么是语音唤醒
语音唤醒,说白了就是让设备「听到」特定的词或短语后,自动从休眠状态进入工作状态。
我经常跟团队新人这么解释:
你想想看,智能音箱平时是「睡着」的,只有你说出「小爱同学」或「天猫精灵」时,它才「醒」过来。这个从睡到醒的过程,就是语音唤醒。
从技术角度看,唤醒词系统是一个轻量级的语音识别引擎。它不像语音听写那样要识别所有内容,只需要判断「刚才说的词是不是我预设的那个」。所以它的模型更小、计算量更低、功耗也更小。
嗯,这里要注意:
唤醒词系统是始终在监听的。这意味着它必须一直运行在设备上,哪怕设备处于待机状态。所以低功耗、低延迟是它的核心要求。
唤醒词的应用场景
我这些年接触过的唤醒词项目,主要集中在三个场景:
智能音箱
这是最典型的场景。你喊「小度小度」,音箱就亮了。
我个人习惯把这类场景叫做「远场唤醒」——用户可能离设备3-5米,环境里还有电视声、空调声、人说话声。这对唤醒系统的抗噪能力要求很高。
我在项目中遇到过一个问题:
用户明明喊了唤醒词,但音箱没反应。后来发现是电视里正在播广告,广告里也出现了「小度」这个词。这就是典型的误唤醒问题。
车载场景
车载环境更复杂。风噪、胎噪、音乐声、乘客聊天声……
我建议车载唤醒词要选发音清晰、不易混淆的词。比如「你好,奔驰」就比「嘿,奔奔」好——后者容易被「嘿嘿」误触发。
车载还有一个特殊要求:安全优先。
唤醒延迟不能太高,否则驾驶员会分心去操作屏幕。我见过一些方案,唤醒延迟做到200ms以内,体验就很流畅了。
手机端
手机上的唤醒词,比如「Hey Siri」或「小艺小艺」。
手机场景的特点是:近场为主,但功耗极其敏感。因为唤醒系统要一直开着,如果功耗太高,手机待机时间会大幅缩短。
我记得有一次,某款手机的唤醒功能被用户吐槽「耗电太快」。后来发现是唤醒模型没有做量化压缩,导致DSP芯片一直处于高负载状态。嗯,这就是后面要讲的模型压缩的重要性。
唤醒词系统的核心指标
评价一个唤醒词系统好不好,主要看三个指标。我习惯把它们叫做「铁三角」:
| 指标 | 定义 | 理想值 | 我的经验 |
|---|---|---|---|
| 唤醒率 | 用户说了唤醒词,系统正确响应的概率 | ≥95% | 实际量产中,90%以上就算不错了 |
| 误唤醒率 | 用户没说唤醒词,系统却误触发的概率 | ≤1次/24小时 | 这个指标很难做,我见过最差的方案一天误唤醒几十次 |
| 响应延迟 | 从用户说完唤醒词到系统给出反馈的时间 | ≤300ms | 200ms以内用户几乎无感知 |
核心矛盾:
唤醒率和误唤醒率是互相制约的。
你越想提高唤醒率,就越容易误唤醒;你越想降低误唤醒率,唤醒率就可能下降。
我个人的经验是:先保唤醒率,再压误唤醒率。
因为用户对「喊了没反应」的容忍度,远低于「没喊它自己醒了」。
唤醒率
唤醒率怎么测?
我一般会准备1000条唤醒词录音,包含不同口音、不同距离、不同噪声环境。然后看系统正确唤醒了多少次。
举个例子:
如果1000次里唤醒了950次,唤醒率就是95%。
但要注意,这个数字在实验室里测出来,和实际用户场景里测出来,可能差10个百分点以上。为什么?因为实验室的噪声是「干净」的,而真实环境里的噪声是「脏」的——有突发噪声、有混响、有回声。
避坑指南:
我曾经在项目里只用了实验室数据做评估,结果量产后被用户投诉「唤醒不灵敏」。后来我学乖了:一定要用真实场景数据做验证。哪怕只收集100条真实录音,也比1000条实验室数据有价值。
误唤醒率
误唤醒率是用户最烦的指标。
你想想看,半夜里智能音箱突然「哎」一声,吓不吓人?
误唤醒的常见来源:
- 发音相似的词:比如「小度」和「小肚」、「小杜」
- 环境噪声:电视里的广告词、路边的喇叭声
- 多人说话:别人在聊天,突然有人说了类似唤醒词的音节
我建议的做法是:
在模型训练时,加入大量的负样本——也就是「不是唤醒词但容易混淆的语音」。比如训练「小爱同学」时,把「小艾同学」、「小爱童鞋」都加进去作为负样本。这样模型就能学会区分。
响应延迟
响应延迟包括三部分:
- 音频采集延迟:麦克风把声音变成数字信号的时间
- 模型推理延迟:神经网络计算的时间
- 后处理延迟:判断是否唤醒、触发后续动作的时间
其中模型推理延迟是最大的瓶颈。
我见过一些方案,模型推理占了总延迟的70%以上。所以模型压缩(量化、剪枝、蒸馏)就成了关键——这也是后面章节要重点讲的内容。
注意:
响应延迟不是越低越好。
如果延迟太短(比如50ms以内),说明模型可能过于简单,唤醒率和误唤醒率都会受影响。
我一般建议把延迟控制在150ms-250ms之间,这是一个比较合理的平衡点。
小结
这一章我们聊了:
- 语音唤醒是什么——设备从睡到醒的过程
- 三个典型场景——智能音箱、车载、手机,各有各的坑
- 三个核心指标——唤醒率、误唤醒率、响应延迟,互相制约
下一章我会讲唤醒词模型的设计思路,包括怎么选网络结构、怎么设计特征、怎么平衡精度和速度。到时候我会拿一个实际项目里的案例来拆解,应该会挺有意思的。
嗯,今天就先到这里。有什么问题,欢迎在评论区留言。