基于 Snowboy 实现语音唤醒
Snowboy 是一个可定制的热词检测引擎,可以利用它来实现语音唤醒功能。
环境配置
Snowboy 只能运行在类 unix 系统下,我选择在 Debian 12 系统下安装和运行 Snowboy。首先需要安装一些依赖项:
1 | sudo apt install build-essential git swig libatlas-base-dev sox -y |
安装
Github 上存在两个 Snowboy 的代码库,一个是 Kitt.ai/Snowboy,在 Kitt.ai 不维护之后,Seasalt.ai/Snowboy 又继续维护了一段时间。
我们首先要把 Snowboy 的代码库拉下来:
1 | git clone https://github.com/seasalt-ai/snowboy.git |
然后进行编译:
1 | cd snowboy/swig/Python3 |
之后修复代码中的包引入问题,将 examples/Python3/snowboydecoder.py 文件中的 from . import snowboydetect 修改为 import snowboydetect
运行与问题排除
首先创建 Python 虚拟环境,并安装依赖:
1 | python -m venv venv |
官方提供了一些预置的唤醒词模型,位于 resources/models/ 文件夹下。
之后运行 examples/ 文件夹下的 demo.py 文件来进行验证语音唤醒功能:python demo.py resources/models/snowboy.umdl。
我在此时时遇到了异常:
1 | Cannot connect to server socket err = No Such file or directory |
这个问题需要安装并启动 JACK Audio Connection Kit:
1 | sudo apt install jackd2 # 建议安装后重启 |
之后再次运行 demo.py,当说出唤醒词 snowboy 时程序会播放叮的声音,这样就代表语音唤醒成功了。
自定义唤醒词
如果想训练自己的唤醒词,可以到网站 snowboy.hahack.com 上进行定制,或者基于开源项目 snowboy-seasalt 在 Docker 上自行部署 Web 操作界面。