GPT Realtime 2.1 vs GPT Realtime 2.1 Mini
Cuál usar y cuándo — veredicto seleccionado, no una tabla de benchmarks
El nivel mini es más barato en cada línea — $0.6 y $2.4 por millón de tokens de texto frente a $4 y $24, y $10 y $20 por millón de audio de entrada y salida frente a $32 y $64 — es decir, unas 3x menos en audio y cerca de 7x en entrada de texto. Ambos llevan contexto de sesión de 128K con voz a voz, uso de herramientas y caché de prompts; el modelo completo documenta además esfuerzo de razonamiento configurable y manejo de interrupciones. Elige el mini para volumen, el modelo completo cuando quieras ajustar el esfuerzo de razonamiento por sesión.
Precios
| GPT Realtime 2.1 | GPT Realtime 2.1 Mini | Δ | |
|---|---|---|---|
| Entrada de audio / 1M tokens | $32 | $10 | 3.2× |
| Salida de audio / 1M tokens | $64 | $20 | 3.2× |
| Lectura de caché de audio / 1M tokens | $0.4 | $0.3 | 1.3× |
| Entrada de texto / 1M tokens | $4 | $0.6 | 6.7× |
| Salida de texto / 1M tokens | $24 | $2.4 | 10× |
| Escritura en caché | sin cargo por separado | sin cargo por separado | — |
Tarifas del catálogo en vivo en el momento de la compilación; la página de cada modelo incluye la ficha actualizada.
Dónde se sitúan — precio por 1M de tokens de audio en todos los 6 modelos de voz a voz en tiempo real en esta unidad de facturación (escala logarítmica)
Capacidades
| GPT Realtime 2.1 | GPT Realtime 2.1 Mini | |
|---|---|---|
| Caché de prompt | implícito (automático) | implícito (automático) |
| Tiempo de vida de la caché | 5–10m, up to 1h | 5–10m, up to 1h |
| Prefijo mínimo en caché | 1024 tokens | 1024 tokens |
Especificaciones
| GPT Realtime 2.1 | GPT Realtime 2.1 Mini | |
|---|---|---|
| Modalidades de entrada | texto audio | texto audio |
| Modalidades de salida | texto audio | texto audio |
| Lanzamiento | 2026-07-06 | 2026-07-06 |
| Límite de conocimiento | 2024-09 | 2024-09 |
| Capacidades de sesión |
|
|
| Ventana de contexto | 128K | 128K |
Las especificaciones se transcriben de la documentación de cada proveedor; si un proveedor no publica una fila, se omite en lugar de inferirse. Fuentes completas: GPT Realtime 2.1 · GPT Realtime 2.1 Mini
Cambia entre ellos con una línea
Ambos IDs están en cada pestaña a continuación — el par de líneas resaltadas es la única edición. Mismo endpoint, misma clave, misma estructura de solicitud.
import asyncio, base64, json, websockets
URL = "wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1"
# URL = "wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini" # descomenta esta línea, comenta la de arriba
# 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", {
// const ws = new WebSocket("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini", { // descomenta esta línea, comenta la de arriba
// 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'
# 'wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini' <<'EOF' # descomenta esta línea, comenta la de arriba
{"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)
// c, _, err := websocket.DefaultDialer.Dial("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini", h) // descomenta esta línea, comenta la de arriba
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() {
// .buildAsync(URI.create("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini"), new WebSocket.Listener() { // descomenta esta línea, comenta la de arriba
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);Preguntas frecuentes
¿Cuál es más barato, GPT Realtime 2.1 o GPT Realtime 2.1 Mini?
GPT Realtime 2.1 Mini es más barato en entrada de audio / 1m tokens ($10 vs $32, con una diferencia de 3.2×). Otras filas pueden indicar lo contrario — la tabla anterior muestra la ficha completa, y el costo real depende de su combinación.
¿Puedo hacer pruebas A/B de GPT Realtime 2.1 frente a GPT Realtime 2.1 Mini sin dos integraciones?
Sí. Ambos se sirven a través del mismo endpoint compatible con OpenAI con una clave API — el cambio es una modificación de una línea en la cadena del modelo, por lo que puede enrutar una fracción del tráfico a cada uno y comparar las facturas directamente.
¿Admiten GPT Realtime 2.1 y GPT Realtime 2.1 Mini caché de prompts?
Sí — ambos cobran las lecturas en caché por debajo de su tarifa de entrada, por lo que las cargas de trabajo con prefijo caliente cuestan menos de lo que sugieren las tarifas de lista. Las filas exactas de lectura en caché están en la tabla de precios de arriba.