在生成式 AI 领域,延迟是沉浸感的终极杀手。直到最近,构建语音驱动的 AI 代理仍如同组装鲁布·戈德堡装置:需将音频输入语音转文本(STT)模型,将转录文本发送至大语言模型(LLM),最后再将文本传输至文本转语音(TTS)引擎。每次转换都会增加数百毫秒的延迟。
OpenAI 通过Realtime API 彻底重构了这一架构。该平台通过专属 WebSocket 模式,为 GPT-4o 原生多模态能力开辟了直接持久的传输通道。这标志着从无状态请求响应循环向有状态事件驱动流式处理的根本性转变。

协议变革:为何选择WebSockets?
业界长期依赖标准 HTTP POST 请求。尽管通过服务器发送事件(SSE)传输文本能让大语言模型(LLM)响应更迅速,但一旦发起请求,它就变成了单向通信。Realtime API 采用 WebSocket 协议(wss://),构建了全双工通信通道。
对于开发语音助手的程序员而言,这意味着模型可通过单一连接同时实现“聆听”与“对话”。客户端连接地址如下:
wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview
核心架构:会话、响应与项目
理解 Realtime API 需要掌握三个特定实体:
- 会话:全局配置。通过
session.update事件,工程师定义系统提示词、语音(如合金、灰烬、珊瑚)及音频格式。 - 项目:每个对话元素:用户语音、模型输出或工具调用均作为项目存储于服务器端
conversation状态中。 - 响应:执行指令。发送
response.create事件将指示服务器解析对话状态并生成答案。
音频工程:PCM16 和 G.711
OpenAI 的 WebSocket 模式处理的是以Base64编码的原始音频帧。它支持两种主要格式:
- PCM16: 24kHz 的 16 位脉冲编码调制(非常适合高保真应用)。
- G.711: 8kHz 电话标准(u-law 和 a-law),非常适合 VoIP 和 SIP 集成。
开发者必须通过 input_audio_buffer.append 事件以小块(通常为 20-100 毫秒)的形式传输音频。然后,模型会将response.output_audio.delta这些事件以流式传输的方式返回,以便立即播放。
VAD:从沉默到语义学
一项重大更新是扩展了语音活动检测 (VAD)功能。标准版server_vad使用静音阈值,而新版semantic_vad则使用分类器来判断用户是真的说完了,还是只是在思考。这避免了AI在用户说话说到一半时尴尬地打断他们,这是早期语音 AI 中常见的“恐怖谷效应”问题。
事件驱动型工作流
使用 WebSocket 本质上是异步的。你不是等待单个响应,而是监听一系列服务器事件:
input_audio_buffer.speech_started:该模型能够听到用户的声音。response.output_audio.delta:音频片段已准备就绪,可以播放。response.output_audio_transcript.delta:文本转录实时送达。conversation.item.truncate:当用户中断时使用,允许客户端告诉服务器在模型内存的哪个位置“切断”以匹配用户实际听到的内容。
要点总结
- 全双工、基于状态的通信:与传统的无状态 REST API 不同,WebSocket 协议
wss://支持持久的双向连接。这使得模型能够同时“监听”和“发送”,并保持实时会话状态,从而无需在每次通信中重新发送整个对话历史记录。 - 原生多模态处理:该 API 绕过了 STT → LLM → TTS 流程。通过原生处理音频,GPT-4o 降低了延迟,并能感知和生成通常在文本转录中丢失的细微副语言特征,例如语调、情感和语调变化。
- 精细化事件控制:该架构依赖于服务器发送的特定事件进行实时交互。关键事件包括
input_audio_buffer.append向模型传输数据块和response.output_audio.delta接收音频片段,从而实现即时、低延迟的播放。 - 高级语音活动检测 (VAD):该技术从简单的基于静音的检测方式过渡
server_vad到semantic_vad能够区分用户停顿思考和用户说完句子的高级语音活动检测。这可以避免尴尬的打断,并创造更自然流畅的对话体验。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/64885.html