← Back to blog

AI · 7 min ·

Building Voice Agents at Scale

Why low latency, smart orchestration, and good architecture matter more than the model itself.


Table of Contents

  1. Introduction

  2. Why Voice Agents Are Different

  3. Two Ways to Build Voice Agents

  4. Comparing Both Approaches

  5. Choosing the Right Architecture for Different Businesses

  6. Designing Voice Agents for Thousands of Users

  7. The Triage Architecture Pattern

  8. How to Handle Slow Tool Calls

  9. Smart Tool Calling

  10. Local Models vs API Models

  11. Model Colocation: An Underrated Optimization

  12. Observability, Evals, and Guardrails

  13. Production Metrics That Matter

  14. Final Thoughts


Introduction

Over the last few months, I've spent a lot of time researching voice agents and trying to understand what separates a simple demo from a production-grade system.

At first glance, voice AI looks straightforward:

User speaks → AI thinks → AI replies.

But once you start building real systems, you quickly realize that voice agents are fundamentally a latency problem disguised as an AI problem.

Users don't care how smart your model is if it pauses for three seconds after every sentence.

The challenge isn't just intelligence.

It's:

  • Speed
  • Natural conversation
  • Interruptions
  • Tool calls
  • Reliability
  • Scalability
  • Cost

After studying different systems and architectures, I found that almost every production voice application falls into one of two categories.


Why Voice Agents Are Different

Text users are patient.

Voice users are not.

When using ChatGPT through text, waiting 5 seconds for an answer feels acceptable.

But in voice conversations, even a one-second pause feels strange.

Humans naturally expect:

  • Immediate acknowledgement
  • Smooth turn-taking
  • Interruptions
  • Emotional tone
  • Continuous flow

Because of this, voice systems have very different constraints compared to text agents.

For voice agents:

Latency is part of the product.


Two Ways to Build Voice Agents

Today, there are two dominant architectures.


1. Chained Architecture (STT → LLM → TTS)

This is the classic approach.

Chained voice agent pipeline: user audio passes through a speech-to-text model into a text-based agent that makes function, search and handoff tool calls, then out through a text-to-speech model as agent audio

Each component does one job:

STT

Converts speech into text.

Examples:

  • Whisper
  • Deepgram
  • AssemblyAI

LLM

Understands the request and decides what to do.

Examples:

  • GPT-4o
  • Gemini
  • Claude
  • Qwen

TTS

Converts text back into audio.

Examples:

  • ElevenLabs
  • Cartesia
  • OpenAI TTS

Advantages

  • Easy to debug. Every stage is separate, so failures are easy to inspect.
  • Vendor flexibility. Swap STT, LLM, or TTS providers independently.
  • Better auditability. Everything becomes text internally, so logs and transcripts are simple.
  • Enterprise-friendly. Healthcare, finance, and legal teams usually prefer this.

Disadvantages

  • Latency adds up. STT, LLM, and TTS each add a network call, and the system waits for each stage before starting the next.
  • More moving parts. More services means more failures and more monitoring.
  • Less natural conversation. Turn-taking feels stiff when every turn is a full round trip.

2. Speech-to-Speech Models

Instead of separate systems, one realtime model handles everything.

Speech-to-speech voice agent: user audio goes directly into a single speech-to-speech model that makes function, search and handoff tool calls and returns agent audio, with no separate transcription or synthesis stage

There's no explicit transcription or TTS stage. The model listens, reasons, and speaks inside a single session.

Advantages

  • Lower latency. Fewer network hops.
  • More human conversations. Speech flows naturally.
  • Better interruptions. Users can cut the assistant off mid-sentence.
  • Simpler architecture. Much less glue code.

Disadvantages

  • Harder to debug. You lose the intermediate text layer.
  • Less transparent. Understanding why something failed gets harder.
  • All-in on one model. Quality depends entirely on the realtime model.

Comparing Both Approaches

| Factor | Chained Pipeline | Speech-to-Speech | | -------------------- | ---------------- | ---------------- | | Latency | Medium | Low | | Flexibility | Excellent | Moderate | | Debugging | Easy | Hard | | Natural Feel | Good | Excellent | | Compliance | Excellent | Moderate | | Interruptions | Difficult | Excellent | | Complexity | Higher | Lower | | Enterprise Use Cases | Strong | Medium | | Consumer Apps | Medium | Excellent |


Choosing the Right Architecture for Different Businesses

Different products optimize for different things.

Consumer Apps

AI companions, tutors, customer support, travel assistants.

