自从用《树莓派搭建家庭影院》并《用cpolar实现内网穿透》后,我的树莓派再一次进入了积灰状态。最近看了两篇关于自制智能语音助手的文章后,忽然静极思动,再次把树莓派拿了出来,倒腾一番。
要想让树莓派实现智能语音助手,首先要实现语音唤醒功能,从CSDN上找到了N篇攻略,最终参考博文《树莓派3B+指南(十一)安装配置snowboy》予以实施。具体安装过程这篇博文写的很清楚,我这里主要把自己遇到的问题列举下,以供参考。
1.换源
清华的源设置后不知怎么无法完成更新,于是换了一个阿里的源:
2.安装pyaudio
执行博文中的第一条指令,安装portaudio19-dev时遇到了报错,原来是缺少了依赖项libjack-dev,于是先执行sudo apt-get install libjack-dev,之后再根据博文完成了pyaudio的安装。
3.配置麦克风
这一步也可以参考我之前的博文《NO.5 测试树莓派的语音功能》。
4. 下载编译swig和snowboy
按照参考博文执行,先建一个snowboy的目录,进入该目录后按如下顺序操作:
需要注意的是,我在编译snowboy时出现“fatal error: Python.h: No such file or directory”的报错。出现这个报错是因为我的树莓派的Python开发包没有安装,所以要先执行“sudo apt-get install python3-dev”的操作,然后再回到指定目录执行make。编译成功后在目录下就会生成一个_snowboydetect.so文件。
另外,参考其他博文,我还安装了sox,“sudo apt-get install sox”,据说不装这个可能始终无法唤醒。
5.配置修改
打开/snowboy/snowboy/examples/Python3/snowboydecoder.py,把其中的“from . import snowboydetect”改为“import snowboydetect”。
6.复制所需文件到自己的工程目录
创建一个自己的工程目录,然后把如下文件复制到目录中:
/snowboy/snowboy/swig/Python3/目录下除了“Makefile”以外的所有文件。
/snowboy/snowboy/目录下的"resource"文件夹及其所有文件。
/snowboy/snowboy/examples/Python3/目录下的“snowboydecoder.py”文件和”demo.py”。
7.demo测试
进入工程目录,输入:python3 demo.py resources/models/snowboy.umdl
结果出现如下报错:
查了好几篇文章最终确定,主要问题就是黄色方框内提示的采样率问题。因为树莓派在基于pyaudio录音时其声卡不支持16K采样率。(黄框上部alsa的报错可以忽略,不影响唤醒)
采样率的解决方案就是安装pulseaudio:sudo apt-get install pulseaudio
安装完成后,在终端直接输入“pulseaudio --start”,启动pulseaudio。
这时候重新运行demo,用snowboy唤醒词,系统就会显示成功。
8.训练唤醒词模型
打开Snowboy Personal Wake Word,在线录音三次后提交,会自动生成对应的唤醒词.pmdl。
将这个pmdl文件放到工程目录中,再次执行demo程序,但对应的模型换成这个自定义的pmdl文件。
写在最后,语音唤醒经过上述8步已经实现。从实际测试效果来看,也可能是usb麦克风的原因导致唤醒词的识别还不够灵敏。后续再慢慢调整吧。