ゼロから作る音声エージェント GitHubチュートリアル:マイク→Whisper→ローカルLLM(GGUF)→Kokoro→スピーカー(完全ローカル、APIキー不要)

Reddit r/LocalLLaMA / 2026/5/4

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical UsageModels & Research

要点

  • GitHubのチュートリアル「voice-agents-from-scratch」は、マイク収録→WhisperによるSTT→ローカルのGGUF LLM(llama.cpp経由)→KokoroによるTTS→スピーカー出力という、リアルタイムのエンドツーエンド音声エージェント手順を完全ローカルで解説します。
  • パイプライン全体でストリーミングを重視しており、LLMの途中結果が出た時点で話し始められるため、音声付きチャットボットではなく会話らしい体験になることを狙っています。
  • リポジトリは章立てで構成され、Audio IO、STT、TTS、フル音声ループ、リアルタイムシステム、ツール、パーソナリティ、プロジェクトなどをそれぞれ実行可能なスクリプトとして用意し、CODE.mdで簡潔に解説します。
  • 完全にローカルで動かすことで、ウォームアップ時間、初回の音声までの時間、ストリーミングのチャンクサイズといったレイテンシ要因を抽象化に隠さず可視化できる点を強調しています。
  • 著者はデプロイ手順の章を追加する計画(modal.comの活用を検討)を述べつつ、当初Node.jsでの公開を考えたものの、Whisper対応や音声処理全般の面でエコシステムが十分でなかったとも説明しています。

これをしばらく前から作っていて、ようやく共有できるくらいにきれいに整えました。

voice-agents-from-scratch は、リアルタイムの全パイプラインを章ごとに案内する、番号付きのリポジトリです:

  • マイクのキャプチャ
  • STT(Whisper)
  • ローカルGGUF LLM(llama.cpp 経由)
  • TTS(Kokoro)
  • 話者の出力

すべてストリーミングします。TTSが話し始める前に、LLMの応答全体を待つ必要はありません。これが、ボイスの皮を被ったチャットボットではなく、本物の会話のように感じさせる部分です。

章:

  1. イントロ
  2. Audio IO
  3. Speech to Text(STT)
  4. Text to Speech(TTS)
  5. フルのボイスループ
  6. リアルタイムシステム
  7. ツール
  8. パーソナリティ
  9. プロジェクト

各章は実行可能なスクリプトと、短い CODE.md の解説で構成されています。また、部品が単発の呼び出しではなく、きちんとした実システムとして組み合わさっている様子を確認できる、小さな共通ライブラリもあります。

ここで完全にローカルで動かすことが重要な理由: レイテンシがどこに存在するかを実際に目で見られます。ウォームアップ、最初の音声までの時間、ストリーミングのチャンクサイズなどは、ローカルマシン上で動かしているときは抽象化ではありません。

デプロイメントの章も計画しています。そこで modal.com を使うことを考えています。ご意見や提案、大歓迎です。

リポジトリ:https://github.com/pguso/voice-agents-from-scratch

最初はこのリポジトリを Node.js で公開したいと思っていましたが、Node.js のエコシステムは本当にまだ準備ができていません。Kokoro-JS の npm パッケージはとても良いのですが、Whisper のサポートや、一般的なオーディオ処理となると、良い選択肢がありません。

遭遇したアーキテクチャやトレードオフについて質問に答えることは喜んで対応します。

submitted by /u/purellmagents
[link] [comments]