Local speech recognition & synthesis

Compare local TTS models: languages, hardware and speed evidence

A larger language count or smaller model label does not tell you how quickly a job will finish on your computer. Qwen3-TTS1 derivative CUDA2 runtimes publish author-run RTX 4090/5090 measurements, but these are not a matched comparison with Kokoro or Chatterbox Multilingual V3. This guide shows how to read hardware, runtime3, request length and timing boundaries before testing your own task.

Requirements and key details
  • Kokoro documents an Apache-2.0 model card and an Apple Silicon MPS path.
  • Qwen's 97 ms is a first streaming-packet claim, not full synthesis completion time.
  • Do not transfer Chatterbox Nano's 8-core CPU claim to Multilingual V3.

Choose the output and language first

Decide whether you need narration, multilingual announcements or a voice resembling a particular speaker. Then choose a language and actual test passage. Kokoro lists eight languages, Qwen3-TTS ten and Chatterbox Multilingual V3 23+; those counts are not pronunciation-quality rankings. Listen to the same short passage with names, numbers and punctuation.

Even when your language is listed, accent or terminology may not meet your needs. Broad language coverage is different from accurate reading of a particular regional or professional script. Track “listed as supported” separately from “passed my sample.”

Compare features and documented runtimes

Kokoro is an 82M option for ordinary narration; its official README provides CPU/CUDA examples and Apple Silicon M1–M4 MPS fallback. Qwen3-TTS separates CustomVoice, VoiceDesign and Base workflows; its official quick start describes Python 3.12 and CUDA. The official quick start reviewed here does not document Qwen MPS or CPU4 paths.

Chatterbox Multilingual V3 is a 500M multilingual model; its repository's Python example selects CPU, CUDA or MPS. Those options document execution paths, not equal performance. MPS documentation can make it a candidate for Mac users, but speed and memory still need local testing.

A speaker, field recorder and microphone arranged on a wooden shelf
Separate the officially documented runtime paths for each model.

Published timing claims and missing conditions

Qwen's README says first audio may arrive in as little as 97 ms, but gives no device, input length, precision, batch or completion boundary. This is a streaming TTFA claim. Separate author-run benchmark repositories publish RTX 4090/5090 results for Qwen-derived CUDA paths; read them with the runtime and conditions shown below.

These are neither site measurements nor results from the official Qwen model team. The faster-qwen3-tts author reports CUDA-graph RTF5 4.78/4.22 and TTFA 156/174 ms for 0.6B/1.7B on an RTX 4090, but the table omits input length and repetitions.

The Triton repository's RTX 5090 results specify BF166, batch 1, two Korean/English texts, three warmups and 20 measured runs. Both repositories define RTF as actual audio duration divided by generation time, the reciprocal of the conventional RTF defined here; larger values mean faster-than-real-time output.

Both sets describe particular optimized stacks.

The Triton table separately reports initial load time: 6.0 seconds for Hybrid and 17.5 seconds for PyTorch7 Base. It does not give the actual output duration of the two test passages, so do not transfer these RTF and request times to text of another length.

A shared example clip in a demo is not necessarily generated by the selected model and is not a quality comparison. To compare output, generate the same text and speaker conditions with each model and verify the source and settings.

Author-published Qwen-derived CUDA results; not a cross-model ranking
Runtime and conditionsRequest latencyInitial model loadRepository RTF*First audio
faster-qwen3-tts · RTX 4090 · 0.6B · CUDA GraphNot reported in tableNot reported in table4.78156 ms
faster-qwen3-tts · RTX 4090 · 1.7B · CUDA GraphNot reported in tableNot reported in table4.22174 ms
Qwen3-TTS-Triton · RTX 5090 · 1.7B Hybrid · BF16 · batch 1 · KO/EN · 3 warmups + 20 runs886 ms KO / 1,042 ms EN6.0 s4.20 KO / 4.26 ENNot reported separately
Triton benchmark Base on same RTX 5090 conditions4,615 ms KO / 5,081 ms EN17.5 s0.88 KO / 0.90 ENNot reported separately

Author-published Qwen-derived CUDA results; not a cross-model ranking

faster-qwen3-tts · RTX 4090 · 0.6B · CUDA Graph

Request latency
Not reported in table
Initial model load
Not reported in table
Repository RTF*
4.78
First audio
156 ms

faster-qwen3-tts · RTX 4090 · 1.7B · CUDA Graph

Request latency
Not reported in table
Initial model load
Not reported in table
Repository RTF*
4.22
First audio
174 ms

