이 repositiory는 오디오 용 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 개는 모노의 경우 1 , 스테레오의 경우 2 . 기본값 : 1
속도 : 샘플 속도는 초당 몇 개의 샘플을 캡처해야합니다. 기본값 : 16000
청크 : 각 오디오 프레임의 크기. 기본값 : 4096
장치 : 오디오 입력 장치의 ID. -1 값은 기본 오디오 입력 장치를 사용해야 함을 나타냅니다. 기본값 : -1
frame_id : 오디오 프레임의 식별자입니다. 이는 오디오 데이터를 다른 데이터 스트림과 동기화하는 데 유용 할 수 있습니다. 기본: ""
audio_common_msgs/msg/AudioStamped audio 주제에서 얻은 오디오 데이터를 재생하는 노드.
채널 : 캡처 할 오디오 채널 수. 일반적으로 1 개는 모노의 경우 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'} "