OpenAI Realtime API란?
Realtime api가 없는 음성 채팅 방식의 구조
- 사용자가 음성을 모두 녹음한다.
- 녹음이 끝난 뒤 서버로 음성 파일을 업로드한다.
- 서버는 음성을 텍스트로 변환(STT)하고 이를 분석해 응답을 생성한다.
- 응답 텍스트를 다시 음성(TTS)으로 변환해 사용자에게 전달한다.
복잡해 보이지 않지만, 이 방식은 모든 데이터가 처리 단계를 거친 뒤에야 응답할 수 있다는 구조적인 한계를 가지고 있다.
1. 높은 지연 시간
녹음, 업로드, 처리, 음성 합성이라는 단계를 거치다 보니 실시간 반응은 어렵다.
2. 실시간 피드백 부재
사용자가 말을 끝내기 전까지는 아무런 반응을 줄 수 없으며, 대화 중 끼어들기나 중간 피드백이 불가능하다.
3. 자연스러운 대화 어려움
억양, 강세, 감정 표현 등 사람처럼 말하기 위한 표현력이 부족하고, 실제 사람처럼 대화하기에는 한계가 많다.
Realtime API의 등장
The OpenAI Realtime API enables you to build low-latency, multi-modal conversational experiences with expressive voice-enabled models.
platform openai에 들어가보면 realtime에 대해 다음과 같이 설명이 되어있다.
말이 조금 어려워 재해석해보았다.
Realtime API는 저지연(low-latency)으로
음성과 텍스트(multi-modal)를 동시에 이해하고 생성하여
빠르고 표현적인(expressive) 소통이 가능하도록 하는 OpenAI의 최신 API이다.
정리하자면 저지연은 말그대로 지연이 낮다 = 즉, 빠르다는 뜻이고 multi-modal은 기존 단순 텍스트 기반 대화를 넘어 음성과 텍스트를 동시에 이해하고 생성할 수 있다는 것! 표현적인 것은 감정과 억양 등을 풍부하게 표현할 수 있다는 것이다!!
Realtime API는 사용자의 음성을 말하는 즉시 전송하고, 텍스트로 변환하고, 그에 대한 응답을 생성한 뒤 음성으로 실시간 전달하는 구조다. 결과적으로 마치 사람과 직접 대화하듯 끊김 없이, 빠르고 자연스러운 대화 흐름을 만들어낸다.
(경상도, 충청도, 전라도 사투리를 시켜봤는데 나름 잘해서 웃겼다...ㅋ)
Realtime API의 핵심 기술
Realtime API는 다음과 같은 4가지 핵심 기술로 구성된다:
- gpt-4o-realtime-preview
- OpenAI의 최신 다중 모달 모델로, STT로 변환된 텍스트를 분석하고 적절한 응답을 생성한다.
- gpt-4o-transcribe (STT)
- 사용자의 음성을 텍스트로 변환하는 음성 인식 모델이다.
- 기존 whisper 모델 밖에 사용할 수 없었는데, 약 한 달 전 모델이 업데이트되었다.
- gpt-4o-mini-tts (TTS)
- 텍스트 응답을 자연스러운 음성으로 변환하는 텍스트-투-스피치 엔진이다.
- 기존 tts-1 모델 밖에 없었으나, stt 업데이트와 함께 모델이 업데이트되었다.
- WebRTC
- 마이크로 입력된 음성을 실시간으로 전송하기 위해 사용하는 브라우저 기반 기술이다.
이 중에서 속도에 큰 영향을 주는 핵심 요소는 WebRTC이기에 더 자세하게 보고 넘어가자
WebRTC란?
WebRTC(Web Real-Time Communication)는 브라우저 기반에서 실시간으로 음성, 영상 데이터를 전송할 수 있게 해주는 기술이다.
줌(Zoom), 구글 미트(Google Meet) 같은 화상 회의 플랫폼도 이 기술을 사용한다.
기존 방식이 녹음 후 업로드라는 순차적 접근을 했다면, WebRTC는 사용자가 말하는 즉시 데이터 패킷(RTP 포맷, Opus 코덱)을 서버에 보내준다. 이 덕분에 별도 저장 없이 즉시 처리할 수 있고, 사용자 입장에서는 거의 지연 없는 대화를 경험할 수 있다.
Realtime API의 동작 순서
전반적인 큰 그림은 이미지와 같다.
- 사용자가 마이크에 대고 말한다.
- WebRTC가 이 음성을 OpenAI 서버로 실시간 스트리밍한다.
- gpt-4o-trascribe가 음성을 텍스트로 실시간 변환한다.
- GPT-4o가 이 텍스트를 분석하고 응답을 생성한다.
- gpt-4o-mini-tts가 응답을 음성으로 변환한다.
- WebRTC를 통해 음성이 브라우저로 다시 전송된다.
- 브라우저에서 AudioContext 또는 Web Audio API로 음성을 재생한다.
이미지와 같이 다시 보면!
1. 사용자가 마이크에 대고 말한다.
2. WebRTC가 이 음성을 OpenAI 서버로 실시간 스트리밍한다.
3. gpt-4o-trascribe가 음성을 텍스트로 실시간 변환한다.
4. GPT-4o가 이 텍스트를 분석하고 응답을 생성한다.
5. gpt-4o-mini-tts가 응답을 음성으로 변환한다.
6. WebRTC가 생성된 음성을 브라우저로 실시간 스트리밍
7. 사용자의 브라우저에서 음성을 재생한다.
Realtime API는 음성 기반 인터랙션의 수준을 한 차원 끌어올린 것 같다.
(써보신 분들은 알거임)
다만 현재는 베타 버전이며, 일부 음성 인식 정확도 문제, 숫자 인식 오류, 의도치 않은 텍스트 변환 등 불안정한 부분도 존재한다.
하지만 이 역시도 모델의 지속적인 학습과 개선, TTS의 정밀도 향상, GPT 모델의 업데이트와 함께 점점 나아질 것으로 보인다.
OpenAI야 더 열일해죠~~