このリポジションは、オーディオ用の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 builddocker画像を作成して、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
SAID :テキストからオーディオデータを生成するアクション。タイプ: 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'} "