GPT Realtime Whisper genera actualizaciones de transcripción de baja latencia a partir de audio en directo.
- Entrada
- audio texto
- Salida
- texto
- Precio
- $0.017/min
- Contexto
- 16K
- Corte de conocimiento
- 2024-09
Precios por longitud de entrada
Toda la solicitud usa la tarifa del tramo de longitud de entrada. Precios en USD por millón de tokens.
| Tokens de entrada | Entrada | Salida | Entrada (modo razonamiento) |
|---|
El precio en contexto
Posición del precio entre 9 modelos comparables
La barra muestra dónde queda el precio de este modelo entre todos los modelos del mismo tipo en Synthorai. En cada extremo se nombra el más barato y el más caro. Son tarifas base; los descuentos por lote, región y escritura en caché están en la página de precios.
Especificaciones y límites
Tokens
| Ventana de contexto (especificación del proveedor) | 16.000 |
|---|---|
| Salida máxima (especificación del proveedor) | 2000 |
| Corte de conocimiento | 2024-09 |
Audio
| Idiomas | OpenAI no publica una lista de idiomas específica de este modelo; comprueba el idioma objetivo con audio representativo. |
|---|---|
| Límites de audio |
|
| Transcripción en streaming | Sí |
Modelo
| Modalidades | audio + texto → texto |
|---|
Usa GPT Realtime Whisper en 30 segundos
Se usa solo dentro de una sesión de OpenAI Realtime, como modelo de transcripción de la entrada: abre la sesión con un modelo Realtime y establece session.audio.input.transcription.model en gpt-realtime-whisper. WS /v1/realtime
import asyncio, 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) name gpt-realtime-whisper as the session's input transcription model
await ws.send(json.dumps({
"type": "session.update",
"session": {
"type": "realtime",
"audio": {"input": {"transcription": {"model": "gpt-realtime-whisper"}}},
},
}))
# 2) send input audio (base64 PCM16) and commit it
await ws.send(json.dumps({"type": "input_audio_buffer.append", "audio": pcm16_b64}))
await ws.send(json.dumps({"type": "input_audio_buffer.commit"}))
# 3) the transcript of what was said arrives as its own event
async for raw in ws:
ev = json.loads(raw)
if ev["type"] == "conversation.item.input_audio_transcription.completed":
print(ev["transcript"])
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", () => {
// name gpt-realtime-whisper as the session's input transcription model
ws.send(JSON.stringify({ type: "session.update", session: {
type: "realtime", audio: { input: { transcription: { model: "gpt-realtime-whisper" } } },
} }));
// send input audio (base64 PCM16) and commit it
ws.send(JSON.stringify({ type: "input_audio_buffer.append", audio: pcm16Base64 }));
ws.send(JSON.stringify({ type: "input_audio_buffer.commit" }));
});
ws.on("message", (raw) => {
const ev = JSON.parse(raw.toString());
if (ev.type === "conversation.item.input_audio_transcription.completed") {
console.log(ev.transcript); // the transcript of what was said
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","audio":{"input":{"transcription":{"model":"gpt-realtime-whisper"}}}}}
{"type":"input_audio_buffer.append","audio":"<base64-pcm16>"}
{"type":"input_audio_buffer.commit"}
EOF
# The transcript arrives as conversation.item.input_audio_transcription.completedpackage main
import (
"fmt"
"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()
// name gpt-realtime-whisper as the session's input transcription model, then send audio
c.WriteJSON(map[string]any{"type": "session.update", "session": map[string]any{
"type": "realtime",
"audio": map[string]any{"input": map[string]any{
"transcription": map[string]any{"model": "gpt-realtime-whisper"}}}}})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.append", "audio": pcm16B64})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.commit"})
for {
var ev struct {
Type string `json:"type"`
Transcript string `json:"transcript"`
}
if err := c.ReadJSON(&ev); err != nil {
return
}
if ev.Type == "conversation.item.input_audio_transcription.completed" {
fmt.Println(ev.Transcript) // the transcript of what was said
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) {
// conversation.item.input_audio_transcription.completed carries the transcript
w.request(1);
return null;
}
}).join();
// name gpt-realtime-whisper as the session's input transcription model, then send audio
ws.sendText("{\"type\":\"session.update\",\"session\":{\"type\":\"realtime\",\"audio\":{\"input\":{\"transcription\":{\"model\":\"gpt-realtime-whisper\"}}}}}", true);
ws.sendText("{\"type\":\"input_audio_buffer.append\",\"audio\":\"<base64-pcm16>\"}", true);
ws.sendText("{\"type\":\"input_audio_buffer.commit\"}", true);Acerca de GPT Realtime Whisper
- OpenAI cobra por duración del audio, no por tokens de texto.
- Para integraciones nuevas, OpenAI recomienda modelos de transcripción más recientes; este sigue disponible para integraciones existentes compatibles.
Preguntas frecuentes
¿Se puede probar gratis la API de GPT Realtime Whisper?
Sí: las cuentas nuevas reciben 10 llamadas de prueba y hasta $1 de crédito gratuito, sin tarjeta. Suficiente para probar GPT Realtime Whisper con tu carga de trabajo real antes de añadir un método de pago.
¿En qué destaca GPT Realtime Whisper?
Transcripción continua de audio en directo; cobro por minuto de audio; comparar modelos más recientes. En la sección «Acerca de» tienes la visión completa, según las notas de lanzamiento del propio proveedor.
¿Cuánto cuesta GPT Realtime Whisper?
GPT Realtime Whisper cuesta $0.017 por minuto de audio transcrito en Synthorai: pago por uso, sin recargo de plataforma, sin suscripción.
¿Cómo uso GPT Realtime Whisper?
GPT Realtime Whisper no se llama por sí solo. Transcribe el audio del usuario dentro de una sesión Realtime: conéctate a wss://synthorai.io/v1/realtime con un modelo Realtime, establece session.audio.input.transcription.model en "gpt-realtime-whisper" y lee cada transcripción del evento conversation.item.input_audio_transcription.completed. Se factura a $0.017 por minuto de audio de entrada, además de las tarifas de la propia sesión.
¿Cómo obtengo acceso a GPT Realtime Whisper?
Abre la sesión Realtime con tu clave API de Synthorai e indica "gpt-realtime-whisper" como modelo de transcripción de la entrada. GPT Realtime Whisper está pensado para sesiones Realtime, no para la API de archivos /v1/audio/transcriptions; para transcribir un archivo, elige un modelo de voz a texto. Una sola clave API sirve para todos los modelos de la pasarela.
Modelos relacionados
Comparar
Las especificaciones y los benchmarks de los proveedores enlazan a sus fuentes. La compatibilidad de la pasarela describe la implementación de Synthorai. Los ejemplos archivados son solicitudes individuales y no garantizan el rendimiento general del modelo. Los precios proceden del servicio público de precios o de su instantánea usada en la compilación.