最近想用吃灰的树莓派3B做一个语音唤醒助手,对接chatgpt或讯飞星火的API实现智能语音助手!
想要实现和天猫精灵、小爱同学音响的唤醒效果,那必然需要使用SnowBoy了!看网上的教程虽然简单,但实际搭建过程中可能会出现各种坑,仅此记录。
本人环境为32位树莓派4B
cd ~
git clone https://github.com/Kitt-AI/snowboy.git
安装依赖
sudo apt install python3 python3-pyaudio python3-pip libatlas-base-dev portaudio19-dev swig
同时需要安装以下依赖
sudo apt-get install sox
如果不安装sox,那么在使用snowboy提供的demo进行测试时,可能始终无法唤醒。
进入SnowBoy编译目录
cd snowboy/swig/Python3
开始编译
make
编译完成后,文件如下:
将编译好的库文件移动到样例文件下
cp snowboydetect.py _snowboydetect.so ../../examples/Python3/
进入样例文件夹
cd snowboy/examples/Python3
修改snowboydecoder.py文件,注释掉
#from . import snowboddetect
新加一行
import snowboydetect
如下图所示:
现在一切就绪,先别着急运行demo,我们先配置一下树莓派的声卡。
我用的是一个usb免驱麦克风,将麦克风插到树莓派上,使用以下命令查看声卡的编号
cat /proc/asound/cards
所以我的声卡编号是2。
新建/home/pi/.asoundrc文件,并添加以下内容:
pcm.!default {
type asym
playback.pcm {
type plug
slave.pcm "hw:0,0"
}
capture.pcm {
type plug
slave.pcm "hw:1,0"
}
}
ctl.!default {
type hw
card 1
}
其中card 1就是指声卡的编号。
录一段音看看是否正常
rec test.wav
注意:如果rec命令提示不存在,那么一定要确认是否安装aox,我在搭建过程中发现,如果rec命令不存在,那么直接执行snowboy示例的话,是死活都无法唤醒的。
播放录制的声音,看看效果怎么样
aplay test.wav
注意:我发现录制的声音杂音很多,而且声音很小,所以需要使用alsamixer工具调节一下声音。
alsamixer
?按F4选中[Capture],然后上下键将数值调到100。
使用sox再次测试,以下命令可以播放录制的音频或者通过以下命令通过音箱听见你说话的声音。
sox -d -d
确保录制的声音清晰无杂音,那么就可以测试一下snowboy的demo了。
cd snowboy/examples/Python3/
python3 demo.py resources/models/snowboy.umdl
?出现上图效果,说明运行成功了,如果提示缺包,那就用pip安装一下。
用麦克风喊出“snowboy”,就会看到唤醒成功的提示,大功告成。
我们自己的智能音响,自然是要使用自己喜欢的唤醒词, 唤醒词是需要训练的,但snowboy官方已经倒闭了,无法在线训练,可以使用以下网址:
Snowboy Personal Wake Word (hahack.com)
电脑上插入麦克风,激活后,点击“record”就可以录制唤醒词。
注意:中文唤醒词最好4个字,我的唤醒词定义为了“小爱同学”,那么点击?“record”按钮,录制至少3个“小爱同学”的语音,然后输入模型的名称"xiaoai",然后点击“submit”。
很快就会训练完成,训练完成后点击“save model”,即可下载"xiaoai.umdl"文件,这就是我们的自定义唤醒词模型。
将模型放置到/home/pi/snowboy/examples/Python3目录下,然后运行程序。
python3 demo.py xiaoai.pmdl
?
大声喊出“小爱同时”,唤醒成功。
参考:
[Raspi][SnowBoy][教程]树莓派SnowBoy搭建教程-CSDN博客
基于树莓派4B和snowboy的个性化语音唤醒配置(可在线训练自己的模型)_snowboy 语音唤醒-CSDN博客
树莓派安装snowboy | 码农家园 (codenong.com)?
树莓派3B+指南(十一)安装配置snowboy - 灰信网(软件开发博客聚合) (freesion.com)?