Forget “smarter voice.” Pick the right latency budget
Most takes on Gemini 3.8 Live and 3.8 Live Extended Thinking treat “more reasoning in the call” as an automatic win. I don’t. For voice agents, extra thinking is a tax you pay in tokens, state-machine complexity, and the risk of stale tool results after an interrupt. These models shipped September 15, 2026. The interesting choice isn’t whether to use them – it’s which endpoint and when.
Gemini 3.8 Live is the low-latency default for dialogue and background tools without reasoning delays. Extended Thinking keeps talking while it plans multi-step work and fires async tools, with fillers like “Let me check that…”. Same Live API surface. Very different client logic.
Quick context: what actually shipped
Both are native audio-to-audio models (not cascaded ASR→LLM→TTS), per Google’s announcement. Inputs: audio, images, video, text. Outputs: audio and text. API model pages list 131,072 input / 65,536 output tokens (the model card rounds to ~128K / 64K). Knowledge cutoff there: January 2025. SynthID watermarks generated audio. Mid-call switch across 97 languages is the claimed ceiling.
82.6 on Artificial Analysis’ Speech to Speech Quality Index put Extended Thinking at #1 on that board – plus 68.6% τ-Voice and 35.1% on Sierra’s τ-Voice-banking. Live still ranks high on preference arenas. That is the leaderboard story. Your product voice is a separate decision.
Rollout split: Live powers Search Live; Extended Thinking shows up in Gemini Live and, on subscriber tiers (AI Pro/Ultra and similar), Docs / Gmail / Keep Live. Builders get Gemini API + AI Studio now; enterprise is private preview.
Hands-on: Gemini 3.8 Live and Extended Thinking in the API
Skip the chess demos. Minimal path that matches current docs:
1. Connect to Live (default model)
import asyncio
from google import genai
client = genai.Client(api_key="YOUR_API_KEY")
model = "gemini-3.8-live"
config = {"response_modalities": ["AUDIO"]}
async def main():
async with client.aio.live.connect(model=model, config=config) as session:
await session.send_realtime_input(text="Give me a 10-second status update style.")
async for response in session.receive():
# play response.server_content.model_turn audio parts
pass
asyncio.run(main())
Audio in: raw 16-bit PCM, 16 kHz, little-endian. Out: 24 kHz PCM chunks. Video frames as JPEG/PNG, roughly 1 fps max. Use the explicit audio / video / text keys – don’t jam a generic media blob into realtime input.
2. Flip to Extended Thinking
Swap the model string. Add thinking config and non-blocking tools. The Thinking in the Live API guide is blunt about the contract:
from google.genai import types
model = "gemini-3.8-live-extended-thinking"
search_flights = types.FunctionDeclaration(
name="search_flights",
description="Searches flights to a destination.",
behavior="NON_BLOCKING",
parameters={
"type": "OBJECT",
"properties": {"destination": {"type": "STRING"}},
"required": ["destination"],
},
)
config = types.LiveConnectConfig(
response_modalities=["AUDIO"],
thinking_config=types.ThinkingConfig(thinking_level="medium"),
tools=[types.Tool(function_declarations=[search_flights])],
)
thinking_level accepts low, medium, or high only – MINIMAL errors. On plain gemini-3.8-live, omit thinking_level entirely or setup fails. Every function declaration on Extended must set behavior: "NON_BLOCKING"; BLOCKING returns a hard error. Regular Live still allows both.
3. Drive UI off interaction_status, not turnComplete
This is the bulk of the real work. Extended Thinking can finish a spoken filler (turnComplete: true) while tools and reasoning keep running. Clients that treat turnComplete as “ready for the next user turn” interrupt mid-reasoning or drop tool results.
interaction_status: "IN_PROGRESS"– still reasoning or waiting on tools; keep listening.interaction_status: "IDLE"– whole task done; safe to show “listening”.
Tool path is familiar: run locally, send_tool_response with matching ids. Wire the mic and “assistant busy” affordances to interaction_status, nothing else.
Pro tip: Prototype in Google AI Studio Live with both model toggles. Confirm fillers and status transitions before you build a custom WebSocket client.
Common pitfalls to avoid
- turnComplete ≠ session idle on Extended Thinking. Open the mic too early and you race the model. Gate on
IDLEonly (see above). - Camera left open. Default turn coverage is
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO– frames ride along whenever activity is detected. Image/video input is about $0.002/min (or $1.00 per 1M tokens) as of the Sept 2026 pricing page. Send frames only when visual grounding matters. - Blind 3.1 Flash Live config paste. Migration notes on the gemini-3.8-live model page: drop
thinking_levelon base Live, strip affective-dialogue flags, and accept proactive audio permanently on (setting itfalseerrors). Async NON_BLOCKING is the Live default now. - Stale tools after interrupt. User says Friday, then Saturday; a late flight payload can still arrive. Protocol keeps in-session work with limited cancel visibility. Tag tool results with the current task id and discard mismatches.
Performance and what the numbers mean for you
By the leaderboard numbers, Extended Thinking leads speech-to-speech quality and agentic voice benches. Live is the scale and cost play. Paid audio (as of Sept 2026): about $0.005/min in and $0.018/min out – or $3.00 / $12.00 per 1M audio tokens. Text: $0.75 in / $4.50 out. Output pricing includes thinking tokens, so thinking_level=high quietly raises the bill. Free tier is free of charge under product-improvement terms.
Is an 82.6 speech index worth the higher reasoning bill on every trivial turn? That’s the trade you’re actually buying.
When NOT to use Extended Thinking (or Live at all)
Default to plain gemini-3.8-live for triage bots, language practice, smart-home commands, and tools that return in milliseconds. Extended Thinking earns its keep only when multi-step planning or multi-second tools would otherwise create dead air – support diagnostics, booking flows, STEM tutoring with verification steps.
Batch text jobs and long offline analysis? Wrong API surface. Live is for realtime turns, not document pipelines.
FAQ
What’s the difference between Gemini 3.8 Live and 3.8 Live Extended Thinking?
Live = low-latency dialogue; tools may be blocking or non-blocking. Extended = background reasoning, mandatory async tools, spoken fillers, and an interaction_status lifecycle. Same audio pipe – heavier client.
How much does a real session cost?
Five-minute mostly-audio call on Live: ballpark cents if both sides talk (input ~$0.005/min, output ~$0.018/min). Add Extended Thinking and you pay reasoning tokens on the output side; leave the camera hot and you add ~$0.002/min video whether you cared about frames or not. Meter a pilot week before you lock high on a chatty agent.
Can I still use my old 3.1 Flash Live client?
Yes, after mandatory edits: model string → gemini-3.8-live (or the Extended id), strip thinking_config on base Live, mark tools NON_BLOCKING if you move to Extended, stop disabling proactive audio. Full checklist is on the model page linked in pitfalls. If you only need simple turns and hate state machines, stay on Live – don’t move to Extended just because the name sounds bigger.
Open AI Studio Live, run one multi-tool prompt on each model, and watch the status fields. That five-minute test beats another benchmark screenshot.