人工智能-树莓派小车(1)——DuerOS语音唤醒

十一月份,得到了一个树莓派开发板,可以研究基于树莓派的语音识别等等人工智能项目,人工智能是最近比较火的,所以让我们看看到底这个小玩意可以干点什么!

购买的链接如下:树莓派,此外,还购买了16G内存卡一张,PS3Playstation3 EYE麦克风一个用于语音识别,基本的东西就是这些。

系统方面,首先采用的是百度的DuerOS Raspberry系统,方便与接下来用的 Python SDK相结合,GitHub地址如下:DuerOS-Python-Client

接下来就是激动人心的首次唤醒了,唤醒之前,还要进行一些环境包的配置

开始

1. 停止现有小度功能,因为会占用MIC资源

sudo systemctl disable duer
sudo systemctl stop duer

2. 安装依赖包

sudo apt-get install python-dateutil
sudo apt-get install gir1.2-gstreamer-1.0
sudo apt-get install python-pyaudio
sudo apt-get install libatlas-base-dev
sudo apt-get install python-dev     
sudo pip install tornado
sudo pip install hyper

hyper库用来支持http2.0 client, pyaudio用来支持录音,tornado用来完成oauth认证。

3. 下载编译好的openssl和Python安装包,进行安装。

openssl安装包 密码: ydkm
python2.7.14安装包 密码: spr8

 sudo tar -zxvf openssl1.1.tar.gz -C /usr
 sudo tar -zxvf python2.7.14.tar.gz -C /usr/local/
 sudo rm -rf /usr/bin/python
 sudo ln -s /usr/local/python2.7.14/bin/python /usr/bin/python

4. 下载Python SDK和参考示例代码

 git clone https://github.com/MyDuerOS/DuerOS-Python-Client.git
 cd DuerOS-Python-Client
 git checkout raspberry-dev

运行和测试

1. 授权

./auth.sh

直接运行使用默认的client_id和client_secret,开发者可以替换成自己在DuerOS开放平台申请的client_id和client_secret,进而实现在控制台自定义的配置属性。

人工智能-树莓派小车(1)——DuerOS语音唤醒_第1张图片
app/auth.py

app/auth.py

其中,需要在开放平台中“安全设置”的“授权回调页",设置成

http://127.0.0.1:3000/authresponse
人工智能-树莓派小车(1)——DuerOS语音唤醒_第2张图片
授权回调页设置

授权回调页设置

1. 唤醒加识别

./wakeup_trigger_start.sh

2. enter按键触发识别

./enter_trigger_start.sh

唤醒以及基本测试

接下来就是第一次唤醒了,演示视频如下:

1.基本测试

测试一些基本功能,包括系统画像和聊天功能

2.唤醒词修改

接下来进行唤醒词的修改,你可以将唤醒词改为大白,或者像我一样改为Jarvis,很酷,不是吗?

首先,我们需要训练自己的唤醒词,训练的语料越多,识别准确率也就越高。
选择在snowboy平台训练自己的唤醒词
先附上snowboy的官方地址:snowboy

登陆

人工智能-树莓派小车(1)——DuerOS语音唤醒_第3张图片
登陆入口

创建自定义的唤醒词

人工智能-树莓派小车(1)——DuerOS语音唤醒_第4张图片
自定义唤醒词创建

下载唤醒模型

在线训练完成后,下载训练模型(本例中我的训练唤醒词为“小白”)

人工智能-树莓派小车(1)——DuerOS语音唤醒_第5张图片
唤醒模型下载

下载的模型为"小白.pmdl"

下载snowboy python接口代码

snowboy GitHub地址: snowboy GitHub

Clone snowboy接口代码

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

生成平台代码

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

人工智能-树莓派小车(1)——DuerOS语音唤醒_第6张图片
平台代码生成
人工智能-树莓派小车(1)——DuerOS语音唤醒_第7张图片
snowboy GitHub README.md

获得snowboy python接口组件

将snowboy/examples目录下的Python目录更名为snowboy

人工智能-树莓派小车(1)——DuerOS语音唤醒_第8张图片
image.png

3 Python DuerOS SDK代码更新

有了上面的定制唤醒模型(小白.pmdl)和snowboy python接口组件,下面就可以更新Python DuerOS SDK的代码了。

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

先删除Python DuerOS中的app/snowboy文件夹,然后再将步骤2中生成的snowboy文件夹拷贝到app/目录下,然后,将训练好的唤醒模型(小白.pmdl)拷贝到app/snowboy目录中。

人工智能-树莓派小车(1)——DuerOS语音唤醒_第9张图片
snowboy目录

修改app/snowboy/snowboydecoder.py

[1]修改__ init __()函数

注释掉self.audio和self.stream_in

人工智能-树莓派小车(1)——DuerOS语音唤醒_第10张图片
__init__

[2] 添加feed_data()方法

人工智能-树莓派小车(1)——DuerOS语音唤醒_第11张图片
添加feed_data()方法

[3] 修改terminate()方法

人工智能-树莓派小车(1)——DuerOS语音唤醒_第12张图片
更新terminate()方法

修改app/wakeup_trigger_main.py

在main()方法中更新唤醒模型,

人工智能-树莓派小车(1)——DuerOS语音唤醒_第13张图片
唤醒模型更新

注意事项

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

人工智能-树莓派小车(1)——DuerOS语音唤醒_第14张图片
训练样本

视频展示

唤醒词更改测试

系列教程

人工智能-树莓派小车(1)——DuerOS语音唤醒
人工智能-树莓派小车(2)——GPIO接口介绍
人工智能-树莓派小车(3)——GPIO控制小车
人工智能-树莓派小车(4)——通过语音玩转智能小车
人工智能-树莓派小车(5)——用微信控制智能小车

你可能感兴趣的:(人工智能-树莓派小车(1)——DuerOS语音唤醒)