يوفر هذا المستودع مجموعة من حزم ROS 2 للصوت. يوفر إصدارًا C ++ لالتقاط بيانات الصوت وتشغيله باستخدام 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 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 بت) أو تنسيقات أخرى تدعمها بورتيو. الافتراضي: paInt16
القنوات : عدد القنوات الصوتية التي يجب التقاطها. عادة ، 1 للونو و 2 لاستريو. الافتراضي: 1
معدل : معدل العينة الذي هو عدد العينات في الثانية يجب التقاطها. الافتراضي: 16000
قطعة : حجم كل إطارات صوتية. الافتراضي: 4096
الجهاز : معرف جهاز إدخال الصوت. تشير قيمة -1 إلى أنه يجب استخدام جهاز إدخال الصوت الافتراضي. الافتراضي: -1
Frame_id : معرف للإطار الصوتي. يمكن أن يكون هذا مفيدًا لمزامنة بيانات الصوت مع تدفقات البيانات الأخرى. تقصير: ""
audio_common_msgs/msg/AudioStamped العقدة لتشغيل بيانات الصوت التي تم الحصول عليها من موضوع audio .
القنوات : عدد القنوات الصوتية التي يجب التقاطها. عادة ، 1 للونو و 2 لاستريو. الافتراضي: 1
الجهاز : معرف جهاز إدخال الصوت. تشير قيمة -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'} "