GPT-Live 底层拆解:OpenAI 如何让 95% 的音频帧不再迟到
OpenAI 发布 GPT-Live 工程文章,首次披露新版 ChatGPT 语音系统的底层架构。新的媒体系统中,p95 音频帧延迟已降至旧系统 p50 的水平——最慢的 5% 音频帧,现在和旧系统一半的帧一样快。
OpenAI 发布 GPT-Live 工程文章,首次披露新版 ChatGPT 语音系统的底层架构。新的媒体系统中,p95 音频帧延迟已降至旧系统 p50 的水平——最慢的 5% 音频帧,现在和旧系统一半的帧一样快。
在实时语音交互中,延迟是唯一的"死线"。文字回答慢几百毫秒,用户顶多觉得体验不佳;但音频只要卡顿一次,那种"非人"的割裂感就会瞬间摧毁信任。
音频帧不能长时间排队。
音频处理、模型调用、工具请求、聊天记录保存在同一套异步服务中。一个环节变慢,后面的任务全部排队。
快速通道、深度通道、异步任务各走各路。音频永不等待,后台任务可以推迟结果,但不能卡住声音。
每一帧声音都有对应的播放位置。它迟到以后,即使最终处理完成,也已经没有意义。旧音频一旦持续积压,整场对话就会逐渐落后于用户当前所处的时间。
这是一场"必须实时到达"的接力赛——不是跑得快就行,而是每一棒都不能掉。
标准 WebRTC 建立连接需要 6 次网络往返(RTT)。对于跨地区连接,光速的限制就足以造成明显的首字延迟。
OpenAI 用自定义协议 WARP 解决了这个问题。
WARP 将这三步合并,把通道启动从 6 次缩短到 1 次。更关键的是,路由提示被写进 WebRTC 本来就携带的 ICEufrag 字段。Relay 层收到第一个包时,不需要查询远程 Redis 就能知道该把数据送往哪个实例——在内存中直接建立映射,消灭了一次跨网络查询。
把 6 次缩短到 1 次,并不意味着整体启动快 6 倍——服务器调度、客户端处理和模型准备仍然需要时间。但它移除了多次必须等待网络返回的步骤,对跨地区连接尤其有效。
音频传输稳定之后,更难的问题来了:模型如何在持续对话中管理发言权和会话状态?
过去的语音系统依靠独立的回合检测器,根据静音时间判断用户是否说完。GPT-Live 把这项判断放进语音模型本身——模型一边理解内容,一边决定继续听、开始回答还是接受打断。
双模型架构真正难处理的,不是把任务交给后台,而是保证结果回来时仍然接得上当前对话。
GPT-5.5 开始搜索或调用工具后,GPT-Live 不会停下来等待,而是继续接收声音、回应用户。期间,用户可能补充条件、改变问题,甚至取消原任务。后台模型返回的答案即使本身正确,也可能已经不再适用于此时的会话。
双模型协作能否稳定接续,不只取决于模型速度,还取决于网络、队列和状态服务能否共同跟上实时对话。
系统的瓶颈往往不在 GPU 推理,而是某个辅助组件(如日志或状态存储)的先饱和。
实时性不是模型的恩赐,而是系统调度的红利。
当 p95 取代平均延迟成为新的度量标准,决定语音体验的已经不只是模型参数,而是调度器在每一个 WebRTC 握手包、每一次内存分配、每一轮状态同步里省下的往返。
GPT-Live 已集成于新版 ChatGPT 语音模式,逐步向移动端与桌面端开放。打开 ChatGPT 即可体验持续语音对话。