뉴스 빅데이터 해커톤에 참가하여 VoiceRAG를 구현하는 AI 고도화 제안하게 되면서 핵심 기술로 사용된 OpenAI의 Realtime API에 대해 정리하고자 한다.

Realtime API는 지난 2024년 10월에 OpenAI에서 공개된 최신 기술로, 네이티브 음성을 통해 사람과 대화하듯이 모델과 상호작용할 수 있으며, 안정적이고 빠른 실시간 대화 경험을 사용자에게 제공해줄 수 있는 API이다.
사용자에게 멀티모달(시각, 청각을 비롯한 여러 인터페이스를 통해서 정보를 주고받는 것) 경험을 제공해줄 수 있다는 것이 가장 핵심이다.

Q. 기존에 보편적인 STT or TTS 기능이란 뭐가 다른건지?
기존의 음성 기반 AI 대화 구현 방식에는 Whisper와 같은 자동 음성 인식(ASR) 모델로 오디오를 텍스트로 변환하고, 텍스트 모델과 TTS 모델을 거치는 복합한 과정을 거쳐야했고, 억양이나 감정 같은 요소들이 손실되는 한계점이 있었다. 이런 복잡한 프로세스에서 발생하는 레이턴시도 문제점 중 하나였다. 하지만 Realtime API를 사용하면 이 복잡한 음성인식, 자연어 처리, 음성 합성을 단일 API 호출로 해결할 수 있다. 더 자연스럽고 몰입감 있는 멀티모달 AI 어플리케이션을 개발할 수 있는 것이다.
import WebSocket from "ws";
const url = "wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-10-01";
const ws = new WebSocket(url, {
headers: {
"Authorization": "Bearer " + process.env.OPENAI_API_KEY,
"OpenAI-Beta": "realtime=v1",
},
});
ws.on("open", function open() {
console.log("Connected to server.");
ws.send(JSON.stringify({
type: "response.create",
response: {
modalities: ["text"],
instructions: "Please assist the user.",
}
}));
});
ws.on("message", function incoming(message) {
console.log(JSON.parse(message.toString()));
});
기본적으로 Realtime API는 WebSocket 커넥션을 사용하며, 텍스트와 음성 데이터 입출력을 스트리밍하여 실시간 세션으로 처리할 수 있다. Function Calling 또한 지원한다.
Function Calling이란
Realtime API는 Function Calling을 지원하여 모델이 특정 작업을 수행하거나 외부 데이터를 가져올 수 있다. 요약하자면 사용자가 정의한 함수를 모델이 호출하도록 한다는 것이다.모델에게 함수를 미리 알려주면 필요할 때 함수를 모델이 직접 호출하는데 여기서 이해해야할 포인트는 모델이 직접 함수를 실행하지는 않는다는 점입니다. 모델은 함수를 실행하지 않고 함수를 실행할 때 필요한 인자를 알려주는 역할만 하기 때문에, 실제 실행은 사용자가 직접 하고, 결과를 모델에게 다시 알려줘야 한다.
결과적으로 모델은 결과를 활용한 응답을 다시 사용자에게 전달하게 되는 것이다.
자세한 API에 대한 설명은 공식 문서를 참고하길 바란다. https://platform.openai.com/docs/guides/realtime
다음 번에는 이어서 기획한 VoiceRAG에 대해 설명하도록 하겠음..!