当前位置:   article > 正文

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

树莓派 snowboy重新安装

安装配置snowboy

snowboy是个好东西,可以用来做唤醒词,看网上的文章说,好像百度的唤醒词系统也是用的snowboy,而且这东西直接兼容树莓派,简直是太好了。安装过程中遇到了不小的麻烦,先是模型训练不顺利无法下载,然后又是麦克风莫名失灵,最后又是音频输出不了,虽然没有找到治病的根本,但是经过几天的摸索,也找到了一条可以顺利安装snowboy的路。

1.换镜像源
以前装dlib的时候还没遇到过这个问题,但是装pyaudio的时候,发现总是出现网络问题,所以就换了镜像,效果很好。

sudo nano /etc/apt/sources.list
  • 1

然后注释掉所有的内容,将以下两句加进去,

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
  • 1
  • 2

然后,

sudo nano /etc/apt/sources.list.d/raspi.list
  • 1

文件操作同上,

deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
  • 1
  • 2

最后再更新一下apt-get,

sudo apt-get update
  • 1

镜像就更新完了。

2安装pyaudio

sudo apt-get install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev
sudo apt-get install python-pyaudio python3-pyaudio
pip3 install pyaudio
  • 1
  • 2
  • 3

至此就把pyaudio安装好了。

3.配置麦克风
查看当前已接入的所有录音设备:

arecord -l
  • 1

得到的结果类似这样:

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

上面的结果说明当前接入了两个录音设备,选择你要使用的录音设备,并记下声卡编号(或名字)和设备编号。例如,我希望使用 USB PnP Sound Device 这个设备,则声卡编号为 2 (声卡名为 Device),设备编号为 0 。

类似的方法获取音响的声卡编号和设备编号:

aplay -l
  • 1

结果类似这样:

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

上面的结果说明当前接入了三个播放设备,其中 card 0 是树莓派自带的声卡,如果您是使用 AUX 3.5 口外接的音响/或耳机,那么应该使用 card 0;card 1 和 card 2 则是其他的设备。记下您要使用的声卡编号和设备编号。

创建 /home/pi/.asoundrc :

touch /home/pi/.asoundrc
  • 1

之后添加您选择的声卡编号和设备。您使用的是一个单独的 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
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

由于播放设备(playback)和录音设备(capture)是独立的,所以需要各自配置。

完成后可以测试下命令行录音和播放,看看是否能正常工作。

录音:

arecord -d 3 temp.wav
  • 1

回放录音:

aplay temp.wav
  • 1

如果能听到自己的3秒录音内容,那么音频输入输出就没问题了!
如果不行,而且你接的hdmi的显示器,那么可能音频输出输出到显示器去了,所以需要修改一下config:

sudo raspi-config
  • 1

在高级选线中的audio中选择3.5输出口就可以了。

如何出现以下报错:

IOError: [Errno Invalid sample rate] -9997
  • 1

这是因为采样频率问题,树莓派声卡不支持,只需要下载一个包就可以了,

sudo apt-get install pulseaudio
  • 1

如果还是不行,那么就只好继续百度了。

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 ..
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

5.下载编译snowboy
现在的路径不要乱动,直接复制以下代码

sudo git clone https://github.com/Kitt-AI/snowboy &&
cd snowboy/swig/Python3 && sudo make
  • 1
  • 2

如果出现报错如下
在这里插入图片描述
可以尝试以下操作,或者多试几次,这是网络问题,命好一次成功。

git config --global http.postBuffer 524288000
  • 1

6.配置修改

打开/snowboy/snowboy/examples/Python3/snowboydecoder.py,修改

from . import snowboydetec
  • 1

改为

import snowboydetec
  • 1

7.复制所需文件到自己的工程目录
将该目录下的所有文件都复制(除了Makefile)

/snowboy/snowboy/swig/Python3/
  • 1

将该目录下的"resource"文件夹复制

/snowboy/snowboy/
  • 1

将该目录下的"snowboydecoder.py"复制

/snowboy/snowboy/examples/Python3/
  • 1

8.训练唤醒词模型
登录snowboy网站:https://snowboy.kitt.ai/
登录之后,训练下载自己的唤醒词.pmdl文件,将下载好的唤醒词,也移动到自己的工程目录中

9.使用demo
在该目录下

/snowboy/snowboy/examples/Python3/
  • 1

有许多的demo,复制出来,在终端使用就可以了。
举例,
在终端输入

python3 demo1.py 你的唤醒词.pmdl
  • 1

在这里插入图片描述
当你对着话筒说你的唤醒词的时候,听见“叮”的一声,然后出现以上的INFO,就说明已经成功了。

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/88262
推荐阅读
相关标签
  

闽ICP备14008679号