Articleopenai.com·2026년 5월 4일·0

How OpenAI delivers low-latency voice AI at scale

Quick Summary

OpenAI는 대규모 음성 AI에서 대화 지연을 줄이기 위해 WebRTC 기반 실시간 미디어 처리를 Kubernetes 환경에 맞게 재설계하고, 릴레이와 트랜시버를 분리한 구조를 설명한다.

How OpenAI delivers low-latency voice AI at scale 관련 대표 이미지

🖼️ 인포그래픽

How OpenAI delivers low-latency voice AI at scale 내용을 설명하는 본문 이미지

🖼️ 4컷 인포그래픽

How OpenAI delivers low-latency voice AI at scale 내용을 설명하는 본문 이미지

💡 한 줄 요약

OpenAI는 대규모 음성 AI에서 대화 지연을 줄이기 위해 WebRTC 기반 실시간 미디어 처리를 Kubernetes 환경에 맞게 재설계하고, 릴레이와 트랜시버를 분리한 구조를 설명한다.

📌 핵심 요약

  • OpenAI는 음성 AI가 자연스럽게 느껴지려면 사용자가 말하는 속도에 맞춰 연결 설정, 오디오 왕복 시간, 지터와 패킷 손실이 안정적으로 관리되어야 한다고 설명한다.
  • WebRTC는 ICE, DTLS, SRTP, 코덱 협상, RTCP, 에코 제거와 지터 버퍼링 같은 실시간 미디어의 어려운 부분을 표준화해 브라우저와 모바일에서 일관된 기반을 제공한다.
  • OpenAI의 주요 음성 AI 워크로드는 다자간 회의보다 1:1 사용자-모델 대화에 가깝기 때문에, SFU 대신 WebRTC 세션을 엣지에서 종료하고 내부 백엔드에는 단순한 프로토콜로 연결하는 트랜시버 모델을 선택했다.
  • 초기 구현은 Pion 기반의 단일 Go 서비스가 시그널링과 미디어 종료를 함께 처리했지만, Kubernetes에서 한 세션당 하나의 공개 UDP 포트를 요구하는 전통적 WebRTC 방식은 확장성과 보안, 운영 안정성에 맞지 않았다.
  • OpenAI가 채택한 구조는 작은 공개 UDP 표면을 가진 릴레이가 패킷 라우팅을 맡고, 상태ful한 WebRTC 프로토콜 종료와 세션 소유권은 트랜시버가 유지하는 방식이다.

🧩 주요 포인트

  1. OpenAI는 음성 AI가 자연스럽게 느껴지려면 사용자가 말하는 속도에 맞춰 연결 설정, 오디오 왕복 시간, 지터와 패킷 손실이 안정적으로 관리되어야 한다고 설명한다.
  2. WebRTC는 ICE, DTLS, SRTP, 코덱 협상, RTCP, 에코 제거와 지터 버퍼링 같은 실시간 미디어의 어려운 부분을 표준화해 브라우저와 모바일에서 일관된 기반을 제공한다.
  3. OpenAI의 주요 음성 AI 워크로드는 다자간 회의보다 1:1 사용자-모델 대화에 가깝기 때문에, SFU 대신 WebRTC 세션을 엣지에서 종료하고 내부 백엔드에는 단순한 프로토콜로 연결하는 트랜시버 모델을 선택했다.
  4. 초기 구현은 Pion 기반의 단일 Go 서비스가 시그널링과 미디어 종료를 함께 처리했지만, Kubernetes에서 한 세션당 하나의 공개 UDP 포트를 요구하는 전통적 WebRTC 방식은 확장성과 보안, 운영 안정성에 맞지 않았다.
  5. OpenAI가 채택한 구조는 작은 공개 UDP 표면을 가진 릴레이가 패킷 라우팅을 맡고, 상태ful한 WebRTC 프로토콜 종료와 세션 소유권은 트랜시버가 유지하는 방식이다.

🧠 상세 정리

1. 음성 AI에서 지연 시간이 핵심 문제가 되는 이유

원문은 음성 AI가 자연스럽게 느껴지려면 대화가 실제 말의 속도로 움직여야 한다는 점에서 출발한다. 네트워크가 끼어들어 지연을 만들면 사용자는 어색한 침묵, 말이 잘리는 중단, 늦은 끼어들기 반응을 즉시 체감한다. 이 문제는 ChatGPT 음성 기능뿐 아니라 Realtime API를 사용하는 개발자, 상호작용형 워크플로의 에이전트, 사용자가 말하는 동안 오디오를 처리해야 하는 모델 모두에 중요하다. OpenAI 규모에서는 9억 명이 넘는 주간 활성 사용자에게 전 세계적으로 도달해야 하고, 세션 시작 직후 말할 수 있을 만큼 연결이 빨라야 하며, 미디어 왕복 시간이 낮고 안정적이어야 한다.

2. OpenAI가 직면한 세 가지 인프라 제약

OpenAI의 실시간 AI 상호작용 담당 팀은 규모가 커지면서 세 가지 제약이 충돌하기 시작했다고 설명한다. 첫째, 세션마다 하나의 미디어 종료 포트를 쓰는 방식은 OpenAI 인프라에 잘 맞지 않았다. 둘째, ICE와 DTLS 세션은 상태를 갖기 때문에 안정적인 소유자가 필요했다. 셋째, 글로벌 라우팅은 사용자의 첫 네트워크 홉 지연을 낮게 유지해야 했다. 이 글은 클라이언트 입장에서는 표준 WebRTC 동작을 유지하면서, OpenAI 내부에서는 패킷 라우팅 방식을 바꾸기 위해 만든 릴레이와 트랜시버 분리 아키텍처를 설명한다.

3. WebRTC를 실시간 AI 제품의 기반으로 선택한 이유

WebRTC는 브라우저, 모바일 앱, 서버 사이에서 낮은 지연 시간으로 오디오, 비디오, 데이터를 보내기 위한 공개 표준이다. 원문은 WebRTC가 단순한 P2P 통화 기술이 아니라, 클라이언트-서버 실시간 시스템에도 실용적인 기반이라고 설명한다. ICE는 연결 설정과 NAT 통과를, DTLS와 SRTP는 암호화된 전송을, 코덱 협상은 오디오 압축과 복원을, RTCP는 품질 제어를 담당한다. 또한 클라이언트 측 에코 제거와 지터 버퍼링 같은 기능까지 포함되어 있어, OpenAI는 저수준 전송 문제를 새로 만들기보다 모델과 연결되는 인프라에 집중할 수 있다.

4. 표준화와 생태계가 주는 개발상의 이점

원문은 WebRTC의 표준화가 AI 제품 개발에 중요하다고 강조한다. WebRTC가 없다면 각 클라이언트는 NAT 환경에서 연결을 수립하고, 미디어를 암호화하고, 코덱을 협상하고, 변화하는 네트워크 조건에 적응하는 방법을 따로 구현해야 한다. WebRTC를 사용하면 브라우저와 모바일 플랫폼에 이미 구현된 프로토콜 스택 위에서 작업할 수 있다. OpenAI는 Justin Uberti와 Sean DuBois의 WebRTC 및 Pion 관련 기여도 언급하며, 검증된 미디어 인프라 위에 실시간 AI를 구축할 수 있었다고 설명한다.

5. 연속 오디오 스트림이 대화형 AI에 주는 차이

AI 관점에서 WebRTC의 가장 중요한 속성은 오디오가 연속 스트림으로 도착한다는 점이다. 사용자가 말을 모두 끝내고 파일처럼 업로드하기를 기다리는 대신, 시스템은 사용자가 말하는 중에도 전사, 추론, 도구 호출, 음성 생성을 시작할 수 있다. 원문은 이 차이가 대화처럼 느껴지는 시스템과 푸시투토크처럼 느껴지는 시스템을 가르는 핵심이라고 설명한다. 따라서 WebRTC 선택 이후의 질문은 어디에서 연결을 종료하고, 그 세션을 추론 백엔드와 어떻게 연결할 것인가로 이어진다.

6. SFU가 아닌 트랜시버 모델을 선택한 배경

원문은 먼저 SFU를 설명한다. SFU는 각 참여자의 WebRTC 스트림을 받아 필요한 대상에게 선택적으로 전달하는 미디어 서버이며, 그룹 통화나 수업, 협업 회의처럼 본질적으로 다자간인 제품에 잘 맞는다. 클라이언트-대-AI 제품에서도 SFU는 시그널링, 미디어 라우팅, 녹화, 관측성, 향후 사람 상담원 연결이나 참여자 추가 같은 확장을 한 시스템에서 재사용할 수 있어 기본 출발점이 되기 쉽다. 그러나 OpenAI의 워크로드는 대부분 한 사용자와 한 모델, 또는 한 애플리케이션과 한 실시간 에이전트의 1:1 구조이고 모든 턴이 지연에 민감하므로, 엣지 서비스가 WebRTC를 종료한 뒤 내부 프로토콜로 추론과 오케스트레이션에 연결하는 트랜시버 모델을 선택했다.

7. 트랜시버의 세션 소유권과 초기 구현

트랜시버 설계에서 WebRTC 세션 상태를 소유하는 서비스는 트랜시버 하나다. 여기에는 ICE 연결성 검사, DTLS 핸드셰이크, SRTP 암호화 키, 세션 수명주기가 포함된다. 원문에서 종료란 트랜시버가 이러한 핸드셰이크를 완료하고 미디어를 암호화하거나 복호화하는 끝점이라는 뜻이다. 이 구조는 세션 소유권을 이해하기 쉽게 만들고, 백엔드 서비스가 WebRTC 피어처럼 동작하지 않아도 일반 서비스처럼 확장되도록 해준다. 초기 구현은 Pion 기반의 단일 Go 서비스였고, 이 서비스가 SDP 협상, 코덱 선택, ICE 자격 증명, 세션 설정과 다운스트림 WebRTC 종료 및 업스트림 백엔드 연결을 함께 처리했다.

8. Kubernetes에서 드러난 포트 고갈과 세션 라우팅 문제

OpenAI는 해당 서비스를 다른 인프라처럼 Kubernetes에서 실행하고, 수요에 따라 워크로드가 확장·축소되거나 호스트 사이를 이동할 수 있기를 원했다. 그러나 전통적인 세션당 하나의 UDP 포트 모델은 많은 공개 UDP 포트 범위를 노출해야 하므로 Kubernetes와 클라우드 로드밸런서에 맞지 않았다. 포트 범위가 커질수록 로드밸런서 설정, 헬스체크, 방화벽 정책, 롤아웃 안전성이 복잡해지고 외부 노출 면적도 커진다. 그래서 많은 WebRTC 시스템은 서버당 하나의 UDP 포트와 애플리케이션 수준 역다중화로 이동하지만, 이 방식도 로드밸런싱된 플릿에서는 같은 세션의 패킷이 세션을 만든 프로세스로 계속 가야 한다는 별도 문제를 남긴다.

9. 릴레이와 트랜시버를 분리한 최종 구조

원문은 여러 접근법을 비교한 뒤, OpenAI가 패킷 라우팅과 프로토콜 종료를 분리한 구조를 배포했다고 설명한다. 릴레이는 작은 공개 UDP 표면을 가진 가벼운 포워딩 계층이고, 트랜시버는 그 뒤에서 상태를 가진 WebRTC 엔드포인트로 남는다. 릴레이는 미디어를 복호화하거나 ICE 상태 머신을 실행하거나 코덱 협상에 참여하지 않고, 목적지를 고르는 데 필요한 패킷 메타데이터만 읽어 세션을 소유한 트랜시버로 전달한다. 첫 패킷 라우팅에는 WebRTC 세션의 ICE username fragment, 즉 ufrag가 활용되며, OpenAI는 서버 측 ufrag에 대상 클러스터와 소유 트랜시버를 추론할 수 있는 라우팅 메타데이터를 담는다. 제공된 원문은 릴레이가 첫 STUN 패킷에서 ufrag를 읽고 라우팅 힌트를 해석해 패킷을 전달하는 설명 도중에서 끊긴다.

🧾 핵심 주장 / 시사점

  • 대규모 음성 AI의 지연 문제는 모델 속도만의 문제가 아니라, 공개 UDP 포트 관리, 세션 소유권, 로드밸런싱, 전 세계 첫 홉 지연을 함께 다루는 네트워크 아키텍처 문제로 제시된다.
  • OpenAI의 설계는 클라이언트가 보는 WebRTC 표준 동작은 유지하면서 내부 구현은 Kubernetes와 BaaS 확장 방식에 맞게 바꾸는 데 초점을 둔다.
  • 릴레이가 프로토콜을 종료하지 않고 라우팅만 맡는 구조는 공개 표면을 줄이면서도 ICE, DTLS, SRTP 같은 상태ful한 WebRTC 책임을 트랜시버에 집중시키려는 절충으로 설명된다.

✅ 액션 아이템

  • OpenAI 사례 기반으로 WebRTC 품질 목표를 연결 시간, RTT, 지터, 패킷 손실 허용치 중심으로 수치화하고 음성 지연 예산을 정의한다.
  • Kubernetes에서 세션당 공개 UDP 포트 의존이 가져온 제약을 반영해 릴레이와 트랜시버를 분리한 최소 공개 노출형 구조를 우선 설계한다.
  • 1:1 사용자-모델 대화 특성을 전제로 엣지에서 WebRTC 세션을 종료하고 내부 백엔드는 단순 프로토콜로 연결하는 트랜시버 흐름을 점검한다.

❓ 열린 질문

  • 1:1 음성 AI 중심 트래픽이 확장되어 다자간 성격이 커질 때 SFU 전환 타이밍은 어디인가?
  • 초기 접속에서 지연 체감이 생길 때 ICE, DTLS, SRTP, RTCP 중 어떤 지표 조합을 먼저 모니터링해 즉시 판단할 것인가?
  • 릴레이가 패킷 라우팅을 맡는 구조에서 공개 UDP 면적을 얼마나 축소해도 운영 안정성과 복구성을 동시에 유지할 수 있는가?

관련 문서

공통 태그와 주제 흐름을 기준으로 같이 보면 좋은 문서를 이어서 제안합니다.