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

gemini-3.1-flash-live vs nova-2-sonic

vs

Which one, when — curated verdict, not a benchmark table

Audio costs the same on both, $3 per million in and $12 per million out, so the bill parts on text: nova-2-sonic charges $0.06 and $0.24 per million against $0.75 and $4.5, roughly 12x and 19x less. gemini-3.1-flash-live is the broader input model — text, image, audio and video, more than 90 languages, 15-minute audio-only sessions — while nova-2-sonic is audio and text only, over an 8-minute connection with a documented continuation pattern, and runs in four regions. Pick nova-2-sonic for cost on text-heavy sessions, gemini-3.1-flash-live for video input and language coverage.

Pricing

gemini-3.1-flash-live nova-2-sonic Δ
Audio input / 1M tokens $3 $3 =
Audio output / 1M tokens $12 $12 =
Text input / 1M tokens $0.75 $0.06 13×
Text output / 1M tokens $4.5 $0.24 19×
Cache write no separate charge

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

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

Capabilities

gemini-3.1-flash-live nova-2-sonic
Thinking control always on
Prompt caching implicit + explicit not supported
Cache lifetime not published not applicable
Minimum cached prefix 4096 tokens not applicable

Specs

gemini-3.1-flash-live nova-2-sonic
Input modalities text image audio video text audio
Output modalities text audio text audio
Released 2026-03-26 2025-12-02
Voices

Any voice from the Gemini text-to-speech voice set

native-audio output models switch languages naturally during a conversation.

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
  • Function calling is sequential only — the model will not start responding until the tool response is sent
  • search grounding and thinking supported
  • VAD interruption cancels the in-flight generation
  • no caching, structured outputs, code execution or Batch API
  • 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 131K 1M

Specs are transcribed from each vendor’s documentation; a row a vendor does not publish is left out rather than inferred. Full sources: gemini-3.1-flash-live · 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=gemini-3.1-flash-live"
# 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 an API key →

FAQ

Which is cheaper, gemini-3.1-flash-live or nova-2-sonic?

They list the same audio input / 1m tokens ($3), so price does not decide this one — see the specs and capabilities below.

Can I A/B test gemini-3.1-flash-live 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 model-string change, so you can route a fraction of traffic to each and compare bills directly.

Do gemini-3.1-flash-live 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 cached reads separately.

Related comparisons