snowboy 自定义唤醒词 实现语音唤醒【语音助手】

背景

本系列主要目标初步完成一款智能音箱的基础功能,包括语音唤醒、语音识别(语音转文字)、处理用户请求(比如查天气等,主要通过rasa自己定义意图实现)、语音合成(文字转语音)功能。

语音识别、语音合成采用离线方式实现。

环境

操作系统:Ubuntu 22.04.3 LTS

CPU:Intel® Core™ i5-1035G1 CPU @ 1.00GHz × 8

内存:16.0 GiB

显卡:没用到,本系列均使用cpu的方案

参考文章

snowboy github地址(不更新了):https://github.com/Kitt-AI/snowboy

snowboy不维护之后seasalt-ai又维护了一段时间(主要提供出了基于docker的唤醒词训练)所以直接下载它的源码即可

GitHub - seasalt-ai/snowboy: DNN based hotword and wake word detection toolkit (model generation included)

docker:Install Docker Desktop on Ubuntu | Docker Documentation

实践

必要条件

可以通过apt安装的

bash 复制代码
# 安装之前先更新
apt-get upgrade
apt-get update

python3.10(系统自带的)、python3-pip

bash 复制代码
# 参考安装python
apt-get install python3-pip

python -m pip install --upgrade pip

git、git-lfs、vim、gcc、g++(版本11.4+)、cmake(版本3.22+)、swig...

如果安装过程中报错大概率还是缺安装包,找到对应包安装再试

bash 复制代码
# 参考安装,安装之前可以先查一下本机之前安装过没有
apt install git

apt install git-lfs

apt install gcc

apt install g++

apt install cmake

apt install vim

apt install swig

apt install libatlas-base-dev

音频相关驱动安装

bash 复制代码
apt-get install python3-pyaudio sox

pip install pyaudio

pip install scipy

测试麦克风

bash 复制代码
rec t.wav

下载安装snowboy

bash 复制代码
mkdir /home/test

cd /home/test/

git clone https://github.com/seasalt-ai/snowboy.git

cd snowboy/swig/Python3/

make

执行完make会生成snowboy的库文件等用来实现语音唤醒功能

bash 复制代码
ll

# Makefile
# snowboydetect.py
# _snowboydetect.so*
# snowboy-detect-swig.cc
# snowboy-detect-swig.i
# snowboy-detect-swig.o

自定义唤醒词

bash 复制代码
mkdir /home/test/snowboy/model

使用wukong-robot的唤醒词生成

Snowboy Personal Wake Word

生成之后只需要把文件下载的pmdl文件放到model目录下即可,不用在走下面的docker训练唤醒词

docker安装

Install Docker Engine on Ubuntu | Docker Documentation

之前安装过docker的可以略过,本机没装那就按照步骤安装

使用docker训练自定义唤醒词

准备唤醒词的音频文件

bash 复制代码
cd /home/test/snowboy/model

rec -r 16000 -c 1 -b 16 -e signed-integer -t wav record1.wav

rec -r 16000 -c 1 -b 16 -e signed-integer -t wav record2.wav

rec -r 16000 -c 1 -b 16 -e signed-integer -t wav record3.wav

录完之后自己检查以下声音有没有问题,如果命令报错可能是少安装包或者重新打开terminal。

编辑一下Dockerfile,因为发现官网的不是慢就是其他报错

bash 复制代码
vim Dockerfile
bash 复制代码
FROM ubuntu:16.04

RUN apt update && apt --yes --force-yes install wget unzip build-essential python python-dev virtualenv portaudio19-dev

RUN wget https://bootstrap.pypa.io/pip/2.7/get-pip.py

RUN python2 get-pip.py

RUN wget https://github.com/seasalt-ai/snowboy/archive/master.zip && unzip master.zip
RUN cd snowboy-master/ && \
    virtualenv -p python2 venv/snowboy && \
    . venv/snowboy/bin/activate && \
    cd examples/Python && \
    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

RUN apt -y remove wget unzip build-essential portaudio19-dev && apt -y autoremove && apt clean && rm -rf /var/lib/apt/lists/*

CMD cd snowboy-master/ && \
    . venv/snowboy/bin/activate && \
    cd examples/Python && \
    python generate_pmdl.py -r1=model/record1.wav -r2=model/record2.wav -r3=model/record3.wav -lang=en -n=model/hotword.pmdl

编辑完成保存,然后构建镜像

bash 复制代码
docker build -t snowboy-pmdl .

构建完成之后去运行容器生成自定义唤醒词模型

bash 复制代码
docker run -it -v $(pwd)/model:/snowboy-master/examples/Python/model snowboy-pmdl

执行完命令之后,model文件夹下会生成一个hotword.pmdl模型文件

测试

生成完模型测试效果,喊唤醒词然后能听到ding,就算是完成了

bash 复制代码
cd home/test/snowboy/examples/Python3

python demo.py ../../model/hotword.pmdl
相关推荐
小陈工17 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
墨染天姬21 小时前
【AI】端侧AIBOX可以部署哪些智能体
人工智能
AI成长日志21 小时前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
2501_9481142421 小时前
2026年大模型API聚合平台技术评测:企业级接入层的治理演进与星链4SAPI架构观察
大数据·人工智能·gpt·架构·claude
小小工匠21 小时前
LLM - awesome-design-md 从 DESIGN.md 到“可对话的设计系统”:用纯文本驱动 AI 生成一致 UI 的新范式
人工智能·ui
黎阳之光1 天前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
小超同学你好1 天前
面向 LLM 的程序设计 6:Tool Calling 的完整生命周期——从定义、决策、执行到观测回注
人工智能·语言模型
智星云算力1 天前
本地GPU与租用GPU混合部署:混合算力架构搭建指南
人工智能·架构·gpu算力·智星云·gpu租用
jinanwuhuaguo1 天前
截止到4月8日,OpenClaw 2026年4月更新深度解读剖析:从“能力回归”到“信任内建”的范式跃迁
android·开发语言·人工智能·深度学习·kotlin
xiaozhazha_1 天前
效率提升80%:2026年AI CRM与ERP深度集成的架构设计与实现
人工智能