《ROS理论与实践》学习笔记机器人语音交互
Posted Sakurazzy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《ROS理论与实践》学习笔记机器人语音交互相关的知识,希望对你有一定的参考价值。
《ROS理论与实践》学习笔记(七)机器人语音交互
在学习《ROS理论与实践》课程时,记录了学习过程中的编程练习,课后作业以及发现的问题,后续会对尚未解决的问题继续分析并更新,纯小白,仅供参考。
本次学习笔记关于课程中的第八讲:机器人语音交互 。主要学习了讯飞开放平台、ROS的语音识别、输出和交互。
课程内容
在进行课程之前突然发现不能联网了,在网上找了很多办法,包括修改网络共享,桥接模式、NAT模式、自定义模式之类的,都不行,最后发现重启以下网络连接就好了。
$ sudo service network-manager stop
$ sudo rm /var/lib/NetworkManager/NetworkManager.state
$ sudo service network-manager start
1.讯飞开放平台使用
登录讯飞开放平台,在控制台创建一个应用robot_voice_ros_zzy,下载SDK
-
语音识别例程
首先对samples中的iat_online_record_sample进行编译$ source 64bit_make.sh
出现错误提示
alsa/asoundlib.h: No such file or directory
解决方法:
$ sudo apt-get install libasound2-dev
在bin目录下运行代码:
$ ./iat_online_record_sample
出现错误提示:
./iat_online_record_sample: error while loading shared libraries: libmsc.so: cannot open shared object file: No such file or directory
解决方法:
把libmsc.so文件复制到usr/local/lib文件夹下$ sudo cp libs/x86/libmsc.so /usr/local/lib/ $ sudo ldconfig
可以通过麦克风或者音频文件输入,运行能够输出对应的文字
-
文字输出为音频例程
首先对samples中的tts_online_sample进行编译$ source 64bit_make.sh
在bin目录下运行代码:
$ ./tts_online_sample
程序输出一个名为tts_sample.wav的音频文件
2.ROS语音识别与语音输出
-
语音识别
创建一个节点iat_publish,创建subscriber用于接收唤醒信号,将wakeupFlag变量置位,创建publisher用于调用SDK的语音识别功能,识别成功后置位resultFlag,将识别出来的字符串发布。即通过topic通信唤醒一次,通过麦克风输入语音信号,将语音识别结果打印在屏幕上
代码来自课程代码包,不再贴出
启动方法:$ roscore $ rosrun robot_voice iat_publish $ rostopic pub /voiceWakeup std_msgs/String "data:'xxx'"
-
语音输出
创建一个节点,创建subscriber用于订阅voiceWords话题,接收输入的字符串,创建voiceWordCallback用于使用SDK接口将字符串转换成中文语音
代码来自课程代码包,不再贴出
启动方法:$ roscore $ rosrun robot_voice tts_subscribe $ rostopic pub /voiceWakeup std_msgs/String "data:'啊喽哈'"
-
语音输入与输出结合
通过launch文件同时启动两个节点,通过话题唤醒,然后接收麦克风输入信号,语音识别成字符串后,转换为语音。
代码来自课程代码包,不再贴出
启动方法:$ roslaunch robot_voice repeat_voice.launch $ rostopic pub /voiceWakeup std_msgs/String "data:'xxx'"
3.语音交互
创建一个节点voice_assistant,创建subscriber订阅voicewords话题,接收输入的字符串,创建voicewordscallback,通过if判断关键词,完成语音回复。
代码来自课程代码包,不再贴出
启动方法:
```
$ roslaunch robot_voice voice_assistant.launch
$ rostopic pub /voiceWakeup std_msgs/String "data:'xxx'"
```
运行效果:
本讲作业
通过语音输入控制Gazebo仿真器中机器人的运动,后续更新。
结语
本讲主要学习了机器人的语音交互 ,主要学习了讯飞开放平台、ROS的语音识别、输出和交互,并在作业中加深理解。
以上是关于《ROS理论与实践》学习笔记机器人语音交互的主要内容,如果未能解决你的问题,请参考以下文章