The Local
TTS Shootout

Five free, open-weight text-to-speech models, head-to-head on one MacBook — including the 8-billion-parameter MisoTTS that shipped eight days before this test. No cloud, no API keys, no per-character bills.
5models
20samples
~18 GBof weights
0.09–4.4×real-time factor
$0marginal cost
ON AIR
THE EPISODE · 6 MIN · AI-NARRATED, WITH LIVE SAMPLES FROM ALL FIVE MODELS
SHOWCASE · THE WINNER NARRATES
SAME EPISODE, 7 MIN — EVERY WORD OF NARRATION GENERATED BY MISOTTS 8B ON THIS MACBOOK

The rank-one model reads its own victory speech — the most honest demo possible: ~6 minutes of continuous, unedited MisoTTS narration.

№ 01The Voices

Every model reads the same four passages: a casual conversational line, an exclamation-heavy expressive piece, a numbers-and-dates gauntlet ("$24.99 to $9.50 per million characters"), and a 90-word long-form narration that punishes models with weak pacing. All clips are loudness-normalized to −18 LUFS so your ears judge timbre and prosody, not gain. Ranking is my read of the evidence — arena Elo data, expressiveness, license, speed. Your ears get the final vote.

RANK 01

MisoTTS 8B — "Miso One"

Miso Labs · 8B params, 8-bit MLX · Modified MIT · RTF ~2.3 · 12 GB

The model you half-remembered as "miso labs" — released June 4, 2026, eight days before this test. A Sesame-CSM-style architecture: a 7.7B Llama-style backbone predicting Mimi audio codes, built specifically to emote. The delivery has breath, hesitation, and dynamics the others can't match. The cost: a 12 GB download and ~2.3× slower than real-time.

conversational
expressive
technical · numbers & dates
long-form · 90 words
RANK 02

Kokoro 82M

hexgrad · 82M params · Apache 2.0 · RTF ~0.1 · 0.3 GB

The efficiency king. One hundred times smaller than MisoTTS, it generates ten times faster than real-time on the M5 and still out-scores Chatterbox, Dia, and F5 on blind-vote arena Elo (~1056). Clean, broadcast-neutral American English voices. No cloning, preset voices only — but if voice af_heart works for you, this is the practical winner.

conversational
expressive
technical · numbers & dates
long-form · 90 words
RANK 03

Chatterbox

Resemble AI · ~500M params, fp16 MLX · MIT · RTF ~1.0 · 1.5 GB

The production workhorse. Resemble AI's open release runs at exactly real-time on this Mac, clones voices from a few seconds of reference audio, and exposes an emotion-exaggeration dial. Blind-arena Elo sits below Kokoro (~1006), but the delivery is warmer and it's the only MIT-licensed option here with cloning.

conversational
expressive
technical · numbers & dates
long-form · 90 words
RANK 04

F5-TTS

SWivid · 336M flow-matching, MLX port · code MIT, weights CC-BY-NC · RTF ~2.5 · 1.5 GB

The voice-cloning specialist: give it ten seconds of anyone and it speaks in their voice. These samples use its built-in reference speaker. Two catches: it runs ~2.5× slower than real-time, and the weights are non-commercial (trained on the Emilia dataset) — fine for personal projects, a no-go for products.

conversational
expressive
technical · numbers & dates
long-form · 90 words
RANK 05

Dia 1.6B

Nari Labs · 1.6B params, fp16 MLX · Apache 2.0 · RTF ~4.4 · 3.2 GB

The dialogue specialist, miscast as a narrator. Dia shines at two-speaker banter with non-verbals — (laughs), (coughs) — but single-speaker narration is not its lane: listen to the long-form clip, where it compressed 40 seconds of text into 19.6 seconds and bailed early. Keep it in mind for podcast-style dialogue; skip it for narration.

conversational
expressive
technical · numbers & dates
long-form · truncated!

№ 02The Eval Report

Protocol

Each model read the same four passages, chosen to stress different failure modes: conversational (casual register, 27 words), expressive (exclamations, an ellipsis, repeated emphasis — 31 words), technical (dates, dollar amounts, decimals, an acronym — 36 words), and long-form (a 90-word narration testing pacing and end-of-speech discipline). One run per passage per model, no cherry-picking: the first completed generation is the published sample.

