OpenAI는 대부분의 어시스턴트가 사용하는 투박한 "말하고 듣기" 방식의 일시 정지를 없애고, 듣기와 말하기를 동시에 수행하는 보이스 퍼스트(voice-first) 챗봇인 GPT-Live를 구축했습니다. 이 서비스는 멈춤과 재개가 반복되는 교환 방식 대신, 인간의 대화처럼 자연스럽게 흐르는 대화를 목표로 합니다.

기존 모델이 부자연스럽게 느껴졌던 이유

일반적인 음성 어시스턴트는 무전기처럼 작동합니다. 문장을 마치면 기기가 녹음하고, 오디오를 클라우드로 전송한 뒤, 응답을 기다렸다가 다시 재생하는 방식입니다. 이러한 왕복 과정은 눈에 띄는 지연(lag)을 발생시키며, 사용자가 말을 끊으려면 먼저 멈춰야만 하는 상황을 만듭니다. 즉각적인 메시징에 익숙한 세대에게 이러한 지연은 구식처럼 느껴집니다.

OpenAI는 턴리스(turn-less) 아키텍처로 이에 대응했습니다. GPT-Live는 매초 계속 들을지, 계속 말할지, 아니면 멈출지를 결정하여, 사용자가 답변 중간에 말을 끊거나 전체 응답 주기를 기다리지 않고도 후속 질문을 할 수 있게 해줍니다.

풀듀플렉스(Full-duplex) 스택을 쉽게 설명하자면

  1. 오디오 루프와 추론 경로의 분리 – *패스트 패스(fast path)*는 지속적인 오디오 교환을 처리하고, *슬로우 패스(slow path)*는 웹 검색이나 도구 호출과 같은 무거운 작업을 수행합니다. 슬로우 패스가 작동하는 동안 패스트 패스가 대화를 유지함으로써, "생각하는 동안의 침묵"이라는 끔찍한 순간을 없애줍니다.
  2. WARP 프로토콜 – 기존 웹 연결은 오디오가 흐르기 전 여러 번의 핸드셰이크(handshake)가 필요하며, 종종 6번의 왕복이 발생합니다. OpenAI의 커스텀 프로토콜은 이러한 단계들을 단 한 번의 왕복으로 압축하여 세션 시작이 거의 즉각적으로 느껴지게 합니다.
  3. 지연 시간의 일관성을 위해 Python 대신 Go 사용 – 팀은 빠른 개발에 유리한 Python에서 사용되었던 실시간 컴포넌트들을, 더 예측 가능한 실행 시간을 제공하는 Go로 옮겼습니다. 음성 AI에서는 평균 속도보다 최악의 경우 발생하는 지연 시간이 더 중요합니다. 단 한 번의 버벅임도 몰입감을 깨뜨리기 때문에, 일관된 지연 시간이 승리합니다.
  4. GPU를 넘어선 확장성 – 수억 명의 사용자가 유입되면서 병목 현상은 모델의 연산 코어에서 주변 인프라로 옮겨갔습니다. OpenAI는 GPU보다 CPU와 네트워크 링크가 먼저 포화 상태에 이르는 것을 발견했으며, 이에 따라 나머지 스택에 과부하를 주지 않으면서도 GPU에 데이터를 지속적으로 공급할 수 있도록 더 스마트한 라우팅과 연결 관리 기능을 추가했습니다.

개발자에게 주는 의미

  • 오디오 처리와 비즈니스 로직의 분리 – 마이크 입력과 스피커 출력을 처리하는 가볍고 항상 켜져 있는 루프를 유지하세요. 데이터베이스 쿼리나 외부 API 호출처럼 기다릴 수 있는 작업은 별도의 스레드나 서비스로 오프로드(offload)하십시오.
  • 지연 시간 안정성 우선순위 지정 – 평균값뿐만 아니라 최악의 지연 시간에 초점을 맞추어 응답 시간을 측정하세요. 스케줄링을 더 정밀하게 제어할 수 있는 언어 및 런타임(예: Go, Rust)은 추가적인 엔지니어링 노력을 들일 가치가 있습니다.
  • 연결 오버헤드 최소화 – 추가적인 핸드셰이크가 발생할 때마다 밀리초 단위의 지연이 쌓입니다. 인증, 스트림 협상, 코덱 선택을 단 한 번의 교환으로 묶으면 사용자가 그 차이를 체감할 수 있을 것입니다.

트레이드오프(Trade-offs)와 남겨진 과제

풀듀플렉스 설계는 복잡성을 증가시킵니다.

향후 주목해야 할 점