📌 概要
このデモアプリケーションは、リアルタイム音声AIエージェントの開発フレームワークである Pipecat をベースに、以下のコンポーネントを組み合わせて構築された完全ローカル環境(一部外部API利用)での音声ボット(ボイスボット)のデモ実装です。
通常、Pipecatのデモは OpenAI や Cartesia などのクラウドAPIを利用するものが多いですが、本リポジトリではローカルLLMおよび音声読み上げエンジン Edge-TTS を利用し、固定電話や携帯電話からの着信を Vonage 経由で処理する構成になっています。
デモアプリケーションのソースコード
🛠️ 主な構成要素(技術スタック)
| コンポーネント | 採用技術・サービス | 役割 |
|---|---|---|
| フレームワーク | Pipecat | 音声ストリーム、STT/LLM/TTS のパイプライン制御 |
| 電話回線・受電 | Vonage Voice API | 電話番号の提供、SIP/WebSocket 経由の音声中継 |
| 音声認識 (STT) | mlx-Whisperなど | ユーザーの発話をテキストにリアルタイム変換 |
| 言語モデル (LLM) | ローカルLLM (LM Studio/Gemma等) | ユーザーの質問に対する応答テキストの生成 |
| 音声合成 (TTS) |
edge-tts (Microsoft Edge TTS) |
生成された応答テキストを自然な日本語音声に変換 |
| 公開ツール | ngrok | ローカルサーバーを外部(Vonage)に安全に公開 |
🏗️ システムアーキテクチャ・処理の流れ
- 着信: ユーザーが Vonage で取得した電話番号に発信します。
- ルーティング: Vonage が設定された Webhook URL(ngrok 経由)にアクセスし、Pipecat サーバーとの間に WebSocket コネクションを確立します。
-
対話ループ:
- Pipecat がユーザーの音声をキャッチし、STT でテキスト化
- テキストをローカル環境で動作する LLM に投入し、応答を生成
- 生成された応答テキストを
edge-ttsを用いて音声ファイル(ストリーム)化 - Vonage の WebSocket 経由でユーザーの電話に応声が戻ります
デモ動画
💡 このデモの注目ポイント・メリット
日本語対応の最適化
edge-tts は標準で非常に滑らかな日本語音声(ja-JP-KeitaNeural や ja-JP-NanamiNeural など)をサポートしているため、日本語での電話応答によりナチュラルな品質であることが確認できました
Pipecatによる高い拡張性
Pipecat をベースにしているため、Local LLMを OpenAI に切り替えたり、STT/TTS サービスを別のプロバイダ(Cartesia, ElevenLabs, VOICEVOX等)などに差し替えることが容易にできるかと思います
💡 最後に
会話の履歴を保存したり、予約スケジュールなどの外部アプリケーション、感情分析、多言語対応などいろいろな応用が考えられます。またいろいいろと拡張して試していきたいと思います。