

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 教程：使用 Amazon Kinesis 视频流进行 TURN 中继的 WebRTC
<a name="runtime-webrtc-get-started-kvs"></a>

在本教程中，您将使用亚马逊 Kinesis Video Streams (KVS) 托管的 TURN 进行媒体中继，在浏览器客户端和 AgentCore 运行时代理之间建立 WebRTC 语音连接。该代理使用 Amazon Bedrock 基础模型实时处理音频，进行语音转语音对话。

完成后，您将有一个正常工作的 WebRTC 连接，音频将在浏览器和代理之间双向流式传输。

本教程需要具有互联网出口的 VPC 才能连接到 KVS TURN 终端节点。有关更多信息，请参阅[互联网访问注意事项](agentcore-vpc.md#agentcore-internet-access)。所有其他先决条件均由示例应用程序处理。该示例使用 AgentCore CLI 部署到 AgentCore 运行时。

有关完整的示例应用程序，请参阅开启 KVS 的 [ WebRTC 语音代理。](https://github.com/awslabs/amazon-bedrock-agentcore-samples/tree/main/01-features/02-host-your-agent/01-runtime/03-advanced/03-bidirectional-streaming/05-bidirectional-streaming-webrtc) GitHub

## 架构
<a name="runtime-webrtc-kvs-architecture"></a>

![架构图显示了 AgentCore 运行时的 WebRTC，KVS TURN 通过 VPC 中继。](https://docs.amazonaws.cn/bedrock-agentcore/latest/devguide/images/runtime-webrtc-architecture.png)


浏览器客户端  
一个使用浏览器 WebRTC API 捕获麦克风音频并播放代理的音频响应的网页。

AgentCore 运行时间  
托管代理并通过私有子网中的弹性网络接口 (ENI) 连接到用户的 VPC。

座席  
部署到 R AgentCore untime 的 Python 应用程序，通过`/invocations`端点处理 WebRTC 信令和 TURN 凭据管理，并在客户端和基础模型之间传输音频。

具有互联网出口的用户 VPC  
提供从代理到 KVS TURN 中继服务器的网络连接。流量通过 NAT 网关和互联网网关从私有子网中的 ENI 路由到达 TURN 端点。

KVS TURN 中继服务器  
在浏览器客户端和代理之间中继媒体流量。代理使用 API 从 KVS 获取临时 TURN 证书。[ GetIceServerConfig ](https://docs.amazonaws.cn/kinesisvideostreams/latest/dg/API_signaling_GetIceServerConfig.html)

## 工作原理
<a name="runtime-webrtc-kvs-how-it-works"></a>

1. 客户端调用代理来获取 KVS TURN 凭证和 ICE 服务器配置。

1. 客户创建 WebRTC 报价并将其发送给代理。代理创建使用 KVS TURN 服务器配置的对等连接并返回答案。

1. 客户端和代理交换候选ICE以通过TURN服务器建立连接。

1. 连接后，客户端通过 WebRTC 将麦克风音频传输到代理。代理将音频转发到 Amazon Bedrock 基础模型，并将该模型的语音响应传输回客户端。