此存储库为音频提供了一组ROS 2软件包。它提供了使用Portaudio捕获和播放音频数据的C ++版本。
$ cd ~ /ros2_ws/src
$ git clone https://github.com/mgonzs13/audio_common.git
$ cd ~ /ros2_ws
$ rosdep install --from-paths src --ignore-src -r -y
$ pip3 install -r audio_common/requirements.txt
$ colcon build您可以创建一个docker映像来测试audio_common。在AUDIO_COMMON目录中使用以下常见。
$ docker build -t audio_common .创建图像后,运行一个带有以下命令的Docker容器。
$ docker run -it --device /dev/snd audio_common要使用快捷方式,您可以使用以下命令:
$ make docker_run节点以从麦克风获取音频数据并将其发布到audio主题中。
格式:指定用于捕获的音频格式。共同值是paInt16 (16位格式)或Portaudio支持的其他格式。默认值: paInt16
频道:要捕获的音频频道数量。通常,单声道为1 ,立体声为2 。默认值: 1
费率:样本率是应捕获每秒多少样品。默认值: 16000
块:每个音频帧的大小。默认值: 4096
设备:音频输入设备的ID。值为-1表示应使用默认音频输入设备。默认值: -1
frame_id :音频帧的标识符。这对于将音频数据与其他数据流同步可能很有用。默认: ""
audio_common_msgs/msg/AudioStamped节点播放从audio主题获得的音频数据。
频道:要捕获的音频频道数量。通常,单声道为1 ,立体声为2 。默认值: 1
设备:音频输入设备的ID。值为-1表示应使用默认音频输入设备。默认值: -1
audio_common_msgs/msg/AudioStamped节点以wav格式从音频文件播放音乐。
chunk_time :时间,以毫秒为单位,是每个音频块。默认值: 50
frame_id :音频帧的标识符。这对于将音频数据与其他数据流同步可能很有用。默认: ""
audio_common_msgs/msg/AudioStamped节点从文本(TTS)中生成音频。
块:每个音频帧的大小。默认值: 4096
frame_id :音频帧的标识符。这对于将音频数据与其他数据流同步可能很有用。默认: ""
音频:主题发布者发送TTS生成的音频数据。类型: audio_common_msgs/msg/AudioStamped
说:从文本生成音频数据的动作。类型: audio_common_msgs/action/TTS
$ ros2 run audio_common audio_capturer_node$ ros2 run audio_common audio_player_node$ ros2 run audio_common tts_node$ ros2 run audio_common audio_player_node$ ros2 action send_goal /say audio_common_msgs/action/TTS " {'text': 'Hello World'} "$ ros2 run audio_common music_node$ ros2 run audio_common audio_player_node$ ros2 service call /music_play audio_common_msgs/srv/MusicPlay " {audio: 'elevator'} "