실시간 음성 번역 만들기
OpenAI가 **gpt-realtime-translate**로 실시간 음성 번역 구현법을 정리했다.
gpt-realtime-translate는 방송, 스트리밍, 통화, 영상 대화용 live speech-to-speech 번역 모델이다. 입력 음성을 자동 감지해 목표 언어의 음성과 transcript를 반환하며, 개발자는 출력 언어만 지정하면 된다.
이 모델은 interpretation에 최적화돼 있다. 수천 시간의 전문 통역 오디오로 학습해 번역 외 응답을 억제하고, 문장 구조가 다른 언어에서도 문맥을 충분히 기다린 뒤 말하도록 설계됐다. AI voice agent를 만드는 용도라면 이 모델이 아니라 gpt-realtime-2를 사용해야 한다.
세션은 session.audio.output.language로 목표 언어를 설정하는 방식이며, 입력 자막이 필요하면 gpt-realtime-whisper를 붙인다. 출력 음성은 고정된 voice를 고르는 대신 화자의 톤, 피치, 말투를 따라가는 dynamic voice adaptation을 사용한다. 현재는 70개 이상 입력 언어와 13개 출력 언어를 지원하고, custom prompting과 voice selection parameter는 지원하지 않는다.
- 전용 endpoint:
/v1/realtime/translations - 입력:
session.input_audio_buffer.append로 보내는 24 kHz PCM16 연속 오디오, 문장 사이 침묵 포함 - 출력: 200 ms PCM16 chunks와 target-language transcript delta
- 상태:
response.create, assistant turn, tool call, conversation state가 없다
적용 패턴은 두 가지다. broadcast-style translation은 라이브스트림, 웹세미나, 강연, 실적 발표, 키노트처럼 하나의 원음을 여러 청취자에게 번역하는 방식이고, conversational translation은 콜센터, 전화, 영상 채팅처럼 서로 다른 언어를 쓰는 참가자끼리 실시간으로 대화하는 방식이다.
구현 예제는 세 경로로 나뉜다.
- Browser tab translation:
getDisplayMedia()로 탭 오디오를 캡처하고 WebRTC로 전송하며,oai-events데이터 채널로 transcript delta를 받는다. - Twilio phone translation: Twilio Media Streams로 들어온 오디오를 백엔드가 변환해 Realtime Translation으로 넘기고, 돌아온 음성을 다시 Twilio 미디어 메시지로 돌려준다.
- LiveKit video translation: 원격 참가자의 마이크 트랙을 구독해 로컬에서 번역하고, 번역 음성과 자막을 렌더링한다.
전화 통화에서는 보통 A-to-B, B-to-A처럼 방향별 세션을 따로 열어야 하며, 다자 통화는 누가 누구의 말을 어떤 언어로 들어야 하는지에 맞춰 세션을 나눠야 한다. 또한 원음 passthrough나 mixing이 없으면 이미 리스너가 선택한 출력 언어로 된 발화가 침묵으로 처리될 수 있다.
브라우저 데모는 서버가 짧은 수명의 client secret만 발급하고 OpenAI API 키는 노출하지 않는 구조다. 실서비스 배포용 best practices, model limitations, evals도 함께 정리한다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.