Conditions held constant: same Apple M5 / 32 GB machine, no other GPU load, machine kept awake with caffeinate, every model on its default/recommended preset voice (Kokoro af_heart, F5's built-in reference; MisoTTS, Chatterbox, and Dia on their defaults) at out-of-the-box settings. Dia received its required [S1] speaker tag. Wall-clock time was recorded per clip from inside each driver; real-time factor is generation seconds divided by seconds of audio produced — below 1.0 means faster than playback. Raw WAVs were timed and archived; only the published MP3s are loudness-normalized (−18 LUFS).

Quantitative findings

Measured real-time factor per passage (lower is better):

passagemisottskokorochatterboxf5-ttsdia
conversational2.360.23¹1.002.484.48
expressive2.270.100.903.424.26
technical2.230.090.922.644.25
long-form2.260.091.031.604.40

¹ first call includes pipeline warm-up; Kokoro's steady state is ~0.09–0.10.

Three quantitative signals beyond speed:

Qualitative findings

modelnaturalnessnumbers & dateslong-formsignature flaw
misottsmost human: breath, hesitation, dynamicscleanstable, unhurriedgain wobble; slow + heavy
kokoroclean but broadcast-flatflawless (G2P front end)metronome-stablelimited emotional range
chatterboxwarm, slightly compressed timbregoodcomplete, briskless headroom on exclamations
f5-ttsstrong cloning fidelity, soft attackoccasional rushed digitsstableslow; NC license caps its use
dialively, dialogue-nativeadequatetruncatestreats narration as optional

Limits of this eval

Read the findings with their boundaries: one preset voice per model (cloning-capable models were not tested on cloned voices), one generation per passage (no seed averaging), no word-error rate scoring, and no human listening panel — the ranking triangulates measured speed and stability with public blind-vote arena Elo (Kokoro ~1056, Chatterbox ~1006, vs xAI cloud ~1197), and those arena figures are single-sourced because the verification stage of the research run was rate-limited. MisoTTS is too new to appear in arena data at all; its rank-one position here rests on direct listening against the others, which is exactly what the players above let you re-do yourself.


№ 03The Models

The field splits into three architectural camps. Kokoro is a classical parametric pipeline — grapheme-to-phoneme front end feeding a small StyleTTS2-derived decoder — which is why 82M parameters punch so far above their weight and why it never mispronounces a date. MisoTTS and Dia are autoregressive LLM-style token models: a language-model backbone predicts discrete audio codec tokens, which buys expressiveness and costs speed plus occasional discipline problems (Dia's early end-of-speech). F5-TTS is flow-matching diffusion — iterative denoising, great cloning fidelity, inherently slow. Chatterbox sits in between: token-based but distilled and tight.

Why not the others? Fish Audio S2 Pro tops the open-weights arena (Elo ~1118) but wants a serious GPU. XTTS-v2 is two generations stale (Elo ~886) and non-commercially licensed. Orpheus and Maya1 are CUDA-first with no maintained MLX port at test time. Cloud reference: blind-arena data puts xAI's TTS (the service this exercise replaces) around Elo 1197 — the gap to the best local options is real but has collapsed from "obvious" to "minutes-of-listening" in about a year.

specmisottskokorochatterboxf5-ttsdia
params8B (8-bit)82M~500M336M1.6B
architectureAR token (CSM)StyleTTS2-classAR tokenflow matchingAR token
licenseMIT-mod¹Apache 2.0MITCC-BY-NC²Apache 2.0
download12 GB0.3 GB1.5 GB1.5 GB3.2 GB
RTF on M5³~2.3~0.1~1.0~2.5~4.4
voice cloningvoice continuation✓ few seconds✓ ~10 saudio prompt
long-formsolid, 46 ssolid, 40 ssolid, 32 ssolid, 37 struncates, 20 s
runtimemlx-audiokokoro (PyTorch)mlx-audiof5-tts-mlxmlx-audio

¹ free; requires "Miso Labs" UI credit only above 50M MAU or $10M monthly revenue.  ² weights non-commercial (Emilia dataset); code is MIT.  ³ real-time factor: generation seconds per second of audio, lower is better, measured on an Apple M5 / 32 GB with the machine awake (see Field Notes).


№ 04The Pipeline

Every model lives in its own throwaway uv virtualenv — these stacks have mutually hostile dependency trees, and isolation is cheaper than debugging them. Three runtimes cover all five models; mlx-audio alone covers three of them on Apple Silicon.

# 1 · one venv per model family
uv venv envs/mlx --python 3.12
uv pip install --python envs/mlx/bin/python mlx-audio soundfile

# 2 · same four passages through every model (mlx-audio family)
envs/mlx/bin/python eval/gen_mlx.py mlx-community/MisoLabs-MisoTTS-8bit misotts
envs/mlx/bin/python eval/gen_mlx.py mlx-community/chatterbox-fp16        chatterbox
envs/mlx/bin/python eval/gen_mlx.py mlx-community/Dia-1.6B-fp16          dia --dia-tags

# 3 · the two non-mlx-audio stacks
envs/kokoro/bin/python eval/gen_kokoro.py     # kokoro + misaki, PyTorch/MPS
envs/f5/bin/python     eval/gen_f5.py         # f5-tts-mlx

# 4 · fair-listening pass: loudness-normalize every clip to -18 LUFS
ffmpeg -i in.wav -af "loudnorm=I=-18:TP=-1.5:LRA=11" -b:a 192k out.mp3

# 5 · keep the Mac honest during overnight runs
caffeinate -dims

Each run records wall-clock per clip into timings.json — the RTF numbers in the table come straight from those files, not from papers.


№ 05For PMs

Cost structure flips at zero.

Cloud TTS bills per character; a local model bills once in disk space. For an app speaking a million characters a month, the difference is a recurring four-figure annual line item versus a one-time 12 GB download. The catch is floor quality: you're shipping last year's cloud voice, not this year's.

Latency is now a locality question.

Kokoro starts speaking in well under a second on a laptop — faster than most API round-trips. For voice UI, "local" beats "better" whenever the better voice is 400 ms of network away.

The quality envelope collapsed this year.

Blind-arena spread between xAI's cloud TTS and the best free local model is now ~80–140 Elo — audible side-by-side, invisible in isolation for most content. MisoTTS shipped days before this test; the envelope is still shrinking.

Licenses are the real differentiator.

Four of five models here are genuinely commercial-safe. The trap is the plausible-looking exception: F5's code is MIT but its weights are non-commercial. Audit the weights license, not the repo badge.

Small models are distribution-grade.

Kokoro is 300 MB and Apache-licensed — small enough to embed inside an app binary or run in the browser via WebGPU. "TTS as a bundled asset" is now a real product shape.


№ 06Field Notes