GPT Realtime 2.1은 OpenAI 실시간 음성-음성 패밀리의 플래그십으로, 영숫자 인식, 침묵과 소음 처리, 끼어들기 동작이 개선된 갱신형 실시간 추론 모델로 발표되었습니다.
- 입력
- 오디오 텍스트 $4/M
- 출력
- 오디오 텍스트 $24/M
- 오디오 입력
- $32/M
- 오디오 출력
- $64/M
- 캐시 읽기
- $0.4/M
- 지식 컷오프
- 2024-09
가격의 위치
동종 6개 모델 중 가격 위치
이 막대는 Synthorai에 있는 같은 종류의 모델 가운데 이 모델의 가격이 어디쯤인지 보여 줍니다. 양쪽 끝에는 가장 싼 모델과 가장 비싼 모델의 이름이 있습니다. 기본 요율 기준이며 배치·리전·캐시 쓰기 할인은 가격 페이지에 있습니다.
스펙 및 제한
토큰
| 컨텍스트 윈도우(공급사 사양) | 128,000 |
|---|---|
| 최대 출력(벤더 스펙) | 32,000 |
| 지식 컷오프 | 2024-09 |
프롬프트 캐싱
| 캐싱 방식 | 자동 |
|---|---|
| 최소 프리픽스 | 1,024 |
| 수명 | 5-10분, 최대 1시간 |
실시간
| 세션 |
|
|---|
모델
| 모달리티 | 오디오 + 텍스트 → 오디오 + 텍스트 |
|---|
- 영숫자 인식, 침묵과 소음 처리, 인터럽션 동작이 개선된 최신 실시간 추론 모델
- 보이스 에이전트 워크플로를 위한 설정 가능한 추론 강도와 도구 사용
- 128k 컨텍스트
출처: OpenAI 공식 문서 ↗
30초 만에 GPT Realtime 2.1 사용하기
OpenAI Realtime 호환: WebSocket으로 연결해 오디오 입력·오디오 출력. WS /v1/realtime
import asyncio, base64, json, websockets
URL = "wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1"
# 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-2.1", {
// 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-2.1' <<'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-2.1", 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-2.1"), 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 2.1 소개
- 패밀리를 128K 토큰 컨텍스트 윈도우와 32K 최대 출력 토큰으로 확장하고, 복잡한 음성 에이전트 워크플로를 위해 조절 가능한 추론 강도, 지시 준수, 도구 사용을 지원합니다.
- 오디오와 텍스트 토큰은 서로 다른 단가로 과금되며 캐시 입력은 할인됩니다.
- OpenAI 실시간 가이드는 저지연 음성 에이전트를 만들 때 고를 모델로 이 모델을 지목하고, 대부분의 프로덕션 에이전트에서 낮은 추론 강도로 시작한 뒤 과제가 추가 지연을 정당화하는 곳에서만 올리라고 권합니다.
- 세션은 WebRTC, WebSocket, SIP로 실행되고, 턴 전환에는 침묵 기반 음성 활동 감지나, 화자가 말을 끝낼 때까지 얼마나 참고 기다릴지를 eagerness 설정으로 정하는 의미 기반 감지기를 쓸 수 있습니다.
- 끼어들기 처리는 프로토콜의 일부입니다.
- 감지가 켜져 있으면 서버가 재생되지 않은 오디오를 잘라내고, WebSocket 클라이언트는 재생을 멈추고 실제로 청자에게 도달한 오디오 분량을 보고해야 합니다.
- 도구는 세션 단위나 응답 단위로 선언할 수 있고, 부수적인 작업이 전사본을 오염시키지 않아야 할 때는 메인 대화 밖에서 응답을 생성할 수 있습니다.
- Synthorai에서는 OpenAI 호환 /v1/realtime WebSocket 엔드포인트로 서빙되므로 공식 Realtime SDK로 만든 애플리케이션이 그대로 동작합니다.
자주 묻는 질문
GPT Realtime 2.1 API는 무료로 사용해 볼 수 있나요?
GPT Realtime 2.1은 현재 초대제 베타 단계로, 공개 가입이 아닌 신청 기반으로 이용할 수 있습니다. Synthorai 콘솔에서 신청하면 되며, 승인 후에는 구독 없이 표준 종량제 요금이 적용됩니다.
GPT Realtime 2.1은 무엇에 가장 강한가요?
프로덕션 음성 에이전트용 플래그십 실시간 티어, 끼어들기·소음·영숫자 인식 개선, 구성 가능한 추론 강도와 도구 사용. 전체 내용은 벤더의 공식 릴리스 노트를 정리한 소개 섹션을 참고하세요.
GPT Realtime 2.1의 가격은 얼마인가요?
Synthorai에서 GPT Realtime 2.1은 입력 토큰 100만 개당 $4, 출력 토큰 100만 개당 $24입니다. 공급사 정가 그대로이며 플랫폼 마진이 없습니다. 캐시된 입력 토큰은 $0.4/M로 과금됩니다.
GPT Realtime 2.1 API는 어떻게 호출하나요?
GPT Realtime 2.1은 음성 대화(speech-to-speech) 모델입니다. WebSocket으로 wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1에 연결하고 OpenAI Realtime SDK(또는 원시 WebSocket)로 오디오 입력·오디오 출력을 처리합니다. POST /v1/audio/transcriptions 파일 업로드가 아닙니다. sk-syn 키로 인증하고 Authorization 헤더만 보내세요(beta 프로토콜은 종료되었습니다).
GPT Realtime 2.1은 어떻게 이용하나요?
GPT Realtime 2.1은 초대제 베타입니다: Synthorai 콘솔에서 액세스를 신청하세요. 승인되면 다른 모델과 동일하게 동작합니다. OpenAI SDK의 base_url을 "https://synthorai.io/v1"로 지정하고 model="gpt-realtime-2.1"로 설정하면 됩니다.
관련 모델
비교
이 페이지의 모든 값은 벤더 자체 문서(위 링크)에서 전사했으며 확인 날짜를 함께 표기합니다. 가격은 카탈로그 전체와 비교하지만, 벤더마다 정의가 다른 사양 값은 차이를 명시할 뿐 도표로 비교하지 않습니다. 저희가 측정한 수치는 없으며 점수도 매기지 않습니다.