Pipecat & Vonage Voice API & Video APIとローカルLLMで作る音声ボット
本プロジェクトは、Vonage Video API と Vonage Voice API の両方に対応しています。
Webブラウザからのビデオ通話(Video API)と、実際の電話回線からの音声通話(Voice API)の両方から、AIボットとシームレスに会話することが可能です。
概要サマリー
Pipecat & Vonage Voice API & Video APIとローカルLLMで作る音声ボット
は、リアルタイムAI対話アプリケーションを構築するためのフレームワークPipecatを活用した音声対話ボットのデモアプリケーションです。
最大の特長は、外部のクラウドAIサービスに依存せず、主要なAI処理(音声認識・テキスト生成・音声合成)をローカル環境で完結させている点です。
全体アーキテクチャ
システム全体の情報の流れは以下のようになっています。
Pipecatの特長
本プロジェクトの中核を担う Pipecat は、音声や映像を扱うリアルタイムAIアプリケーションを構築するためのオープンソース・フレームワークです。以下のような優れた特長を持っています。
パイプライン構造による柔軟な設計
VAD(音声区間検出)、STT(音声認識)、LLM(言語モデル)、TTS(音声合成)などの各AI処理を独立したコンポーネントとして扱い、それらをレゴブロックのように繋ぎ合わせてパイプラインを構築できます。これにより、特定のAIモデルの差し替え(例: OpenAIからローカルLLMへの変更)が非常に容易です。
割り込み(Barge-in)のネイティブサポート
AIが発話している最中にユーザーが話し始めた場合、AIの発話を即座に停止して聞き手に回る「割り込み(Barge-in)」処理をフレームワークレベルで標準サポートしており、自然な会話のキャッチボールを実現します。
多様なトランスポート対応
WebRTCやWebSocket、各種電話APIなど、様々な通信プロトコルやプラットフォームとの接続を抽象化して扱うことができます。本デモでもWebSocket経由でVonage APIとシームレスに連携しています。
マルチモーダル対応
音声だけでなく、映像(Vision)の入力や処理もパイプラインに組み込むことが可能であり、より高度なAIエージェントの構築に対応しています。
インフラ・通信技術
エンドポイント構成
FastAPIサーバー(server.py)で提供されている主要なルーティングです。
(※ルーティングのイメージ)
@app.get("/") # ブラウザ用のフロントエンド(index.html)を提供
@app.websocket("/ws") # Pipecatパイプラインの音声ストリーム処理用WebSocket
@app.post("/demo/connect") # Video Mode用: セッション作成とAudio Connector開始
@app.get("/voice/webhook") # Voice Mode用: 電話着信時にVonageから呼び出されるWebhook (NCCO応答)
ワンコマンドでの起動サポート
リポジトリには start.sh が同梱されています。これを実行するだけで、Cloudflare Tunnelの起動、公開URLの取得・.envへの反映、Pythonサーバーの起動までを全自動で行うことができます。
デモ
こちらに、携帯電話からVonage LVN(電話番号)に架電して、音声ボットのテストした様子を録画してみました
デモ 電話着信1回目
デモ 電話着信2回目
最後に
よりナチュラルな音声(Text-To-Speech: TTS)への入れ替え、過去の会話履歴・コンテキストを保存するためのデータベース連携、予約スケジューラなどの外部アプリケーション連携など、様々な応用が考えられると思います。