1. 课程导入

各位同学,欢迎来到《语音唤醒词定制开发实战》的第一章。

我是你们这门课的主讲。做了十几年嵌入式音频开发,从最早的 DSP 裸机跑 GMM 模型,到后来在树莓派上折腾 Snowboy,再到如今用 Kaldi 和 WeNet 做端到端唤醒——这条路我踩过的坑,比你们想象的多得多。

今天这一章,我们先不急着写代码。先把唤醒词这个技术全景图铺开,让你知道它是什么、怎么来的、现在主流方案各有什么优缺点。说白了,就是帮你建立一张「技术地图」。有了这张地图,后面 29 章你才不会迷路。

1.1 什么是唤醒词?

唤醒词(Wake Word),也叫触发词、热词。就是你对着设备说一个特定短语,比如「Hey Siri」、「小爱同学」、「OK Google」,设备就从休眠状态被激活,开始听你后续的指令。

我习惯把它比作「语音世界的门铃」。你想想看,智能音箱、车载助手、耳机,这些设备不可能 7×24 小时开着麦克风做全语音识别——功耗扛不住,隐私也受不了。所以它们平时只跑一个极轻量的唤醒词检测模型,只有检测到预设的唤醒词,才启动完整的语音识别引擎。

唤醒词的核心特征:

  • 低功耗:必须能在 MCU 或 DSP 上持续运行,功耗控制在 mW 级
  • 低延迟:从用户说完唤醒词到设备响应,通常要求 < 500ms
  • 高精度:误唤醒率要极低(比如每天不超过 1 次),同时唤醒率要 > 95%
  • 本地化:所有计算必须在设备端完成,不能依赖云端

嗯,这里要注意:唤醒词 ≠ 语音识别。唤醒词只做「是/否」的二分类判断,而语音识别要做的是把整句话转成文字。两者的模型复杂度、计算量、延迟要求,完全不是一个量级。

1.2 唤醒词技术发展史

唤醒词技术不是一天长成的。我把它分成四个阶段,每个阶段我都亲身经历过。

阶段 时间 核心技术 代表产品
萌芽期 2010 年前 模板匹配、DTW 早期车载语音
传统 ML 期 2010-2015 GMM-HMM、MFCC + SVM Google Now、Cortana
深度学习期 2015-2020 DNN、CNN、LSTM、GRU Snowboy、Porcupine、Alexa
端到端期 2020 至今 CTC、Attention、Mamba WeNet、Kaldi 新版

我记得 2012 年那会儿,我在一个车载项目里做唤醒词。用的是 DTW(动态时间规整),说白了就是把用户说的语音和模板做距离匹配。效果嘛……用户换个口音就唤不醒了。后来换成了 GMM-HMM,好了一些,但模型文件动不动几十 MB,嵌入式设备根本跑不动。

真正的转折点是 2015 年左右,深度学习开始渗透到语音领域。Snowboy 和 Porcupine 这类工具的出现,让唤醒词开发的门槛一下子降了下来。你不需要懂声学模型、语言模型,只要准备几段音频,就能训练一个可用的唤醒词模型。

到了 2020 年以后,端到端模型成了主流。WeNet 和 Kaldi 的新版本,直接用 CTC 或 Attention 架构,把特征提取、声学模型、解码器全部融合成一个网络。效果更好,但定制难度也更高了。

1.3 主流唤醒词方案对比

市面上主流的唤醒词方案,我挑四个最有代表性的:Snowboy、Porcupine、Kaldi、WeNet。每个我都用过,优缺点心里有数。

1.3.1 Snowboy

Snowboy 是 2016 年开源的,曾经是嵌入式唤醒词的「标配」。我最早在树莓派上做智能音箱原型,用的就是它。

  • 优点:轻量、开源、支持自定义唤醒词、跨平台(Linux/macOS/Windows/Raspberry Pi)
  • 缺点:模型基于 DNN,精度一般;项目已停止维护(2019 年后无更新);对噪声环境敏感
  • 适用场景:个人项目、原型验证、对精度要求不高的场景

避坑指南:我曾经在一个智能家居项目里用了 Snowboy,结果用户反馈说「开个电视,隔壁的灯也亮了」。后来排查发现,Snowboy 在信噪比低于 10dB 时误唤醒率飙升。如果你要做量产产品,Snowboy 慎用。

1.3.2 Porcupine

Porcupine 是 Picovoice 公司的产品,有开源版和商业版。我去年在一个智能耳机项目里评估过它。

  • 优点:精度高、延迟低(< 200ms)、支持多唤醒词、跨平台(包括 MCU)
  • 缺点:自定义唤醒词需要在线训练(商业版收费);开源版功能受限;模型文件较大
  • 适用场景:商业产品、对精度和延迟要求高的场景

