Choosing a TTS Engine for Production

10 min read Module 4 of 9 Topic 10 of 25

What you'll learn

  • Compare ElevenLabs, Cartesia, and native model TTS on time-to-first-audio-byte, not just overall generation speed
  • Explain the expressiveness/latency tradeoff between eleven_flash_v2_5 and eleven_v3
  • Estimate the monthly cost of a TTS engine given call volume and average utterance length
  • Choose the right engine for a given product surface: outbound telephony, in-app assistant, or long-form narration
Building this at your company? For enterprise and company teams taking this to production: book a 30-minute session with our AI engineers for architecture guidance, code review, and a rollout plan for your use case.
Book a Team Session

Every earlier lesson in this course has been about getting words out of audio and words out of a language model. This lesson flips the pipeline: getting words back into audio that a human will actually listen to, judge, and decide whether to trust. The engine you pick here determines whether your agent sounds like a person mid-conversation or like a phone tree reading a script, and it sets a hard floor on how fast your whole system can respond, because no amount of clever orchestration elsewhere in the pipeline rescues a TTS call that takes 900ms just to start speaking.

The three axes that actually matter

Vendors market TTS on “quality,” but production teams need three separate, sometimes conflicting numbers: time-to-first-audio-byte (how long before the caller hears anything), expressiveness (does it sound like a person having this specific conversation, with appropriate pacing and emotional color), and cost per unit of audio produced. A model that wins on one axis routinely loses on another, and the entire skill of choosing a TTS engine is knowing which axis your product actually needs to win.

Time-to-first-audio-byte, not total generation time, is the number worth obsessing over for any live conversational surface. A caller doesn’t experience “the model finished generating 8 seconds of audio in 1.2 seconds,” they experience “how long was I sitting in silence after I stopped talking.” Streaming-first architectures return the first audio chunk before the rest of the utterance is even synthesized, and the gap between flash-tier and quality-tier models on this specific number is often 5-10x, even when total throughput is comparable.

Comparing the field

EngineModelTime-to-first-byteExpressivenessCostBest for
ElevenLabseleven_flash_v2_5~75-150msGood, controlled~$0.05-0.10 per 1K charsLive conversational agents, telephony
ElevenLabseleven_v3~400-900msExcellent, expressive, emotional tags~$0.15-0.30 per 1K charsNarration, branded voice ads, non-live content
Cartesiasonic-2~40-90msGood~$0.03-0.07 per 1K charsUltra-low-latency voice agents, embedded/edge
Native model audio (gpt-realtime, Gemini Live)bundled~200-300ms (part of end-to-end turn)Very good, contextually adaptiveBundled into per-minute session pricingFull speech-to-speech, no separate TTS call needed
Open-source (self-hosted)Kokoro-82M~150-300ms, hardware-dependentGood for an 82M-parameter model, less expressive than v3Compute cost only, no per-character feeCost-sensitive high-volume deployments, edge/on-device

These numbers move constantly as vendors ship new checkpoints, so treat this table as a way of reasoning about tradeoffs rather than a permanent scorecard. What doesn’t move is the underlying pattern: flash-tier and Cartesia’s sonic line are architected around streaming a small look-ahead window of text, producing the first phoneme’s audio before the sentence is fully known, while eleven_v3 does more work per chunk to get prosody and emotional inflection right, which necessarily costs time.

Kokoro deserves a second look for teams past the prototype stage: it’s an 82-million-parameter, Apache-2.0-licensed TTS model, small enough to run at real-time speed on a single modest GPU, and it costs nothing per character since you own the inference. It won’t match eleven_v3’s expressiveness or ElevenLabs’ voice catalog depth, but at high enough call volume the compute cost of self-hosting it can undercut every hosted option in this table, the same crossover Lesson 22 works out in dollar terms.

Language coverage and voice catalog

Beyond latency and quality, production teams in multi-market products care about two things vendors handle very differently: language coverage and voice catalog depth. ElevenLabs supports dozens of languages with reasonable quality across all of them and a large marketplace of pre-built and custom voices, which matters if your product needs a consistent brand voice across English, Spanish, and Hindi calls. Cartesia’s language coverage is narrower but its low-latency models are extremely competitive in the languages they do support, which is the right tradeoff if you’re serving a single-language, latency-critical market like US English telephony support.

import httpx

async def synthesize_flash(text: str, voice_id: str, api_key: str) -> bytes:
    """Low-latency, non-streaming synthesis for short conversational turns."""
    url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
    async with httpx.AsyncClient() as client:
        resp = await client.post(
            url,
            headers={"xi-api-key": api_key},
            json={
                "text": text,
                "model_id": "eleven_flash_v2_5",
                "voice_settings": {"stability": 0.5, "similarity_boost": 0.8},
            },
        )
        resp.raise_for_status()
        return resp.content


async def synthesize_narration(text: str, voice_id: str, api_key: str) -> bytes:
    """Higher-quality synthesis for cached, offline narration content."""
    url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
    async with httpx.AsyncClient(timeout=30.0) as client:
        resp = await client.post(
            url,
            headers={"xi-api-key": api_key},
            json={"text": text, "model_id": "eleven_v3"},
        )
        resp.raise_for_status()
        return resp.content

Making the call for your product

The decision usually collapses to one question: is a human waiting on the other end of this specific audio, right now? If yes, and the surface is a phone call or a voice agent turn, eleven_flash_v2_5 or Cartesia sonic-2 are the only reasonable defaults, because every hundred milliseconds of TTS latency is a hundred milliseconds added to a conversational turn that users perceive as awkward silence past roughly 300-500ms of accumulated delay. If the audio is generated once and served many times, eleven_v3 wins on nearly every dimension that matters, since its latency cost is paid exactly once and amortized across every future playback. Teams building fully native speech-to-speech experiences with gpt-realtime or Gemini Live skip this decision for the conversational path entirely, since audio generation is bundled into the model’s output tokens, a tradeoff we cover in depth in Module 6.

Knowledge Check

3 questions to test your understanding

1 A team is building an outbound sales dialer that needs to sound natural but must keep round-trip latency under 900ms per turn. They're currently using eleven_v3 and seeing 800-1100ms time-to-first-audio-byte on top of their LLM latency. What's the most likely fix?

2 A narrated e-learning platform needs long-form, emotionally nuanced narration for pre-recorded lessons, generated once and cached indefinitely. Which engine choice makes the most sense?

3 You're comparing vendor pricing pages and see ElevenLabs billed per character and Cartesia billed per character as well, but your actual concern is monthly cost for a voice agent handling 50,000 calls/month averaging 3 minutes each. What number do you actually need to compute a realistic estimate?

Discussion

Questions and notes from learners on this topic

Loading discussion…

Go further with expert guidance

Ready to build production AI?
Talk to our R&D team.

These courses give you the foundation. Our embedded AI teams take you from prototype to production in 30–90 days, with your team, your codebase, your goals. Book a free strategy call to see how we can accelerate your AI initiative.

30 minutes · No obligation · Expert AI engineers, not sales reps

AI Architecture Review

Audit your current stack and identify high-impact improvements

Project Review

Get expert feedback on your AI implementation and codebase

Team Mentoring

Upskill your engineers with hands-on AI coaching sessions

AI Strategy

Define your AI roadmap, prioritization, and implementation plan