【hehung|开发日记Nov.】加把劲,更改唤醒词
hehung · hehung 发布于2017-12-14 21:17 浏览:1282 回复:0

唤醒词的修改

【hehung|开发日记Nov.】小白入门,唤醒小度

【hehung|开发日记Nov.】使用python DuerOS SDK【树莓派】


 


参考官方的文档  https://developer.dueros.baidu.com/forum/topic/show?topicId=244879

一、snowboy平台训练自己的唤醒词

https://snowboy.kitt.ai/    唤醒词使用的网站

1、首先是创建一个snowboy的账号


点击右上角的登录,会弹出三种登录方式,一个是github,一个是推特,还有一个是脸谱,这三个账号我都没有,然后就注册了一个github的账号。

1.png

 

2、创建自定义的唤醒词


点击Create Hotword,可以创建一个自己定的的唤醒词进行训练

2.png

或者直接选择一个已有的唤醒词来训练,我在这里选择的是中文下最流行的“小乐同学”,然后点击最右边的录音图标进行训练。

因为我已经训练过“小乐同学”,所以会有一个直接下载的图标。

我在这里以小白同学再来演示一次。

3.png4.png


这里要注意一下,浏览器弹出的是否允许录音的按钮一定要选上,不然的话实录不了的。

6.png

然后点击录音图标,开始录音,不用自己点击stop recording,说完之后等待蓝色的边框变成绿色的就行了。

之后就可以自己测试一下,没问题的话就下载pmdl文件到树莓派。

二、下载snowboy python的接口代码

snowboy GitHub地址https://github.com/Kitt-AI/snowboy

(1)Clone snowboy接口代码

执行命令:

git clone 
https://github.com/Kitt-AI/snowboy.git


(2)生成平台代码

snowboy/swig/Python目录执行“make”命令

make


7.png

可以看到,遇到了错误,说swig没找到,那就需要下载swig

 

下载地址:http://www.swig.org/download.html

将下载的swig放在/home/pi目录下。

8.png

然后安装配置swig

执行命令:

cd  /home/pi    //返回目录pi
sudo tar -xzvf swig-3.0.12.tar.gz  //解压swig


再解压过程中如果报错,说明没有安装g++precswig在安装的时候需要g++prec的支持,还要安装这两个库

sudo apt-get install g++  
sudo apt-get install libpcre3 libpcre3-dev


之后进入刚才解压swig的目录,开始安装swig

cd swig-3.0.12   
./configure --prefix=/usr/local/swig3.0.12
make  
sudo make install


设置环境变量

sudo vim /etc/profile


i进入编辑模式,然后在最后一行加入PATH=/usr/local/swig3.0.12/bin:$PATH

ESC退出编辑模式之后按:wq保存退出。

 

然后重启树莓派

 

现在开始编译snowboy,进入home/snowboy/swig/Python目录

cd /home/pi/snowboy/swig/Python
make


9.png

出现上图表示获取snowboy Python组件成功。

 

三、Python DuerOS SDK代码更新

Python DuerOS 中的app/snowboy目录内容更新

1、删除Python DuerOS中的app/snowboy文件夹

91.png

但是为了保险,我将这个文件夹重新命名为snowboy-1,防止后期配置出错,便于直接恢复,嘿嘿~~

2、将步骤中生成的snowboy文件夹拷贝到app/目录下

其实就是/home/pisnowboy/examples/Python目录,我将python目录复制一份拷贝到/home/pi/DuerOS-Python-Client/app目录中,然后更名为snowboy

然后打开snowboy目录会发现有三个文件的图标变成感叹号,这是因为拷贝文件的软连接问题,据需执行下面的操作会出错。

解决方法:

(1) 、将这三个带感叹号的文件都删除;

(2) 、将/home/pi/snowboy目录下的resource文件夹拷贝到/home/pi/DuerOS-Python-Client/app/snowboy目录下,会发现感叹号图标消失了。

(3) 、将/home/pi/snowboy/swig/Pythonsnowboydetect.py_snowboydetect.so这两个文件拷贝/home/pi/DuerOS-Python-Client/app/snowboy目录下。

 

3将训练好的最开始下载的唤醒模型(小乐同学.pmdl)拷贝到/home/pi/DuerOS-Python-Client/app/snowboy目录中。

92.png

现在,整个唤醒词的替换工作就完成了。

PS:将小乐同学pmdl的中文名字改成英文方便树莓派输入,不然的话还要在树莓派上安装一个中文输入法。

93.png

四、修改python SDK识别模块代码

1、打开/home/pi/DuerOS-Python-Client/app/snowboy/snowboydecoder.py

2修改__ init __()函数

注释掉self.audioself.stream_in

3、添加feed_data()方法

def feed_data(self, data):
        self.ring_buffer.extend(data)


94.png

4、修改terminate()方法

将此方法下的三条语句都删除掉,然后添加一条pass语句。

95.png

5、打开/home/pi/DuerOS-Python-Client/app/wakeup_trigger_main.py

6、main()方法中更新唤醒模型

将原来的小度调用语句删除掉,填上自己的唤醒模型xiaole.pmdl

model = 'app/snowboy/xiaoduxiaodu_all_10022017.umdl'


注意:官方的唤醒词的后缀是umdl,注意后缀名不一样,不要写错了,还要注意代码的对齐,因为python对代码对齐很敏感。

96.png

到目前,我们已经可以用我们自己的唤醒词来对DuerOS进行唤醒了

7、最后一步,重新授权,唤醒

cd /home/pi/DuerOS-Python-Client
./auth.sh      
./wakeup_trigger_start.sh


好了,成功唤醒

 

 

引用官方的一句话

 

“经过上面的步骤,我们便能够更新成自己喜欢的唤醒词。但我们自定义的唤醒词还不是完美的。在测试中会发现唤醒率并不高。根本的原因在于我们自定义的唤醒词,训练语料条太少了(可能只有1组,3条)。要达到一个很好的唤醒率,需要进行大量丰富的语音样本训练才行。”

所以,我们最好的是选择训练书最多的唤醒词来进行替换,这样唤醒率将大大提高。

  


点赞  ( 0 )
收藏
评论(0)
TOP