GPT Realtime 2.1 est le modèle phare de la famille speech-to-speech temps réel d'OpenAI, annoncé comme un modèle de raisonnement temps réel actualisé, avec une meilleure reconnaissance alphanumérique, une meilleure gestion des silences et du bruit, et un meilleur comportement à l'interruption.
- Entrée
- audio texte $4/M
- Sortie
- audio texte $24/M
- Entrée audio
- $32/M
- Sortie audio
- $64/M
- Lecture de cache
- $0.4/M
- Coupure des connaissances
- 2024-09
Le prix en perspective
Position du prix parmi 6 modèles comparables
La barre situe le prix de ce modèle parmi tous les modèles du même type sur Synthorai. Le moins cher et le plus cher sont nommés à chaque extrémité. Ce sont des tarifs de base ; les remises liées au batch, à la région et aux écritures de cache figurent sur la page des tarifs.
Spécifications et limites
Tokens
| Fenêtre de contexte (spécification du fournisseur) | 128 000 |
|---|---|
| Sortie max (spéc. fournisseur) | 32 000 |
| Coupure des connaissances | 2024-09 |
Mise en cache
| Mode | automatique |
|---|---|
| Préfixe min. | 1 024 |
| Durée de vie | 5-10 min, jusqu'à 1 heure |
Temps réel
| Session |
|
|---|
Modèle
| Modalités | audio + texte → audio + texte |
|---|
- Modèle de raisonnement temps réel mis à jour, avec une meilleure reconnaissance alphanumérique, une meilleure gestion du silence et du bruit et un meilleur comportement à l'interruption
- effort de raisonnement configurable et utilisation d'outils pour les workflows d'agents vocaux
- contexte de 128k
Utilisez GPT Realtime 2.1 en 30 secondes
Compatible OpenAI Realtime : connectez-vous en WebSocket, les flux audio circulent en continu dans les deux sens. 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);À propos de GPT Realtime 2.1
- Il porte la famille à une fenêtre de contexte de 128K tokens avec 32K tokens de sortie maximale, et prend en charge un effort de raisonnement configurable, le suivi d'instructions et l'utilisation d'outils pour les flux d'agents vocaux complexes.
- Les tokens audio et texte sont facturés à des tarifs par token distincts, avec une entrée mise en cache à tarif réduit.
- Le guide temps réel d'OpenAI en fait le modèle à choisir pour construire un agent vocal à faible latence, et recommande de démarrer à un effort de raisonnement low pour la plupart des agents en production, puis de ne l'augmenter que là où la tâche justifie la latence ajoutée.
- Les sessions passent par WebRTC, WebSocket ou SIP, et l'alternance des tours peut s'appuyer sur une détection d'activité vocale fondée sur le silence ou sur un détecteur sémantique dont le réglage d'empressement décide de la patience avec laquelle il attend qu'un locuteur ait fini.
- La gestion des interruptions fait partie du protocole : avec la détection activée, le serveur tronque l'audio non joué, et les clients WebSocket sont censés arrêter la lecture et signaler la quantité d'audio réellement parvenue à l'auditeur.
- Les outils peuvent être déclarés par session ou par réponse, et des réponses peuvent être générées en dehors de la conversation principale lorsqu'une tâche annexe ne doit pas polluer le transcript.
- Sur Synthorai, il est servi via l'endpoint WebSocket /v1/realtime compatible OpenAI, si bien que les applications bâties sur les Realtime SDK officiels fonctionnent sans modification.
FAQ
Peut-on essayer l'API GPT Realtime 2.1 gratuitement ?
GPT Realtime 2.1 est actuellement en bêta sur invitation : l'accès se fait sur demande, et non par inscription libre. Faites votre demande depuis la console Synthorai ; une fois qu'elle est acceptée, la tarification à l'usage habituelle s'applique, sans abonnement.
Quels sont les points forts de GPT Realtime 2.1 ?
Palier temps réel phare pour agents vocaux en production ; interruption, bruit et alphanumérique améliorés ; effort de raisonnement configurable avec outils. La section À propos en donne un aperçu complet, tiré des notes de version du fournisseur.
Combien coûte GPT Realtime 2.1 ?
Sur Synthorai, GPT Realtime 2.1 coûte $4 par million de tokens en entrée et $24 par million de tokens en sortie, soit le tarif public du fournisseur, sans majoration de plateforme. Les tokens d'entrée en cache sont facturés $0.4/M.
Comment appeler l'API GPT Realtime 2.1 ?
GPT Realtime 2.1 est un modèle speech-to-speech : connectez-vous en WebSocket à wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1 avec le SDK OpenAI Realtime (ou un WebSocket brut), puis envoyez et recevez l'audio en continu. Ce n'est pas un envoi de fichier via POST /v1/audio/transcriptions. Authentifiez-vous avec votre clé sk-syn en n'envoyant que l'en-tête Authorization (le protocole beta a été retiré).
Comment obtenir l'accès à GPT Realtime 2.1 ?
GPT Realtime 2.1 est en bêta sur invitation : demandez l'accès depuis la console Synthorai. Une fois la demande acceptée, il fonctionne comme tous les autres modèles : dans votre SDK OpenAI, indiquez base_url="https://synthorai.io/v1" et model="gpt-realtime-2.1".
Modèles associés
Comparer
Chaque valeur de cette page est reprise de la documentation du fournisseur (lien ci-dessus) et porte la date de sa vérification. Les prix sont comparés à l'échelle du catalogue. Quand les fournisseurs ne définissent pas une spécification de la même façon, la différence est signalée et la valeur n'est pas mise en graphique. Nous ne mesurons rien ici et nous n'attribuons aucune note.