チュートリアル: Amazon Kinesis Video Streams を使用した TURN リレーによる WebRTC
このチュートリアルでは、メディアリレーに Amazon Kinesis Video Streams (KVS) マネージド TURN を使用して、ブラウザクライアントと AgentCore Runtime で実行されているエージェントの間に WebRTC 音声接続を構築します。エージェントは、speech-to-speech上げ会話用の Amazon Bedrock 基盤モデルを使用して音声をリアルタイムで処理します。
完了すると、ブラウザとエージェント間でオーディオが双方向にストリーミングされる WebRTC 接続が動作します。
このチュートリアルでは、KVS TURN エンドポイントへの接続にインターネット出力を備えた VPC が必要です。詳細については、「インターネットアクセスに関する考慮事項」を参照してください。その他の前提条件はすべて、サンプルアプリケーションによって処理されます。このサンプルでは、AgentCore CLI を使用して AgentCore ランタイムにデプロイします。
完全なサンプルアプリケーションについては、GitHub の「KVS TURN を使用した WebRTC Voice Agent
アーキテクチャ
- ブラウザクライアント
-
ブラウザ WebRTC API を使用してマイクオーディオをキャプチャし、エージェントのオーディオレスポンスを再生するウェブページ。
- AgentCore ランタイム
-
エージェントをホストし、プライベートサブネットの Elastic Network Interface (ENI) を介してユーザーの VPC にアタッチします。
- [エージェント]
-
/invocationsエンドポイントを介して WebRTC シグナリングと TURN 認証情報管理を処理し、クライアントと基盤モデルの間で音声をストリーミングする AgentCore ランタイムにデプロイされた Python アプリケーション。 - インターネット出力を使用するユーザー VPC
-
エージェントから KVS TURN リレーサーバーへのネットワーク接続を提供します。トラフィックは、プライベートサブネットの ENI から NAT ゲートウェイとインターネットゲートウェイを経由して TURN エンドポイントに到達します。
- KVS TURN リレーサーバー
-
ブラウザクライアントとエージェント間のメディアトラフィックを中継します。エージェントは、GetIceServerConfig API を使用して KVS から一時的な TURN 認証情報を取得します。
仕組み
-
クライアントは エージェントを呼び出して、KVS TURN 認証情報と ICE サーバー設定を取得します。
-
クライアントは WebRTC オファーを作成し、エージェントに送信します。エージェントは、KVS TURN サーバーで設定されたピア接続を作成し、回答を返します。
-
クライアントとエージェントは ICE 候補を交換して、TURN サーバーを介した接続を確立します。
-
接続されると、クライアントは WebRTC を介してマイクオーディオをエージェントにストリーミングします。エージェントは音声を Amazon Bedrock 基盤モデルに転送し、モデルの音声レスポンスをクライアントにストリーミングします。