Qwen3-TTS 12Hz 0.6B Base — GGUF (CrispASR)
GGUF / ggml conversions of
Qwen/Qwen3-TTS-12Hz-0.6B-Base for use with the
qwen3-tts backend in
CrispStrobe/CrispASR.
Qwen3-TTS 12Hz 0.6B Base is Qwen's multilingual voice-cloning TTS model:
- 10 supported languages:
zh en ja ko de fr ru pt es it
- discrete multi-codebook LM architecture with a separate 12 Hz tokenizer / codec
- runtime voice cloning from
(ref_audio, ref_text) or pre-baked voice-pack GGUFs
- Apache-2.0 licence
This repo contains the
talker / code-predictor / speaker-encoder model. It must be used together with the separate tokenizer / codec GGUF from
cstr/qwen3-tts-tokenizer-12hz-GGUF.
Files
| File | Size | Notes |
|---|
qwen3-tts-12hz-0.6b-base.gguf | 1.7 GB | F16, reference baseline |
qwen3-tts-12hz-0.6b-base-q8_0.gguf | 940 MB | Q8_0, recommended quantised talker |
qwen3-tts-12hz-0.6b-base-q4_k.gguf | 508 MB | Q4_K, smallest — quality regression is significant; only ship if disk space is the binding constraint (see Quantisation Notes) |
Quick Start
Build CrispASR:
1git clone https://github.com/CrispStrobe/CrispASR
2cd CrispASR
3cmake -B build -DCMAKE_BUILD_TYPE=Release
4cmake --build build -j$(nproc) --target crispasr
Download the talker + tokenizer:
1huggingface-cli download cstr/qwen3-tts-0.6b-base-GGUF \
2 qwen3-tts-12hz-0.6b-base-q8_0.gguf --local-dir .
3
4huggingface-cli download cstr/qwen3-tts-tokenizer-12hz-GGUF \
5 qwen3-tts-tokenizer-12hz.gguf --local-dir .
Voice clone from a reference WAV:
1./build/bin/crispasr \
2 --backend qwen3-tts \
3 -m qwen3-tts-12hz-0.6b-base-q8_0.gguf \
4 --codec-model qwen3-tts-tokenizer-12hz.gguf \
5 --voice clone.wav \
6 --ref-text "Exact transcript of clone.wav" \
7 --tts "Hello there" \
8 --tts-output hello.wav
Use a baked voice-pack GGUF:
1./build/bin/crispasr \
2 --backend qwen3-tts \
3 -m qwen3-tts-12hz-0.6b-base-q8_0.gguf \
4 --codec-model qwen3-tts-tokenizer-12hz.gguf \
5 --voice my-voice-pack.gguf \
6 --tts "Hello there" \
7 --tts-output hello.wav
When --voice points to a .wav, --ref-text is required. When --voice points to a .gguf, it is treated as a baked voice pack.
Quantisation Notes
Current CrispASR validation status:
qwen3-tts-12hz-0.6b-base.gguf
qwen3-tts-12hz-0.6b-base-q8_0.gguf
- recommended quantised deployment
- end-to-end synthesis is audibly good in current CrispASR testing
- intermediate activations still drift measurably from F16 in strict tensor diffs
qwen3-tts-12hz-0.6b-base-q4_k.gguf
- smallest variant; loads end-to-end
- content fidelity is significantly worse than Q8_0. In a fixed-
seed back-to-back A/B (JFK voice prompt, "Hello world, this is a
quick speed benchmark for the qwen three TTS pipeline.", 8 s
output), the F16 talker rendered the first ~5 words correctly,
Q8_0 rendered the first ~4 words, and Q4_K produced audio that
a strong ASR (Qwen3-ASR-0.6B) could not classify as English. Q4_K
may recover when given more frames (longer warmup) or longer
prompts, but for short utterances it is not a drop-in
replacement for Q8_0.
- not numerically faithful to F16 in strict tensor diffs.
- other lower-bit talker quants (
q6_k, q5_k) are similarly
experimental and not currently shipped — convert with
crispasr-quantize if you need them.
If fidelity matters more than memory:
- use
qwen3-tts-12hz-0.6b-base.gguf
- keep the companion tokenizer / codec at F16
If you want the best currently-tested size / quality trade-off:
- use
qwen3-tts-12hz-0.6b-base-q8_0.gguf
- still keep
qwen3-tts-tokenizer-12hz.gguf at F16
If disk space is the binding constraint:
- use
qwen3-tts-12hz-0.6b-base-q4_k.gguf
- still keep
qwen3-tts-tokenizer-12hz.gguf at F16 (quantising the
codec hurts earlier than quantising the talker — runtime_ref_codes
is sensitive)
How this was made
- The upstream HF safetensors checkpoint was converted to GGUF F16 by
models/convert-qwen3-tts-to-gguf.py.
- Quantised variants are produced with CrispASR's GGUF quantiser.
- Inference is implemented in
src/qwen3_tts.cpp, using ggml graphs for the talker / code-predictor path and the companion tokenizer GGUF for codec encode/decode.
Reference implementation
Architecture and behaviour were checked against the official Qwen release:
The CrispASR runtime is a clean C++ / ggml re-implementation for this repo's backend stack.
Related
License
Apache-2.0, inherited from the base model.
Provenance and EU AI Act Art. 53 note
- Upstream model: Qwen/Qwen3-TTS-12Hz-0.6B-Base — published by
Qwen.
- Upstream licence:
apache-2.0. This repository redistributes under the same terms; it grants no rights the upstream licence does not.
- What was done here: format conversion and/or quantisation only (GGUF/GGML). No training, no fine-tuning, no merging, no distillation, no change to architecture, vocabulary or capability. Only the numeric representation of the upstream weights differs.
- Training data: documented — where it is documented at all — by the upstream provider; see the upstream model card. No training data was used, added or selected by this repository.
- Provider status: under Regulation (EU) 2024/1689 the upstream authors remain the provider of this model. Converting the serialisation format does not make this repository the provider of a new general-purpose AI model, and no such claim is made. Questions about training content, copyright policy or model capability belong upstream.