Cette dépôt fournit un ensemble de packages ROS 2 pour l'audio. Il fournit une version C ++ pour capturer et lire des données audio à l'aide de PortAudio.
$ 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 buildVous pouvez créer une image Docker pour tester Audio_Common. Utilisez la commune suivante à l'intérieur du répertoire d'Audio_Common.
$ docker build -t audio_common .Une fois l'image créée, exécutez un conteneur Docker avec la commande suivante.
$ docker run -it --device /dev/snd audio_commonPour utiliser un raccourci, vous pouvez utiliser la commande suivante:
$ make docker_run Node pour obtenir des données audio à partir d'un microphone et les publier dans le sujet audio .
Format : spécifie le format audio à utiliser pour la capture. Les valeurs communes sont paInt16 (format 16 bits) ou d'autres formats pris en charge par Portaudio. Par défaut: paInt16
Canaux : le nombre de canaux audio à capturer. En règle générale, 1 pour le mono et 2 pour la stéréo. Par défaut: 1
Taux : Le taux d'échantillonnage est le nombre d'échantillons par seconde doit être capturé. Par défaut: 16000
Chunk : la taille de chaque cadres audio. Par défaut: 4096
Appareil : l'ID du périphérique d'entrée audio. Une valeur de -1 indique que le périphérique d'entrée audio par défaut doit être utilisé. Par défaut: -1
frame_id : un identifiant pour le cadre audio. Cela peut être utile pour synchroniser les données audio avec d'autres flux de données. Défaut: ""
audio_common_msgs/msg/AudioStamped Node pour lire les données audio obtenues à partir du sujet audio .
Canaux : le nombre de canaux audio à capturer. En règle générale, 1 pour le mono et 2 pour la stéréo. Par défaut: 1
Appareil : l'ID du périphérique d'entrée audio. Une valeur de -1 indique que le périphérique d'entrée audio par défaut doit être utilisé. Par défaut: -1
audio_common_msgs/msg/AudioStamped Node pour lire la musique à partir d'un fichier audio au format wav .
Chunk_time : le temps, en millisecondes, qui dure chaque morceau audio. Par défaut: 50
frame_id : un identifiant pour le cadre audio. Cela peut être utile pour synchroniser les données audio avec d'autres flux de données. Défaut: ""
audio_common_msgs/msg/AudioStampedNode pour générer l'audio à partir d'un texte (TTS).
Chunk : la taille de chaque cadres audio. Par défaut: 4096
frame_id : un identifiant pour le cadre audio. Cela peut être utile pour synchroniser les données audio avec d'autres flux de données. Défaut: ""
Audio : Topic Publisher pour envoyer les données audio générées par le TTS. Type: audio_common_msgs/msg/AudioStamped
Dites : Action pour générer des données audio à partir d'un texte. Type: 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'} "