语音命令词识别(KWS)和语音识别(ASR)有什么区别?怎么选?
看起来都在处理语音,其实是两回事
一个类比:ASR 是速记员,KWS 是看门狗。
ASR(自动语音识别)听完整句话,转写成文字,交卷。所有内容都要理解,所以模型大(50-200MB)、推理慢(200-500ms)、功耗高。
KWS(关键词识别)只听脚步声——是不是主人?是就叫,不是就继续趴着。只判断几个特定词组的有无,模型 100KB,推理不用 5ms,功耗几乎忽略。
数字上的差距
| ASR(离线通用) | KWS | |
|---|---|---|
| 模型大小 | 50-200 MB | 100-170 KB |
| 单次推理 | 200-500ms | < 5ms |
| 内存占用 | 200MB+ | ~20MB |
| 后台常驻功耗 | 明显耗电 | 几乎不耗电 |
| 识别范围 | 所有内容 | 2-10 个固定词 |
| 定制命令词 | 不能(需要写匹配逻辑) | 任意 2-6 字中文 |
| 联网 | 可不联网 | 完全离线 |
| 部署平台 | PC、手机 | Android / Linux / ESP32 / Web |
一句话:如果你的产品只需要识别 2-10 个固定指令,KWS 就是正确答案。ASR 不是。
什么场景用什么
| 场景 | 需要几个指令 | 推荐方案 |
|---|---|---|
| 智能开关 | 4-6 个 | KWS |
| 智能音箱控制 | 8-10 个 | KWS |
| 车载语音指令 | 5-8 个 | KWS |
| 老人呼叫器 | 2-3 个 | KWS |
| 智能客服 | 不固定 | ASR / 云端方案 |
| 语音输入法 | 不固定 | ASR |
大部分 IoT 产品、智能硬件的语音需求就在 2-6 个固定指令这个区间。KWS 完全够用。
能不能组合用
能。最常见的架构是 KWS 守门 + ASR 干活:
KWS 常年低功耗监听唤醒词(比如"小娜")→ 唤醒后启动 ASR → 处理自由对话指令 → ASR 休眠 → KWS 继续守门。
这套架构平衡了功耗和灵活性。KWS 是永远在线的第一道闸门,ASR 是按需启动的第二道。
KWS 现在还能做什么
以前的 KWS 一个模型只能识别一个词。现在可以了——一个 167KB 的 ONNX 模型同时识别 10 个命令词。播放、暂停、下一首、音量+/-——全在一个模型里,一次推理出全部结果。
而且拿到模型以后不用自己写推理代码,开源推理引擎 onnx-wakeword 已经封装好了音频处理、特征提取、推理部署,Android / ESP32 / Web 几行代码就集成。
怎么拿到一个 KWS 模型
- 在线生成:听词 Voicute,输入命令词,十分钟自动出 ONNX 模型。单关键词 ¥39,多关键词 ¥169-299。一次付费,不限设备。
- 自己训练:OpenWakeWord、WeKws、nanoWakeWord 等开源框架。
- 预训练模型:onnx-wakeword 仓库提供常用唤醒词 Demo。