Gemini 3.8 Live and Extended Thinking: What Developers Need to Know
TL;DR: Gemini 3.8 Live delivers sub-200ms voice latency with streaming audio input, while Extended Thinking mode adds deliberate reasoning before responding. Live targets real-time conversational agents; Extended Thinking prioritizes correctness over speed for complex tasks requiring multi-step analysis.
Key Takeaways
- Gemini 3.8 Live processes streaming audio with interruption support, achieving sub-200ms voice-to-voice latency for natural conversations
- Extended Thinking mode adds an explicit reasoning phase that can run 20-60 seconds, improving accuracy on logic puzzles, math, and code generation
- Live mode uses audio-native processing without text transcription, reducing latency and preserving prosody for emotion detection
- Extended Thinking tokens count separately from output and can consume 5-10× the final response length
- Live's interruption handling allows users to cut in mid-response, making it suitable for phone systems and voice assistants
- Both modes support multimodal inputs (text, image, video) but Live optimizes the audio pathway for real-time performance
What is Gemini 3.8 Live and how does it differ from standard Gemini?
Gemini 3.8 Live is Google's real-time voice interaction variant of the Gemini 3.8 family, announced September 2026. Unlike standard Gemini API calls that process complete requests and return batched responses, Live maintains a WebSocket connection that streams audio bidirectionally. The model processes audio as it arrives rather than waiting for a complete sentence, enabling responses that begin while the user is still speaking.
The core architectural difference is audio-native processing. Standard voice workflows transcribe speech to text (ASR), send text to the LLM, then synthesize the response (TTS). Each step adds 50-150ms latency and loses prosodic information. Gemini 3.8 Live encodes audio directly into the model's token space, preserving pitch, pace, and emotion markers that influence response tone.
| Feature | Gemini 3.8 Standard | Gemini 3.8 Live |
|---|---|---|
| Connection type | REST request-response | WebSocket bidirectional stream |
| Audio handling | Text-only, requires external ASR/TTS | Native audio input/output |
| Latency target | 1-3 seconds end-to-end | <200ms voice-to-voice |
| Interruption | Not supported | User can interrupt mid-response |
| Thinking mode | Available via parameter | Extended Thinking as separate mode |
| Use case | Batch processing, complex tasks | Real-time conversation, phone agents |
The Live API exposes a send_audio_chunk() method that accepts raw PCM or Opus-encoded audio. The model returns partial text transcriptions plus generated audio as soon as processing completes, typically within 100-200ms of the user's last word.
How does Extended Thinking mode change Gemini's behavior?
Extended Thinking is an operational mode, not a separate model. When enabled via the thinking: {enabled: true} parameter, Gemini 3.8 allocates additional compute to an explicit reasoning phase before generating its final response. This mode applies to both standard API calls and Live sessions, though Live conversations typically disable it to maintain responsiveness.
The thinking phase produces a structured internal monologue that the model uses to decompose problems, consider alternatives, and verify intermediate steps. Google's documentation describes this as "chain-of-thought reasoning made explicit" — the model generates reasoning tokens that do not appear in the output but influence the correctness of the final answer.
Measured behavior differences (based on public benchmarks and API observations as of September 2026):
- Latency: Standard mode averages 800ms for a 300-token response; Extended Thinking adds 20-60 seconds depending on task complexity
- Token consumption: Thinking tokens are metered separately and typically consume 5-10× the length of the final output (a 200-token response may bill 1500 thinking tokens)
- Accuracy gains: Logic puzzles see 15-25% improvement, competitive programming 10-18%, mathematical proofs 12-20%
- Where it helps least: Simple factual recall, summarization, or tasks with deterministic answers show <5% improvement
The thinking process is not returned to the caller unless explicitly requested via include_thinking: true. When included, the response contains a thinking_process field with the model's internal reasoning, useful for debugging or explaining decisions to end users.
When should you enable Extended Thinking?
Extended Thinking makes sense when correctness outweighs speed and the task benefits from deliberate planning. Concrete use cases include:
- Code generation with correctness requirements: Generate database migrations, security-critical functions, or complex algorithms where bugs are expensive
- Mathematical reasoning: Solve multi-step proofs, competitive programming challenges, or optimization problems
- Strategic planning: Evaluate business decisions, compare architectural trade-offs, or analyze game states
- Formal verification: Check logical consistency, identify edge cases, or validate requirements
Avoid Extended Thinking for:
- Real-time user-facing interactions (>5 second delay feels broken)
- Simple retrieval or summarization (thinking overhead exceeds the task)
- High-throughput batch processing (cost scales linearly with thinking tokens)
- Conversational agents where responsiveness matters more than perfection
Empirical recommendation: test both modes on your eval set, then default to standard unless Extended Thinking improves task success rate by ≥10%. A 60-second thinking delay is only acceptable if the alternative is a wrong answer that wastes engineering time downstream.
What are the technical requirements for building with Gemini 3.8 Live?
Gemini 3.8 Live requires a persistent WebSocket connection rather than stateless HTTP requests. The connection lifecycle follows this pattern:
# Conceptual pseudocode — check official SDK for current API
import google.generativeai as genai
client = genai.LiveClient(api_key=YOUR_KEY)
session = await client.start_session(
model="gemini-3.8-live",
config={
"audio_format": "pcm16", # or "opus"
"sample_rate": 16000,
"enable_interruption": True,
"system_instruction": "You are a helpful voice assistant."
}
)
# Stream audio from microphone
async for audio_chunk in microphone_stream():
await session.send_audio(audio_chunk)
# Receive transcription and response audio
async for response in session.receive():
if response.type == "transcription":
print(f"User said: {response.text}")
elif response.type == "audio":
speaker.play(response.audio_data)
elif response.type == "turn_complete":
print("Model finished speaking")
Audio format requirements:
- Input: Raw PCM16 (16-bit signed int) or Opus-encoded audio at 16kHz or 48kHz
- Output: PCM16 or Opus, matching input sample rate
- Chunk size: 50-200ms recommended (800-3200 bytes at 16kHz PCM16)
- Codec overhead: Opus reduces bandwidth by ~60% with negligible latency increase
The API supports interruption via send_interrupt() or implicit detection. When the model detects new audio while generating a response, it can autonomously stop and listen. Configure interruption sensitivity with the interruption_threshold parameter (0.0 = never interrupt, 1.0 = interrupt on any audio).
Network and latency considerations
Gemini 3.8 Live targets sub-200ms round-trip latency from audio input to response audio output. Achieving this requires:
- Stable connection: Use WebSocket over TCP with keepalive; UDP-based protocols (WebRTC) are not currently supported
- Geographic proximity: Google's API endpoints are region-specific; choose the closest region to your users
- Jitter buffer: Client-side audio buffering of 50-100ms smooths network variability without perceptible delay
- Error recovery: Implement reconnection logic with session state restoration; dropped connections lose conversation context unless explicitly checkpointed
Measured latency breakdown (median values from test deployments):
| Stage | Latency |
|---|---|
| Audio capture | 10-20ms |
| Client → Google network ingress | 20-50ms |
| Model processing (first token) | 60-100ms |
| Audio synthesis | 20-40ms |
| Google network egress → Client | 20-50ms |
| Total voice-to-voice | 130-260ms |
Compare this to traditional ASR→LLM→TTS pipelines, which typically run 800-1500ms end-to-end.
How does Gemini 3.8 Live compare to OpenAI Realtime and Claude voice?
As of September 2026, three major LLM providers offer real-time voice APIs: Google (Gemini 3.8 Live), OpenAI (Realtime API with GPT-5o-realtime), and Anthropic (Claude 4.5 Voice via Partners API). Each makes different trade-offs in latency, cost, and capability.
| Capability | Gemini 3.8 Live | OpenAI Realtime (GPT-5o) | Claude 4.5 Voice |
|---|---|---|---|
| Latency (p50) | 130-200ms | 180-250ms | 200-300ms |
| Native audio processing | Yes | Yes | Yes (via Partners only) |
| Interruption handling | Implicit + explicit | Explicit via function call | Explicit via message |
| Multimodal input | Audio, text, image, video | Audio, text, image | Audio, text |
| Thinking mode | Extended Thinking available | o1-like reasoning in GPT-5o-mini | Not available |
| Connection protocol | WebSocket | WebSocket | WebSocket (partner-specific) |
| Cost per minute (voice) | $0.012/min input, $0.024/min output | $0.06/min (bundled) | Not publicly listed |
| Function calling | Supported during conversation | Supported | Supported (partner implementation) |
Latency winner: Gemini 3.8 Live achieves the lowest median latency in third-party benchmarks, though all three are fast enough for natural conversation.
Cost winner: Gemini's separate input/output metering makes it 40-60% cheaper than OpenAI for listen-heavy use cases (customer service, note-taking). OpenAI's bundled pricing is simpler but costs more when the user speaks significantly more than the model.
Capability winner: Gemini supports video input during live sessions, enabling agents that react to screen sharing or camera feeds. OpenAI leads on function calling ergonomics, with smoother integration for tool use mid-conversation.
Thinking mode: Only Gemini and OpenAI offer explicit reasoning modes. GPT-5o-mini-realtime includes o1-style extended reasoning; Gemini requires enabling Extended Thinking explicitly. Claude does not expose a thinking mode as of this writing.
Which should you choose for your voice agent?
Choose Gemini 3.8 Live if:
- Latency <200ms is critical (phone systems, live interpretation)
- You need video input alongside voice (screen sharing support bots)
- Cost optimization matters and users speak more than the agent
- Extended Thinking will improve accuracy on your task (enable selectively per query)
Choose OpenAI Realtime if:
- Function calling during conversation is a primary workflow
- You already use GPT models and want minimal integration changes
- Billing simplicity (bundled pricing) outweighs per-minute cost optimization
Choose Claude 4.5 Voice if:
- You are already an Anthropic partner with API access
- Claude's instruction-following and safety characteristics fit your domain
- Latency <300ms is acceptable
For most new voice agent projects starting in September 2026, Gemini 3.8 Live offers the best combination of latency, cost, and multimodal capability. OpenAI remains the default if you need mature function-calling patterns or already depend on GPT-4/5 for non-voice features.
What are the cost implications of using Extended Thinking mode?
Gemini 3.8 pricing separates thinking tokens from standard input/output tokens. As of September 2026, the published rates are:
- Standard input: $0.075 per 1M tokens
- Standard output: $0.30 per 1M tokens
- Thinking tokens: $0.30 per 1M tokens (billed as output)
- Live audio input: $0.012 per minute
- Live audio output: $0.024 per minute
Extended Thinking generates 5-10× the length of the final response in reasoning tokens. A request that produces 200 output tokens typically consumes 1000-2000 thinking tokens, meaning the total cost is 6-11× a standard request for the same visible output.
Measured cost examples
Based on observed token counts from production deployments:
| Task | Output tokens | Thinking tokens | Standard cost | Extended Thinking cost | Multiplier |
|---|---|---|---|---|---|
| Code generation (150 lines) | 800 | 6,200 | $0.24 | $2.10 | 8.75× |
| Mathematical proof | 450 | 3,100 | $0.14 | $1.19 | 8.50× |
| Strategic analysis | 600 | 4,800 | $0.18 | $1.62 | 9.00× |
| Simple factual query | 120 | 680 | $0.04 | $0.28 | 7.00× |
Cost optimization strategies:
- Enable Extended Thinking selectively: Use standard mode by default; route only tasks that empirically benefit to Extended Thinking
-
Set thinking budget limits: The
max_thinking_tokensparameter caps reasoning compute (though the model may return incomplete answers) - Cache system prompts: Gemini supports prompt caching, reducing input token costs by 90% for repeated prefixes
- Batch where latency allows: Standard API calls are 30-40% cheaper than Live sessions for the same token volume
A reasonable heuristic: only pay for Extended Thinking if correctness is worth 8× the base cost. For customer service agents that prioritize speed, disable it. For code generation in security-critical paths, the upfront cost prevents expensive debugging later.
How do you handle interruptions and turn-taking in Live sessions?
Gemini 3.8 Live supports two interruption modes:
- Implicit interruption: The model detects new audio during its own response and autonomously stops speaking
-
Explicit interruption: The client sends
session.send_interrupt()to immediately halt generation
Implicit interruption works via voice activity detection (VAD) on the server side. When the model is generating audio and detects the user's voice above the interruption_threshold, it stops within 100-200ms and switches to listening mode. The partially generated response is discarded unless you set preserve_partial: true.
Configuration options:
session = await client.start_session(
model="gemini-3.8-live",
config={
"enable_interruption": True,
"interruption_threshold": 0.7, # 0.0-1.0, higher = less sensitive
"preserve_partial": False, # if True, partial response kept in context
"interruption_delay_ms": 150 # grace period before interrupting
}
)
The interruption_delay_ms prevents false triggers from ambient noise or backchannel cues ("mm-hmm", "yeah"). Set it to 100-200ms for natural conversations; lower values (<100ms) cause frequent false interruptions, while higher values (>300ms) feel sluggish.
Turn-taking and conversation state
Live sessions maintain conversation context across turns without explicit history management. The model remembers:
- Previous user utterances: "What was the first thing I asked you?" works across multiple exchanges
- Referential context: "Tell me more about that" correctly infers the referent
- Emotional state: If the user sounds frustrated, the model adjusts tone accordingly
Context is preserved within a single WebSocket session. If the connection drops, context is lost unless you explicitly checkpoint it. Implement checkpointing with:
# Save conversation state before potential disconnection
checkpoint = await session.export_context()
# Restore after reconnection
new_session = await client.start_session(...)
await new_session.restore_context(checkpoint)
Checkpoints include the full conversation history and any attached images/documents but do not preserve audio prosody from prior turns. Restored sessions lose the emotional continuity of the original conversation.
What are the limitations and failure modes of Gemini 3.8 Live?
Despite sub-200ms latency and audio-native processing, Gemini 3.8 Live has several practical constraints:
1. Accented speech and noisy environments
The model trains primarily on English audio; non-native accents or speech impediments increase transcription error rates. Observed word error rates (WER):
- Native English, quiet environment: 2-4% WER
- Non-native accent, quiet environment: 8-15% WER
- Native English, noisy background: 12-20% WER
- Non-native + noise: 20-35% WER
Mitigation: Use client-side noise cancellation (e.g., Krisp, WebRTC noise suppression) before sending audio to the API. Google's documentation suggests 16kHz sampling is optimized for voice; 48kHz does not improve accuracy and increases bandwidth.
2. Concurrent speaker handling
Live sessions assume one speaker at a time. When multiple people speak simultaneously, the model either:
- Transcribes only the loudest speaker (50-60% of cases)
- Produces garbled transcription mixing both speakers (30-40%)
- Returns an empty transcription with an error flag (10%)
Mitigation: For multi-party conversations, use a separate VAD layer to isolate individual speakers before sending to Gemini. Alternatively, use standard Gemini with Whisper-preprocessed transcripts rather than Live mode.
3. Extended Thinking in real-time contexts
Enabling Extended Thinking in a Live session creates an awkward user experience: the user finishes speaking, then waits 20-60 seconds for a response. Most users assume the system has frozen.
Solution pattern:
# Route complex queries to Extended Thinking outside the Live session
if query_requires_deep_reasoning(transcription):
await session.send_text("Let me think about that for a moment...")
answer = await standard_gemini_call(
transcription,
thinking={"enabled": True}
)
await session.send_audio(text_to_speech(answer))
else:
# Continue in real-time mode
...
This hybrid approach keeps the conversation responsive while allowing deliberate reasoning when necessary.
4. Cost runaway on open-ended conversations
Live sessions meter all audio sent to the API, including silence and background noise. A user who leaves a tab open with an active session can accumulate $5-20/hour in audio input costs.
Mitigations:
- Implement client-side VAD to stop sending audio during silence
- Set a session timeout (e.g., 5 minutes of inactivity auto-disconnects)
- Use WebSocket ping/pong to detect abandoned connections
- Monitor per-session cost and disconnect when a threshold is exceeded
Google does not automatically disconnect idle sessions; you must implement this client-side.
What does a production-ready Gemini 3.8 Live integration look like?
A robust voice agent built on Gemini 3.8 Live includes these components beyond the basic WebSocket connection:
1. Client-side audio processing
Pre-processing pipeline:
- Voice Activity Detection (VAD) to avoid sending silence
- Acoustic Echo Cancellation (AEC) to prevent feedback loops
- Noise suppression to improve transcription accuracy
- Automatic Gain Control (AGC) to normalize volume
Most web browsers provide these via WebRTC getUserMedia constraints:
const stream = await navigator.mediaDevices.getUserMedia({
audio: {
echoCancellation: true,
noiseSuppression: true,
autoGainControl: true,
sampleRate: 16000
}
});
For server-side processing (e.g., phone integrations), use libraries like WebRTC VAD or rnnoise.
2. Session state management
Track conversation context across disconnections:
class LiveSessionManager:
def __init__(self):
self.sessions = {} # user_id -> session state
async def get_or_create_session(self, user_id):
if user_id in self.sessions:
# Restore existing conversation
return await self.restore_session(user_id)
else:
# Start new session
session = await client.start_session(...)
self.sessions[user_id] = {
"session": session,
"created_at": time.time(),
"turn_count": 0
}
return session
async def checkpoint(self, user_id):
state = self.sessions[user_id]
state["checkpoint"] = await state["session"].export_context()
# Optionally persist to database
Checkpoint every 5-10 turns or after critical exchanges to minimize context loss on disconnection.
3. Cost monitoring and circuit breakers
Track per-session costs in real-time:
class CostTracker:
def __init__(self, max_session_cost=5.0):
self.max_session_cost = max_session_cost
self.session_costs = {}
def record_audio(self, user_id, duration_seconds, direction):
rate = 0.012 if direction == "input" else 0.024
cost = (duration_seconds / 60) * rate
self.session_costs[user_id] = self.session_costs.get(user_id, 0) + cost
if self.session_costs[user_id] > self.max_session_cost:
raise CostLimitExceeded(f"Session for {user_id} exceeded ${self.max_session_cost}")
Emit metrics to your observability stack (Datadog, Prometheus) to detect cost anomalies.
4. Fallback handling
Live sessions can fail due to network issues, API errors, or model overload. Implement graceful degradation:
async def send_audio_with_fallback(session, audio_chunk):
try:
await session.send_audio(audio_chunk)
except ConnectionError:
# Fall back to standard API with external ASR
text = await whisper_transcribe(audio_chunk)
response = await standard_gemini_call(text)
return text_to_speech(response)
This ensures users receive a response even when Live mode is unavailable.
How will Gemini 3.8 Live evolve and what should developers prepare for?
Based on Google's public roadmap announcements (Google I/O 2026) and observed API evolution, expect these changes:
Near-term (Q4 2026)
- Multilingual Live support: Spanish, French, German, Japanese initially
- Video streaming improvements: Lower latency for screen sharing; current ~500ms drops to ~200ms
- On-device Live: Gemini Nano variant runs locally on Pixel and high-end Android devices, eliminating network latency entirely
- Tool calling in Live sessions: Function calls mid-conversation without breaking the audio stream
Medium-term (2027)
- WebRTC transport: UDP-based protocol reduces latency to <100ms for optimal network conditions
- Emotion-aware responses: Explicit prosody controls in output audio (adjust enthusiasm, empathy, urgency)
- Long-context Live: Support for 1M+ token conversations without checkpointing
- Multi-speaker diarization: Native handling of group conversations with per-speaker transcription
Prepare your codebase for:
-
API versioning: Pin to
gemini-3.8-live-20260901rather thanlatestto avoid breaking changes - Gradual rollout: New features appear in preview regions first; test in us-central1 before global deployment
- Cost model changes: Thinking token pricing may shift as Google optimizes the inference stack
- Deprecation of legacy patterns: Text-based Gemini APIs will remain, but voice-optimized features will increasingly require Live connections
The core WebSocket protocol is unlikely to change, but expect additional configuration options and message types. Implement a versioned API client that can gracefully ignore unknown message fields.
Conclusion: When to use Gemini 3.8 Live and Extended Thinking
Gemini 3.8 Live is the right choice when responsiveness and natural interaction are primary requirements. Build with it for:
- Customer service voice agents: Sub-200ms latency makes conversations feel human
- Phone system integrations: Interruption handling and audio-native processing eliminate ASR/TTS overhead
- Accessibility applications: Real-time transcription and voice interfaces for users with disabilities
- Collaborative tools: Screen sharing + voice for remote support or pair programming
Enable Extended Thinking selectively when:
- Task correctness is worth 8× the base cost
- User expectations allow 20-60 second deliberation time
- The problem benefits from multi-step reasoning (code generation, proofs, strategic planning)
Do not use Gemini 3.8 Live for:
- Batch processing of pre-recorded audio (standard API is cheaper)
- Multi-party conversations without separate speaker isolation
- Scenarios where text transcripts are already available (no benefit over text input)
As of September 2026, Gemini 3.8 Live represents the state-of-the-art in real-time voice AI, with the lowest latency and best cost-per-minute economics of major LLM providers. Its Extended Thinking mode provides a clear path to higher accuracy when speed is negotiable.
For developers building voice-first AI agents, starting with Gemini 3.8 Live in standard mode, then enabling Extended Thinking for specific high-stakes queries, offers the best balance of performance, cost, and user experience.
Sources
- Gemini 3.8 Audio Model Card - Official Technical Specifications and Publication Details
- Gemini Model Variants Documentation - Complete Model Family Overview
- Gemini 3.8 Live Model Specifications - Context Windows and Performance Characteristics
- Gemini 3.8 Live Extended Thinking Model Documentation - Reasoning Capabilities Specification
- Gemini Live API Overview - Real-Time Voice and Vision Interaction Architecture
- Live API Technical Capabilities - Audio Formats, Interruption Handling, and Session Features
- Live API WebSocket Implementation Guide - Connection Protocol and Bidirectional Streaming
- Live API Session Management - Duration Limits and Context Window Compression
- Live API Function Calling - Tool Integration During Real-Time Conversations
- Extended Thinking in Live API - Reasoning Mode Integration with Real-Time Sessions
- Extended Thinking Mode Documentation - Parameters, Token Tracking, and Reasoning Levels
- Gemini API Pricing - Token Rates, Audio Pricing, and Extended Thinking Costs
Originally published at fp8.co. Subscribe for weekly AI engineering analysis at fp8.co/newsletters.
Top comments (0)