Porcupine 的精度确实比 Snowboy 好不少。但它的自定义训练必须上传音频到 Picovoice 的云端服务器,对于有数据隐私要求的项目,这是个硬伤。

1.3.3 Kaldi

Kaldi 是语音识别界的「老大哥」,虽然它主要做 ASR,但也可以用来做唤醒词。

  • 优点:功能强大、社区活跃、支持多种模型(GMM-HMM、TDNN、Chain 模型)
  • 缺点:学习曲线陡峭、配置复杂、对嵌入式设备不友好
  • 适用场景:研究、定制化需求高的项目、有语音团队支持

说实话,Kaldi 不适合初学者。我当年为了在 Kaldi 上跑通一个唤醒词模型,光编译就折腾了两天。但如果你要做深度定制,Kaldi 的灵活性是其他方案比不了的。

1.3.4 WeNet

WeNet 是 2021 年开源的端到端语音识别工具包,也支持唤醒词。

  • 优点:端到端模型(U2/U2++)、支持流式和非流式、精度高、部署方便
  • 缺点:模型较大、对硬件有一定要求、社区相对年轻
  • 适用场景:对精度要求高的产品、有 GPU 训练资源

我个人比较看好 WeNet 的方向。它的 U2 架构把 CTC 和 Attention 结合起来,既能做流式识别,又能做重打分。不过目前 WeNet 的唤醒词定制还比较「硬核」,需要自己写数据处理脚本。

1.4 方案对比总表

维度 Snowboy Porcupine Kaldi WeNet
开源 ✅ 完全开源 ⚠️ 部分开源 ✅ 完全开源 ✅ 完全开源
自定义唤醒词 ✅ 本地训练 ⚠️ 云端训练 ✅ 本地训练 ✅ 本地训练
嵌入式支持 ✅ 优秀 ✅ 优秀 ❌ 较差 ⚠️ 一般
精度 ⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
延迟 < 500ms < 200ms < 300ms < 300ms
学习成本 低 低 高 中
维护状态 ❌ 已停更 ✅ 活跃 ✅ 活跃 ✅ 活跃

1.5 唤醒词技术全景图

下面这张图,是我梳理的唤醒词技术全景。它涵盖了从音频采集到唤醒决策的完整链路,以及各阶段涉及的核心技术。

唤醒词技术全景图 音频采集 前端处理 特征提取 模型推理 后处理 & 决策 麦克风阵列 · AEC · 降噪 VAD · 端点检测 · 分帧 MFCC · Fbank · 梅尔谱 DNN · CNN · LSTM · Transformer 阈值判决 · 抑制策略 · 唤醒确认 Snowboy Porcupine Kaldi WeNet 其他(自研等) 本课程将覆盖从音频采集到模型部署的全链路,重点讲解 Snowboy、Porcupine、Kaldi、WeNet 四种方案的定制开发

1.6 课程目标与学习路径

这门课的目标很明确:让你掌握从零到一定制唤醒词的能力。不管你用的是 Snowboy、Porcupine、Kaldi 还是 WeNet,学完这门课,你都能独立完成数据采集、模型训练、嵌入式部署的全流程。

具体来说,学完这门课,你应该能:

  1. 理解唤醒词的核心原理:特征提取、模型架构、解码策略
  2. 掌握数据准备方法:录音规范、数据增强、标注格式
  3. 独立训练唤醒词模型:至少掌握两种方案的训练流程
  4. 完成嵌入式部署:在树莓派、ESP32、ARM Linux 等平台上跑通唤醒词
  5. 具备调优能力:能根据实际场景调整阈值、优化模型、降低误唤醒

学习建议:我建议你准备一块树莓派 4B 或 ESP32-S3 开发板。后面很多章节的实战内容,光看代码是学不会的,必须动手跑一遍。另外,准备一个安静的环境录几段自己的语音,后面做数据增强和模型训练时会用到。

整门课 30 章,我把它分成五个模块:

模块 章节 核心内容
基础篇 1-5 章 唤醒词原理、音频处理基础、特征提取
工具篇 6-12 章 Snowboy、Porcupine 定制开发实战
进阶篇 13-20 章 Kaldi、WeNet 唤醒词训练与调优
部署篇 21-26 章 嵌入式移植、性能优化、低功耗设计
实战篇 27-30 章 完整项目实战:智能音箱、车载助手、可穿戴设备