【ROS总结】ROS下的百度语音识别应用

前言


今天闲来无事查看下语音识别在ROS中的应用,之前在ROS中玩过一段时间的Pocket Sphinx,关于Pocket Sphinx的学习过程以后会介绍,或者可以去网上搜索一些教程,都是比较不错的。现在讲述下在ROS中百度语音的使用情况,由于百度语音的作者写了一些文章在Github上,但是步骤不是很清楚,在此记录一下防止以后忘记,也和大家分享下,避免出现一些失误而导致半途而废

需求

操作系统: Ubuntu 14.04.2

ROS版本:Indigo


ROS语音识别介绍


关于一些在ROS中如何使用语音识别库,大家可以自行搜索下,基本上都是在ROS官网上的一些资料,目前官网上的语音识别库一共有四个,分别为

目前讲述的是百度的语音识别,目前百度语音已经支持ROS,大家可以学习下。以后会介绍其他三个语音库。


百度语音识别在ROS中的应用


关于如何在ROS中使用百度语音识别呢,作者也已经在wiki上介绍了,大家可以先查看下,网址是:http://wiki.ros.org/baidu_speech
不过作者貌似没有提供在线安装,也就是apt-get来安装百度语音包,不过不妨碍今天的教程,安装百度语音包的过程如下:
·在Github上下载百度语音包
·安装百度语音包的需求包
·运行并测试百度语音包中的说话者(simple_speaker.launch)和语音识别(simple_voice.launch)
下面根据步骤来进行操作

在Github上下载百度语音识别包


在下载之前,你应该有一个catkin工作空间,我的工作空间名字就是catkin_ws。然后在catkin_ws/src下下载百度语音识别包(simple_voice)
$ git clone https://github.com/DinnerHowe/simple_voice.git	


下载完成后其实就可以使用,但是会提示错误,例如:No module named pyaudio 或者 Nomodule named vlc
其实作者也已经说过了,要想使用simple_voice这个包,需要Python库,也就是pyaudio和vlc-python。下面安装需求包。

安装百度语音识别包的需求包


安装pyaudio其实是比较简单的,直接使用下面的命令就可以安装:
        $ sudo apt-get install python-pyaudio
 
这个步骤直接就在线安装了需求包pyaudio。
安装vlc其实比较坑,或许是我的电脑的问题,没有找到在线安装命令也就是python-vlc这个包,就算安装了vlc所有的包也还是提示No module named vlc。
不过最终还是解决了,使用如下方式,首先在你的home下,下载vlc的封装库:
$ cd
$ git clone https://github.com/geoffsalmon/vlc-python.git

下载完成后,使用如下命令加载vlc模型到Python中
	$ sudo cp vlc-python/generated/vlc.py /usr/lib/python2.7/

Indigo的Python是2.7版本,大家也可以替换成你当前版本,路径还是/usr/lib。
添加完成需求包后,就可以测试运行百度语音识别包了。

运行并测试百度语音包中的说话者(simple_speaker.launch)和语音识别(simple_voice.launch)


测试simple_speaker.launch

首先打开一个终端,输入如下命令来启动simple_speaker.launch
	$ roslaunch simple_voice simple_speaker.launch

作者在网上说直接运行这个launch就可以听到说话,其实还少一步,需要添加音频文件才可以。作者在语音包中给出了一个“请让一下.mp3”,其他音频文件没有测试,大家可以测试下都支持什么音频文件,在此就不讲述了。
运行完simple_speaker.launch后,多出了一个/speak_string的话题,该话题就是接收音频文件,需要手动的添加音频文件到simple_speaker节点,其中该launch文件只开启了一个节点就是simple_speaker。
打开另一个终端,向simple_speaker节点添加音频文件:

	$ roscd simple_voice/src
	$ rostopic pub /speak_string std_msgs/String -- '请让一下.mp3'

这个步骤就是加载给出的“请让一下.mp3”到节点,关于rostopic pub的使用方法在此就不介绍了,大家可以查看rostopic的使用
这两步完成后,就可以听到电脑发出“请让一下,谢谢!”的语音了。

测试simple_voice.launch

关于测试simple_voice.launch是容易的,直接一条命令搞定:
	$ roslaunch simple_voice simple_voice.launch

然后对着电脑说话就可以了,比如:


每次只识别一次,识别完成后需要桥下Enter键才能继续识别,当然大家也可以对voice_node.py进行改造,变成实时语音识别。







【资源说明】 基于ros语音识别源码(采用python与科大讯飞语音听写api)+项目使用说明.zip 基于ros语音识别,使用python与科大讯飞语音听写api实现实时的语音识别,并利用节点发布话题控制进程。 环境要求: * ros1,python3.x * 声卡:```sudo apt install libasound2-dev``` * requirement: * pass 项目结构: ``` XF_PYROS_IAT │ .gitattributes │ CMakeLists.txt │ package.xml │ README.md │ ├─launch │ main_node.launch │ ├─others │ node.png │ node_main.png │ ├─scripts │ close_switch_node.py │ main_node.py │ open_switch_node.py │ reset_node.py │ └─src func_open_node.cpp func_pause_node.cpp func_reset_node.cpp ``` 节点说明: ![节点图](others/node.png "节点图") * `main_node.py`是主程序,承担语音识别模块,对应节点为:/main_node,只运行该节点不会直接开始语音识别 * `open_switch_node.py`用于开启主程序语音识别,对应节点为:/open_node * `close_switch_node.py`用于关闭主程序语音识别,对应节点为:/pause_node * `reset_node.py`用于重置整个进程,使其恢复到休眠状态,对应节点为:/reset_node,运行一次该节点后就可以通过open_switch_node.py或/open_node再次开启语音识别 * src中的cpp生成的节点实际上就是用于控制以上节点,可有可无,根据自己需求使用,对应关系如下:(主要由于本人不会c++,故才加了src中的三个节点,如果你会C++可以自己把以上其他节点改写为C++) * _`func_open_node.cpp` --> `open_switch_node.py` 、`func_pause_node.cpp` --> `close_switch_node.py` 、`func_reset_node.cpp` --> `reset_node.py`_ 使用步骤: ***注意:请提前修改 main_node.py 中的科大讯飞APPID,APIKey,APISecret!*** 终端一: ``` roslaunch xf_pyros_iat main_node.launch ``` 终端二: * 发布话题:/func_switch_op启动语音识别,data: ' '里可以是任何字符串,没有也行 ``` rostopic pub /func_switch_op std_msgs/String "data: ''" ``` * 发布话题:/func_switch_cl关闭语音识别,data: ' '里可以是任何字符串,没有也行 ``` rostopic pub /func_switch_cl std_msgs/String "data: ''" ``` * 发布话题:/func_switch_re重置语音识别,data: ' '里可以是任何字符串,没有也行 ``` rostopic pub /func_switch_re std_msgs/String "data: ''" ``` * 此外通过:/func_op_node、/func_cl_node、/func_re_node三个节点也可以控制开、关、重置语音识别,命令如下: ``` rosrun xf_pyros_iat func_op_node ``` ``` rosrun xf_pyros_iat 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值