Text-to-Speech in 2026: How the Models Work and Who Leads

The Serving Stack
by The Serving Stack··11 min read·
SPEECH AI · 02106 msTO THE FIRST SOUNDQWEN3-TTS, STREAMED BY VLLM-OMNI

Speech output is the other half of a voice product: the agent has to answer out loud, the article has to be read aloud, the menu has to talk. Two years ago, good open text-to-speech meant a pipeline of specialized models and a lot of tuning. Today a handful of open models sound natural, clone a voice from a few seconds of audio, and run on the same serving engines as LLMs. This piece explains how they work, measures six of them on the same machine, and maps the rest of the landscape, licenses included.

How a model speaks

Speech is a waveform: 24,000 or more numbers per second. No model predicts those numbers one by one; there are far too many. Every TTS system first predicts something more compact, then converts it to sound.

Two pipelines. Classic: text, phonemes, a mel spectrogram predicted all at once, then a vocoder that draws the waveform. Language-model TTS: text and a voice, a language model that predicts the next token, a grid of audio-codec tokens (one column per frame, a first coarse codebook and several residual ones), then a codec decoder that produces the waveform in chunks.Two pipelines. Classic: text, phonemes, a mel spectrogram predicted all at once, then a vocoder that draws the waveform. Language-model TTS: text and a voice, a language model that predicts the next token, a grid of audio-codec tokens (one column per frame, a first coarse codebook and several residual ones), then a codec decoder that produces the waveform in chunks.

The classic pipeline converts text to phonemes, predicts a mel spectrogram (the picture of sound that speech recognition reads, here produced instead of read), and hands it to a vocoder, a network trained to draw a waveform from a spectrogram. Tacotron and FastSpeech worked this way. Kokoro-82M, descended from StyleTTS 2, is the compact modern version of the idea: 82 million parameters, trained on a few hundred hours, and still one of the most downloaded TTS models.

Language-model TTS borrows everything from LLMs. A neural audio codec compresses speech into a few discrete tokens per frame, at 12 to 25 frames per second: a first codebook that captures the coarse content, and residual codebooks that add the detail of the voice. A language model then predicts those tokens the way an LLM predicts words, conditioned on the text and on a voice, either a preset or a clip to imitate. The codec's decoder turns tokens back into sound, chunk by chunk. Qwen3-TTS uses a 12 Hz tokenizer; Fish Audio S2 Pro splits the work into a 4-billion-parameter "slow" model over time and a 400-million-parameter "fast" model that fills in nine residual codebooks per frame.

Two consequences matter for serving. First, streaming comes naturally: the first frames can be decoded and played while the model is still generating the rest. Second, TTS becomes LLM serving: continuous batching, KV caches, CUDA graphs, and the roofline all apply. A 4-billion-parameter TTS model is memory-bound for the same reasons a 4-billion-parameter chatbot is.

Not every new model is autoregressive. OmniVoice generates all of an utterance's codec tokens at once and refines them over several steps, like a diffusion model; VoxCPM2 and Voxtral TTS mix autoregression with continuous, diffusion-style generation. Fewer steps can mean less time per second of audio, at the cost of streaming.

What "fast" means for speech

Three numbers describe a TTS system's speed, and they answer different questions:

  • Time to first audio: how long until the listener hears something. For a voice agent this is what users perceive as lag, on top of speech recognition and the LLM's own first token.
  • Real-time factor (RTF): generation time divided by audio length. Below 1, the model speaks faster than it can be listened to, so a stream never runs dry; above 1, playback stalls.
  • Throughput with many requests: how many seconds of audio the GPU produces per second when several requests share it. This is what decides cost.

Serving with vLLM-Omni

vLLM-Omni extends vLLM to models that produce audio, images, and video. Version 0.30.0 (September 2026) serves most of the leading open TTS models behind an OpenAI-compatible /v1/audio/speech endpoint:

$ vllm serve mistralai/Voxtral-4B-TTS-2603 --omni --port 8091
$ curl http://localhost:8091/v1/audio/speech -H "Content-Type: application/json" \
    -d '{"input": "Your table for two is ready, please follow me.", "voice": "neutral_male", "response_format": "wav"}' \
    -o table.wav

Add "stream": true, "stream_format": "audio", "response_format": "pcm" and the audio arrives as it is decoded. Models that clone voices take ref_audio (a URL or a base64 data URL) and, for most, ref_text, the transcript of the reference clip. Each model runs as a pipeline of stages described in a deploy file shipped with vLLM-Omni (for Qwen3-TTS, a "talker" that predicts codec tokens and a "code2wav" stage that decodes them, connected by shared memory), and each stage reserves its own share of GPU memory: check those shares before running on a GPU you share with anything else.

Measured: six open models, one machine

We ran five models with vLLM-Omni 0.30.0 and Kokoro with its own library on an NVIDIA GB10 (DGX Spark), 2026-10-06, on three English texts: a short sentence, a medium one with numbers, and a paragraph. Preset voices where the model has them; for the three models built around cloning, the same 7-second clip of a LibriSpeech reader. Each sample was then transcribed by Whisper as an objective check that every word was spoken.

Interactive widget: tts-samples. Open this page in a browser with JavaScript to use it.

