Echtzeit-Sprache
Erstellen Sie mit gpt-realtime bidirektionale Sprach-Agenten — das Modell hört gesprochene Sprache und antwortet in Echtzeit per Sprache (wie bei einem Telefonat), über eine WebSocket-Verbindung zu /v1/realtime. Ihr vorhandenes OpenAI Realtime SDK funktioniert unverändert; richten Sie es einfach auf unseren Endpunkt und verwenden Sie Ihren Synthorai-Schlüssel.
Sprache-zu-Sprache, keine Transkription
Diese Seite behandelt Sprache-zu-Sprache: Sprache rein, Sprache raus. Verbinden Sie sich mit ?model=gpt-realtime.
Wenn Sie Audio nur in Text umwandeln müssen (ohne gesprochene Antwort), verwenden Sie stattdessen Sprache-zu-Text — das ist eine andere Funktion.
Endpunkt & Authentifizierung
Öffnen Sie einen WebSocket zu /v1/realtime mit Ihrem Modell im Query-String. Die Authentifizierung läuft vor dem Upgrade, sodass ein abgelehnter Schlüssel niemals einen Socket öffnet.
# WebSocket, server-side (Node / Python / Go — anything that can set headers)
GET wss://synthorai.io/v1/realtime?model=gpt-realtime
Authorization: Bearer $YOUR_KEY
# Send only the Authorization header. Do NOT send OpenAI-Beta: realtime=v1
# (the beta protocol is retired; it makes the upstream reject the session). - Ihr
sk-syn-Schlüssel verlässt niemals unser Gateway — die Upstream-Zugangsdaten werden auf unserer Seite eingesetzt. - Für serverseitige Clients konzipiert (Node, Python, Go — alles, was einen
Authorization-Header setzen kann). Kurzlebige Browser-Token werden nicht unterstützt. - Nur WebSocket. SIP (Telefonie) und WebRTC verbinden den Client direkt mit dem Upstream und werden nicht weitergeleitet — überbrücken Sie Telefonie-Audio stattdessen in einen WebSocket.
Die Sitzung konfigurieren
Nachdem die Verbindung geöffnet wurde, erhalten Sie session.created. Senden Sie ein session.update, um Stimme, Modalitäten, Audioformat und Turn-Erkennung festzulegen. Verwenden Sie das GA-Format (session.type: "realtime", Audio unter audio.input / audio.output) — das alte flache Beta-Format ist eingestellt.
{
"type": "session.update",
"session": {
"type": "realtime",
"output_modalities": ["audio"],
"instructions": "You are a concise customer-support agent.",
"audio": {
"input": { "format": { "type": "audio/pcm", "rate": 24000 },
"turn_detection": { "type": "server_vad" } },
"output": { "format": { "type": "audio/pcm", "rate": 24000 } }
}
}
} Ein minimaler Gesprächs-Turn:
- Streamen Sie Mikrofon-Audio mit
input_audio_buffer.append(base64 PCM). - Bestätigen Sie den Turn mit
input_audio_buffer.commit, dannresponse.create. - Empfangen Sie Audio-Deltas (
response.output_audio.delta) und die Text-Transkription, dannresponse.donemit der Nutzung. - Mit aktiviertem server VAD erkennt das Modell die Turns für Sie; dieselben Events fließen ohne manuelles Commit.
Tools, Funktionsaufrufe & Wissen
Deklarieren Sie Funktionen in session.update. Das Modell ruft sie mitten im Gespräch auf — so binden Sie Bestellabfragen, Ticketing oder jedes Geschäftssystem an. Geben Sie das Ergebnis zurück, und das Modell spricht damit weiter:
// 1. Declare tools in session.update: "tools": [{ "type": "function", ... }]
// 2. The model emits a function_call in response.done.
// 3. Return the result, then ask the model to continue:
{ "type": "conversation.item.create",
"item": { "type": "function_call_output",
"call_id": "call_abc",
"output": "{\"status\":\"shipped\"}" } }
{ "type": "response.create" } Auch entfernte MCP-Server werden unterstützt ("type": "mcp") — der Upstream verbindet sich direkt mit dem MCP-Server. Für eine Wissensdatenbank fügen Sie Fakten über instructions, ein Funktions-Tool auf Basis Ihres RAG oder MCP ein; das im Modell eingebaute Wissen ist keine zuverlässige Quelle für Geschäftsfakten.
Abrechnung
Abgerechnet pro response.done-Nutzung zum offiziellen Listenpreis (kein Aufschlag) — Audio und Text, Eingabe und Ausgabe, mit einem Tarif für gecachte Eingabe. Jede Sitzung schreibt am Ende eine Hauptbuchzeile.
| Typ | Eingabe / 1M Tokens | Ausgabe / 1M Tokens |
|---|---|---|
| Audio | $32 / 1M | $64 / 1M |
| Text | $4 / 1M | $16 / 1M |
| Cache-Eingabe | $0.40 / 1M | — |
Die angezeigten Preise gelten für gpt-realtime / gpt-realtime-2.1; gpt-realtime-2.1-mini kostet etwa ein Drittel. Audio-Eingabe sind ~10 tokens/second, Ausgabe ~20 tokens/second. Wenn Sie den Gesprächsverlauf ausschließlich anfügend halten, kann der Cache-Tarif ($0.40/1M) den Großteil eines langen Anrufs auffangen.
Sitzungsdauer & Hot-Switch
Eine einzelne Realtime-Sitzung dauert höchstens 60 minutes — das ist ein Limit der OpenAI-Plattform, nicht unseres. Der Upstream schließt die Verbindung bei diesem Limit.
- Für Anrufe, die lange dauern können, führen Sie den Hot-Switch deutlich vor dem Limit durch (z. B. bei 50 minutes): Öffnen Sie eine neue Sitzung und spielen Sie das Gespräch als Text mit
conversation.item.createerneut ein (Nutzer alsinput_text, Assistent alsoutput_text— Assistenten-Audio kann nicht erneut abgespielt werden). - Es gibt keine Sitzungswiederaufnahme: Wenn der WebSocket abbricht, geht der Upstream-Zustand verloren. Die Wiederverbindung nutzt denselben Text-Replay-Pfad, bauen Sie die Wiederverbindung also von Anfang an ein.
- Der Kontext beträgt 128K für
gpt-realtime-2.1/-mini(≈3.5 hours Eingabe-Audio); das älteregpt-realtimehat 32K — verwenden Sie es nicht für lange Anrufe.
Zugang
gpt-realtime befindet sich in einer Beta auf Einladung. Es erscheint im Katalog und in der Preisliste, aber die Nutzung erfordert, dass Ihrem Workspace der Zugriff gewährt wird — kontaktieren Sie uns, um es zu aktivieren.