- ブラウザのマイクを使って、AIと自然な音声会話をリアルタイムで行えるシステム
- STT → LLM → TTS の流れで、ユーザーの音声をテキストに変換し、AIの応答を再び音声に変換して再生
- 中核構成要素は FastAPIサーバー、WebSocketストリーミング、Podベースの音声処理モジュール、多様なLLMバックエンド
- Dockerベースのデプロイ環境が提供され、GPU使用時にはさらに低遅延と性能向上が期待できる
- ユーザー割り込み検知、モデル切り替え、音声選択など、高度な設定変更が可能な高いカスタマイズ性を提供
リアルタイムAI音声チャット
- このプロジェクトは、リアルタイム双方向音声会話のために設計されたクライアント・サーバーアーキテクチャ
- ユーザーはブラウザで話しかけ、AIは応答を音声で返す
- 割り込み処理、部分的なテキスト応答表示、多様なTTS選択が可能
主な動作フロー
- 音声入力: ブラウザでユーザーの音声をキャプチャ
- ストリーミング送信: オーディオチャンクをWebSocket経由でPythonバックエンドへ送信
- 音声認識:
RealtimeSTT が音声をテキストに変換
- LLM処理: テキストをLLMに渡して応答を生成
- 音声変換:
RealtimeTTS が応答テキストを音声に変換
- 応答再生: 生成された音声をブラウザへ再度ストリーミング
- 割り込み検知: ユーザーの割り込み発話を自動検知して処理
主な機能
- リアルタイム音声会話 および 部分文字起こし/応答プレビュー
- 低遅延のためのオーディオチャンクベースのストリーミング
- 静的/動的無音検知(turn detection) をサポート
- 多様なLLMバックエンド: Ollamaを標準採用、OpenAIも選択可能
- 複数のTTSエンジンをサポート: Kokoro, Coqui, Orpheus
- Webインターフェースを提供: Web Audio APIベースのVanilla JS UI
- Docker Composeベースのデプロイを提供
技術スタック
- バックエンド: Python 3.x, FastAPI
- フロントエンド: HTML, CSS, JavaScript (Web Audio API)
- 通信: WebSockets
- コンテナ化: Docker, Docker Compose
- AI/MLライブラリ:
RealtimeSTT, RealtimeTTS, transformers, torch, torchaudio
ollama, openai
- オーディオ処理:
numpy, scipy
システム要件と推奨事項
- OS: LinuxでのDocker利用を推奨 (GPU統合に有利)
- Python 3.9+, CUDA 12.1以上対応のNVIDIA GPU を推奨
- Docker使用時はNVIDIA Container Toolkitが必須
- 必要に応じてOllamaまたはOpenAI API Keyの設定が必要
インストール方法
オプションA: Dockerインストール (推奨)
- リポジトリをクローン後、
docker compose build を実行
docker compose up -d でアプリとOllamaを起動
- 別途Ollamaモデルをダウンロード (例:
docker compose exec ollama ollama pull ...)
- サービス停止:
docker compose down
- 再起動:
docker compose up -d
オプションB: 手動インストール
- Python venvを設定後、依存関係をインストール
- CUDAバージョンに合ったPyTorchを手動インストール
server.py を実行してFastAPIサーバーを起動
実行方法
設定変更ガイド
- TTSエンジン/音声の変更:
server.py, audio_module.py で修正
- LLMモデル/バックエンドの変更:
server.py, llm_module.py で設定
- STTモデル/無音判定基準の変更:
transcribe.py, turndetect.py
- SSL設定可能:
server.py でHTTPS利用有無および証明書を設定
ライセンス
- MITライセンスのもとで公開
- Coquiなどの外部エンジンには別ライセンスが適用される
2件のコメント
元のデモ動画が印象的です。
Hacker Newsのコメント
RealtimeVoiceChatを開発した理由は、ほとんどの音声AIインタラクションで遅延が満足できるものではなかったため。このシステムは、リアルタイムのローカル音声対話向けに設計されたオープンソースシステム
この種のツールのユーザーとして言うと、速くはあるが、自然に話すときの間を許容してくれない
とてもクール! 割り込み機能が「おおっ」となる瞬間だった(新しいものではないが、オープンソースでここまでうまく実装されているのを見るのは驚き)
約1年前にこのテーマを調査した。いくつか面白い事実を学んだ
素晴らしい。ソースをざっと見たところ、作者がSilero VADの代わりにカスタムのターン検出戦略を実装しているのが興味深い。なぜそうしたのか、どんな利点があったのか気になる
LLMsは、より短い応答向けに調整されるべきだと感じ始めている。短い文を入力すると、長い段落のテキストを出力する
誰も言及していないのが驚き。人間のようにインタラクションし、十分なコンテキストがあると多くの場面でこちらを遮ってくる。非常に低い遅延がある
かなり良い。SOTA音声に聞こえれば、さらにずっと良くなるはず
印象的! 現在利用可能なオープンソースの中では最高の音声合成品質だと思う
似たようなものを作っていたところで、これを見つけた。素晴らしい仕事。デモが気に入った