此存儲庫為音頻提供了一組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'} "