前言
从这篇文章开始,我们学习机器人语音的交互,我们将在ROS上集成科大讯飞的中文语音库,实现语音控制机器人小车运动。 关于语音识别和语音合成的原理 ,这里就不在赘述,有兴趣的朋友可以自己利用时间去学习和深究。这里提醒,本文的测试环境是ubuntu20.04 + ros noetic 。
开发过程
科大讯飞 星火 教程
下载科大讯飞语音库
(1)首先登陆讯飞开放平台: ,注册后,点击控制台进入。
(2)然后创建应用并下载linux sdk,更具体的操作可以参考:
左边是创建应用,右边是下载SDK。
(3)最后得到自己专属的sdk,我的是:Linux_iat1227_tts_online1227_bb839ccf.zip,其中 bb839ccf 是专属bb839ccf。下面我们将把这套 sdk 集成到 robot_voice 样例中,这里不对这个 zip 包内容进行展开讲解。
robot_voice 之语音控制机器人小车移动样例
(1)我们将实现两个应用,第一个就是本文的语音控制机器人小车移动,拓扑图如下:
voice_detector:负责语音识别,将语音转换为文字,并作为 client,通过 human_chatter 服务,发给 robot_controller 。 robot_controller:作为 human_chatter 服务 server,接收 voice_detector 发来的文字化的指令,并生成对应的语音播报文字和控车命令。前者通过 str2voice 服务,发给 voice_creator,后者通过 /cmd_vel topic,发给 mbot_gazebo。 voice_creator:作为 str2voice 服务server,接收 robot_controller 发来的语音播报文字,合成语音文件并播放。 mbot_gazebo:作为机器人小车,接收 /cmd_vel topic,并调整运动状态。
(2)安装环境
SoX, 全称 Sound eXchange,被官方称为 “the Swiss Army knife of audio manipulation”。 它是一个强大的用于转换和处理声音文件的库。因其操作简单且功能强大,广泛应用在音频数据的处理和分析中。 除此之外,我在编译讯飞样例时,遇到了:
解决方式是:
ALSA,全称Advanced Linux Sound Architecture (ALSA) 库,用于处理音频设备。
(3)创建 robot_voice 及相关文件
请将 Linux_iat1227_tts_online1227_bb839ccf.zip 中的相关文件,分别移入相关目录,供编译使用,如下图:
(4)voice_detector.cpp
(5)robot_controller.cpp
(6)voice_creator.cpp
(7)StringToVoice.srv , voice_control_robot.launch 和 CMakeLists.txt StringToVoice.srv
voice_control_robot.launch
CMakeLists.txt
(8)编译并运行(运行时请注意电脑网络通畅!)
视频截图
(9)在开发调试过程中,出现了如下编译报错
不得已,更新了gcc版本,问题解决
发布者:Ai探索者,转载请注明出处:https://javaforall.net/281677.html原文链接:https://javaforall.net
