ROS与科大讯飞语音库集成:实现语音控制机器人小车

ROS与科大讯飞语音库集成:实现语音控制机器人小车

前言

从这篇文章开始,我们学习机器人语音的交互,我们将在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

(0)
上一篇 2026年3月14日 下午7:14
下一篇 2026年3月14日 下午7:14


相关推荐

关注全栈程序员社区公众号