ROS+科大讯飞语音=让你的机器人能听会说---(一)环境搭建与准备

概述

ROS介绍

ROS是是用于机器人的一种次级操作系统。它提供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,它也提供一些工具程序和库用于获取、建立、编写和运行多机整合的程序。对ROS进行分级可分为计算图级、文件系统级、社区级。其中计算图级主要描述程序如何运行;文件系统级决定程序文件如何组织和构建;社区级负责程序的分布式管理。计算图是ROS处理数据的一种点对点的网络形式。程序运行时,所有进程以及他们所进行的数据处理,将会通过一种点对点的网络形式表现出来。这一级主要包括几个重要概念:节点(node)、消息(message)、主题(topic)、服务(service)。
具体见 http://wiki.ros.org/

讯飞语音介绍

讯飞开放平台作为全球首个开放的智能交互技术服务平台,致力于为开发者打造一站式智能人机交互解决方案。用户可通过互联网、移动互联网,使用任何设备、在任何时间、任何地点,随时随地享受讯飞开放平台提供的“听、说、读、写……”等全方位的人工智能服务。目前,开放平台以“云+端”的形式向开发者提供语音合成、语音识别、语音唤醒、语义理解、人脸识别、个性化彩铃、移动应用分析等多项服务。
相比其他的语音sdk,科大讯飞提供了多个平台的sdk,适合各个领域的开发与应用。并且提供了开放语义的平台和完善和开发者平台,能够很方便对机器人的对话进行自定义。

硬件条件

  • intel minnow board 开发板 (当然一般笔记本电脑也可以)
  • 科大讯飞五麦环形阵列评估版(也可用软件sdk方法实现唤醒,后面会介绍)

环境准备

  • 安装好ubuntu 14.04 LTS
  • 安装好ROS indigo
    • 参考资料 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语言编写,方便随时修改和升级

主要工作

  1. 将自己的唤醒字资源文件下载到环形阵列板卡中,并实现板卡串口与平台串口的连接,在c语言中编写相应的驱动。(笔者在这采样的是mraa库)
  2. 编写xfasr节点,能做到一边录音一边识别,识别到结果后自动停止录音。这里笔者是花了很多时间的,主要是在声卡的驱动上,最后采用的alsa录音。
  3. 编写xftts节点,简单讲官方的demo改改就可以实现,播放时笔者利用里mplayer播放器,使用其被动模式,与管道通信的方法,实现了随时播放也可被打断,并且稳定性高。
  4. explain节点就是将识别结果的json数据转换为字典变量,然后进行进一步解析和处理。

本系列结构

本系列为ROS+科大讯飞语音=让你的机器人能听会说,
主要分为环境搭建与准备篇,说话篇,识别篇,唤醒篇,语义解释篇五部分。
笔者的所有源码 将在相关篇中全部列出,并且会上传到笔者的github仓库保存
git仓库地址 https://github.com/zhouge94/Cute_Six_ROS_Balance (已经上传)

你可能感兴趣的:(个人经验)