你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注释
此功能目前处于公开预览状态。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
适用于语音和音频的 Azure OpenAI GPT-4o 实时 API 是 GPT-4o 模型系列的一部分,该系列支持低延迟的“语音传入,语音传出”对话交互。
可以通过 WebRTC 或 WebSocket 使用实时 API 将音频输入发送到模型并实时接收音频响应。
按照本文中的说明通过 WebSocket 开始使用实时 API。 在不需要低延迟的服务器到服务器方案中通过 WebSocket 使用实时 API。
小窍门
在大多数情况下,我们建议 通过 WebRTC 使用实时 API 在客户端应用程序(如 Web 应用程序或移动应用)中实时音频流式处理。 WebRTC 专为低延迟、实时音频流式处理而设计,最适合大多数用例。
支持的模型
GPT-4o 实时模型可用于 美国东部 2 和瑞典中部地区的全球部署。
gpt-4o-mini-realtime-preview
(2024-12-17)gpt-4o-realtime-preview
(2024-12-17)
应使用实时 API 的 URL 中的 API 版本 2025-04-01-preview
。
有关支持的模型的详细信息,请参阅 模型和版本文档。
先决条件
在使用 GPT-4o 实时音频之前,需要:
- Azure 订阅 - 免费创建订阅。
- 在 受支持的区域中创建的 Azure OpenAI 资源。 有关详细信息,请参阅使用 Azure OpenAI 创建资源和部署模型。
- 你需要在受支持的区域中部署
gpt-4o-realtime-preview
或gpt-4o-mini-realtime-preview
模型,如 支持的模型 部分中所述。 可以从 Azure AI Foundry 门户模型目录或 Azure AI Foundry 门户中的项目部署模型。
连接和身份验证
实时 API(通过 /realtime
)构建在 WebSocket API 之上,以方便最终用户和模型之间的完全异步流通信。
实时 API 是通过与 Azure OpenAI 资源的 /realtime
终结点的安全 WebSocket 连接进行访问的。
可以通过连接以下内容来构造完整的请求 URI:
- 安全 WebSocket (
wss://
) 协议。 - 你的 Azure OpenAI 资源终结点主机名,例如
my-aoai-resource.openai.azure.com
openai/realtime
API 路径。- 受支持 API 版本的
api-version
查询字符串参数,例如2024-12-17
- 带有
deployment
或gpt-4o-realtime-preview
模型部署的名称的gpt-4o-mini-realtime-preview
查询字符串参数。
以下示例是一个结构良好的 /realtime
请求 URI:
wss://my-eastus2-openai-resource.openai.azure.com/openai/realtime?api-version=2025-04-01-preview&deployment=gpt-4o-mini-realtime-preview-deployment-name
若要进行身份验证:
- Microsoft Entra (建议):对启用了托管标识的 Azure OpenAI 资源的 API 使用基于令牌的身份验证
/realtime
。 将Bearer
令牌与Authorization
标头配合使用来应用一个检索到的身份验证令牌。 - API 密钥:可通过以下两种方式之一提供
api-key
:- 对预握手连接使用
api-key
连接标头。 此选项在浏览器环境中不可用。 - 对请求 URI 使用
api-key
查询字符串参数。 使用 https/wss 时,查询字符串参数是加密的。
- 对预握手连接使用
通过 WebSocket 体系结构实时 API
建立和验证与 /realtime
的 WebSocket 连接会话后,通过事件执行功能交互以发送和接收 WebSocket 消息。 这些事件各自采用 JSON 对象的形式。
事件可以并行发送和接收,应用程序通常应同时和异步处理它们。
- 客户端调用方与
/realtime
建立连接,以启动新的session
。 session
自动创建默认值conversation
。 不支持多个并发对话。conversation
会一直累积输入信号,直到response
由调用方通过直接事件启动,或由语音活动检测 (VAD) 自动启动。- 每个
response
都包含一个或多个items
,它们可以封装消息、函数调用和其他信息。 - 每个消息
item
都有content_part
,可以跨单个项表示多种模态(文本和音频)。 session
管理调用方输入处理(例如用户音频)和常见的输出生成处理的配置。- 如果需要,每个调用方发起的
response.create
都可以替代某些输出response
行为。 - 服务器创建的
item
和消息中的content_part
可以异步和并行填充。 例如,以轮循机制同时接收音频、文本和函数信息。
试用快速入门
满足先决条件后,可以按照 Realtime API 快速入门 中的说明通过 WebSocket 开始使用 Realtime API。