Skip to content

Escenda/fluent_audio_ros2

 
 

Repository files navigation

FluentAudio ROS2

fluent_vision_ros2(設計・開発: Takashi Otsuka / @takatronix)をベースに、ROS2上で「聴覚(Audio)」を扱うためのノード群を追加したフォークです。

このリポジトリの位置づけ

  • upstream の設計思想(ノード分割、低遅延、YAML/launch 運用)を踏襲します
  • src/ 以下を用途別(io/, dsp/, features/, ai/, apps/, interfaces/)に分割して管理します
  • クラウドを使わず、音声入力で「起動/停止/モード切替」できる運用を目標にしています
  • 音声にフォーカスするため、vision 系パッケージ(カメラ/AI/UI/配信/SLAM など)は本リポジトリから削除しています(視覚系は upstream を参照してください)

主要パッケージ(Audio)

  • fa_capturesrc/io/fa_capture/): マイク入力(ALSA)→ audio/frame を Publish、デバイス列挙/切替、Diagnostics
  • fa_outputsrc/io/fa_output/): audio/output/frame をスピーカーへ再生、audio/output/play_file でWAVを直接再生
  • fa_recordsrc/io/fa_record/): audio/frame をWAVへ録音(record サービス)
  • fa_streamsrc/io/fa_stream/): audio/frame を外部へ配信するサンプル(Icecast向け radio_streamer.py
  • fa_vadsrc/ai/fa_vad/): Silero VAD(PyTorch)でaudio/vadvoice/vad_stateを提供
  • fa_ttssrc/ai/fa_tts/): pyopenjtalk(Open JTalk) によるTTS(speak サービス)/ AudioFrame 出力
  • fa_resamplesrc/dsp/fa_resample/): 16k ストリーム供給(audio/frameaudio/resample16k/mic
  • fa_aec_linearsrc/dsp/fa_aec_linear/): 線形AEC(mic/refaudio/aec_linear/frame
  • fa_aec_nnsrc/dsp/fa_aec_nn/): NN残差抑圧(骨組み、audio/aec_linear/frameaudio/aec/frame
  • fa_nssrc/dsp/fa_ns/): ノイズ抑制(DTLN/ONNX、audio/resample16k/micaudio/ns/frame
  • fa_mixsrc/dsp/fa_mix/): ミキサ(MVP、input_topicsaudio/output/frame
  • fa_voice_command_routersrc/apps/fa_voice_command_router/): 音声コマンドの起動/停止/モード切替(MVP: 文字列コマンド入力)
  • fa_interfacessrc/interfaces/fa_interfaces/): AudioFrame 等の msg/srv を集約

セットアップ

前提

  • ROS 2(Humble/Jazzy など)
  • ALSA: libasound2-dev
  • TTS: pyopenjtalk, python3-numpy
  • (任意)ffmpeg: fa_streamradio_streamer.py サンプルで使用

ビルド

colcon build --symlink-install
source install/setup.bash

クイックスタート

1) TTS をスピーカーへ再生

# 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}"

2) マイク入力 + VAD

ros2 launch fa_capture fa_capture.launch.py
ros2 launch fa_vad fa_vad.launch.py

インターフェース(抜粋)

  • Topics:
    • audio/framefa_interfaces/msg/AudioFrame
    • audio/levelsstd_msgs/msg/Float32MultiArray
    • audio/vadstd_msgs/msg/Bool
    • voice/vad_statefa_interfaces/msg/VadState
    • audio/output/framefa_interfaces/msg/AudioFrame
  • Services:
    • list_devices, switch_devicefa_capture
    • recordfa_record
    • audio/output/play_filefa_output
    • speakfa_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

About

ROS 2 machine listening / audio understanding pipeline — fork of takatronix/fluent_vision_ros2.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 47.2%
  • Python 40.7%
  • Shell 8.2%
  • CMake 3.9%