These optimize for natural speech, fast response, and emotional tone — so speech-to-speech usually wins.

Regulated Industries

Clinical assistants, healthcare documentation, financial services.

These optimize for accuracy, auditability, and compliance. You need a transcript of what was said and why the system acted, which is exactly what the chained pipeline gives you for free.


Designing Voice Agents for Thousands of Users

Many people assume:

One giant agent handles everything.

In reality, that's usually a bad design.

The best systems separate:

  • Conversation
  • Routing
  • Tool execution
  • Heavy reasoning

The Triage Architecture Pattern

Instead of using one huge agent, use a lightweight front agent.

Triage architecture: user audio streams to a fast frontline agent on a realtime API, which dispatches tool calls to specialized text agents — a refund agent, an order cancellation agent, and a product expert agent

The frontline agent handles conversation and routing only. Behind it sits whatever set of specialists your domain needs:

  • Search agent
  • Calendar agent
  • CRM agent
  • Memory agent
  • Medical agent
  • Knowledge agent

The voice model stays fast.

Heavy work happens elsewhere.

Think of the voice agent as the receptionist.

Specialized agents are the experts.


How to Handle Slow Tool Calls

One of the worst experiences in voice AI is silence.

Imagine asking:

"Can you compare all flights to Tokyo next month?"

If the system freezes for five seconds, users think it crashed.

Instead, buy yourself time.

Examples:

  • "Let me check that for you."
  • "Give me a second while I look that up."
  • "I'm pulling that information right now."

These small phrases dramatically improve user experience.

The voice model stays responsive while heavier models work in the background.


Smart Tool Calling

Bad architecture:

Voice Model
    ↓
Tool A
    ↓
Wait
    ↓
Tool B
    ↓
Wait
    ↓
Tool C

Everything becomes slow.

Better architecture:

Voice Model
      ↓
Parallel Execution
 ├── Tool A
 ├── Tool B
 └── Tool C

Since many tools are independent, running them simultaneously reduces latency significantly. Three sequential calls of 1s, 2s, and 3s cost you six seconds. Run them in parallel and you pay max(A, B, C) — three seconds.

In text, that's a nice optimization. In voice, it's the difference between a conversation and a hold queue.


Local Models vs API Models

This is one of the biggest tradeoffs.

API models give you better intelligence, faster iteration, and no infrastructure to run — at the cost of network latency and per-call spend.

Local models give you lower latency, privacy, and offline support — at the cost of GPUs and the operational work that comes with them.

A Hybrid Strategy Works Best

Use local models for:

  • Intent classification
  • Routing
  • Sentiment analysis

Use API models for:

  • Complex reasoning
  • Knowledge retrieval
  • Long conversations

The same logic applies within a single request: start small, escalate to a medium model when the small one isn't confident, and reach for your most expensive model only when the task actually demands it. Not every "what time is my meeting" needs frontier reasoning.


Model Colocation: An Underrated Optimization

Many people focus only on model size.

But network latency often matters more.

Imagine:

STT → US-East
LLM → Europe
TTS → Asia

Even fast models become slow.

A better design:

STT
LLM
TTS

(all inside the same region)

Benefits:

  • Fewer network hops
  • Faster responses
  • Lower overall latency

Sometimes colocating models saves more time than upgrading hardware.


Observability, Evals, and Guardrails

Production AI systems require visibility.

Track:

  • Latency — response time, tool execution time
  • Quality — hallucination rate, task completion rate
  • Reliability — failure rate, retry rate
  • User experience — conversation success, escalations

Guardrails

Protect against:

  • Unsafe actions
  • Wrong tool usage
  • Sensitive data leaks

Guardrails matter even more in healthcare and finance.


Production Metrics That Matter

Good voice systems aim for:

| Metric | Target | | ------------------------- | ------------- | | First acknowledgement | < 300 ms | | First spoken response | < 800 ms | | Full response | 1–2 seconds | | Tool calls | < 500 ms | | Conversation success rate | Above 95% |


Final Thoughts

After researching many architectures, one thing became clear:

Voice agents are not won by the smartest model.

They're won by:

  • Lower latency
  • Better orchestration
  • Good observability
  • Proper guardrails
  • Smart tool execution

The future of voice AI probably isn't one giant model doing everything.

Instead, it will look more like a team:

  • One fast conversational layer.
  • Multiple specialized agents.
  • Parallel tools.
  • Heavy reasoning only when necessary.

Because in voice AI, users don't experience your architecture.

They experience the pauses.