Twilio Voiceで低遅延AI通話を実現するConversationRelayの利用
読む所要時間: 5 分
はじめに
Twilio Voiceには、通話を中継しながら制御できるConversationRelayという機能があります。この機能を活用すると、ユーザー間の通話の録音や監視、AIによるリアルタイム処理が可能になります。
本記事では、
ConversationRelayの概要
利用する理由
そのメリット
実際のコードを使った構築手順
について解説します。
ConversationRelayとは?
ConversationRelayは、Twilio Voiceを利用して、特定の音声通話をTwilioのサーバーを介して中継する機能です。これにより、通話の制御が柔軟になり、以下のような用途で活用できます。
音声のリアルタイム処理(例:通話の文字起こし、翻訳)
通話録音の管理(録音のオン・オフ切り替え)
会話の監視・分析(AIを活用した分析、センチメント解析)
低遅延の音声処理(1秒未満のレイテンシで自然な対話を実現)
BYO-LLM(Bring Your Own Large Language Model) に対応し、任意のAIモデルを組み込める


Conversation Relayの主要コンポーネント
Conversation Relayは、以下の3つの主要コンポーネントで構成されています。
Text to Speech (TTS): LLM(大規模言語モデル)の応答を自然な音声に変換する。
Speech to Text (STT): ユーザーの発話をテキストに変換し、LLMに送信する。
Advanced Orchestration: WebSocket APIを利用し、低遅延で自然な応答を提供し、割り込み処理を可能にする。
実際のコードを使った構築手順
Conversation Relayのセットアップ手順の詳細については、GitHubに公開されているConversation Relay Demoを参照してください。
このプロジェクトでは、TwilioのConversation Relay機能を活用し、WebSocketサーバーを通じてOpenAI APIと連携することで、リアルタイムでAIと自然な会話ができるシステムを構築します。
セットアップ手順
必要条件
Node.js (推奨バージョン: 14.x以上)
npm (Node.jsに含まれています)
Ngrok (有料版を前提)
Twilioアカウント(購入済みの電話番号)
OpenAIアカウント(APIキー取得済み)
インストール


環境変数の設定
.env ファイルを作成し、以下の内容を記述します。


your_openai_api_key を実際のOpenAI APIキーに置き換えてください。
Twilioの設定
TwilioコンソールのTwiML Binsで以下のTwiMLを作成します。


<subdomain_name> をngrokで指定するサブドメイン名に置き換えてください。
電話番号の設定
Twilioコンソールの PhoneNumbers メニューで、電話番号の A call comes in の設定を上記のTwiML Binに指定して保存します。
使用方法
1. サーバーを起動




3. Twilioで購入済みの電話番号に自分の端末から発信
4. AIと自由に会話できれば成功
注意: 通話を終了するには、必ず自分の端末から電話を切断してください。
依存関係
- ws: WebSocketサーバーの実装
- openai: OpenAI APIクライアント
- dotenv: 環境変数の管理
まとめ
Twilio VoiceのConversationRelayを使うことで、
低遅延な会話体験(1秒未満のレイテンシ)
AIとのシームレスな統合(BYO-LLM対応)
リアルタイムな音声処理・監視
柔軟な通話管理(録音、転送、監視)
といった高度な通話管理が実現できます。特に、AIを活用した通話の分析や監視に適した機能のため、カスタマーサポートやコンタクトセンターでの利用が期待されます。
本記事を参考に、ぜひConversation Relayを活用してみてください!