Medium text, one request at a time. First audio: Qwen3-TTS 106 ms, Kokoro 155 ms (whole chunk), VoxCPM2 278 ms, Voxtral TTS 400 ms, Fish S2 Pro 614 ms, OmniVoice does not stream. Real-time factor: Kokoro 0.013, OmniVoice 0.26, VoxCPM2 0.31, Qwen3-TTS 0.46, Voxtral TTS 0.75, Fish S2 Pro 2.15. With 8 requests at once: Voxtral 9.5 times real time, Qwen3-TTS 7.9, OmniVoice 2.5, VoxCPM2 2.3, Fish S2 Pro 1.9.Medium text, one request at a time. First audio: Qwen3-TTS 106 ms, Kokoro 155 ms (whole chunk), VoxCPM2 278 ms, Voxtral TTS 400 ms, Fish S2 Pro 614 ms, OmniVoice does not stream. Real-time factor: Kokoro 0.013, OmniVoice 0.26, VoxCPM2 0.31, Qwen3-TTS 0.46, Voxtral TTS 0.75, Fish S2 Pro 2.15. With 8 requests at once: Voxtral 9.5 times real time, Qwen3-TTS 7.9, OmniVoice 2.5, VoxCPM2 2.3, Fish S2 Pro 1.9.

What it shows:

  1. Every model got the words right. Whisper transcribed all 18 samples word for word (the one difference, identical for all, was "31 to 28 percent" written "31% to 28%"). On clear English, intelligibility no longer separates the leaders; voice quality, prosody, and stability on hard text do. Listen, and test on your own text: numbers, names, and long passages are where models still differ.
  2. Speed spans two orders of magnitude. Kokoro produced speech 77 times faster than real time on the GPU, and 3 to 6 times faster than real time on the CPU alone. Fish S2 Pro took 2.15 seconds per second of audio, too slow to stream on this machine. Fish reports a real-time factor of 0.195 on an H200; the H200 has about 17 times the memory bandwidth of this GPU, and a 4-billion-parameter autoregressive model is bandwidth-bound, so the gap is about what the roofline predicts.
  3. First audio and throughput are separate choices. Qwen3-TTS answered first (106 ms) and batched well (7.9 seconds of audio per second with 8 requests). Voxtral TTS took 400 ms to start but produced the most audio under load (9.5). VoxCPM2, OmniVoice, and Fish gained little from batching on this setup: a single request already occupied most of what they could use.
  4. Voices differ in pace, not only timbre. The same paragraph lasted 24.9 seconds with Voxtral and 34.0 with Qwen3-TTS. A product with a time budget (a phone menu, a video) should measure duration, not only speed.

The landscape, October 2026

The six models above, and the others worth knowing, with what decides whether you can use them:

Model Lab Size Languages Voices License Serving
Kokoro-82M hexgrad 82M 8 54 presets Apache 2.0 own library, CPU-friendly
Qwen3-TTS (0.6B, 1.7B) Alibaba Qwen 0.6-1.7B 10 9 presets, cloning, voice design Apache 2.0 vLLM-Omni
VoxCPM2 OpenBMB 2B 30 cloning, voice design, 48 kHz Apache 2.0 vLLM-Omni
CosyVoice 3 Alibaba FunAudioLLM 0.5B 9 + dialects cloning Apache 2.0 vLLM-Omni
Chatterbox Multilingual V3 Resemble AI 0.5B 23 cloning MIT own library
VibeVoice-Realtime Microsoft 0.5B English (+9 experimental) 1 speaker MIT own library
AuK Tencent 1.5B not stated on the card instruction-driven generation and editing MIT vLLM-Omni
Supertonic 3 Supertone small (ONNX) 31 presets OpenRAIL on-device, ONNX Runtime
Voxtral TTS Mistral 4B 9 20 presets CC BY-NC 4.0 vLLM-Omni
Fish Audio S2 Pro Fish Audio 4.4B 80+ cloning, inline emotion tags research license, paid for commercial use vLLM-Omni, SGLang
OmniVoice k2-fsa 0.6B base 600+ cloning, voice design weights CC BY-NC vLLM-Omni
Higgs TTS 3 Boson AI 4B 100+ cloning, inline control research and non-commercial, creator grant vLLM-Omni

Sizes, languages, and licenses from each model card, 2026-10-06. Licenses change; read them before you ship.

The license column divides the table more than any benchmark. Some of the most capable models, Voxtral TTS, Fish S2 Pro, OmniVoice, and Higgs TTS 3, cannot be used commercially without a separate agreement, usually because of the training data or the bundled voices. Among permissive licenses, Qwen3-TTS, VoxCPM2, and CosyVoice 3 cover the most ground, and Kokoro remains the answer when cost and CPU deployment come first.

Closed APIs remain the reference for polish and for the lowest latency without running anything: ElevenLabs lists about 75 ms for Flash v2.5 and about 100 ms for Eleven v4 Turbo (models page), and OpenAI and Google offer speech output both as TTS endpoints and inside their realtime voice models.

How to choose

  • A voice agent: time to first audio first, then real-time factor under your expected load. Qwen3-TTS answered in about 100 ms here and batched well; Voxtral TTS sustains the most load if its non-commercial license fits. Budget the whole chain: speech recognition, the LLM's first token, and first audio add up.
  • Narration, audiobooks, video: quality and stability over long text, and duration control. Real-time factor matters only for cost.
  • High volume on a budget, or no GPU: Kokoro, which ran faster than real time on the CPU alone.
  • Your own voice or a brand voice: a model that clones (VoxCPM2, Qwen3-TTS Base, CosyVoice 3), with the consent of the person whose voice it is, and a license that allows it.
  • Many languages: check the card for your languages, then listen: "supports 80 languages" usually means a few that sound native and many that do not.

Next

NVIDIA ships its own speech stack, from recognition to synthesis, aimed at voice agents. The next piece looks at what Parakeet, Canary, Nemotron Speech, and Magpie are for, and when they beat the models covered here.

The Serving Stack
The Serving Stack

Inference engineering and AI in production — depth-first, no hype.

Inference Notes

Once a week: what changed in serving AI models, and what it means if you build, run or pay for them, in about five minutes.

Related Articles