树莓派python3.7语音助手开发笔记(2)
距离第一篇笔记过去了很久了,我在这里基本算是开发有成,接下来继续讲下开发过程。
首先,在树莓派上安装ubuntu19.10是不可行的,因为是arm结构,安装上去之后环境差异巨大,所以我在树莓派上安装的还是官方的带界面的树莓派系统。
接下来说下开发语音识别助手,这里我采用的是snowboy的语音激活,百度等平台的API也可以制作语音激活,但我感觉还是不如snowboy来的方便。
snowboy官网:【传送门】
在下载完训练的模型(那个.pmdl文件)之后需要安装snowboy特有的环境,而在GitHub上有官方的安装包(传送门)下载snowboy-master这个压缩包备用。
在安装snowboy之前还需要有SWIG的环境,网上很多朋友(包括我自己)在安装前没有这个环境,都被狠狠的坑了一次,首先去下载最新的SWIG安装包(传送门)
这个时候我们就有了snowboy的必要安装的东西了,将它拷贝到你的虚机里(或者树莓派上)
建议直接用root账户登录,这样就不用总是sudo了(我这里sudo命令执行很慢)在根目录下建一个python文件夹或者建一个SWIG文件夹,将程序与环境分开。我是都放在了一个文件夹下。
因为有个zip文件,所以安装下
#apt-get install unzip
然后解压一下这两个压缩包
#unzip snowboy-master.zip
#tar zxvf swig-4.0.1.tar.gz
然后进入swig的文件夹(cd swig-4.0.1/)
#apt-get install g++//安装g++
#apt-get install libpcre3 libpcre3-dev //安装pcre
这里大家一定不要敲完指令就去喝茶了,一定要密切关注一下有没有报什么错(我当时没有注意,后来怎么都装不上,抓狂了一下午)
然后配置SWIG(这里一定要注意首先要在配置的目录创建文件夹,不然也是配置不上去)
#mkdir /usr/local/swig4.0.1
#./configure --prefix=/usr/local/swig4.0.1
#make
#make install
最后两条命令执行的时间较长,这个时候可以站起来活动活动(久坐对身体不好)
等执行完了之后,检查一下有没有错误。
//配置path
#nano /etc/profile
(也可以用vim,怕有人不知道怎么使用,这里用nano,Ctrl + O保存,Ctrl + X退出)
//在最后添加一行:
PATH=/usr/local/swig4.0.1/bin:$PATH
别忘了改中间目录的名字!!!
配置完了别忘了重启!!!
都没有问题的话就直接到刚刚的snowboy-master的swig下的对应文件夹目录中去(python3就进Python3,python2就进Python)。
#cd /python/snowboy-master/swig/Python3
#make
也是要最后看下有没有报错
然后snowboy的环境就算安装好了,将snowboy-master里面examples文件夹里的对应版本拷贝出来
#cd /python
#mkdir Xiaobai
#cp -r /python/snowboy-master/examples/Python3/ Xiaobai/
#cd Xiaobai
#mv Python3 snowboy
拷贝出来之后我们给他改个名字就叫snowboy,然后进入snowboy的文件夹.
#cd Xiaobai
#cd snowboy
然后把snowboy文件夹里的rescources文件夹替换rescources文件夹,snowboydetect.py和_snowboydetect.so文件用snowboy文件夹swig/Python里的snowboydetect.py和_snowboydetect.so文件替换。
#rm -r resources
#cp -r /python/snowboy-master/resources/ /python/Xiaobai/snowboy
#rm _snowboydetect.so
#cp /python/snowboy-master/swig/Python3/_snowboydetect.so /python/Xiaobai/snowboy
#rm snowboydetect.py
#cp /python/snowboy-master/swig/Python3/snowboydetect.py /python/Xiaobai/snowboy
最后的是snowboydetect.py文件别删成snowboydecoder.py了
然后python3的话还要把snowboydecoder.py文件第五行改一下,把(from . )给删掉。
#nano snowboydecoder.py
然后保存退出,把你的训练模型pmdl文件拷贝到这个snowboy文件夹下,这样snowboy的激活部分就做好了,python3 demo.py Xiaobai.pmdl 指令可以试验一下。
再补充一下,如果是直接使用树莓派的话,而且使用的是USB接口的播放录音设备,在播放的时候会没有声音,这是因为它会默认使用card:0(板载)声卡去播放,只有耳机孔插上耳机后才会有声音,或者如果连接HDMI的话,也可能会从HDMI去播放。
这里有两个解决方法
第一种:暴力注释板载声卡(传送门)
#nano /boot/config.txt
在这里面找到
dtparam=audio=on
把它注释掉然后重启就可以了
但有时候这种方法并不奏效,还会报错
ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
那就用我的第二种方法
第二种:修改ALSA配置文件(文件位置 /usr/share/alsa/alsa.conf )
#vim /usr/share/alsa/alsa.conf
在第62、63、106、109、113行有card标注,将后面的 0 改成你想要的声卡编号(aplay -l 可以查看)
(device如果有需要也改一下,我这里是不需要改的)