---
title: "Step by Step guide: Build a Voice Agent That Never Goes Silent using ADK"
description: "Voice agents that block on slow tool calls produce dead air, causing users to assume the call dropped and hang up. The open-source Agent Development Kit (ADK) with gemini-3.8-live addresses this with two non-blocking patterns. Streaming tools use Python async generators that yield progress updates, enabling the agent to narrate stages like connecting, scanning records, and aggregating revenue while the task runs in the background. Background execution uses single-yield generators or FunctionTool with response_scheduling to deliver results when idle, allowing users to ask unrelated questions without cancellation, and benchmark sales-report workflows show first words appearing in 1.2 seconds instead of 14.4. Scheduling modes WHEN_IDLE, INTERRUPT, and SILENT control when the model reacts to incoming tool results, ensuring the agent remains conversational throughout complex operations, with production features for cancellation and idempotency."
---

# Step by Step guide: Build a Voice Agent That Never Goes Silent using ADK

[Google](https://yomu.fyi/company/google) · Stephen Allen, Kaz Sato · Oct 19, 2026

**Type:** Tutorial

## Summary

Voice agents that block on slow tool calls produce dead air, causing users to assume the call dropped and hang up. The open-source Agent Development Kit (ADK) with gemini-3.8-live addresses this with two non-blocking patterns. Streaming tools use Python async generators that yield progress updates, enabling the agent to narrate stages like connecting, scanning records, and aggregating revenue while the task runs in the background. Background execution uses single-yield generators or FunctionTool with response\_scheduling to deliver results when idle, allowing users to ask unrelated questions without cancellation, and benchmark sales-report workflows show first words appearing in 1.2 seconds instead of 14.4. Scheduling modes WHEN\_IDLE, INTERRUPT, and SILENT control when the model reacts to incoming tool results, ensuring the agent remains conversational throughout complex operations, with production features for cancellation and idempotency.

## Context

Traditional voice agents block on tool calls, producing dead air during long queries (e.g., 13 seconds). This silence causes users to assume the call dropped and hang up, whereas text chat can show loading spinners for the same delay.

## Approach / What changed

Using ADK’s streaming tools (async generators yielding progress updates) and background execution with single-yield generators or FunctionTool with response\_scheduling (WHEN\_IDLE, INTERRUPT, SILENT) to implement non-blocking voice agents that avoid dead air during long-running tool calls.

## Takeaways

- Switching from blocking to streaming tools in ADK reduces agent first-word latency from 14.4 seconds to 1.2 seconds in benchmark sales-report workflows.
- ADK supports three response\_scheduling behaviors: WHEN\_IDLE waits for a natural pause, INTERRUPT cuts into current speech, and SILENT stores results silently in conversation history.
- User barge-in does not cancel running streaming tools; to explicitly stop a tool, the model must call the built-in stop\_streaming function.

## FAQ

### How do streaming tools avoid dead air?

Streaming tools use async generators that yield progress updates at each stage. The agent can narrate updates like 'Connecting to warehouse...' while the query continues in the background, keeping the conversation alive.

### What scheduling modes are available?

Three modes: WHEN\_IDLE delivers tool results at the next natural pause, INTERRUPT cuts off current speech mid-sentence, and SILENT adds the result to conversation history without announcement.

### Can streaming and scheduling be combined?

Yes. response\_scheduling can be set on a streaming tool to stamp every partial update, or per-update scheduling can be set dynamically by yielding FunctionResponse objects.

**Tags:** [Agent Development Kit](https://yomu.fyi/topic/agent-development-kit), [AI Agents](https://yomu.fyi/topic/ai-agents), [Streaming](https://yomu.fyi/topic/streaming), [Voice AI](https://yomu.fyi/topic/voice-ai)

- Source: [Google](https://developers.googleblog.com/step-by-step-guide-build-a-voice-agent-that-never-goes-silent-using-adk)
- Source URL: https://developers.googleblog.com/step-by-step-guide-build-a-voice-agent-that-never-goes-silent-using-adk
- Ingested by Yomu: 2026-10-19T18:00:19.318Z

[Read original post](https://developers.googleblog.com/step-by-step-guide-build-a-voice-agent-that-never-goes-silent-using-adk)
