Pipecat-Vonage Video API Bot Demo の概要と要素技術
リポジトリURL: masayukimiyazawa/pipecat-vonage-video-api-bot-demo-JP
概要(サマリー)
本プロジェクトは、完全ローカル環境で動作するLLM/STTと日本語TTS(音声合成)を統合した音声対話ボットのデモンストレーション・アプリケーションです。
フロントエンドではVonage Video JS SDKを利用してビデオ/音声セッションを確立し、バックエンドのBotシステムとは Vonage Audio Connector を介して音声をやり取りします。テキスト変換からAIの回答生成、そして音声合成までの一連の流れを Pipecat フレームワークを使ってシームレスに連携させているのが最大の特徴です。
主な特徴
ウェイクワードなしで、接続直後からシームレスな対話が開始されます。
デモで体験できること
[O] クラウドとローカルAIモデルの統合
[O] 超低遅延な音声対話(ストリーミング処理)
[O] ウェイクワード不要の自然な会話(割り込み対応)
[ ] マルチモーダル対応(※今後の拡張案)
主な特徴
- ローカル推論による処理: クラウドAIに依存せず、LM Studio (LLM/STT) と pyopenjtalk (TTS) を用いて手元の環境で推論を実行。
- リアルタイム音声ストリーミング: VonageのWebブラウザ通話とバックエンドBotをWebSocketでリアルタイム接続。
-
ワンコマンド起動:
start.shを実行するだけで、Cloudflare Tunnelを用いた安全な公開とサーバー起動を全自動化。
要素技術の詳細
本システムを構成する主要な要素技術(Tech Stack)について解説します。
1. Pipecat (パイプキャット)
音声やビデオを利用したリアルタイムの対話型AIエージェントを構築するためのオープンソース・フレームワークです。
本プロジェクトでは、以下のような パイプライン(一連の処理の流れ) の制御とルーティングを担っています。
-
STT (音声認識)➡️LLM (言語モデル)➡️TTS (音声合成)
2. LM Studio & Gemma4 A4B
ローカル環境で手軽にオープンソースの大規模言語モデル(LLM)や音声モデルを動かせるアプリケーションです。
-
役割: このデモでは、ローカルサーバー(
localhost:1234)として立ち上がり、OpenAI API互換の形式でPipecatからのリクエストを受け付けます。言語生成(LLM)および 音声のテキスト化(Whisper STT)を担当します。
3. pyopenjtalk (ローカル日本語TTS)
日本語に特化したテキスト音声合成システム「Open JTalk」のPythonラッパーライブラリです。
- 役割: LLMが生成した日本語のテキスト(返答)を、リアルタイムに合成音声(オーディオデータ)に変換してブラウザ側に返却します。
4. Vonage Video API & Audio Connector
クラウドベースのリアルタイムビデオ・音声通話プラットフォームです。
- Vonage Video JS SDK: フロントエンド(ブラウザ側)でマイク音声を取得し、通信セッションに参加します。
- Audio Connector: Vonageクラウド上の音声を、生のPCM16 WebSocketストリームとしてバックエンドのFastAPIサーバーに転送(ブリッジ)する機能を提供します。
5. FastAPI
Pythonの高速なWebフレームワークです。
-
役割: WebSocketエンドポイント(
/ws)を公開してVonageクラウドからの音声データを受信・送信するほか、フロントエンドのUI配信(static/index.html)やセッション接続用APIのホスティングを行います。
6. Cloudflare Tunnel (cloudflared)
ローカル環境で起動しているサーバー(FastAPI)を、ポート開放などの複雑なネットワーク設定なしに安全にインターネット上へ公開するツールです。
-
役割: Vonageクラウド(外部)から、手元のPC(
localhost:8005/ws)に対してWebSocketで通信できるようにするためのトンネルを構築します。
7. uv
Rustで記述された超高速なPythonパッケージインストーラおよび依存関係管理ツールです。(pip や poetry の代替)
-
役割:
uv syncを用いることで、プロジェクトに必要なPythonライブラリを高速かつ確実なバージョンでインストールします。
システムアーキテクチャ
システム全体のデータの流れ(アーキテクチャ)は以下のようになっています。
Browser (Vonage Video JS SDK)
│ [マイク音声の送信 / ボット音声の受信]
▼
Vonage Cloud
│ [Audio Connector による生のPCM16 WebSocket通信]
▼
Cloudflare Tunnel ───→ localhost:8005/ws
│
FastAPI + Pipecat
Pipeline: STT → LLM → TTS
│
LM Studio (:1234) pyopenjtalk (local)
Note:
ボットとの会話は、クライアントが接続した瞬間にPipecatがLLMRunFrameをキューに追加することで開始されます。ウェイクワードは不要です。
デモ
Vonage Video SDKを活用したクライアント端末から音声ボットに接続したときのデモ動画
デモ動画
最後に
このデモアプリケーションでは、Vonage Video SDKを活用したクライアント端末から音声ボットに接続しました。
Vonage CPaaSプラットフォームは電話番号の提供とVoice APIを活用して電話回線を通じた発着信処理できます。次回はビデオ端末だけでなく、携帯電話や固定電話からボット接続できるように拡張します