二、增加播放指定TTS语音的话题
0x00 新增功能简介
在前面文章中介绍过,这款语音模块不具备本地实时文本转语音(TTS:Text to Speech)功能,所有需要播放的语音内容都需要在编辑语音代码时生成,然后上传到语音模块中,这样我们就可以根据需要播放指定的语音内容。为了方便大家在ROS2系统中播放自己DIY的语音内容,我就在语音模块的ROS2代码中增加了一个话题/voice_system/tts_cmd_topic,话题消息类型为std_msgs/msg/Int32,关于该话题具体信息如下图所示:
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语音是如何设置的呢?如何自定义需要播放的内容呢?这里就需要修改关于语音的代码了,修改播放内容很简单,具体如下图所示:
我们可以使用如下命令来快速的测试该话题的效果,最后的data字段里的数字,就是要向话题里发布的消息,这里使用1进行测试,可以改为其他数字进行测试,完整命令如下所示:
ros2 topic pub -1 /voice_system/tts_cmd_topic std_msgs/msg/Int32 data:\ 1\