cstr/qwen3-tts-1.7b-customvoice-GGUF
Qwen3-TTS-12Hz-1.7B-CustomVoice — GGUF (ggml-quantised)
GGUF / ggml conversion of `Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice` for use with [CrispStrobe/CrispASR](https://github.com/CrispStrobe/CrispASR).
The 1.7B sibling of `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.
Pair this with the codec at `cstr/qwen3-tts-tokenizer-12hz-GGUF` — the talker emits 16-codebook RVQ codes that the codec decoder renders to 24 kHz PCM.
Files
The 0.6B-CustomVoice variant ships at `cstr/qwen3-tts-0.6b-customvoice-GGUF`. The 1.7B-Base (ICL voice clone) variant ships at `cstr/qwen3-tts-1.7b-base-GGUF`.
Quick start
# 1. Build CrispASR
git clone https://github.com/CrispStrobe/CrispASR
cd CrispASR
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j --target crispasr
# 2. Pull the talker + the codec
huggingface-cli download cstr/qwen3-tts-1.7b-customvoice-GGUF qwen3-tts-12hz-1.7b-customvoice-q8_0.gguf --local-dir .
huggingface-cli download cstr/qwen3-tts-tokenizer-12hz-GGUF qwen3-tts-tokenizer-12hz.gguf --local-dir .
# 3. Synthesise — pick a speaker by name
./build/bin/crispasr --backend qwen3-tts-1.7b-customvoice \
-m qwen3-tts-12hz-1.7b-customvoice-q8_0.gguf \
--codec-model qwen3-tts-tokenizer-12hz.gguf \
--voice ryan \
--tts "Hello, this is the Ryan speaker on the 1.7B model." \
--tts-output ryan.wavFor auto-download simply pass -m auto:
./build/bin/crispasr --backend qwen3-tts-1.7b-customvoice -m auto \
--voice vivian \
--tts "Auto-download fetches both files." \
--tts-output out.wavQuality verification
ASR roundtrip via `cstr/parakeet-tdt-0.6b-v3-GGUF`:
Both roundtrips are exact-match on a long prompt (the regression test for the small_to_mtp_projection per-step fix in commit 2cc7aeb).
Architecture
CustomVoice 1.7B uses the same fixed-speaker contract as 0.6B-CV: 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.
CrispASR backend integration
The runtime branches on qwen3tts.tts_model_type and on the GGUF talker hiddendim (`spkenc_dim`) so the same backend object handles 0.6B/1.7B Base/CustomVoice/VoiceDesign automatically.
Conversion
python models/convert-qwen3-tts-to-gguf.py \
--input Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice \
--output qwen3-tts-12hz-1.7b-customvoice-f16.gguf \
--outtype f16
build/bin/crispasr-quantize qwen3-tts-12hz-1.7b-customvoice-f16.gguf \
qwen3-tts-12hz-1.7b-customvoice-q8_0.gguf q8_0Attribution
- Talker base: `Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice` (Apache 2.0).
- Codec base: `Qwen/Qwen3-TTS-Tokenizer-12Hz` (Apache 2.0) — see `cstr/qwen3-tts-tokenizer-12hz-GGUF`.
- Reference engine: QwenLM/Qwen3-TTS (
modeling_qwen3_tts.py). - GGUF conversion + ggml runtime: `CrispStrobe/CrispASR` — see
src/qwen3_tts.cpp,models/convert-qwen3-tts-to-gguf.py.
License
Apache 2.0 — both the upstream talker and codec, and the GGUF conversion.
Provenance and EU AI Act Art. 53 note
- Upstream model: Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice — 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. No training-content summary was found on the upstream model card at the time of writing; that documentation gap is upstream's and is not filled here.
- 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.
