赞
踩
snowboy是个好东西,可以用来做唤醒词,看网上的文章说,好像百度的唤醒词系统也是用的snowboy,而且这东西直接兼容树莓派,简直是太好了。安装过程中遇到了不小的麻烦,先是模型训练不顺利无法下载,然后又是麦克风莫名失灵,最后又是音频输出不了,虽然没有找到治病的根本,但是经过几天的摸索,也找到了一条可以顺利安装snowboy的路。
1.换镜像源
以前装dlib的时候还没遇到过这个问题,但是装pyaudio的时候,发现总是出现网络问题,所以就换了镜像,效果很好。
sudo nano /etc/apt/sources.list
然后注释掉所有的内容,将以下两句加进去,
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
然后,
sudo nano /etc/apt/sources.list.d/raspi.list
文件操作同上,
deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
最后再更新一下apt-get,
sudo apt-get update
镜像就更新完了。
2安装pyaudio
sudo apt-get install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev
sudo apt-get install python-pyaudio python3-pyaudio
pip3 install pyaudio
至此就把pyaudio安装好了。
3.配置麦克风
查看当前已接入的所有录音设备:
arecord -l
得到的结果类似这样:
pi@raspberrypi:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 2: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
上面的结果说明当前接入了两个录音设备,选择你要使用的录音设备,并记下声卡编号(或名字)和设备编号。例如,我希望使用 USB PnP Sound Device 这个设备,则声卡编号为 2 (声卡名为 Device),设备编号为 0 。
类似的方法获取音响的声卡编号和设备编号:
aplay -l
结果类似这样:
pi@raspberrypi:~$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] Subdevices: 8/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0 card 2: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
上面的结果说明当前接入了三个播放设备,其中 card 0 是树莓派自带的声卡,如果您是使用 AUX 3.5 口外接的音响/或耳机,那么应该使用 card 0;card 1 和 card 2 则是其他的设备。记下您要使用的声卡编号和设备编号。
创建 /home/pi/.asoundrc :
touch /home/pi/.asoundrc
之后添加您选择的声卡编号和设备。您使用的是一个单独的 USB 麦克风,并直接通过树莓派的 AUX 3.5 口外接一个音响。那么可以参考如下配置:
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 }
由于播放设备(playback)和录音设备(capture)是独立的,所以需要各自配置。
完成后可以测试下命令行录音和播放,看看是否能正常工作。
录音:
arecord -d 3 temp.wav
回放录音:
aplay temp.wav
如果能听到自己的3秒录音内容,那么音频输入输出就没问题了!
如果不行,而且你接的hdmi的显示器,那么可能音频输出输出到显示器去了,所以需要修改一下config:
sudo raspi-config
在高级选线中的audio中选择3.5输出口就可以了。
如何出现以下报错:
IOError: [Errno Invalid sample rate] -9997
这是因为采样频率问题,树莓派声卡不支持,只需要下载一个包就可以了,
sudo apt-get install pulseaudio
如果还是不行,那么就只好继续百度了。
4.下载编译SWIG
新建一个文件夹,名字为snowboy,然后在终端进入这个目录,
然后直接复制就好了
sudo wget http://downloads.sourceforge.net/swig/swig-3.0.10.tar.gz &&
sudo tar -xvzf swig-3.0.10.tar.gz &&
cd swig-3.0.10/ &&
./configure --prefix=/usr \
--without-clisp \
--without-maximum-compile-warnings &&
sudo make &&
sudo make install &&
sudo install -v -m755 -d /usr/share/doc/swig-3.0.10 &&
sudo cp -v -R Doc/* /usr/share/doc/swig-3.0.10 &&
cd ..
5.下载编译snowboy
现在的路径不要乱动,直接复制以下代码
sudo git clone https://github.com/Kitt-AI/snowboy &&
cd snowboy/swig/Python3 && sudo make
如果出现报错如下
可以尝试以下操作,或者多试几次,这是网络问题,命好一次成功。
git config --global http.postBuffer 524288000
6.配置修改
打开/snowboy/snowboy/examples/Python3/snowboydecoder.py,修改
from . import snowboydetec
改为
import snowboydetec
7.复制所需文件到自己的工程目录
将该目录下的所有文件都复制(除了Makefile)
/snowboy/snowboy/swig/Python3/
将该目录下的"resource"文件夹复制
/snowboy/snowboy/
将该目录下的"snowboydecoder.py"复制
/snowboy/snowboy/examples/Python3/
8.训练唤醒词模型
登录snowboy网站:https://snowboy.kitt.ai/
登录之后,训练下载自己的唤醒词.pmdl文件,将下载好的唤醒词,也移动到自己的工程目录中
9.使用demo
在该目录下
/snowboy/snowboy/examples/Python3/
有许多的demo,复制出来,在终端使用就可以了。
举例,
在终端输入
python3 demo1.py 你的唤醒词.pmdl
当你对着话筒说你的唤醒词的时候,听见“叮”的一声,然后出现以上的INFO,就说明已经成功了。
至此就结束了,希望能帮助到大家!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。