snowboy进行语音唤醒,编译snowboy文件

您所在的位置:网站首页 nowboy怎么读 snowboy进行语音唤醒,编译snowboy文件

snowboy进行语音唤醒,编译snowboy文件

2024-01-18 10:35| 来源: 网络整理| 查看: 265

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/weixin_40490238/article/details/88848335

博主环境:树莓派3B,python3,更新过g++,gcc(不过影响不大)

树莓派更换源:https://blog.csdn.net/weixin_40490238/article/details/83786584

通用性应该比较强

github:https://github.com/kitt-ai/snowboy

snowboy:https://snowboy.kitt.ai/

更新pip3

pip3 install --upgrade pip

安装依赖环境

sudo apt-get install python-pyaudio python3-pyaudio sox pip install pyaudio

测试音频录制

rec temp.wav

这里时会报错,can't open input  'default':  ....... 

这时安装(配置麦克什么的)

sudo apt-get install alsa-utils pulseaudio

再进行测试

rec test.wav

ctrl+c停止录音,aplay test.wav 播放成功。

到这就成功了一大半。

 

在这就得自己下载snowboy,编译出适合自己用的_snowboydetect.so

下载snowboy:https://github.com/kitt-ai/snowboy

安装swig(3.0.10或者更高的版本)

sudo apt-get install swig

然后安装atlas矩阵计算库:(必须安装,否则编译报错)

sudo apt-get install libatlas-base-dev

打开snowboy的下载包,解压

cd /snowboy/swig/Python3 make

得到了编译好的文件_snowboydetect.so

下载snowboy官方raspberry的包:https://s3-us-west-2.amazonaws.com/snowboy/snowboy-releases/rpi-arm-raspbian-8.0-1.1.1.tar.bz2

解压此包,将_snowboydetect.so放入该目录

在此生成自己的唤醒词:https://snowboy.kitt.ai/hotword/34901

然后将自己的**.pmdl文件放入目录

python3 demo.py jingling.pmdl

运行成功,唤醒提示

 

如果报错,采取以下建议:

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声卡),那么只需设置 pcm 为该组合设备的编号即可。示例: pcm.!default { type plug slave { pcm "hw:1,0" } } ctl.!default { type hw card 1 }

上面的 hw:1,0 表示使用 card 1,设备 0。即 C-Media USB Headphone Set 。如果配成 hw:Set,0 ,效果相同(个人更推荐使用声卡名字)。

第二种:您使用的是一个单独的 USB 麦克风,并直接通过树莓派的 AUX 3.5 口外接一个音响。那么可以参考如下配置: pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:0,0" } capture.pcm { type plug slave.pcm "hw:2,0" } } ctl.!default { type hw card 2 }

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

 

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

 

参考文献:

https://github.com/dingdang-robot/dingdang-robot/wiki/configuration#



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3