farshed/sage

Self-hosted voice chat with LLMs

Sage – 音声でLLMと会話する

概要 – Sageは、大規模言語モデル (LLM) と音声で会話ができるオープンソースアプリケーションです。音声認識モデル、LLM(Ollamaによるセルフホスト、またはクラウドAPI経由)、そしてテキスト読み上げコンポーネントを統合しており、すべてローカルで動作するためデータが外部に漏れることはありません。

重要性 – 多くの音声アシスタントのデモは独自のサービスに依存しています。Sageは、完全にオープンなモデルを組み合わせて、一般的なハードウェア上で低遅延で動作する音声LLMパイプラインを構築できることを示しています。


主要コンポーネント

コンポーネント 役割 使用モデル例
音声認識 マイク入力をテキストに変換 Whisper (ggml‑large‑v3‑turbo)
LLM 回答を生成 Ollama で提供されるモデル (例: deepseek-r1:7b) またはクラウドプロバイダー (OpenAI, Anthropic, Deepseek, Together.ai)
テキスト読み上げ LLMの回答を読み上げる 明示されていませんが、voices.json カタログ経由で提供

これら3つのステージは、Bun (高速なJavaScriptランタイム) で書かれた小さなNodeスタイルのサーバーで接続されています。READMEのアーキテクチャ図が示すデータフローは、マイク → Whisper → LLM → 音声合成 → スピーカー となっています。


始め方

  1. 言語モデルを選択
    • セルフホスト – Ollamaをインストールし、モデルを選択して .env ファイルで OLLAMA_MODEL を設定します。
    • クラウド – OpenAI、Anthropic、Deepseek、またはTogether.ai用の適切な *_API_KEY および *_MODEL 変数を追加します。
  2. スタックをインストール
    • Dockerルート(簡単) – 3つのモデルファイルを models/ フォルダに配置し、bun docker-build を実行してから bun docker-run を実行します。UIは http://localhost:3000 で表示されます(注意:WhisperはDocker内では4‑5倍遅く動作します)。
    • ネイティブルート(高速) – Bun、Rust、OpenSSL、LLVM/Clang、CMakeをインストールします。プラットフォーム固有の setup‑unix.sh または setup‑win.bat を実行して重みをダウンロードし、Whisperバイナリをコンパイルします。bun start で開始します。
  3. 会話 – Web UIを開き、マイクに向かって話しかけると、モデルの回答が聞こえます。

READMEで強調されている設計目標

  • オープン – コミュニティで管理されている音声モデル(Whisper、Kokoro音声エンコーダー)を使用。
  • 効率的 – コンシューマーグレードのCPU/GPUをターゲット。唯一重いWhisperも、最新のノートPCならリアルタイムで動作可能。
  • セルフホスト – クラウドLLMを選択しない限り、外部サービスは不要。
  • モジュール化 – LLMプロバイダーの切り替えは環境変数の変更のみ。

ロードマップ(README時点)

  • ✅ Dockerパッケージング(利用可能)
  • ⬜ 推論高速化のためのCUDAアクセラレーション
  • ⬜ カスタムOllamaエンドポイントサポート
  • ⬜ 多言語音声サポート
  • ⬜ Whisper設定オプションの公開
  • ⬜ システムプロンプトのカスタマイズ
  • ⬜ パイプライン全体の最適化
  • ⬜ 再利用可能なライブラリとしてSageを公開

まとめ

Sageは、完全にオープンソースのコンポーネントで構築された音声ファーストのAIアシスタントの実用的なエンドツーエンドのデモです。クローズドなAPIに依存せずに音声LLMの対話を試したい愛好家にとって有用であり、音声モデル、LLMバックエンド、TTSを軽量で自己完結型のパッケージに統合する方法を示す明確な例となっています。

関連

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