Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice for use with CrispStrobe/CrispASR.cstr/qwen3-tts-0.6b-customvoice-GGUF. Same fixed-speaker pattern (9 baked speakers, no ECAPA, no reference WAV), but on the 1.7B talker — hidden=2048, head_dim=128, with a small_to_mtp_projection MLP that maps the 2048-d talker hidden state down to the 1024-d code predictor input space.| Speaker | Language / dialect |
|---|---|
aiden (default) | English (M) |
dylan | Beijing dialect (M, dialect_token=2074) |
eric | Sichuan dialect (M, dialect_token=2062) |
ono_anna | English (F) |
ryan | English (M) |
serena | English (F) |
sohee | English (F) |
uncle_fu | English (M, older) |
vivian | English (F) |
cstr/qwen3-tts-tokenizer-12hz-GGUF — the talker emits 16-codebook RVQ codes that the codec decoder renders to 24 kHz PCM.| File | Quant | Size | Notes |
|---|---|---|---|
qwen3-tts-12hz-1.7b-customvoice-f16.gguf | F16 | 3.84 GB | Reference quality |
qwen3-tts-12hz-1.7b-customvoice-q8_0.gguf | Q8_0 | 2.04 GB | Recommended — ASR-roundtrip word-exact vs F16 |
cstr/qwen3-tts-0.6b-customvoice-GGUF. The 1.7B-Base (ICL voice clone) variant ships at cstr/qwen3-tts-1.7b-base-GGUF.1# 1. Build CrispASR
2git clone https://github.com/CrispStrobe/CrispASR
3cd CrispASR
4cmake -B build -DCMAKE_BUILD_TYPE=Release
5cmake --build build -j --target crispasr
6
7# 2. Pull the talker + the codec
8huggingface-cli download cstr/qwen3-tts-1.7b-customvoice-GGUF qwen3-tts-12hz-1.7b-customvoice-q8_0.gguf --local-dir .
9huggingface-cli download cstr/qwen3-tts-tokenizer-12hz-GGUF qwen3-tts-tokenizer-12hz.gguf --local-dir .
10
11# 3. Synthesise — pick a speaker by name
12./build/bin/crispasr --backend qwen3-tts-1.7b-customvoice \
13 -m qwen3-tts-12hz-1.7b-customvoice-q8_0.gguf \
14 --codec-model qwen3-tts-tokenizer-12hz.gguf \
15 --voice ryan \
16 --tts "Hello, this is the Ryan speaker on the 1.7B model." \
17 --tts-output ryan.wav-m auto:1./build/bin/crispasr --backend qwen3-tts-1.7b-customvoice -m auto \
2 --voice vivian \
3 --tts "Auto-download fetches both files." \
4 --tts-output out.wavcstr/parakeet-tdt-0.6b-v3-GGUF:| Variant | Speaker | Output (verbatim) |
|---|---|---|
| Q8_0 | ryan | "Hello, this is the Ryan speaker." |
| F16 | vivian | "This is a longer prompt to verify the 1.7B CustomVoice path through the talker." |
small_to_mtp_projection per-step fix in commit 2cc7aeb).| Component | Details |
|---|---|
| Talker LM | Qwen3 (28 layers, 2048 hidden, 16 heads, 8 KV heads, head_dim=128) |
| Output head | 16 codebooks × 2048 (RVQ) — emits codes for the codec |
small_to_mtp_projection | 2048-d → 1024-d MLP (input bridge to code predictor) — applied per-step at decode (steps 1..14, fix in 2cc7aeb) |
| Code predictor | 5L Qwen3 (1024 hidden) + 15 separate codec_embedding/lm_head pairs (top-k=50, temp=0.9) |
| Codec | Qwen3-TTS-Tokenizer-12Hz (separate GGUF, 12.5 fps RVQ) |
| Audio | 24 kHz mono float32 PCM |
talker.get_input_embeddings()(spk_id) retrieves a row from the codec embedding table directly. The 2048-d hidden state then gets projected down to 1024-d via small_to_mtp_projection before each code predictor step.| Flag | Purpose |
|---|---|
--backend qwen3-tts-1.7b-customvoice | Selects the 1.7B CustomVoice runtime path |
--voice <name> | Picks a fixed speaker by name (default: first speaker, aiden) |
--tts "..." | Text to synthesise |
--codec-model PATH | Qwen3-TTS-Tokenizer-12Hz GGUF |
--tts-output PATH | Output WAV (24 kHz mono) |
qwen3tts.tts_model_type and on the GGUF talker hidden_dim (spk_enc_dim) so the same backend object handles 0.6B/1.7B Base/CustomVoice/VoiceDesign automatically.1python models/convert-qwen3-tts-to-gguf.py \
2 --input Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice \
3 --output qwen3-tts-12hz-1.7b-customvoice-f16.gguf \
4 --outtype f16
5
6build/bin/crispasr-quantize qwen3-tts-12hz-1.7b-customvoice-f16.gguf \
7 qwen3-tts-12hz-1.7b-customvoice-q8_0.gguf q8_0Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice (Apache 2.0).Qwen/Qwen3-TTS-Tokenizer-12Hz (Apache 2.0) — see cstr/qwen3-tts-tokenizer-12hz-GGUF.modeling_qwen3_tts.py).CrispStrobe/CrispASR — see src/qwen3_tts.cpp, models/convert-qwen3-tts-to-gguf.py.Qwen.apache-2.0. This repository redistributes under the same terms; it grants no rights the upstream licence does not.