Qwen3-TTS-Triton · RTX 5090 · 1.7B Hybrid · BF16 · batch 1 · KO/EN · 3 warmups + 20 runs

Request latency
886 ms KO / 1,042 ms EN
Initial model load
6.0 s
Repository RTF*
4.20 KO / 4.26 EN
First audio
Not reported separately

Triton benchmark Base on same RTX 5090 conditions

Request latency
4,615 ms KO / 5,081 ms EN
Initial model load
17.5 s
Repository RTF*
0.88 KO / 0.90 EN
First audio
Not reported separately
A laptop with connected headphones and a notebook on a desk by a window
Measure TTFA, synthesis completion and file writing separately.

RTF and first-audio latency answer different questions

If the finished file is A seconds long and the measured interval is T seconds, RTF is T divided by A. If elapsed time equals audio duration, RTF is 1. The reciprocal, A divided by T, is the real-time multiplier, also 1 in that example. Using the same label for both can reverse interpretation.

For interactive speech, TTFA may matter; for long-form delivery, use the final-chunk completion time. Record whether cold load, preprocessing, synthesis, vocoder/decoder, chunk joining and file writing are included. For batches, distinguish one request's latency from total throughput8.

A small comparison on your own hardware

Within the supported scope of each model, fix one language, passage, target duration and speaker type. Log exact model ID/revision, OS, CPU/GPU, Python and library versions, backend, precision, batch size9 and sample rate10. Run once from a fresh process, separate load from generation, then repeat the same task after warm-up.

Measure the saved WAV's actual duration and calculate RTF for the synthesis interval. Keep cold and warm runs11 separate and retain every run, not just the mean or fastest. Log clipping, pronunciation errors and unnatural pauses separately from speed. A speed ranking cannot stand in for quality review.

A screen comparing two audio waveforms beside headphones and colored folders
RTF is elapsed time divided by actual audio duration.

Use the test to decide what to buy

If the official docs offer no path for your OS, change the candidate hardware or model rather than guessing performance. MPS support does not imply CUDA-equivalent speed. If one path is slow, inspect logs and device use: CPU fallback, unsupported operations, audio writing or memory pressure may be involved.

The official evidence does not establish a universal speed or memory winner among these models. Once a required language, workflow and documented acceleration path are confirmed, your own RTF and quality notes can inform a purchase. Leaving an unknown field blank is safer than guessing.

Licenses and rights in reference audio

Kokoro's official model card lists Apache-2.0, and the Chatterbox repository lists MIT. Qwen's repository Apache-2.0 notice covers code; check the card for the exact checkpoint12. For distribution or commercial use, review terms for code, weights, input audio and generated speech separately.

Use reference audio only from yourself or a speaker who has authorized it. When trying a demo, start with a supplied voice; if it requires uploading reference audio, check how the file is stored and processed. Before publishing generated speech, consider whether it could be mistaken for a real person's statement and make its source and context clear.

Terminology notes

  1. Text-to-SpeechTechnology that converts text into spoken audio with pronunciation and prosody. Output characteristics depend on the model and settings.

    Back to the text
  2. CUDAA software platform for general-purpose computing on NVIDIA GPUs. Programs built for CUDA are not guaranteed to run unchanged on other GPUs.

    Back to the text
  3. RuntimeSoftware that loads model files and runs their computations. Supported formats, hardware, and optimizations vary by runtime.

    Back to the text
  4. CPUThe central processor that executes general-purpose program instructions. AI workloads may divide work between it and other processors such as GPUs.

    Back to the text
  5. Real-Time FactorGeneration time divided by the duration of the output. Under comparable conditions, a lower value indicates faster generation.

    Back to the text
  6. BF16A 16-bit floating-point format for storing and computing model values. Support depends on the hardware and runtime.

    Back to the text
  7. PyTorchA software framework for building and running AI models. Check the compatible PyTorch version and hardware support along with the model.

    Back to the text
  8. ThroughputThe amount of work processed or generated over time. Comparisons need the unit, such as tokens per second or requests per second.

    Back to the text
  9. Batch sizeThe number of inputs or requests processed together in one batch. Increasing it can affect both throughput and memory requirements.

    Back to the text
  10. Sampling rateThe number of times per second an audio signal is measured when digitized. It is distinct from bit depth.

    Back to the text
  11. Warm runA measurement made after model loading and initialization. It may exclude the loading wait from the first run.

    Back to the text
  12. CheckpointA file containing saved model weights and related state. Versions or tasks in one model family may use different checkpoints.

    Back to the text