Appearance
语音唤醒
语音唤醒 KWS 负责判断用户是否说出了指定唤醒词。它通常常驻端侧运行,是语音系统的入口门控。唤醒做得不好,后面的 ASR 和对话模型再强也没有机会工作。
唤醒模型到底在判断什么
KWS 不需要完整理解一句话,它只判断一小段连续声音是否像唤醒词。模型通常会把音频切成连续帧,提取频谱特征,再输出“当前窗口像唤醒词的置信度”。
可以把唤醒过程拆成四步:
| 步骤 | 作用 | 容易出错的点 |
|---|---|---|
| 前处理 | 把噪声、回声、音量波动压到可控范围 | AEC 不好会把音乐当成唤醒线索 |
| VAD | 判断是否有人声活动 | 太敏感会被噪声触发,太保守会漏轻声 |
| KWS 打分 | 判断音频窗口像不像唤醒词 | 口音、儿童声、相似词影响置信度 |
| 确认逻辑 | 多帧、多阶段或二级模型确认 | 确认太弱误唤醒,确认太强漏唤醒 |
阈值不是越低越好
唤醒阈值决定“置信度达到多少才开门”。阈值越低,用户更容易唤醒设备,但日常聊天、电视声、相似词也更容易误触发;阈值越高,误唤醒减少,但远场、轻声、儿童声和噪声下更容易漏唤醒。
| 调整方向 | 收益 | 代价 |
|---|---|---|
| 降低阈值 | 提高唤醒率,远场更容易响应 | 误唤醒增加 |
| 提高阈值 | 降低误唤醒 | 漏唤醒增加 |
| 加二级确认 | 降低误唤醒 | 延迟和算力增加 |
| 加场景阈值 | 不同噪声、音量下更稳 | 标定和维护复杂 |
真实产品通常不会只有一个固定阈值。播放音乐、车速较高、夜间安静、儿童模式等场景,可以使用不同阈值或不同确认策略。
唤醒词设计
好的唤醒词要让模型容易区分,也要让用户自然愿意说。
| 设计点 | 原因 |
|---|---|
| 不宜太短 | 两个字容易和日常词、电视声重叠 |
| 不宜太长 | 用户负担大,模型窗口变长,响应变慢 |
| 音节要有区分度 | 清晰辅音和节奏变化有利于模型区分 |
| 避免高频日常词 | 常用词会显著增加误唤醒 |
| 覆盖口音和儿童声 | 真实用户不会都按标准播音腔发音 |
唤醒词不是只看发音,也要看品牌名、产品名和使用场景。一个营销上顺口的名字,未必是一个算法上容易识别的唤醒词。
训练数据怎么组织
唤醒数据要同时覆盖正样本和负样本。正样本决定“用户怎么喊能唤醒”,负样本决定“什么声音不能唤醒”。
| 数据 | 覆盖内容 |
|---|---|
| 正样本 | 不同年龄、性别、口音、音量、距离、角度 |
| 相似负样本 | 与唤醒词音节接近、节奏接近的词和句子 |
| 场景负样本 | 电视、音乐、短视频、聊天、儿童玩耍 |
| 播放干扰 | 设备自播音乐或 TTS 时的唤醒词和非唤醒词 |
| 设备数据 | 真实麦克风、真实结构、真实前处理输出 |
只用干净录音训练,模型容易在实验室表现很好,到了客厅、车内和会议室就明显退化。
多阶段唤醒
低功耗设备经常使用多阶段唤醒:
| 阶段 | 位置 | 特点 |
|---|---|---|
| 一级唤醒 | DSP 或低功耗 MCU | 常开运行,模型小,功耗低 |
| 二级确认 | 主芯片或更大模型 | 复核一级结果,降低误唤醒 |
| 声纹确认 | 可选 | 判断是否为授权用户或特定家庭成员 |
多阶段的目标是让“常开部分”足够省电,让“确认部分”足够可靠。代价是链路更长,首响延迟更难压低。
唤醒后缓存
用户经常连续说:“你好设备,打开客厅灯。”如果系统等唤醒成功后才启动 ASR,后半句开头可能已经过去。解决办法是维护环形音频缓存,把唤醒词前后一小段音频保留下来,唤醒后一起交给 ASR。
缓存太短会吞字,缓存太长会把唤醒词和背景噪声一起送进 ASR。具体长度要看唤醒词时长、ASR 启动时间和端点检测策略。
声纹不要当唯一安全凭证
声纹可以用于个性化和轻量身份判断,但不适合作为高风险操作的唯一凭证。录音重放、环境噪声、感冒、年龄变化都会影响声纹稳定性。支付、开门、隐私数据查询等操作,应结合账号、设备状态、二次确认或其他认证方式。
验收方式
| 指标 | 怎么看 |
|---|---|
| 唤醒率 | 正确喊唤醒词时是否能唤醒 |
| 误唤醒率 | 长时间背景音中是否被错误唤醒 |
| 漏唤醒率 | 真实用户喊了却没响应的比例 |
| 首响延迟 | 唤醒词结束到设备反馈的时间 |
| 播放干扰唤醒 | 音乐、TTS、电视声下能否稳定唤醒 |
| 场景分布 | 不同设备、房间、车速、年龄是否均衡 |
误唤醒不能只测几分钟。真实产品需要长时间背景音和线上反馈闭环,否则很难发现低频但严重的误触发。
总结
唤醒算法的核心是“置信度分布和阈值取舍”。训练数据、前处理、确认策略、缓存和场景阈值共同决定最终体验。调唤醒不能只盯唤醒率,还要同时看误唤醒、漏唤醒、首响延迟和播放干扰。
