GPT Realtime은 OpenAI의 첫 정식 제공 실시간 모델입니다.
- 입력
- 오디오 텍스트 $4/M
- 출력
- 오디오 텍스트 $16/M
- 오디오 입력
- $32/M
- 오디오 출력
- $64/M
- 캐시 읽기
- $0.4/M
- 지식 컷오프
- 2023-10
벤치마크
GPT Realtime: 8개가 공개됐지만, 비교할 수 있을 만큼 여러 모델이 함께 측정한 벤치마크가 없습니다.
가격 수준 비교
같은 종류의 모델 6개 중 가격 위치
이 막대는 Synthorai에 있는 같은 종류의 모델 가운데 이 모델의 가격이 어디쯤인지 보여 줍니다. 양쪽 끝에는 가장 싼 모델과 가장 비싼 모델의 이름이 있습니다. 기본 요율 기준이며 배치·리전·캐시 쓰기 할인은 가격 페이지에 있습니다.
사양 및 제한
토큰
| 컨텍스트 윈도우(공급자 사양) | 32,000 |
|---|---|
| 최대 출력(공급자 사양) | 4,096 |
| 지식 컷오프 | 2023-10 |
프롬프트 캐싱
| 캐싱 방식 | 자동 |
|---|---|
| 최소 접두사 | 1,024 |
| 수명 | 5-10분, 최대 1시간 |
실시간
| 세션 | WebSocket 기반 네이티브 음성 대 음성 · 함수 호출 · 32K 컨텍스트 |
|---|
모델
| 모달리티 | 오디오 + 텍스트 → 오디오 + 텍스트 |
|---|
- OpenAI 최초의 정식 출시 실시간 모델(스냅샷 gpt-realtime-2025-08-28): 함수 호출을 지원하는 네이티브 음성 대 음성
- 32k 컨텍스트
출처: OpenAI 공식 문서 ↗
30초 만에 GPT Realtime 사용하기
OpenAI Realtime 호환입니다. WebSocket으로 연결해 오디오를 스트리밍으로 주고받습니다. WS /v1/realtime
import asyncio, base64, json, websockets
URL = "wss://synthorai.io/v1/realtime?model=gpt-realtime"
# Send ONLY the Authorization header - the beta protocol is retired.
HEADERS = {"Authorization": "Bearer sk-syn-..."}
async def main():
async with websockets.connect(URL, additional_headers=HEADERS) as ws:
# 1) configure the speech-to-speech session
await ws.send(json.dumps({
"type": "session.update",
"session": {
"type": "realtime",
"output_modalities": ["audio"],
"audio": {"output": {"voice": "alloy"}},
},
}))
# 2) send input audio (base64 PCM16), then request a spoken reply
await ws.send(json.dumps({"type": "input_audio_buffer.append", "audio": pcm16_b64}))
await ws.send(json.dumps({"type": "input_audio_buffer.commit"}))
await ws.send(json.dumps({"type": "response.create"}))
# 3) stream the model's audio (and text) back
async for raw in ws:
ev = json.loads(raw)
if ev["type"] == "response.audio.delta":
play(base64.b64decode(ev["delta"])) # audio out
elif ev["type"] == "response.done":
break
asyncio.run(main())import WebSocket from "ws";
const ws = new WebSocket("wss://synthorai.io/v1/realtime?model=gpt-realtime", {
// Send ONLY the Authorization header — the beta protocol is retired.
headers: { Authorization: "Bearer sk-syn-..." },
});
ws.on("open", () => {
// configure the speech-to-speech session
ws.send(JSON.stringify({ type: "session.update", session: {
type: "realtime", output_modalities: ["audio"], audio: { output: { voice: "alloy" } },
} }));
// send input audio (base64 PCM16), then request a spoken reply
ws.send(JSON.stringify({ type: "input_audio_buffer.append", audio: pcm16Base64 }));
ws.send(JSON.stringify({ type: "input_audio_buffer.commit" }));
ws.send(JSON.stringify({ type: "response.create" }));
});
ws.on("message", (raw) => {
const ev = JSON.parse(raw.toString());
if (ev.type === "response.audio.delta") playAudio(Buffer.from(ev.delta, "base64")); // audio out
else if (ev.type === "response.done") ws.close();
});# Realtime is a WebSocket protocol - use a WS client such as websocat.
# Each line below is one OpenAI Realtime event (JSON) sent to the session.
websocat -H 'Authorization: Bearer sk-syn-...' \
'wss://synthorai.io/v1/realtime?model=gpt-realtime' <<'EOF'
{"type":"session.update","session":{"type":"realtime","output_modalities":["audio"],"audio":{"output":{"voice":"alloy"}}}}
{"type":"input_audio_buffer.append","audio":"<base64-pcm16>"}
{"type":"input_audio_buffer.commit"}
{"type":"response.create"}
EOF
# Responses stream back as response.audio.delta (base64 audio out) … response.donepackage main
import (
"net/http"
"github.com/gorilla/websocket"
)
func main() {
h := http.Header{}
h.Set("Authorization", "Bearer sk-syn-...")
// Send ONLY the Authorization header — the beta protocol is retired.
c, _, err := websocket.DefaultDialer.Dial("wss://synthorai.io/v1/realtime?model=gpt-realtime", h)
if err != nil {
panic(err)
}
defer c.Close()
// configure the speech-to-speech session, send audio, request a spoken reply
c.WriteJSON(map[string]any{"type": "session.update", "session": map[string]any{
"type": "realtime", "output_modalities": []string{"audio"},
"audio": map[string]any{"output": map[string]any{"voice": "alloy"}}}})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.append", "audio": pcm16B64})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.commit"})
c.WriteJSON(map[string]any{"type": "response.create"})
for {
var ev struct {
Type string `json:"type"`
Delta string `json:"delta"`
}
if err := c.ReadJSON(&ev); err != nil {
return
}
if ev.Type == "response.audio.delta" {
playAudio(ev.Delta) // base64 audio out
} else if ev.Type == "response.done" {
return
}
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.WebSocket;
import java.util.concurrent.CompletionStage;
// JDK built-in WebSocket — no extra dependency needed.
WebSocket ws = HttpClient.newHttpClient().newWebSocketBuilder()
.header("Authorization", "Bearer sk-syn-...")
// Send ONLY the Authorization header — the beta protocol is retired.
.buildAsync(URI.create("wss://synthorai.io/v1/realtime?model=gpt-realtime"), new WebSocket.Listener() {
public CompletionStage<?> onText(WebSocket w, CharSequence data, boolean last) {
// handle response.audio.delta (base64 audio out) / response.done here
w.request(1);
return null;
}
}).join();
// configure the session, send input audio, then request a spoken reply
ws.sendText("{\"type\":\"session.update\",\"session\":{\"type\":\"realtime\",\"output_modalities\":[\"audio\"],\"audio\":{\"output\":{\"voice\":\"alloy\"}}}}", true);
ws.sendText("{\"type\":\"input_audio_buffer.append\",\"audio\":\"<base64-pcm16>\"}", true);
ws.sendText("{\"type\":\"input_audio_buffer.commit\"}", true);
ws.sendText("{\"type\":\"response.create\"}", true);GPT Realtime 소개
- 전사와 합성 모델을 따로 이어 붙이는 대신 자연스럽고 표현력 있는 오디오로 직접 듣고 응답하는 단일 음성-음성 모델입니다.
- 32K 토큰 컨텍스트 윈도우와 4,096 최대 출력 토큰을 가지며, 음성 에이전트 워크플로를 위한 함수 호출을 지원하고, 오디오 또는 텍스트 입력을 받아 오디오와 텍스트를 출력합니다.
- 오디오와 텍스트는 서로 다른 토큰 단가로 과금되며 캐시 입력은 할인됩니다.
- 세션은 브라우저와 모바일 클라이언트를 위한 WebRTC, 서버가 이미 오디오 스트림을 쥐고 있을 때의 WebSocket, 텔레포니 에이전트를 위한 SIP로 구동할 수 있고, 서버 측 음성 활동 감지가 발화를 청크로 나누고 발신자가 끼어들면 재생되지 않은 오디오를 잘라냅니다.
- 모델 페이지는 텍스트·오디오와 함께 이미지 입력도 나열하고, 음성은 OpenAI가 공개한 세트에서 세션마다 고르되 세션이 오디오를 한 번 내보낸 뒤에는 음성을 바꿀 수 없다는 단서가 붙습니다.
- 추론 강도 제어는 없으며(그것은 2.1 세대에서 등장합니다), 지식 컷오프는 2023년 10월입니다.
- OpenAI는 이후 이 모델의 폐기를 발표했고 종료는 2027년 1월로 예정되어 있으며 마이그레이션 대상으로 GPT Realtime 2.1을 지정했으므로, 새 음성 작업은 2.1에서 진행하고 기존 통합에는 아직 여유가 있습니다.
- 실시간 패밀리 최초의 정식 제공 스냅샷으로 계속 제공됩니다.
- Synthorai는 OpenAI 호환 /v1/realtime WebSocket 엔드포인트로 GPT Realtime을 서빙하므로 공식 Realtime SDK 클라이언트가 그대로 연결됩니다.
자주 묻는 질문
GPT Realtime API는 무료로 사용해 볼 수 있나요?
GPT Realtime는 현재 초대제 베타 단계라 누구나 바로 쓸 수는 없고, 신청 후 승인을 받아야 합니다. Synthorai 콘솔에서 신청할 수 있으며, 승인되면 구독 없이 일반 종량제 요금이 적용됩니다.
GPT Realtime는 어떤 작업에 가장 강한가요?
단일 모델 음성 대 음성, 전사 체인 불필요, 표현력 있는 자연 오디오와 함수 호출, 실시간 제품군 최초의 GA 스냅샷. 자세한 내용은 공급자의 공식 릴리스 노트를 바탕으로 정리한 소개 섹션에서 확인하세요.
GPT Realtime 가격은 얼마인가요?
Synthorai에서 GPT Realtime 가격은 입력 100만 토큰당 $4, 출력 100만 토큰당 $16입니다. 공급자 정가 그대로이며 플랫폼 마진은 없습니다. 캐시된 입력 토큰은 100만 토큰당 $0.4입니다.
GPT Realtime API는 어떻게 호출하나요?
GPT Realtime는 음성 대 음성(speech-to-speech) 모델입니다. OpenAI Realtime SDK(또는 WebSocket 직접 연결)로 wss://synthorai.io/v1/realtime?model=gpt-realtime에 접속해 오디오를 스트리밍으로 주고받습니다. POST /v1/audio/transcriptions처럼 파일을 올리는 방식이 아닙니다. sk-syn 키로 인증하며, Authorization 헤더만 보내면 됩니다(beta 프로토콜은 지원이 끝났습니다).
GPT Realtime는 어떻게 이용하나요?
GPT Realtime는 초대제 베타 모델이므로 Synthorai 콘솔에서 액세스를 신청해야 합니다. 승인되면 다른 모델과 똑같이 쓸 수 있습니다. OpenAI SDK에서 base_url="https://synthorai.io/v1", model="gpt-realtime"만 지정하면 됩니다.
관련 모델
비교
이 페이지의 모든 값은 공급자 공식 문서(위 링크)에서 그대로 옮겨 적었으며, 확인한 날짜를 함께 표기합니다. 가격은 카탈로그 전체와 비교해 보여 주지만, 공급자마다 정의가 다른 사양 값은 차이만 밝히고 차트로 비교하지 않습니다. 저희가 직접 측정한 수치는 없고, 점수도 매기지 않습니다.