SLAM+语音机器人DIY系列:(七)语音交互与自然语言处理——2机器人语音交互实现
摘要这一章将进入机器人语音交互的学习,让机器人能跟人进行语音对话交流。这是一件很酷的事情,本章将涉及到语音识别、语音合成、自然语言处理方面的知识。本章内容:
1.语音交互相关技术
2.机器人语音交互实现
3.自然语言处理云计算引擎
2.机器人语音交互实现其实要自己做一款语音对话机器人还是很容易的,我们只需要选择好语音识别、语音合成、自然语言处理的技术,就可以在一款树莓派3开发板上实现了。由于语音交互系统的核心技术是云端自然语言处理技术,所以我们可以选择网上免费提供的语音识别、语音合成等现有方案,将主要精力用在云端自然语言处理技术的研发上。语音识别与语音合成SDK有:科大讯飞、百度语音、Google…,对于我们墙内玩家…(Google头疼)。经过我自己的实测,发现比较好用的免费SDK是科大讯飞家的,所以强烈推荐。为了测试方便,我先推荐图灵机器人API作为云端自然语言处理技术。等大家将整个语音交互系统的工作原理学会后,随时可以将图灵机器人API替换成自己的云端服务器,从而将主要精力转移到云端自然语言处理技术的研发上。说了这么多,我们先来看看咱们的机器人语音交互软硬件实现的真容吧,如图5。
(图5)机器人语音交互软硬件实现
USB麦克风拾取声音,USB声卡和音响播放声音,树莓派3开发板上运行语音识别、语音合成、QA及NLP请求。其中,语音识别和语音合成采用科大讯飞的SDK,QA及NLP请求调用图灵机器人的API接口。
这里特别说明一下,为什么选用USB声卡而不用树莓派自带AV声卡的原因。你可以直接将耳机插口插入树莓派的AV接口试试,肯定很酸爽!杂音太大。这里就需要硬件支持。杂音原因:因为树莓派3的AV接口是音频和视频合并输出的,这个接口是美标接口,而在中国是国标的,接口的接地和音频是相反的,这就导致根本不能用了。另外对播放器的支持并不完善。
2.1.获取科大讯飞的SDK科大讯飞提供用于研究用途的语音识别、语音合成的免费SDK,科大讯飞分发该SDK的形式是库文件(libmsc.so)+库授权码(APPID),库文件libmsc.so与库授权码APPID是绑定在一起的,这也是大多说商业软件分发的方式。
注册科大讯飞账号:
首先,前往讯飞开放平台(https://www.xfyun.cn),注册科大讯飞账号,注册好后,就可以进入自己的控制台进行设置了,如图6。
(图6)注册科大讯飞账号及登录
创建应用:
我们要在科大讯飞的开放平台创建我们需要的应用,这样讯飞就根据应用类型给我们生成对应的SDK库。
进入讯飞开放平台的控制台后,找到左侧栏的[创建应用],按要求填写各个选项,注意[应用平台]一栏填Linux,因为我们用的树莓派3开发板装的是Linux系统,如图7。
(图7)创建应用
创建应用完成后,就要给该应用添加相应的AI技能了,由于我们需要讯飞的在线语音合成、在线语音识别(也就是语音听写),所以添加这两个服务就行了。如图8。
(图8)添加语音合成与识别服务
申请树莓派3平台对应的LinuxSDK库:
由于科大讯飞开放平台默认只提供PC端x86架构的Linux库,所以如果我们想在树莓派3(树莓派3为ARM架构)上使用科大讯飞的LinuxSDK库,就需要另外申请。其实申请方法也很简单,进入科大讯飞中我的语音云页面:
http://www.xfyun.cn/index.php/mycloud/app/linuxCrossCompile
进行树莓派Linux平台库文件交叉编译申请,选择应用(必须是linux平台的应用),按照默认勾选全部在线服务,平台架构ARM硬件型号BroadcomBCM2837(树莓派3代b型,即树莓派3的SOC,其余版本树莓派,树莓派2为BroadcomBCM2836,更早的版本为BroadcomBCM2835),处理器位数32,运行内存填了1GB。最后记得填上自己的邮箱,提交后,如填写无误正确,你的邮箱将收到可下载库的链接,下载解压后得到libmsc.so,这个库文件就是我们申请的树莓派3平台对应的LinuxSDK库了。如图9。关于交叉编译器和编译脚本,从这里http://pan.baidu.com/s/1pLFPTYr下载,具体交叉可以参考这一篇
http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=32028&highlight=
(图9)申请树莓派3平台对应的LinuxSDK库
关于这个库文件对应的库授权码APPID,可以在[我的应用]界面查看,如图10。
(图10)查看库文件对应的库授权码APPID
2.2.编译安装讯飞语音交互实例ROS版DEMO利用科大讯飞提供的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平台对应的LinuxSDK库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前,我们还需要安装一些依赖项,其实就是麦克风录音和音乐播放工具,安装命令如下:
sudoapt-getupdatesudoapt-getinstalllibasound2-devsudoapt-getinstallmplayer现在可以编译miiboo_asr了,编译命令如下:
cd~/catkin_ws_apps/catkin_make-DCATKIN_WHITELIST_PACKAGES=”miiboo_asr”编译完成后,就可以运行语音交互节点来实现语音对话了,温馨提醒,请确保树莓派已连接网络,因为语音交互节点运行时需要访问网络。启动语音交互各个节点很简单,直接一条命令:
roslaunchmiiboo_asrxf.launch节点都运行起来后,会听到欢迎语句“你好,欢迎使用miiboo机器人语音控制系统”,之后就可以对着麦克风说出自己的指令,经语音识别被转换为文本,文本经图灵机器人得到应答,并通过语音合成使我们能听到回答的声音。这样一个语音交互的聊天机器人就诞生了,尽情享受和机器人聊天的乐趣吧^_^
这里说明一下,如果你使用我们的miiboo机器人,那么miiboo机器人上已经安装编译好了miiboo_asr功能包,所以只需要上面roslaunchmiiboo_asrxf.launch这条启动命令,就可以开始机器人聊天之旅。但是,miiboo机器人上安装的miiboo_asr功能包的libmsc.so的访问次数和频率是有限制的,只能供学习使用。如果大家需要将miiboo_asr功能包用来二次开发或实际应用,就需要按照上面的步骤去科大讯飞官网申请自己的SDK库了。
后记------SLAM+语音机器人DIY系列【目录】快速导览------
第1章:Linux基础
1.Linux简介
2.安装Linux发行版ubuntu系统
3.Linux命令行基础操作
第2章:ROS入门
1.ROS是什么
2.ROS系统整体架构
3.在ubuntu16.04中安装ROSkinetic
4.如何编写ROS的第一个程序hello_world
5.编写简单的消息发布器和订阅器
6.编写简单的service和client
7.理解tf的原理
8.理解roslaunch在大型项目中的作用
9.熟练使用rviz
10.在实际机器人上运行ROS高级功能预览
第3章:感知与大脑
1.ydlidar-x4激光雷达
2.带自校准九轴数据融合IMU惯性传感器
3.轮式里程计与运动控制
4.音响麦克风与摄像头
5.机器人大脑嵌入式主板性能对比
6.做一个能走路和对话的机器人
第4章:差分底盘设计
1.stm32主控硬件设计
2.stm32主控软件设计
3.底盘通信协议
4.底盘ROS驱动开发
5.底盘PID控制参数整定
6.底盘里程计标
第5章:树莓派3开发环境搭建
1.安装系统ubuntu_mate_16.04
2.安装ros-kinetic
3.装机后一些实用软件安装和系统设置
4.PC端与robot端ROS网络通信
5.Android手机端与robot端ROS网络通信
6.树莓派USB与tty串口号绑定
7.开机自启动ROS节点
第6章:SLAM建图与自主避障导航
1.在机器人上使用传感器
2.google-cartographer机器人SLAM建图
3.ros-navigation机器人自主避障导航
4.多目标点导航及任务调度
5.机器人巡航与现场监控
第7章:语音交互与自然语言处理
1.语音交互相关技术
2.机器人语音交互实现
3.自然语言处理云计算引擎
第8章:高阶拓展
1.miiboo机器人安卓手机APP开发
2.centos7下部署Django(nginx+uwsgi+django+python3)
----------------文章将持续更新,敬请关注-----------------
参考文献
[1]张虎,机器人SLAM导航核心技术与实战[M].机械工业出版社,2022.
购书链接:https://item.jd.com/13041503.html
下载更多资料:www.xiihoo.com
GitHub源码:https://github.com/xiihoo/Books_Robot_SLAM_Navigation
Gitee源码(国内访问速度快):https://gitee.com/xiihoo-robot/Books_Robot_SLAM_Navigation
知乎教程:https://www.zhihu.com/people/hiram_zhang
视频教程:https://space.bilibili.com/66815220
邮箱:robot4xiihoo@163.com
QQ群:117698356
一篇看懂服务机器人语音交互与“三大技术”的因果关系
随着时代的发展和人工智能技术的愈加完善,智能服务机器人已越来越广泛地应用于各行业、各领域当中,如我们随处可见的迎宾机器人、智能讲解机器人、会场机器人等,为缓解劳动力短缺和工作人员的压力起到了重要作用。当我们与服务机器人进行语音对话时,是否想过,它是依靠什么技术接收到我们的声音,并给予及时、准确地回复的呢?比如说:“今天天气怎么样”?服务机器人马上会说:“今天天气晴朗,气温为10℃-22℃”,伴随有4-5级的东南风……其实,服务机器人的语音交互原理与我们人类是相似的,实现正常的互动必须满足三个条件:用耳朵听、用大脑理解、用嘴巴回答。服务机器人实现智能交互的“三大技术”分别为语音识别技术(ASR),相当于它的“耳朵”;自然语言处理技术(NLP),相当于它的“大脑”;语音合成技术(TTS),相当于它的“嘴巴”。当我们提出问题后,智能服务机器人将通过麦克风接收声音,声音将通过语音识别技术(ASR),把声学语音转换为服务机器人能够识别的文字、字母信息。如上图所示,在宁夏博物馆嘈杂的环境中,小笨智能服务机器人可通过语音识别技术(ASR)准确“倾听”游客声音,并转换为其能够识别的语言,为下一步对语义的分析、理解做准备。小笨智能服务机器人语音识别技术(ASR)采用国际先进算法,通过编码,把语音转换为小笨智能服务机器人可以识别的样式(即数字向量表示),因为声音信号是服务机器人没有办法直接识别的,需要将声音切割成一小段一小段音频,然后每一小段都按一定规则的数字向量来表示。然后就是解码的过程,即将数字向量拼接为文字、字母的过程。将编码好的向量放置于声学模型和语言模型中,就可得到每一小段对应的文字、字母,然后把翻译出来的文字、字母再经过语言模型,就可组成小笨可识别的单词。当然,声学模型和语言模型也是个神经网络,是小笨智能服务机器人通过大量的语音和语言数据训练出来的,这也是小笨智能服务机器人可以准确识别各种复杂语音的原因之一……解码完成后,可识别的单词信息将通过服务机器人的自然语言处理技术(NLP)来准确理解客户意图、情感倾向等信息,此为语音交互中的核心之一,也是最难的模块之一。自然语言处理技术(NLP)通过语法分析、句法分析、语义理解文本相似度处理、情感倾向分析等技术,具备衡量人们观点和倾向的能力,可精准区分出哪些话属于这个意图,哪些表达不是这一类意图。小笨智能自主研发的自然语言处理技术(NLP)可将接收到的信息进行分析、理解,上图为小笨智能服务机器人在济南能源集团办事大厅,前来办理业务的群众只需要说出需求,即可准确理解群众意图,并从“5G云端大脑”中提取出相对应答案,发出准确的回复指令。小笨智能服务机器人“5G云端大脑”储存着海量知识库,可支持生活常识、天气、机票等信息查询,并同步企业各类形式的信息,使企业信息通过语音、视频、动图等形式展现出来,满足访客98%以上的日常闲聊或企业业务问答。当服务机器人发出回复指令后,还需要用“嘴巴”说出来,这就需要使用语音合成技术(TTS),即把回复指令转换为人类能够听懂的声音。如下图,在济南长途汽车总站小笨智能服务机器人“理解”完游客的问题后,于“5G云端大脑”中提取出准确的回复指令,并转换为游客能够理解的语音、视频、图片等形式,让游客轻松掌握出行信息。语音合成技术(TTS)的工作流程可分为两步,第一步为文本处理,这一步做的事情是把文字或字母指令转化成音素序列,并标出每个音素的起止时间、频率变化等信息,这一步的作用不可小觑,比如拼写相同但读音不同的词的区分、缩写的处理、停顿位置的确定等。第二步为语音合成,这一步是指根据已经标注好的音素起止时间、频率变化等生成语音,最终通过扬声器准确表达出来。小笨智能语音合成技术(TTS)技术可对文本实现实时转换,转换时间可以按秒计算,文本输出的语音音律流畅,让听者在听取信息时感觉自然,几乎没有机器语音输出的冷漠与生涩感。小笨智能强大的自然语言处理能力,可满足在不同应用场景中高效、准确服务,针对不同的应用场景,同步不同的样本数据,所以,小笨智能已服务过的6000+客户中,覆盖政务大厅、法院、商场、机场等全行业场景,满足了不同企业的差异化需求。从语音识别到智能问答,从意图识别到情感分析,无不显示小笨智能服务机器人在当代对场景深层次服务的执着追求。未来,小笨智能将继续坚持为企业、为社会提供有价值的见解,使传统行业焕发新生力,让我们的生活更方便、更高效。AI语音聊天机器人主要功能都有哪些呢
AI语音聊天机器人,提升电话工作效率,真人语音交互,轻松回访客户和筛选意向客户。那么AI语音聊天机器人主要功能都有哪些呢?
1、智能辅助人工呼叫,自动识别目标顾客
该语音聊天机器人拥有大量的话术模板,能够很好地适应用户的实际情况,使用起来非常方便,只要选择话术模板,输入一个电话号码,就可以自动呼叫、回复。
支持呼叫周期定制,有效避开拒绝、挂断高峰期,主动识别用户,电话汇总一键标识,同样支持挂机短信,推广更广泛。
2、高意向节点的无缝对接,提高客户的服务体验
在语音识别技术的基础上,实现了语音和文字的实时转化,NLP,知识图谱,更精确地了解使用用户的意图。
当顾客的回答触碰到特定的意图或关键字时,机器人会自动地将其记录下来,并发出提示,协助坐席监控。
人工坐席的声音无感觉介入,无缝连接,流畅自然,避免顾客等候时间的差异,优化了用户的服务体验。
3、多维数据报告显示,查询更方便,决策更科学
支持多维度外呼数据查询、输出,包括外呼、接通、人工抢接数、监听数等多种数据,为不同的用户(客户/经理)提供服务。
聊天机器人语音趋势图表,指标统计,全部数据清楚,为科学管理和合理决策提供了强有力的支持。