fluent_vision_ros2(設計・開発: Takashi Otsuka / @takatronix)をベースに、ROS2上で「聴覚(Audio)」を扱うためのノード群を追加したフォークです。
- Upstream: https://github.com/takatronix/fluent_vision_ros2
- This fork: https://github.com/Escenda/fluent_audio_ros2
- upstream の設計思想(ノード分割、低遅延、YAML/launch 運用)を踏襲します
src/以下を用途別(io/,dsp/,features/,ai/,apps/,interfaces/)に分割して管理します- クラウドを使わず、音声入力で「起動/停止/モード切替」できる運用を目標にしています
- 音声にフォーカスするため、vision 系パッケージ(カメラ/AI/UI/配信/SLAM など)は本リポジトリから削除しています(視覚系は upstream を参照してください)
fa_capture(src/io/fa_capture/): マイク入力(ALSA)→audio/frameを Publish、デバイス列挙/切替、Diagnosticsfa_output(src/io/fa_output/):audio/output/frameをスピーカーへ再生、audio/output/play_fileでWAVを直接再生fa_record(src/io/fa_record/):audio/frameをWAVへ録音(recordサービス)fa_stream(src/io/fa_stream/):audio/frameを外部へ配信するサンプル(Icecast向けradio_streamer.py)fa_vad(src/ai/fa_vad/): Silero VAD(PyTorch)でaudio/vadとvoice/vad_stateを提供fa_tts(src/ai/fa_tts/): pyopenjtalk(Open JTalk) によるTTS(speakサービス)/AudioFrame出力fa_resample(src/dsp/fa_resample/): 16k ストリーム供給(audio/frame→audio/resample16k/mic)fa_aec_linear(src/dsp/fa_aec_linear/): 線形AEC(mic/ref→audio/aec_linear/frame)fa_aec_nn(src/dsp/fa_aec_nn/): NN残差抑圧(骨組み、audio/aec_linear/frame→audio/aec/frame)fa_ns(src/dsp/fa_ns/): ノイズ抑制(DTLN/ONNX、audio/resample16k/mic→audio/ns/frame)fa_mix(src/dsp/fa_mix/): ミキサ(MVP、input_topics→audio/output/frame)fa_voice_command_router(src/apps/fa_voice_command_router/): 音声コマンドの起動/停止/モード切替(MVP: 文字列コマンド入力)fa_interfaces(src/interfaces/fa_interfaces/):AudioFrame等の msg/srv を集約
- ROS 2(Humble/Jazzy など)
- ALSA:
libasound2-dev - TTS:
pyopenjtalk,python3-numpy - (任意)
ffmpeg:fa_streamのradio_streamer.pyサンプルで使用
colcon build --symlink-install
source install/setup.bash# Terminal A
ros2 launch fa_output fa_output.launch.py
# Terminal B
ros2 launch fa_tts fa_tts.launch.py
# Terminal C(サービス名は namespace により変わる場合があります。`ros2 service list | grep speak` で確認)
ros2 service call /speak fa_interfaces/srv/Speak "{text: 'こんにちは', voice_id: '', play: true}"ros2 launch fa_capture fa_capture.launch.py
ros2 launch fa_vad fa_vad.launch.py- Topics:
audio/frame(fa_interfaces/msg/AudioFrame)audio/levels(std_msgs/msg/Float32MultiArray)audio/vad(std_msgs/msg/Bool)voice/vad_state(fa_interfaces/msg/VadState)audio/output/frame(fa_interfaces/msg/AudioFrame)
- Services:
list_devices,switch_device(fa_capture)record(fa_record)audio/output/play_file(fa_output)speak(fa_tts)
docs/fa_audio_system.md: 全体像・データフローdocs/fa_audio_design.md: 設計メモdocs/fa_dsp_design.md: DSP(NS/AEC/Resample/Mix)設計メモdocs/fa_benchmark_policy.md: ベンチマークの保存ポリシー- 各パッケージ配下の
README.md
このリポジトリには MIT / Apache-2.0 など複数ライセンスのパッケージが含まれます。各パッケージの package.xml の <license> を参照してください。
- Original project: Takashi Otsuka (@takatronix) / FluentVision ROS2
- This fork: Escenda + contributors