OpenAI's lowest-latency streaming transcription model for Realtime sessions. Duration-billed at $0.017/min ($1.02/hour).
- Price
- $0.017/min
Price in context
Where the price sits among 12 comparable models
The bar shows how this model’s price compares with every other model of the same kind on Synthorai. The cheapest and the most expensive are named at each end. These are base rates; batch, region and cache-write discounts are on the pricing page.
Use GPT Realtime Whisper in 30 seconds
Used only inside an OpenAI Realtime session, as its input transcription model: open the session on a Realtime model and set session.audio.input.transcription.model to 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);FAQ
Is the GPT Realtime Whisper API free to try?
Yes: new accounts get 10 trial calls and up to $1 in free credit, no card required. That's enough to try GPT Realtime Whisper against your real workload before adding a payment method.
How much does GPT Realtime Whisper cost?
GPT Realtime Whisper costs $0.017 per minute of audio transcribed on Synthorai: pay-as-you-go, no platform markup, no subscription.
How do I use GPT Realtime Whisper?
GPT Realtime Whisper is not called on its own. It transcribes the caller's audio inside a Realtime session: connect to wss://synthorai.io/v1/realtime with a Realtime model, set session.audio.input.transcription.model to "gpt-realtime-whisper", and read each transcript from the conversation.item.input_audio_transcription.completed event. It bills $0.017 per minute of input audio, on top of the session's own rates.
How do I get access to GPT Realtime Whisper?
Use your Synthorai API key to open the Realtime session and name "gpt-realtime-whisper" as its input transcription model. GPT Realtime Whisper is built for Realtime sessions, not for the /v1/audio/transcriptions file API; to transcribe a file, pick one of the speech-to-text models. One API key covers every model on the gateway.
Related models
Compare
Every value on this page is transcribed from the vendor's own documentation, linked above, and carries the date it was checked. Prices are compared across the catalogue; specification values that vendors define differently are shown with the difference stated rather than charted. Nothing here is measured by us, and nothing is scored.