News Hacker|极客洞察

390 8 天前 openai.com
😬OpenAI 低延迟语音 AI:WebRTC/Pion 架构、抢话争议与 4o 旧模型
把用户抢话抢得更快,就算更自然对话吗?

🎯 讨论背景

OpenAI 这篇工程文章讲的是怎样把语音 AI 做到接近自然对话的速度,并在 ChatGPT 的 900 million weekly active users 覆盖面上稳定提供服务。文中强调 WebRTC(浏览器实时音视频通信协议)和 Pion(Go 语言实现的 WebRTC 库)等实时传输栈,以及在全球范围内维护低延迟媒体路径。评论区则把焦点拆成两层:一层是网络与媒体传输,另一层是 VAD(Voice Activity Detection,语音活动检测)和 turn detection(轮次判断)这种“何时该开口”的问题。很多人还拿 Gemini Live、Grok voice、LiveKit(一个 WebRTC 基础设施平台)、SFU(Selective Forwarding Unit,选择性转发服务器)和本地开源语音栈来对比,讨论到底是模型能力更重要,还是工程延迟更重要。

📌 讨论焦点

WebRTC/Pion 与传输层工程

很多人先感谢文章公开了 Pion(Go 语言实现的 WebRTC 库)和整套 WebRTC 实践经验,认为这对理解实时音视频很有价值。讨论里也有人质疑这套方案是不是为了抠最后那一点延迟而引入了过多复杂度,但回应是:优化的是自己控制的 WebRTC 服务器层,而不是推理服务本身。另一些评论把话题扩展到 DataChannel、WebSocket、LiveKit、SFU 和 transceiver 之间的取舍,甚至讨论了浏览器里 p2p、零拷贝传输和 WebRTC session 崩溃后的恢复问题。整体上,这一组观点更关注“工程栈怎么搭才稳”,而不是单纯追求某个数字更小。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9] [来源10] [来源11] [来源12] [来源13] [来源14] [来源15] [来源16] [来源17] [来源18] [来源19]

低延迟与自然对话的冲突

另一条主线是:真正让语音助手难用的,不只是网络延迟,而是它会不会在用户停顿时抢话。很多人描述了自然说话时会找词、停顿、插入 filler 的场景,结果系统一旦以 0.5 秒到 1 秒的静音就判定结束,就会显得粗暴而不聪明。评论区把这个问题拆成 transport latency 和 turn latency 两层,也反复提到 VAD、turn detection、end-of-thought triggers、barge-in 和“说到一半就能立即停”的需求。也有人认为低延迟仍然重要,因为它能让系统更快响应“等等”“停下”这类打断,而且对 tool calling 这类本就会额外吃掉几百毫秒的流程尤其有帮助。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9] [来源10] [来源11] [来源12] [来源13] [来源14] [来源15] [来源16] [来源17] [来源18] [来源19] [来源20] [来源21] [来源22] [来源23] [来源24] [来源25] [来源26] [来源27] [来源28] [来源29]

Voice 模型本身太旧/太弱

不少评论的核心抱怨不是“快”,而是 OpenAI 的 voice mode 还停留在较老的 4o 家族,能力明显落后于最新的文本模型。用户最常提到的问题包括重复改写、套话太多、护栏过重、回答空泛,以及在想做头脑风暴或结构化思考时特别不顺手。于是大家拿 Gemini Flash Live 3.1(Google 的实时语音模型)和 Grok voice(xAI 的语音模式)做对比,有人觉得它们更像真正可用的双向语音接口,也有人更愿意把语音输入当成转写工具,再把文本交给更强的 LLM 处理。整体上,社区接受“语音比打字快”,但并不接受“为了实时而牺牲模型质量”。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9] [来源10] [来源11] [来源12] [来源13] [来源14] [来源15] [来源16] [来源17] [来源18] [来源19] [来源20]

DIY/开源语音栈在发酵

也有一批评论把讨论转向“如果不靠 OpenAI,自建或开源能做到什么程度”。Pipecat(开源 voice pipeline 框架)被反复提到,很多人分享自己在本地跑 Gemma 4、Whisper、Kokoro TTS 之类组件的经验。有人甚至贴出在 M2 MacBook Pro 上做的多线程语音助手方案:用 LiteRT-LM(轻量级本地推理框架)处理模型、用自定义 wake word、smart turn VAD、AEC(Acoustic Echo Cancellation,回声消除)和 barge-in 监控把整条链路串起来。共识是本地/开源方案已经很能打,但要把 STT、TTS、模型上下文、唤醒词和打断逻辑都调顺,工程复杂度并不比云端低。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9]

规模、数据与产品取舍

还有人从产品和商业角度解读这篇文章。有人质疑“900 million weekly active users”更像是覆盖面而不是实际 voice 使用量,甚至像是在用最大数字讲规模故事;也有人指出 voice 功能本身还不够顺滑,先天就存在“体验粗糙→使用率低→更难投入优化”的鸡生蛋问题。另一种猜测是,语音交互可能带来文本模式拿不到的训练数据,所以即使当前体验不够好,平台仍然会想把用户留在 voice 里。这个视角把技术细节放到第二位,重点看的是产品驱动力和数据回流。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7]

📚 术语解释

WebRTC: 浏览器原生的实时音视频通信协议,常用于低延迟语音和视频传输。

Pion: 一个用 Go 实现的 WebRTC 库,常被用来做服务端实时媒体处理。

libwebrtc: WebRTC 的底层 C++ 实现,很多浏览器和媒体栈都依赖它。

VAD: Voice Activity Detection,语音活动检测,用来判断用户是否在说话。

turn detection: 判断该轮到谁说话、用户是否说完的逻辑。

SFU: Selective Forwarding Unit,选择性转发服务器,常用于多方实时音视频转发。

transceiver: WebRTC 里的收发媒体单元,用来管理发送和接收的轨道。

STT/TTS: Speech-to-Text / Text-to-Speech,分别是语音转文字和文字转语音。

barge-in: 用户打断正在播报的语音并立即抢回控制权。

AEC: Acoustic Echo Cancellation,回声消除,防止麦克风拾取扬声器回放内容。