{ "family": "qwen3_tts", "display_name": "Qwen3-TTS", "description": "Qwen3-TTS for controllable 10-language synthesis, 3-second voice cloning, CustomVoice, and VoiceDesign.", "category": "tts", "status": "supported", "tasks": [ "tts", "clone", "design" ], "modes": [ "offline", "streaming" ], "languages": [ "zh", "en", "ja", "ko", "de", "fr", "ru", "pt", "es", "it" ], "capabilities": { "clone": [ "speaker_reference" ], "design": [ "voice_design" ] }, "options": { "request": [ { "name": "stream_chunk_policy", "type": "enum", "description": "Streaming codec chunk schedule: grow starts with one frame and doubles to stream_frames_per_event; fixed uses that size throughout.", "required": false, "default": "grow", "values": [ "grow", "fixed" ] }, { "name": "stream_frames_per_event", "type": "int", "description": "Codec frames per fixed streaming event, or the maximum for growing events. Smaller values reduce chunk latency but increase decoding overhead.", "required": false, "default": 12, "min": 1 }, { "name": "language", "type": "string", "description": "Target synthesis language code or label; default auto lets the model infer from text and voice settings.", "required": false, "default": "auto" }, { "name": "max_tokens", "type": "int", "description": "Maximum generated codec frames per text chunk; omitted uses the checkpoint generation_config.json (2048 when absent).", "required": false, "min": 1 }, { "name": "do_sample", "type": "bool", "description": "Sample the main codec stream instead of greedy decoding; default true.", "required": false, "default": true }, { "name": "temperature", "type": "float", "description": "Main codec sampling temperature; must be > 0 when do_sample=true. Ignored when do_sample=false; default 0.9.", "required": false, "min": 0, "default": 0.9 }, { "name": "top_k", "type": "int", "description": "Main codec top-k sampling limit; default 50, 0 disables top-k filtering.", "required": false, "min": 0, "default": 50 }, { "name": "top_p", "type": "float", "description": "Main codec nucleus sampling limit; default 1.0.", "required": false, "min": 0, "max": 1, "default": 1 }, { "name": "repetition_penalty", "type": "float", "description": "Main codec repetition penalty; must be > 0, default 1.05.", "required": false, "min": 0, "default": 1.05 }, { "name": "subtalker_do_sample", "type": "bool", "description": "Enable subtalker sampling for the remaining audio codebooks instead of greedy decoding; default true.", "required": false, "default": true }, { "name": "subtalker_temperature", "type": "float", "description": "Subtalker sampling temperature; must be > 0 when subtalker_do_sample=true. Ignored when subtalker_do_sample=false; default 0.9.", "required": false, "min": 0, "default": 0.9 }, { "name": "subtalker_top_k", "type": "int", "description": "Subtalker top-k sampling limit; default 50, 0 disables top-k filtering.", "required": false, "min": 0, "default": 50 }, { "name": "subtalker_top_p", "type": "float", "description": "Subtalker nucleus sampling limit; default 1.0.", "required": false, "min": 0, "max": 1, "default": 1 }, { "name": "seed", "type": "int", "description": "Codec sampling seed; omitted requests choose a random seed.", "required": false, "min": 0, "max": 4294967295 }, { "name": "reference_text", "type": "string", "description": "Transcript matching the reference audio for voice cloning; required unless x_vector_only_mode=true.", "required": false }, { "name": "x_vector_only_mode", "type": "bool", "description": "Use only the speaker embedding for voice cloning instead of ICL reference codec prompting; default false.", "required": false, "default": false }, { "name": "instruct", "type": "string", "description": "Optional natural-language voice or style instruction for VoiceDesign and CustomVoice variants; empty instructions are accepted.", "required": false }, { "name": "voice_id", "type": "enum", "description": "Named preset speaker from the CustomVoice checkpoint. Legacy speaker remains accepted.", "values": [ "aiden", "dylan", "eric", "ono_anna", "ryan", "serena", "sohee", "uncle_fu", "vivian" ], "required": false }, { "name": "text_chunk_size", "type": "int", "description": "Maximum UTF-8 codepoints per long-form text chunk; default 8192.", "required": false, "min": 1, "default": 8192 } ], "session": [ { "name": "lora", "type": "path", "description": "PEFT LoRA adapter directory or checkpoint file; optional speaker_embedding and tts_config.json sidecars provide a trained custom voice.", "required": false }, { "name": "lora_scale", "type": "float", "description": "Multiplier for the adapter's alpha/r scaling; default 1.", "required": false, "default": 1.0 }, { "name": "mem_saver", "type": "bool", "description": "Release the talker cached-step graph after each request; default false.", "required": false, "default": false }, { "name": "stitch_decode", "type": "bool", "description": "Voice the concatenated speech codes of all text chunks in one decoder pass instead of voicing each chunk separately; default false. Per-chunk voicing re-voices the voice-clone reference once per chunk and restarts the stateful vocoder cache at every chunk boundary; the stitched pass costs device memory proportional to the utterance.", "required": false, "default": false }, { "name": "attention", "type": "enum", "description": "Attention preference; default mixed uses manual prefill and contiguous-K/V flash cached decoding in the talker and code predictor, with eager speech tokenization. auto uses the shared backend policy; eager disables flash; flash uses flash with K/V views. Explicit values override perf_mode.", "values": ["mixed", "auto", "eager", "flash"], "required": false, "default": "mixed" }, { "name": "packed_projections", "type": "bool", "description": "Pack QKV and gate/up projections in the talker and code predictor without changing weight dtype; default false, true with cuda_perf. Explicit values override the preset.", "required": false }, { "name": "kv_cache_write", "type": "enum", "description": "Talker and code-predictor cache writes: standard by default, optimized with cuda_perf. Optimized uses backend-friendly views and I64 indices to allow fusion where supported. Explicit values override the preset.", "values": ["standard", "optimized"], "required": false }, { "name": "kv_cache_type", "type": "enum", "description": "Talker and code-predictor KV storage: f32 by default, f16 with cuda_perf. Explicit values override the preset. F16 reduces cache memory and may change numerical results.", "values": ["f32", "f16"], "required": false }, { "name": "talker_kv_cache_alignment", "type": "int", "description": "Round talker KV capacity to this many rows. Defaults to 1 (no padding), or 256 with perf_mode=cuda_perf. Explicit values override the preset. Larger alignments may use more memory and change numerical results.", "min": 1, "default": 1, "required": false }, { "name": "stream_decoder", "type": "enum", "description": "GGML streaming decoder; stateful carries convolution and attention history and caches graphs for exact chunk lengths. Uses more graph memory and can change audio; default windowed preserves existing behavior.", "values": ["windowed", "stateful"], "default": "windowed", "required": false }, { "name": "perf_mode", "type": "enum", "description": "Performance preset; default off. flash_attention selects flash attention. cuda_perf also selects packed projections, optimized cache writes, f16 KV and convolution weights, stateful streaming decoding, and KV alignment 256. Explicit session options override the preset. May change audio and memory use.", "values": ["off", "flash_attention", "cuda_perf"], "required": false, "default": "off" }, { "name": "voice_prompt_cache_slots", "type": "int", "description": "Voice prompt cache slots; default 1.", "required": false, "min": 0, "default": 1 }, { "name": "weight_type", "type": "enum", "description": "Shared talker matmul weight storage type; default native.", "required": false, "default": "native", "preset": "weight_type_full" }, { "name": "talker_weight_type", "type": "enum", "description": "Talker weight storage type; defaults to weight_type when set, otherwise native.", "required": false, "preset": "weight_type_full" }, { "name": "speech_encoder_weight_type", "type": "enum", "description": "Reference speech encoder matmul weight storage type; default native.", "required": false, "default": "native", "preset": "weight_type_full" }, { "name": "speech_decoder_weight_type", "type": "enum", "description": "Speech decoder matmul weight storage type; default native.", "required": false, "default": "native", "preset": "weight_type_full" }, { "name": "conv_weight_type", "type": "enum", "description": "Speech tokenizer and speaker-encoder convolution weight storage type; default f32.", "required": false, "default": "f32", "preset": "weight_type_conv" }, { "name": "exec_plan", "type": "string", "required": false, "default": "{}", "description": "JSON object of component execution plans. Component: speech_decoder. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. GGML supports the session backend. RKNN requires artifacts.main, optionally artifacts.first for the first streaming group, and ENGINE_ENABLE_RKNN; omit backend. RKNN skips GGML decoder weights. Neither implementation takes params." }, { "name": "talker_graph_arena_mb", "type": "int", "description": "Talker graph arena size in MiB; default 32.", "required": false, "min": 1, "default": 32 }, { "name": "speech_encoder_graph_arena_mb", "type": "int", "description": "Reference speech encoder graph arena size in MiB; default 32.", "required": false, "min": 1, "default": 32 }, { "name": "speech_decoder_graph_arena_mb", "type": "int", "description": "Speech decoder graph arena size in MiB; default 32.", "required": false, "min": 1, "default": 32 }, { "name": "speaker_encoder_graph_arena_mb", "type": "int", "description": "Speaker encoder graph arena size in MiB; default 32.", "required": false, "min": 1, "default": 32 }, { "name": "talker_constant_context_mb", "type": "int", "description": "Talker constant tensor context size in MiB; default 4.", "required": false, "min": 1, "default": 4 }, { "name": "code_predictor_constant_context_mb", "type": "int", "description": "Code predictor constant tensor context size in MiB; default 4.", "required": false, "min": 1, "default": 4 }, { "name": "speech_decoder_constant_context_mb", "type": "int", "description": "Speech decoder constant tensor context size in MiB; default 4.", "required": false, "min": 1, "default": 4 } ], "load": [] }, "runtime": { "tags": [ "gguf" ] }, "ui": { "recommended_package": "qwen3_tts_1_7b_base_q8_0", "tags": [ "TTS", "Clone", "Design", "GGUF" ], "docs": [ "docs/models/qwen3_tts.md", "docs/tts.md", "docs/gguf.md" ] }, "package_defaults": { "download": { "kind": "huggingface_snapshot", "repo": "audio-cpp/audio.cpp-gguf", "revision": "main", "gated": false } }, "packages": [ { "id": "qwen3_tts_1_7b_base_q8_0", "display_name": "Qwen3 TTS 12Hz 1.7B Base Q8_0 GGUF", "default": true, "format": "gguf", "precision": "q8_0", "target_directory": "Qwen3-TTS-12Hz-1.7B-Base-GGUF", "files": [ "Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-q8_0_v2.gguf" ], "strip_prefix": "Qwen3-TTS-12Hz-1.7B-Base-GGUF" }, { "id": "qwen3_tts_1_7b_base_bf16", "display_name": "Qwen3 TTS 12Hz 1.7B Base BF16 GGUF", "format": "gguf", "precision": "bf16", "target_directory": "Qwen3-TTS-12Hz-1.7B-Base-GGUF", "files": [ "Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-bf16.gguf" ], "strip_prefix": "Qwen3-TTS-12Hz-1.7B-Base-GGUF" }, { "id": "qwen3_tts_1_7b_base_orig", "display_name": "Qwen3 TTS 12Hz 1.7B Base Original-Dtype GGUF", "format": "gguf", "precision": "orig", "target_directory": "Qwen3-TTS-12Hz-1.7B-Base-GGUF", "files": [ "Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-orig.gguf" ], "strip_prefix": "Qwen3-TTS-12Hz-1.7B-Base-GGUF" }, { "id": "qwen3_tts_1_7b_customvoice_q8_0", "display_name": "Qwen3 TTS 12Hz 1.7B CustomVoice Q8_0 GGUF", "format": "gguf", "precision": "q8_0", "target_directory": "Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF", "files": [ "Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF/qwen3-tts-12hz-1.7b-customvoice-q8_0.gguf" ], "strip_prefix": "Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF" }, { "id": "qwen3_tts_1_7b_customvoice_bf16", "display_name": "Qwen3 TTS 12Hz 1.7B CustomVoice BF16 GGUF", "format": "gguf", "precision": "bf16", "target_directory": "Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF", "files": [ "Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF/qwen3-tts-12hz-1.7b-customvoice-bf16.gguf" ], "strip_prefix": "Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF" }, { "id": "qwen3_tts_1_7b_voicedesign_q8_0", "display_name": "Qwen3 TTS 12Hz 1.7B VoiceDesign Q8_0 GGUF", "format": "gguf", "precision": "q8_0", "target_directory": "Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF", "files": [ "Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF/qwen3-tts-12hz-1.7b-voicedesign-q8_0.gguf" ], "strip_prefix": "Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF" }, { "id": "qwen3_tts_1_7b_voicedesign_bf16", "display_name": "Qwen3 TTS 12Hz 1.7B VoiceDesign BF16 GGUF", "format": "gguf", "precision": "bf16", "target_directory": "Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF", "files": [ "Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF/qwen3-tts-12hz-1.7b-voicedesign-bf16.gguf" ], "strip_prefix": "Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF" }, { "id": "qwen3_tts_0_6b_base_q8_0", "display_name": "Qwen3 TTS 12Hz 0.6B Base Q8_0 GGUF", "format": "gguf", "precision": "q8_0", "target_directory": "Qwen3-TTS-12Hz-0.6B-Base-GGUF", "files": [ "Qwen3-TTS-12Hz-0.6B-Base-GGUF/qwen3-tts-12hz-0.6b-base-q8_0.gguf" ], "strip_prefix": "Qwen3-TTS-12Hz-0.6B-Base-GGUF" }, { "id": "qwen3_tts_0_6b_base_bf16", "display_name": "Qwen3 TTS 12Hz 0.6B Base BF16 GGUF", "format": "gguf", "precision": "bf16", "target_directory": "Qwen3-TTS-12Hz-0.6B-Base-GGUF", "files": [ "Qwen3-TTS-12Hz-0.6B-Base-GGUF/qwen3-tts-12hz-0.6b-base-bf16.gguf" ], "strip_prefix": "Qwen3-TTS-12Hz-0.6B-Base-GGUF" }, { "id": "qwen3_tts_1_7b_base_safetensors", "display_name": "Qwen3 TTS 12Hz 1.7B Base Safetensors", "format": "safetensors", "precision": "native", "target_directory": "Qwen3-TTS-12Hz-1.7B-Base", "files": [ "config.json", "generation_config.json", "model.safetensors", "speech_tokenizer/config.json", "speech_tokenizer/model.safetensors", "tokenizer_config.json", "vocab.json", "merges.txt" ], "download": { "kind": "huggingface_snapshot", "repo": "Qwen/Qwen3-TTS-12Hz-1.7B-Base" } }, { "id": "qwen3_tts_0_6b_base_speech_decoder_rk3588", "display_name": "Qwen3 TTS 12Hz 0.6B NPU Speech Decoder RKNN Pair (RK3588)", "format": "rknn", "precision": "f16", "target_directory": "Qwen3-TTS-12Hz-0.6B-Base-GGUF", "files": [ "rk3588/qwen3-tts/vocoder_stateful_16_fp16.rknn", "rk3588/qwen3-tts/vocoder_stateful_64b_fp16.rknn" ], "strip_prefix": "rk3588/qwen3-tts", "description": "Pre-compiled RK3588 engine pair (chunk 16 for the first streaming group, chunk 64 for the rest) for the qwen3_tts RKNN speech decoder (qwen3_tts.exec_plan, artifacts.main/first); installs beside the 0.6B GGUF weights and is named by bare file name. Built by tools/rknn from the Qwen3-TTS-12Hz speech tokenizer decoder; see docs/build/rockchip-npu.md.", "download": { "kind": "huggingface_snapshot", "repo": "wOvANAI/rknn-tts-engines", "revision": "main", "gated": false } } ], "sources": [ { "format": "gguf", "roots": { "model": ".", "weights": "$gguf" }, "files": { "config": "model:config.json", "generation_config": "model:generation_config.json", "tokenizer_config": "model:tokenizer_config.json", "vocab": "model:vocab.json", "merges": "model:merges.txt", "speech_tokenizer_config": "model:speech_tokenizer/config.json" }, "tensors": { "model_weights": { "source": "weights:", "prefix": "model_weights" }, "speech_tokenizer_weights": { "source": "weights:", "prefix": "speech_tokenizer_weights" } } }, { "format": "safetensors", "roots": { "model": "." }, "files": { "config": "model:config.json", "generation_config": "model:generation_config.json", "tokenizer_config": "model:tokenizer_config.json", "vocab": "model:vocab.json", "merges": "model:merges.txt", "speech_tokenizer_config": "model:speech_tokenizer/config.json" }, "tensors": { "model_weights": "model:model.safetensors", "speech_tokenizer_weights": "model:speech_tokenizer/model.safetensors" } } ] }