语音命令词识别(KWS)和语音识别(ASR)有什么区别?怎么选?

2026年7月 · 听词 Voicute

看起来都在处理语音,其实是两回事

一个类比:ASR 是速记员,KWS 是看门狗。

ASR(自动语音识别)听完整句话,转写成文字,交卷。所有内容都要理解,所以模型大(50-200MB)、推理慢(200-500ms)、功耗高。

KWS(关键词识别)只听脚步声——是不是主人?是就叫,不是就继续趴着。只判断几个特定词组的有无,模型 100KB,推理不用 5ms,功耗几乎忽略。

数字上的差距

ASR(离线通用)KWS
模型大小50-200 MB100-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 模型