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

gemini-2.5-flash-native-audio vs gemini-3.1-flash-live

gemini-2.5-flash-native-audio 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.

gemini-3.1-flash-live 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

Audio rates are identical ($3 in, $12 out per million) and so are the session mechanics - 16 kHz in, 24 kHz out PCM, 128k context, 15 minutes audio-only - with the older gemini-2.5-flash-native-audio slightly cheaper on text, $0.5 and $2 per million against $0.75 and $4.5. The functional split is tool behaviour: gemini-2.5-flash-native-audio supports NON_BLOCKING function declarations, so the model keeps talking while a tool runs, where gemini-3.1-flash-live is sequential and will not respond until the tool result arrives - but it adds image input alongside text, audio and video. Pick 2.5 for tool-heavy conversations, 3.1 for image input.

Benchmarks

gemini-3.1-flash-live: the vendor has not published benchmark scores.

gemini-2.5-flash-native-audio: 8 published, but no benchmark it shares with enough other models to compare.

gemini-2.5-flash-native-audio gemini-3.1-flash-live other models measured peer average ★ no peer scored higher
AMI near+far field (WER)
63.8%
N/A
Big Bench Audio
71%
N/A
BFCL v3 (single-turn, python only)
69.4%
N/A

Vendor-published: Amazon OpenAI

Pricing

gemini-2.5-flash-native-audio gemini-3.1-flash-live Δ
Audio input / 1M tokens $3 $3 =
Audio output / 1M tokens $12 $12 =
Text input / 1M tokens $0.5 $0.75 0.67×
Text output / 1M tokens $2 $4.5 0.44×

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

gemini-2.5-flash-native-audio gemini-3.1-flash-live
Thinking control configurable always on
Prompt caching implicit + explicit implicit + explicit
Cache lifetime not published not published
Minimum cached prefix 4096 tokens 4096 tokens

Specs

gemini-2.5-flash-native-audio gemini-3.1-flash-live
Input modalities text audio video text image audio video
Output modalities text audio text audio
Released - 2026-03-26
Knowledge cutoff 2025-01 -
Voices

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

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

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

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

Session capabilities
  • Function calling supported, with NON_BLOCKING function declarations letting the model keep talking while a tool runs
  • VAD interruption cancels and discards the in-flight generation
  • search grounding and thinking supported
  • no caching, structured outputs, code execution or Batch API
  • 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
Context window 131K 131K

Specs are transcribed from each vendor’s documentation; a row a vendor does not publish is left out rather than inferred. Full sources: gemini-2.5-flash-native-audio · gemini-3.1-flash-live

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-2.5-flash-native-audio"
# URL = "wss://synthorai.io/v1/realtime?model=gemini-3.1-flash-live"  # 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, gemini-2.5-flash-native-audio or gemini-3.1-flash-live?

They list the same price on the "Audio input / 1M tokens" row ($3), so price does not decide this one. See the specs and capabilities below.

Can I A/B test gemini-2.5-flash-native-audio against gemini-3.1-flash-live 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 gemini-2.5-flash-native-audio and gemini-3.1-flash-live 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