huggingface/speech-to-speech
Build voice agents with open-source models
概要
speech‑to‑speech は、クラウドAPIキーを一切必要とせず、完全な音声アシスタントをローカルで実行できるオープンソースのPythonパッケージです。音声アクティビティ検出、音声テキスト変換、言語モデル、テキスト音声変換の4つのステージを連携させ、各ステージは代替モデルに交換可能です。デフォルトのパイプラインでは、Silero VAD、転写にParakeet TDT、LLMにQwen‑3.5‑4B、音声出力にQwen‑3 TTSを使用します。
仕組み
- VAD – 発話の開始と終了を検出し、システムがいつ聞くべきかを判断します。
- STT – 音声ターンをテキストに変換します(Parakeet、Whisper、Faster‑Whisperなど、多くのバックエンドをサポート)。
- LLM – テキスト応答を生成し、トークンとオプションのツール呼び出しをストリーミングします。
- TTS – LLMの応答を音声に変換します(デフォルトはQwen‑3‑TTS、多くのオプションTTSモデルあり)。
各コンポーネントは独自のスレッドで実行され、キューを介して通信するため、任意の部分を別のモデルやリモートサービスに簡単に置き換えられます。
主な機能
- 完全ローカル 初回実行後は(インターネット不要)。
- OpenAI Realtimeプロトコル 互換性 – サーバーはOpenAIのRealtimeサービスと同じWebSocket/WebRTC APIを話すため、既存のクライアントを自分のマシンに向けられます。
- クロスプラットフォーム 対応:Apple Silicon(MLXベースのモデル)、NVIDIA GPU(CUDA)、またはCPUのみのフォールバック。
- 拡張可能 – VAD、STT、LLM、TTS用の多数のオプショナルバックエンドを
pipエクストラでインストール可能。 - CLIコマンド:
speech-to-speech local– サーバーとマイククライアントを一緒に実行。speech-to-speech serve– Realtimeサーバーのみ起動。speech-to-speech talk– パッケージ化されたマイク/スピーカークライアントを任意のサーバーに対して実行。
- Docker 対応で、コンテナ化された迅速なデプロイが可能。
- オプションのバイザーム出力 でアバターの口元アニメーションをサポート。
はじめに(クイックサマリー)
python3 -m venv .venv && source .venv/bin/activate
pip install speech-to-speech
speech-to-speech local # スピーカーとマイクで対話します
初回実行で必要なモデルをダウンロードし、以降はオフラインで動作します。
対象ユーザー
- ロボティクス開発者 音声対応ロボットを構築する方(例:Reachy Miniロボットはすでにこのパイプラインを使用)。
- アプリ開発者 クラウドサービスに費用をかけずに、そのまま使える音声アシスタントを求める方。
- 研究者 モジュール式フレームワークでさまざまなSTT/LLM/TTSの組み合わせを実験する方。
- プライバシー重視のユーザー デバイスから一切出ない音声アシスタントを必要とする方。
注意すべき制限事項
- リアルタイム性能はハードウェアに依存します。CPUのみのマシンではLLMが遅くなります。
- 一部のオプションコンポーネント(例:DeepFilterNet)はバージョン競合があり、手動インストールが必要です。
- サーバーは認証を強制しません。信頼できるネットワーク外に公開する場合は、外部ゲートウェイが必要です。
要するに: speech‑to‑speech は、OpenAIのRealtime APIを模倣しつつ、好みに応じて任意のオープンソースVAD、音声認識、言語モデル、TTSコンポーネントを交換できる、すぐに実行可能なローカルホスト型音声アシスタントスタックを提供します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト