For conversational AI to feel natural, it must operate at the speed of human speech. Awkward pauses, clipped interruptions, and delayed barge-in signals that the network is getting in the way. OpenAI's work on OpenAI low-latency voice AI aims to eliminate these friction points for ChatGPT voice, developers using its Realtime API, and interactive workflows. Achieving this at OpenAI’s scale, serving over 900 million weekly active users, demands global reach, rapid connection setup, and consistently low media latency. According to OpenAI News, the company re-engineered its WebRTC infrastructure to overcome limitations with existing models at scale.
The core challenge involved integrating WebRTC, a standard for real-time communication, with OpenAI's massive Kubernetes-based infrastructure. Traditional WebRTC often relies on a one-port-per-session model, which clashes with the dynamic, port-constrained nature of modern cloud deployments. This approach struggles with port exhaustion and requires stable ownership of stateful sessions like ICE and DTLS, issues that become critical when managing millions of concurrent connections.
Rearchitecting for Scale
OpenAI adopted a 'split relay plus transceiver' architecture. This design separates the initial packet handling from the complex WebRTC protocol termination. A lightweight, stateless relay layer handles packet forwarding, while a stateful transceiver service manages the full WebRTC session details.
This separation allows OpenAI to expose a minimal, fixed UDP port surface to the public internet. Packets are then routed efficiently to the specific transceiver instance responsible for that session. The transceiver maintains the ICE connectivity checks, DTLS handshake, and SRTP encryption, presenting a standard WebRTC experience to the client.
Routing with ICE Credentials
A key innovation is using the ICE username fragment (ufrag) for initial packet routing. During session setup, the ufrag is embedded with routing metadata. The relay parses this metadata from the first packet, typically a STUN binding request, to determine the correct transceiver. This enables deterministic routing without requiring external lookup services on the packet path.