Qwen3-TTS-12Hz-0.6B-CustomVoice GGUF for speech.cpp
These files run only in speech.cpp 0.7.0 or later, and the Q6_K, Q5_K and Q4_K files in 0.8.0 or later. Their layout is speech.cpp's own, so llama.cpp, LM Studio, Ollama and other programs that read GGUF cannot run them.
It holds Qwen's Qwen3-TTS 12Hz 0.6B CustomVoice and its codec's decoder in one file. It speaks ten languages with nine named speakers, and passes its audio a few frames at a time as it makes it, so that a player can start on the first chunk.
Use
Install speech.cpp (install), then:
speech tts qwen3-tts-0.6b --voice ono_anna --language ja -o out.wav "明日の東京は晴れです。"
speech tts qwen3-tts-0.6b:q4_k --voice ryan -o out.wav "It will be sunny in Tokyo tomorrow."
speech serve qwen3-tts-0.6b --open
qwen3-tts-0.6b is the name speech.cpp gives this model; speech fetches the Q8_0 file from this repository the first time, and qwen3-tts-0.6b:q4_k or another type of the table below fetches that type instead. A path to a downloaded file works as well. The options, the worker and the HTTP API are in speech.cpp's documentation: Qwen3-TTS, command line and server.
Files
| File | Contents | Size | speech.cpp from | SHA-256 |
|---|---|---|---|---|
Qwen3-TTS-12Hz-0.6B-CustomVoice-Q8_0.gguf (the file the name fetches) |
the talker, the code predictor, the text embedding and the tokenizer in Q8_0, and the 12Hz codec's decoder in F16 | 1.21 GB (1,213,534,464 bytes) | 0.7.0 | f606ea3981aa42762b16db9a94826d2d560eb60f0b102001618f40d5a2f78cc6 |
Qwen3-TTS-12Hz-0.6B-CustomVoice-Q6_K.gguf |
the talker, the code predictor, the text embedding and the tokenizer in Q6_K, and the 12Hz codec's decoder in F16 | 0.99 GB (994,183,424 bytes) | 0.8.0 | 417a2e42aaa992cc1d3eb8aad48fe5bafa78af0c3eaeccc0d8c068a20d4045c5 |
Qwen3-TTS-12Hz-0.6B-CustomVoice-Q5_K.gguf |
the talker, the code predictor, the text embedding and the tokenizer in Q5_K, and the 12Hz codec's decoder in F16 | 0.87 GB (873,894,144 bytes) | 0.8.0 | 4bb9ba9e822ab614798c416c7f0187994f349be41221966fa911aca24f237930 |
Qwen3-TTS-12Hz-0.6B-CustomVoice-Q4_K.gguf |
the talker, the code predictor, the text embedding and the tokenizer in Q4_K, and the 12Hz codec's decoder in F16 | 0.76 GB (760,680,704 bytes) | 0.8.0 | 67cbe04239d079d3e3649a054258b8cf1553a99a03cc5b38d57350c6905e4cbd |
Qwen3-TTS-12Hz-0.6B-CustomVoice-Q8_0.gguf.json |
the output of speech info --json for the Q8_0 file |
2,929 bytes | e7eddb47cf6a666c4b7dd0b65074e470b8f4382bf8ea85b8dd20ef1c7b4ae670 |
|
Qwen3-TTS-12Hz-0.6B-CustomVoice-Q6_K.gguf.json |
the output of speech info --json for the Q6_K file |
2,927 bytes | 93fc8163b4d9e7edc9b2021d5e2b58e9c1fee20604d7af0b99b73a458991d26c |
|
Qwen3-TTS-12Hz-0.6B-CustomVoice-Q5_K.gguf.json |
the output of speech info --json for the Q5_K file |
2,927 bytes | 6b87ce4ceb58bec305b08c00fac5f9b59703a4bdc035e2d5be3fbbb15248728c |
|
Qwen3-TTS-12Hz-0.6B-CustomVoice-Q4_K.gguf.json |
the output of speech info --json for the Q4_K file |
2,927 bytes | dfab26def153b2d6f16316c7c6b276ec02b7b90de32cdeed61d68cbd487b75e5 |
On Vulkan, the Q5_K and Q4_K files need speech.cpp 0.8.4 or later: earlier releases compute them to no finite logit there. A request needs the GGUF file alone; the JSON file lets a program show the model or choose a file without downloading it.
Speakers and languages
| Speaker | Language | Gender | Description |
|---|---|---|---|
aiden |
en |
male | Sunny American male voice. |
dylan |
zh |
male | Youthful Beijing male voice. |
eric |
zh |
male | Lively Chengdu male voice. |
ono_anna |
ja |
female | Playful Japanese female voice. |
ryan |
en |
male | Dynamic male voice with rhythm. |
serena |
zh |
female | Warm, gentle young female voice. |
sohee |
ko |
female | Warm Korean female voice. |
uncle_fu |
zh |
male | Seasoned male voice, mellow timbre. |
vivian |
zh |
female | Bright young female voice. |
The model speaks de, en, es, fr, it, ja, ko, pt, ru and zh, and the language a request gives steers it.
Accuracy
Every stage is checked against the official implementation's tensors:
| Check | Result |
|---|---|
| Codec decoder, CPU, F32 | 114 dB SNR from the official decoder |
| Codec decoder in a synthesis's chunks against the whole utterance | 132 dB SNR in F32 on the CPU, 64 dB with a Q8_0 file on Metal |
| Talker and code predictor, F32, CPU and Metal | the official choice on every frame; greedy decoding gives the official frames |
| Tokenizer | the official tokens on 27 texts, and the official text of 1191 sequences of ids |
Each type, measured by speech-bench on 2026-10-12 on an Apple M5 with Metal, on the 20 sentences of speech-bench's prompts/speak-ja-JP.json spoken with seeds 1, 2 and 3 with the speaker ono_anna, and heard by Qwen3-ASR 1.7B in Q8_0: the CER over the 60 takes. The memory is the peak memory footprint of speech for one request. The CER of one type moves by a few points from seed to seed, so only a larger difference tells two types apart.
| Type | Size | Memory | CER as heard |
|---|---|---|---|
| Q8_0 | 1.21 GB | 1.37 GB | 6.14% |
| Q6_K | 0.99 GB | 1.15 GB | 6.03% |
| Q5_K | 0.87 GB | 1.03 GB | 7.35% |
| Q4_K | 0.76 GB | 0.92 GB | 13.60% |
Speed
speech-bench on 2026-10-08: the 20 sentences of its prompts/speak-ja-JP.json with the speaker ono_anna, one request at a time through the worker, Q8_0.
| Device | Median first audio | p90 first audio | Real-time factor |
|---|---|---|---|
| Apple M5, Metal | 0.038 s | 0.054 s | 0.31 |
| RTX 2080, Vulkan | 0.031 s | 0.039 s | 0.27 |
The first audio is the first chunk. The 0.6B model often begins its speech with silence, as the official implementation does, so the voice is heard later: on the M5, half a second after the request in the median.
Source
Converted by speech.cpp's reference/qwen3-tts/convert.py 0.6b, whose environment pins the official code at QwenLM/Qwen3-TTS@022e286, from Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice at 85e237c12c027371202489a0ec509ded67b5e4b5, to F32, from which speech quantize --type <type> wrote each file. Every constant the C++ reads is in the file, from the checkpoint or, where it has none, from the official code.
The 1.7B model, which also follows an instruction of how to speak, is qwen3-tts-1.7b in sakasegawa/Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF.
License
The weights are the Qwen team's, under the Apache License 2.0, as the official checkpoint is. See Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice for the model and its terms. These files change the format of the weights and quantize them; they do not retrain them.