New Sign up free, 10 calls on us. Up to $1, no card needed.

GPT Realtime 2.1 vs nova-2-sonic

GPT Realtime 2.1 is served by invitation. Its figures below are the live rates, but calls need a workspace grant first; ask us for access before you build on this comparison.

nova-2-sonic is served by invitation. Its figures below are the live rates, but calls need a workspace grant first; ask us for access before you build on this comparison.

vs

Which one, when

Both are realtime audio and text models billed per million tokens, so the rates compare directly: nova-2-sonic charges $3 audio in and $12 audio out against $32 and $64 for gpt-realtime-2.1, and $0.06/$0.24 on text versus $4/$24, with 1000000 context and 64000 max output rather than 128000 and 32000. Choose nova-2-sonic for long, cost-sensitive voice sessions if its 8-minute connection limit and in-Region-only inference suit you; choose the newer gpt-realtime-2.1 (released 2026-07-06) when you want $0.4 cached-input reads and no such session or region

Benchmarks

GPT Realtime 2.1: the vendor has not published benchmark scores.

nova-2-sonic: 8 published, but no benchmark it shares with enough other models to compare.

GPT Realtime 2.1 nova-2-sonic other models measured peer average ★ no peer scored higher
AMI near+far field (WER)
N/A
29.7%
Big Bench Audio
N/A
87%
BFCL v3 (single-turn, python only)
N/A
74.5%

Vendor-published: Amazon OpenAI

Pricing

GPT Realtime 2.1 nova-2-sonic Δ
Audio input / 1M tokens $32 $3 11×
Audio output / 1M tokens $64 $12 5.3×
Audio cache read / 1M tokens $0.4 - -
Text input / 1M tokens $4 $0.06 67×
Text output / 1M tokens $24 $0.24 100×
Cache write no separate charge no separate charge -

Rates from the live catalogue at build time; each model page carries the current rate card.

Where they sit · price per 1M audio tokens across all 6 realtime speech-to-speech models on this billing unit (log scale)

Capabilities

GPT Realtime 2.1 nova-2-sonic
Prompt caching implicit (automatic) not supported
Cache lifetime 5-10m, up to 1h not applicable
Minimum cached prefix 1024 tokens not applicable

Specs

GPT Realtime 2.1 nova-2-sonic
Input modalities text audio text audio
Output modalities text audio text audio
Released 2026-07-06 2025-12-02
Knowledge cutoff 2024-09 -
Voices -

Feminine- and masculine-sounding voices per locale (tiffany/matthew en-US, amy en-GB, olivia en-AU, kiara/arjun en-IN and hi-IN, ambre/florian fr-FR, beatrice/lorenzo it-IT, tina/lennart de-DE, lupe/carlos es-US, carolina/leo pt-BR)

tiffany and matthew are polyglot voices that speak every supported language.

Session capabilities
  • Speech-to-speech over WebSocket
  • configurable reasoning effort
  • tool use
  • interruption handling
  • 128K context
  • Intelligent turn-taking with configurable endpointing sensitivity
  • graceful interruption handling without losing context
  • function calling with asynchronous tool handling (the assistant keeps speaking while tools run)
  • RAG grounding
  • mixed audio and text input in one conversation
  • 8-minute connection limit
Context window 128K 1M

Specs are transcribed from each vendor’s documentation; a row a vendor does not publish is left out rather than inferred. Full sources: GPT Realtime 2.1 · nova-2-sonic

Switch between them with one line

Both ids are in every tab below; the highlighted pair of lines is the only edit. Same endpoint, same key, same request shape.

import asyncio, base64, json, websockets

URL = "wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1"
# URL = "wss://synthorai.io/v1/realtime?model=nova-2-sonic"  # uncomment this line, comment the one above
# 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())

Get your API key →

FAQ

Which is cheaper, GPT Realtime 2.1 or nova-2-sonic?

nova-2-sonic is cheaper on the "Audio input / 1M tokens" row ($3 vs $32, 11× apart). Other rows may point the other way; the table above carries the full rate card, and real cost depends on your mix.

Can I A/B test GPT Realtime 2.1 against nova-2-sonic without two integrations?

Yes. Both are served through the same OpenAI-compatible endpoint with one API key. Switching is a one-line change to the model id, so you can route a fraction of traffic to each and compare bills directly.

Do GPT Realtime 2.1 and nova-2-sonic support prompt caching?

Cache-read pricing is listed for only one of the two on our feed; where a rate is missing, the provider does not price cache reads separately.

Related comparisons

From our measured studies