UStackUStack
OpenAI Realtime API icon

OpenAI Realtime API

使用 OpenAI Realtime API 构建低延迟、多模态语音与实时音频体验,支持浏览器语音代理与 WebSocket 实时转录。

OpenAI Realtime API

OpenAI Realtime API 是什么?

OpenAI Realtime API 为您的应用与原生支持语音到语音交互的模型提供低延迟通信。它还支持多模态输入——音频、图像和文本——以及多模态输出——音频和文本——使其适用于交互式语音体验。

除了语音代理,Realtime API 还可通过 WebSocket 连接流式传输音频用于实时音频转录。文档还介绍了浏览器语音代理工作流的推荐起点(如 TypeScript 的 Agents SDK)。

主要特性

  • 低延迟语音到语音交互:专为实时对话音频体验设计,而非仅限请求/响应。
  • 多模态输入(音频、图像、文本):允许单个会话根据应用流程接受不同输入类型。
  • 多模态输出(音频和文本):支持在交互中返回音频、文本或两者。
  • 多种连接方式:可在 WebRTC(浏览器/客户端)、WebSocket(中间层服务器端,提供一致低延迟)和 SIP(VoIP 电话)之间选择。
  • 会话与对话工具指南:包括提示、对话生命周期事件以及服务器端管理会话行为的指导。
  • WebSocket 实时转录:提供实时转录音频流路径。

如何使用 OpenAI Realtime API

  1. 选择连接方式,根据应用运行位置:浏览器/客户端用 WebRTC,服务器/中间层用 WebSocket,VoIP 电话用 SIP。
  2. 启动会话。对于浏览器语音代理,文档推荐使用 Agents SDK for TypeScript,它在浏览器中使用 WebRTC,服务器端使用 WebSocket
  3. 在代码中创建并初始化会话,然后使用客户端 API 密钥 连接(示例使用 RealtimeAgentRealtimeSession 配合 session.connect)。
  4. 使用事件与模型交互。连接后,使用提供的指南进行提示/引导、对话生命周期管理和(如需)通过 webhook 的服务器端控制。

文档还注明了影响 Realtime 请求认证的 GA 迁移细节(详见 FAQ)。

使用场景

  • 基于浏览器的语音到语音代理:使用 WebRTC(通常通过 Agents SDK for TypeScript)连接麦克风和音频输出,实现交互对话。
  • 服务器支持的实时助手:当需要一致低延迟网络和集中式会话处理时,从中间层使用 WebSocket 连接。
  • VoIP/电话集成:目标部署为电话环境而非 Web 浏览器时,通过 SIP 连接。
  • 实时音频转录:通过 WebSocket 将音频流式传输至 Realtime 转录流程,在发送音频时接收转录结果。
  • 多模态交互:在单个实时会话中接受音频伴随图像和文本,然后返回音频、文本或两者。

常见问题

使用 GA Realtime API 时需要 beta 头吗?

文档指出,对于 GA 请求,应 移除 OpenAI-Beta: realtime=v1 头。如果想保留 beta 行为,则应 继续 包含该头。

如何为客户端(浏览器)Realtime 会话生成凭证?

在 GA 接口中,文档描述了一个单一 REST 端点——POST /v1/realtime/client_secrets——用于生成初始化 WebRTC 或 WebSocket 连接的密钥。示例展示了创建会话配置并 POST 到该端点。

WebRTC 和 WebSocket 在运行位置上如何区别?

文档将 WebRTC 定位为浏览器/客户端交互的理想选择,而 WebSocket 适用于具有一致低延迟网络连接的中间层服务器端应用。

WebRTC SDP 获取的 URL 变更是什么?

在浏览器中初始化 WebRTC 会话时,文档指出获取远程会话信息的 SDP URL 现为 /v1/realtime/calls

我能仅用于转录而无需完整语音代理行为吗?

可以。文档特别强调通过 WebSocket 连接实时转录音频流,实现 实时音频转录

替代方案

  • 使用 TypeScript Agents SDK,而非直接基于 Realtime 原语构建一切:这能让您专注于语音代理编排,同时在底层利用 Realtime 实现浏览器(WebRTC)和服务器(WebSocket)连接。
  • 构建请求/响应转录管道,而非流式处理:如果您的应用无需实时音频处理,非实时转录工作流可避免 Realtime 所述的事件驱动会话方式。
  • 语音的其他实时通信方式:如果需要电话专用流程,SIP 集成是 Realtime 连接方法之一;否则,根据部署选择 WebRTC(浏览器)或 WebSocket(服务器)。
  • 使用非实时端点的多模态聊天:如果延迟要求不如“低延迟通信”严格,非实时多模态聊天方式可能适用,尽管不会遵循 Realtime 文档所述的流式/事件会话工作流。