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を使用します。

仕組み

  1. VAD – 発話の開始と終了を検出し、システムがいつ聞くべきかを判断します。
  2. STT – 音声ターンをテキストに変換します(Parakeet、Whisper、Faster‑Whisperなど、多くのバックエンドをサポート)。
  3. LLM – テキスト応答を生成し、トークンとオプションのツール呼び出しをストリーミングします。
  4. 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コンポーネントを交換できる、すぐに実行可能なローカルホスト型音声アシスタントスタックを提供します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト