OpenAI Realtime API WebRTC 모드 정식 GA—음성 에이전트 레이턴시 200ms 이하
OpenAI가 Realtime API의 WebRTC 전송 모드를 정식 GA로 전환하며, 브라우저·모바일 앱에서 서버 중계 없이 직접 음성 스트리밍이 가능해졌다. 평균 왕복 레이턴시가 200ms 이하로 떨어져 실시간 대화형 에이전트 구현의 실용성이 크게 높아졌다.
무엇이 바뀌었나
OpenAI Realtime API는 기존 WebSocket 방식만 지원했으나, 이번 GA와 함께 WebRTC 전송 모드가 공식 지원된다. WebRTC 모드에서는 클라이언트(브라우저·iOS·Android)가 OpenAI 엣지 서버와 P2P에 준하는 직접 미디어 채널을 맺어, 개발자가 별도 중계 서버를 운영하지 않아도 된다.
주요 스펙 변경 요약:
| 항목 | WebSocket 모드 | WebRTC 모드(GA) | |---|---|---| | 평균 왕복 레이턴시 | ~400ms | ≤200ms | | 클라이언트 직접 연결 | 불가 | 가능 | | 중계 서버 필요 여부 | 필요 | 불필요 | | 지원 코덱 | PCM16 | PCM16 + Opus |
가격은 기존 Realtime API 요금 체계를 그대로 따르며, 구체적인 단가는 공식 페이지 참조.
한국 개발자에게 왜 중요한가
그동안 Realtime API를 프로덕션에 적용하려면 WebSocket 세션을 관리하는 Node.js·Go 중계 서버가 필수였고, 이 과정에서 레이턴시가 누적되어 자연스러운 대화 경험을 구현하기 어려웠다. WebRTC 모드 GA로 다음 시나리오가 실용화된다.
- 브라우저 SPA:
RTCPeerConnection한 줄로 음성 스트림 연결—별도 백엔드 불필요 - React Native 앱: 네이티브 WebRTC 바인딩으로 오프라인 피드백 루프 최소화
- 키오스크·에지 디바이스: 저사양 ARM 보드에서도 Opus 코덱으로 대역폭 절약
특히 콜센터 AI, 언어 학습 앱, 실시간 회의 보조 도구를 개발 중인 팀이라면 아키텍처를 재검토할 시점이다.
빠른 시작 코드 스니펫
// OpenAI 공식 JS SDK v5.x 기준 (2026-06-30)
import { RealtimeClient } from '@openai/realtime-api-beta';
const client = new RealtimeClient({
apiKey: process.env.OPENAI_API_KEY,
transport: 'webrtc', // 신규 옵션
});
await client.connect();
client.sendUserMessageContent([
{ type: 'input_audio', audio: audioBuffer }
]);
client.on('conversation.item.completed', ({ item }) => {
console.log('AI 응답:', item.formatted.transcript);
});
주의: WebRTC 모드는 클라이언트 코드에 API 키가 노출될 수 있으므로, 프로덕션에서는 단기 세션 토큰(Ephemeral Token) 발급 엔드포인트를 반드시 백엔드에 구현해야 한다.
마이그레이션 체크리스트
- [ ] SDK를
@openai/realtime-api-beta최신 버전으로 업데이트 - [ ]
transport: 'webrtc'옵션 추가 - [ ] 백엔드에 Ephemeral Token 발급 API(
POST /v1/realtime/sessions) 구현 - [ ] 기존 WebSocket 중계 서버 트래픽 비용 절감 여부 검토
- [ ] Opus 코덱 사용 시 모바일 배터리·대역폭 프로파일링