Local speech recognition & synthesis
Make speech on your own computer: a local TTS guide
The right model depends on whether you need narration, multilingual announcements or a voice resembling a particular speaker. A language appearing in a support list does not guarantee equal pronunciation or prosody. This guide moves from task definition to model and backend selection, then a short local test. LLM1 tokens2 per second on this site cannot be converted into speech-generation speed.
Define the voice job in one sentence
Start with the listener and deliverable. A brief such as “read a Korean lesson script in a consistent voice and save it as WAV” clarifies language, file type and style. A short announcement differs from a long manuscript: for long text, check how to split and join sentences and whether sections can be regenerated independently.
Also decide whether you need a voice match or a supplied speaker is enough. For ordinary narration, begin with a path that does not require reference audio. If you use voice imitation, use only your own recording or audio you are explicitly authorized to use. For an initial comparison, start with a speaker supplied with the model.

Check pronunciation, not just the language list
Qwen3-TTS3 lists ten languages, Kokoro's card lists eight, and Chatterbox Multilingual V3 advertises 23+. These counts describe coverage, not equal pronunciation of accents, names or numbers. Kokoro's own voice notes caution that non-English training and pronunciation support may be uneven.
Use a short test passage that includes a familiar place, product name and date. If pronunciation is wrong, try punctuation or spelling variants while keeping a copy of the original. Log intelligibility, accuracy and voice preference separately so a language badge does not decide for you.
Narrow the model by workflow
For straightforward narration in Kokoro's listed languages—such as English, Japanese or Chinese—its 82M model is a compact option to try. Its official list does not include Korean.
For Korean, consider Qwen3-TTS CustomVoice with the Sohee speaker; for multilingual work that needs reference-voice matching, consider Chatterbox Multilingual V3. Qwen's VoiceDesign workflow is listed only for the 1.7B checkpoint4.
For the first test, use a supplied speaker rather than cloning a voice; this keeps the comparison simple. Once a candidate fits, try a workload closer to production: a longer passage, multiple files or an editable output. A small test can quickly rule out unsuitable voices or pronunciation.
Match the runtime to your operating system
On Windows or Linux with an NVIDIA GPU5, follow the checkpoint's CUDA6 and precision requirements. Qwen3-TTS's official Python quick start uses Python 3.12; its CUDA example shows BF167 and optional FlashAttention8 2. That documents a CUDA path, not a speed chart for every GPU. Check compatibility before installing FlashAttention.
On Apple Silicon, Kokoro's official PyTorch9 route documents MPS fallback. If you prefer a separate MLX10 runtime11, MLX-Audio lists converted Kokoro, Qwen3-TTS and Chatterbox models.
These are community MLX distributions, not the upstream model/runtime combination, so check both runtime and converted checkpoint. Below is the documented MLX-Audio CLI12 form for Qwen with a supplied Korean voice.
pip install mlx-audio
mlx_audio.tts.generate --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit --text '안녕하세요.' --voice Sohee --lang_code Korean
Start with a short request
Before downloading weights, confirm the official Python version, package and checkpoint ID. Qwen3-TTS's demo accepts an IP option; for a local UI, bind only to loopback at 127.0.0.1 rather than a public interface. Kokoro and Chatterbox provide Python-library examples that can be tested in a script without opening a network port.
When it runs, synthesize and play one short passage. Change language, speaker, output format and save path one at a time so errors are diagnosable. If text is cut off or the ending is missing, inspect token limits, chunking, sample rate13 and actual file duration before trying a longer request. One playable result does not prove long-job stability.
Judge speed and quality on your own task
With the same text and speaker, record model loading, warm synthesis and file-write completion separately. Measure the audio and calculate RTF14 (elapsed time divided by actual audio duration); do not confuse it with the reciprocal real-time multiplier. Keep first-audio time in its own field. Full completion may matter for narration, while TTFA may matter for conversation.
Also note pronunciation accuracy, intelligibility and style fit separately. Rather than selecting a universal “best voice” from one score, ask how many corrections your script needs and whether the output fits delivery. Qwen's 97ms README claim concerns a first streaming packet, not completion of a full script. This site has not measured these models.

Terminology notes
Large language model — A language model trained on large text datasets to process and generate text. Capabilities and supported inputs vary by model.
Back to the textToken — A unit into which a model divides input or output for processing. One token does not equal one character or a fixed duration.
Back to the textText-to-Speech — Technology that converts text into spoken audio with pronunciation and prosody. Output characteristics depend on the model and settings.
Back to the textCheckpoint — A file containing saved model weights and related state. Versions or tasks in one model family may use different checkpoints.
Back to the textGPU — A processor designed to handle many calculations in parallel. It performs model computations during AI inference.
Back to the textCUDA — A 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 textBF16 — A 16-bit floating-point format for storing and computing model values. Support depends on the hardware and runtime.
Back to the textFlashAttention — An implementation that improves memory access in attention computation. Availability and effects depend on hardware, model, and runtime.
Back to the textPyTorch — A software framework for building and running AI models. Check the compatible PyTorch version and hardware support along with the model.
Back to the textMLX — A machine-learning framework for Apple silicon. It uses Apple silicon’s unified-memory architecture; supported models and features vary by MLX tool.
Back to the textRuntime — Software that loads model files and runs their computations. Supported formats, hardware, and optimizations vary by runtime.
Back to the textCLI — Short for Command-Line Interface: operating a program by entering commands in a terminal.
Back to the textSampling rate — The number of times per second an audio signal is measured when digitized. It is distinct from bit depth.
Back to the textReal-Time Factor — Generation time divided by the duration of the output. Under comparable conditions, a lower value indicates faster generation.
Back to the text