免费白嫖Google Colab创建自定义唤醒词
前言
最近在折腾家用AI对话的设备,唤醒设备需要唤醒词,之前还不是很懂这一块,开始还以为只要输入任意字词就能唤醒设备,但是实际操作才发现天差地别。
原理
非模型训练下的唤醒词检测
不了解的情况下,我眼中的唤醒原理:本地STT设备实时监听语音,比如设置的唤醒词为“小雨”,那么麦克风就24小时处在监听状态,监听的每一个声音都会转成文字,再对比词语中有没有包含“小雨”这两字。
这种方式光想想就很累。不光是麦克风累,本地部署STT服务的设备也很累。
模型训练下的唤醒词检测
可以理解为专门训练的唤醒词,是一个体积极小的神经网络,它只做一件事:判断当前音频片段“像不像”那个特定的词。
极致的轻量化:一个典型的唤醒词模型可能只有几十KB,能在低功耗的DSP(数字信号处理器)上持续运行数月而几乎不耗电。
目标极窄:它不需要听懂任何话,只需要在连续不断的音频流中,对“那个词”给出一个匹配分数。分数超过阈值,就触发唤醒;否则,音频数据直接被丢弃。
专门训练才能抗干扰:唤醒词模型是用大量包含该词的语音数据(以及各种噪声、相似发音的负样本)训练出来的。它学会了在背景噪音、电视声、不同口音中,依然能准确识别出目标词,同时尽量不因“听起来有点像”的词而误触发。
两种模式的核心区别对比
为了让你更直观地理解,我把两者的关键差异整理如下:
| 对比维度 | 专门唤醒词模型 (当前主流) | 完整 STT 直接检测 (开始的设想) |
|---|---|---|
| 核心任务 | 只判断“是不是这个词”,输出一个概率分数 | 把整段语音转写成文字,再进行文本匹配 |
| 模型体积 | 极小(几十到几百KB) | 巨大(通常几十到几百MB) |
| 运行功耗 | 极低,可常年待机运行 | 极高,无法在电池设备上常态运行 |
| 隐私设计 | 默认丢弃音频,仅触发后才可能上传 | 默认将所有语音转文字,隐私暴露面大 |
| 误唤醒性质 | 模型判断“像”,偶尔出错 | 识别出了文字,但可能曲解了原意 |
| 支持自定义 | 支持有限,换词通常需重新训练或专门配置 | 理论上换任何词都行,但代价是必须运行 STT |
唤醒词训练
目前比较主流的可以说是三种模式:
搭载GPU的云平台: Google Colab
今天的主角,提供免费的T4 GPU,代码自备,可用性广,而且免费。
现成的专业网站: OpenWakeWord - Train Custom Wake Words for Home Assistant, Hermes Agent & More
直观的前端界面,提供专业的一站式服务。如果自定义需求不高,有免费的Library库可直接下载使用。
搭载GPU算力的自己服务器或者云服务器自建训练模型:
没条件,而且费时费力,不推荐
Google Colab唤醒词训练
我把文件放在:
GitHub - luuaiyan/Chinese-wakeword-Colab-training: 基于Google Colab T4训练生成ESPHome唤醒词
其实训练很简单,全程估计40分钟左右。
登陆 Google Colab
上传上述任意一个文件
选择T4 GPU
修改 Cell 1 中的
WAKE_WORD_NAME和TEST_VARIANTS按顺序运行
优先推荐 Edge-TTS 方式。
最后
本来想详细写写,但是发现这个没什么技术含量,不用写什么。
而且最近折腾这个AI对话的设备,有点神经疲劳,对这种流水线项目觉得单调了点。
另外,我在准备关于这台设备的文章,中间有几个问题还没搞定,等完成后再发布。
