ROS+科大讯飞语音=让你的机器人能听会说---(一)环境搭建与准备
2016-07-25 22:04
357 查看
概述
ROS介绍
ROS是是用于机器人的一种次级操作系统。它提供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,它也提供一些工具程序和库用于获取、建立、编写和运行多机整合的程序。对ROS进行分级可分为计算图级、文件系统级、社区级。其中计算图级主要描述程序如何运行;文件系统级决定程序文件如何组织和构建;社区级负责程序的分布式管理。计算图是ROS处理数据的一种点对点的网络形式。程序运行时,所有进程以及他们所进行的数据处理,将会通过一种点对点的网络形式表现出来。这一级主要包括几个重要概念:节点(node)、消息(message)、主题(topic)、服务(service)。具体见 http://wiki.ros.org/
讯飞语音介绍
讯飞开放平台作为全球首个开放的智能交互技术服务平台,致力于为开发者打造一站式智能人机交互解决方案。用户可通过互联网、移动互联网,使用任何设备、在任何时间、任何地点,随时随地享受讯飞开放平台提供的“听、说、读、写……”等全方位的人工智能服务。目前,开放平台以“云+端”的形式向开发者提供语音合成、语音识别、语音唤醒、语义理解、人脸识别、个性化彩铃、移动应用分析等多项服务。相比其他的语音sdk,科大讯飞提供了多个平台的sdk,适合各个领域的开发与应用。并且提供了开放语义的平台和完善和开发者平台,能够很方便对机器人的对话进行自定义。
硬件条件
intel minnow board 开发板 (当然一般笔记本电脑也可以)科大讯飞五麦环形阵列评估版(也可用软件sdk方法实现唤醒,后面会介绍)
环境准备
安装好ubuntu 14.04 LTS安装好ROS in
4000
digo
参考资料 http://wiki.ros.org/indigo/Installation/Ubuntu
搭建好一个catkin工作空间
安装mplayer播放器(用于音频播放)
命令 sudo apt-get install mplayer
可选软件
安装ssh服务端(主要方便远程命令行调试)
安装x11vnc(主要方便远程桌面调试)
安装samba(主要方便文件的传输与共享)
注册有讯飞开发平台账号
创建了app
下载相关sdk的linux版本(包括离线命令字识别,离线语音合成,申请开发云语义,语音唤醒)
编译运行官方demo测试sdk能使用以后,将离线命令字识别包中的lib/libmsc.so复制到/usr/lib目录下,这个libmsc.so包含了所有的api函数。
整体节点框图
工作过程
五麦阵列硬件监听到特定的关键字后通过串口发送唤醒信号给平台,wakeup节点监听串口,唤醒后发送一个主题为xfwakeup的消息,此消息包含唤醒的角度信息。(此节点也可以里利用讯飞的语音唤醒sdk以软件方式实现,后续会介绍)xfasr节点订阅了xfwakeup消息,消息来到后,xfasr节点就开始一边采样声音信号,一边进行识别,但又识别结果或者设置时间到达后,停止录音。若识别成功,则将返回的结果的json格式发送到xfunderstand主题上。
若没有识别结果,这发送失败提示语到xfsaywords主题上。
xftts订阅了xfsaywords主题,并负责将此主题出现的消息的字符串转换为音频文件,然后调用mplayer播放器播放。xftts还订阅了xfplaywave的主题,用于播放指定路径或者网址的文件
explain节点订阅xfunderstand主题,功能是对识别结果进行解析,并发出相应的控制指令到control_cmd主题上,同时将应答语句发送到xfsayword主题,以便xftts节点进行转换播放。此节点采用python语言编写,方便随时修改和升级
主要工作
将自己的唤醒字资源文件下载到环形阵列板卡中,并实现板卡串口与平台串口的连接,在c语言中编写相应的驱动。(笔者在这采样的是mraa库)编写xfasr节点,能做到一边录音一边识别,识别到结果后自动停止录音。这里笔者是花了很多时间的,主要是在声卡的驱动上,最后采用的alsa录音。
编写xftts节点,简单讲官方的demo改改就可以实现,播放时笔者利用里mplayer播放器,使用其被动模式,与管道通信的方法,实现了随时播放也可被打断,并且稳定性高。
explain节点就是将识别结果的json数据转换为字典变量,然后进行进一步解析和处理。
本系列结构
本系列为ROS+科大讯飞语音=让你的机器人能听会说,主要分为环境搭建与准备篇,说话篇,识别篇,唤醒篇,语义解释篇五部分。
笔者的所有源码 将在相关篇中全部列出,并且会上传到笔者的github仓库保存
git仓库地址 https://github.com/zhouge94/Cute_Six_ROS_Balance (已经上传)
相关文章推荐
- doxygen+graphviz+doxygen-wizard yum install on linux
- Java生成验证码(二) 使用Kaptcha组件生成图片验证码
- android-Parcelable
- 15拷贝媒体文件
- HDU-5733-tetrahedron-计算几何
- dpkg:处理软件包 xxx (--configure)时出错
- linear model for classification
- Java数据类型的四类八种
- SQL Server Express 没有 SQL Server Agent
- Cookie for PHP
- 最强的Android Studio的使用技巧和快捷键
- CodeForces 534B Covered Path
- PHP中如何设置error_reporting错误报告级别
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
- 内部类 ---匿名内部类
- 试图加载格式不正确的程序
- 【原文】前端程序员必须知道的高性能Javascript知识
- magedu_20160721
- #码神心得_14# java语言之IO操作
- SQL优化技巧