这一章将进入机器人语音交互的学习,让机器人能跟人进行语音对话交流。这是一件很酷的事情,本章将涉及到语音识别、语音合成、天然语言处理方面的知识。本章内容:php
1.语音交互相关技术html
2.机器人语音交互实现python
3.天然语言处理云计算引擎linux
其实要本身作一款语音对话机器人仍是很容易的,咱们只须要选择好语音识别、语音合成、天然语言处理的技术,就能够在一款树莓派3开发板上实现了。因为语音交互系统的核心技术是云端天然语言处理技术,因此咱们能够选择网上免费提供的语音识别、语音合成等现有方案,将主要精力用在云端天然语言处理技术的研发上。语音识别与语音合成SDK有:科大讯飞、百度语音、Google…,对于咱们墙内玩家…(Google头疼)。通过我本身的实测,发现比较好用的免费SDK是科大讯飞家的,因此强烈推荐。为了测试方便,我先推荐图灵机器人API做为云端天然语言处理技术。等你们将整个语音交互系统的工做原理学会后,随时能够将图灵机器人API替换成本身的云端服务器,从而将主要精力转移到云端天然语言处理技术的研发上。说了这么多,咱们先来看看我们的机器人语音交互软硬件实现的真容吧,如图5。nginx
(图5)机器人语音交互软硬件实现django
USB麦克风拾取声音,USB声卡和音响播放声音,树莓派3开发板上运行语音识别、语音合成、QA及NLP请求。其中,语音识别和语音合成采用科大讯飞的SDK,QA及NLP请求调用图灵机器人的API接口。ubuntu
这里特别说明一下,为何选用USB声卡而不用树莓派自带AV声卡的缘由。你能够直接将耳机插口插入树莓派的AV接口试试,确定很酸爽!杂音太大。这里就须要硬件支持。杂音缘由: 由于树莓派3的AV接口是音频和视频合并输出的,这个接口是美标接口,而在中国是国标的,接口的接地和音频是相反的,这就致使根本不能用了。另外对播放器的支持并不完善。centos
科大讯飞提供用于研究用途的语音识别、语音合成的免费SDK,科大讯飞分发该SDK的形式是库文件(libmsc.so)+库受权码(APPID),库文件libmsc.so与库受权码APPID是绑定在一块儿的,这也是大多说商业软件分发的方式。服务器
注册科大讯飞帐号:网络
首先,前往讯飞开放平台(https://www.xfyun.cn),注册科大讯飞帐号,注册好后,就能够进入本身的控制台进行设置了,如图6。
(图6)注册科大讯飞帐号及登陆
建立应用:
咱们要在科大讯飞的开放平台建立咱们须要的应用,这样讯飞就根据应用类型给咱们生成对应的SDK库。
进入讯飞开放平台的控制台后,找到左侧栏的[建立应用],按要求填写各个选项,注意[应用平台]一栏填Linux,由于咱们用的树莓派3开发板装的是Linux系统,如图7。
(图7)建立应用
建立应用完成后,就要给该应用添加相应的AI技能了,因为咱们须要讯飞的在线语音合成、在线语音识别(也就是语音听写),因此添加这两个服务就好了。如图8。
(图8)添加语音合成与识别服务
申请树莓派3平台对应的Linux SDK库:
因为科大讯飞开放平台默认只提供PC端x86架构的Linux库,因此若是咱们想在树莓派3(树莓派3为ARM架构)上使用科大讯飞的Linux SDK库,就须要另外申请。其实申请方法也很简单,进入科大讯飞中个人语音云页面:
http://www.xfyun.cn/index.php/mycloud/app/linuxCrossCompile
进行树莓派Linux平台库文件交叉编译申请,选择应用(必须是linux平台的应用),按照默认勾选所有在线服务,平台架构ARM硬件型号Broadcom BCM2837(树莓派3代b型,即树莓派3的SOC,其他版本树莓派,树莓派2为BroadcomBCM2836,更早的版本为BroadcomBCM2835),处理器位数32,运行内存填了1GB。最后记得填上本身的邮箱,提交后,如填写无误正确,你的邮箱将收到可下载库的连接,下载解压后获得libmsc.so,这个库文件就是咱们申请的树莓派3平台对应的Linux SDK库了。如图9。关于交叉编译器和编译脚本,从这里http://pan.baidu.com/s/1pLFPTYr下载,具体交叉能够参考这一篇
http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=32028&highlight=
(图9)申请树莓派3平台对应的Linux SDK库
关于这个库文件对应的库受权码APPID,能够在[个人应用]界面查看,如图10。
(图10)查看库文件对应的库受权码APPID
利用科大讯飞提供的SDK库文件和官方API说明文档,咱们就能够开发出本身的语音交互实例程序,固然也能够开发对应的ROS程序。在咱们的miiboo机器人上开发的语音交互ROS功能包叫miiboo_asr。miiboo_asr功能包文件组织结构,如图11。其中lib文件夹下存放科大讯飞提供的libmsc.so库文件,iat.cpp是语音识别节点源文件,tts.cpp是语音合成节点源文件,qa_nlp.cpp是QA&NLP逻辑处理节点源文件,其余的文件咱们能够不用关心。
(图11)miiboo_asr功能包文件组织结构
了解了miiboo_asr功能包的基本状况后,咱们就开始编译安装吧。首先,将miiboo_asr包拷贝到~/catkin_ws_apps/src/目录下。而后将上面申请到的树莓派3平台对应的Linux SDK库libmsc.so文件拷贝到miiboo_asr/lib/中,并将miiboo_asr/CMakeLists.txt文件中有关libmsc.so的路径替换为你存放该libmsc.so的实际路径。如图12。
(图12)CMakeLists.txt文件中有关libmsc.so的路径修改
接着咱们须要将miiboo_asr/launch/xf.launch文件中的各个appid、声卡硬件地址、麦克风硬件地址设置成本身实际的值。关于与libmsc.so库绑定的appid上面已经介绍了查看方法,而声卡硬件地址、麦克风硬件地址的查询也很简单。
麦克风硬件地址的查询直接使用命令arecord -l,如图13。
(图13)麦克风硬件地址的查询
在这里麦克风录制设备处于卡1,设备0,因而咱们的麦克风硬件地址就是“plughw::CameraB409241”。
声卡硬件地址的查询直接使用命令aplay -l,如图14。
(图14)声卡硬件地址的查询
在这里声卡播放设备有三个,卡0中的设备0为3.5音频输出,卡0设备1为HDMI音频输出,卡2设备0为USB声卡输出。这里我推荐使用USB声卡输出,因此咱们的声卡硬件地址就是“plughw:DAC”。
在编译miiboo_asr前,咱们还须要安装一些依赖项,其实就是麦克风录音和音乐播放工具,安装命令以下:
sudo apt-get update sudo apt-get install libasound2-dev sudo apt-get install mplayer
如今能够编译miiboo_asr了,编译命令以下:
cd ~/catkin_ws_apps/
catkin_make -DCATKIN_WHITELIST_PACKAGES=”miiboo_asr”
编译完成后,就能够运行语音交互节点来实现语音对话了,舒适提醒,请确保树莓派已链接网络,由于语音交互节点运行时须要访问网络。启动语音交互各个节点很简单,直接一条命令:
roslaunch miiboo_asr xf.launch
节点都运行起来后,会听到欢迎语句“你好,欢迎使用miiboo机器人语音控制系统”,以后就能够对着麦克风说出本身的指令,经语音识别被转换为文本,文本经图灵机器人获得应答,并经过语音合成使咱们能听到回答的声音。这样一个语音交互的聊天机器人就诞生了,尽情享受和机器人聊天的乐趣吧^_^
这里说明一下,若是你使用咱们的miiboo机器人,那么miiboo机器人上已经安装编译好了miiboo_asr功能包,因此只须要上面roslaunch miiboo_asr xf.launch这条启动命令,就能够开始机器人聊天之旅。可是,miiboo机器人上安装的miiboo_asr功能包的libmsc.so的访问次数和频率是有限制的,只能供学习使用。若是你们须要将miiboo_asr功能包用来二次开发或实际应用,就须要按照上面的步骤去科大讯飞官网申请本身的SDK库了。
------SLAM+语音机器人DIY系列【目录】快速导览------
第1章:Linux基础
第2章:ROS入门
第3章:感知与大脑
第4章:差分底盘设计
第5章:树莓派3开发环境搭建
第6章:SLAM建图与自主避障导航
2.google-cartographer机器人SLAM建图
第7章:语音交互与天然语言处理
第8章:高阶拓展
2.centos7下部署Django(nginx+uwsgi+django+python3)
----------------文章将持续更新,敬请关注-----------------
若是你们对博文的相关类容感兴趣,或有什么技术疑问,欢迎加入下面的《SLAM+语音机器人DIY》QQ技术交流群,一块儿讨论学习^_^
关于咱们:
视频教程: