树莓派3B+指南(十一)安装配置snowboy

安装配置snowboy

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,就说明已经成功了。

至此就结束了,希望能帮助到大家!

  • 8
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值