二、增加播放指定TTS语音的话题

0x00 新增功能简介

在前面文章中介绍过,这款语音模块不具备本地实时文本转语音(TTS:Text to Speech)功能,所有需要播放的语音内容都需要在编辑语音代码时生成,然后上传到语音模块中,这样我们就可以根据需要播放指定的语音内容。为了方便大家在ROS2系统中播放自己DIY的语音内容,我就在语音模块的ROS2代码中增加了一个话题/voice_system/tts_cmd_topic,话题消息类型为std_msgs/msg/Int32,关于该话题具体信息如下图所示:

二、增加播放指定TTS语音的话题 - 第1张
新增TTS话题

0x01 TTS话题的使用

在使用TTS功能之前,我们先需要使用如下命令,将语音模块与本地ROS2系统建立连接,完整命令如下:

ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/voiceModule

建立连接后,就可以使用ros2 topic list命令查看到/voice_system/tts_cmd_topic话题,我们需要在自己的ROS2代码中订阅该话题,然后向该话题中发布std_msgs/msg/Int32类型消息,例如:1,2,3...,然后语音模块就可以自动播放对应ID号的TTS语音了。

那播放的TTS语音是如何设置的呢?如何自定义需要播放的内容呢?这里就需要修改关于语音的代码了,修改播放内容很简单,具体如下图所示:

二、增加播放指定TTS语音的话题 - 第2张
播放的内容可以自行添加和修改

我们可以使用如下命令来快速的测试该话题的效果,最后的data字段里的数字,就是要向话题里发布的消息,这里使用1进行测试,可以改为其他数字进行测试,完整命令如下所示:

ros2 topic pub -1 /voice_system/tts_cmd_topic std_msgs/msg/Int32 data:\ 1\


0x02 使用效果演示

TTS话题功能演示
本文原创,作者:corvin_zhang,其版权均为ROS小课堂所有。
如需转载,请注明出处:https://www.corvin.cn/3462.html