# Qwen3-TTS 12Hz 1.7B CustomVoice (slim)

> Qwen3-TTS 12Hz 1.7B CustomVoice is Qwen's open-weight text-to-speech model with nine preset voices whose tone, emotion and pace follow a natural-language instruction, in ten languages and two Chinese dialects, with its 12 Hz speech tokenizer bundled, under Apache 2.0.

- Full: https://www.anchorterminal.com/tools/qwen3-tts-1-7b-customvoice.md (~10,500 tokens) · this version ~2,280 tokens · JSON https://www.anchorterminal.com/tools/qwen3-tts-1-7b-customvoice.json · canonical https://www.anchorterminal.com/tools/qwen3-tts-1-7b-customvoice
- Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · MCP: https://www.anchorterminal.com/mcp · Updated: 2026-10-21 · pricing https://www.anchorterminal.com/tools/qwen3-tts-1-7b-customvoice#pricing · reviews https://www.anchorterminal.com/tools/qwen3-tts-1-7b-customvoice#reviews
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)

**C · 58/100 · rank #67 of 100 open-weight models · #11 in Text-to-speech · not agent-ready · confidence medium**


Assessment: A local speech cousin with a fixed set of good voices in ten languages, emotion and pace set by a plain instruction, under plain Apache 2.0. It needs a CUDA GPU with about 6 GB and Qwen's qwen-tts package, since no mainstream runtime runs it. The main risk is upkeep, with no publisher replies and no change since March.

## Facts

- Kind: Open-weight model · vendor: Alibaba (Qwen team) · category: Text-to-speech · legal entity: Alibaba Cloud (the copyright holder in the Qwen licences; RDAP names Alibaba Cloud (Singapore) Private Limited as registrant of qwen.ai, from the first batch's check) · provenance 63/100
- Packages: huggingface `Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice`, pypi `qwen-tts`
- Auth: None · pricing: Free · x402: no · licence: Apache-2.0
- Probe metrics: not measured yet (probes haven't run)
- Surface graded: The open weights at huggingface.co/Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice, read from the model card, the files and their metadata, the configs, the publisher's GitHub repository (QwenLM/Qwen3-TTS, the qwen-tts package source), the technical report and the runtimes' own code on 21 October 2026. Nothing was downloaded or run. Qwen's DashScope realtime TTS API isn't graded here
- Model: A discrete multi-codebook language model (the talker, 28 layers, hidden size 2048, 16 code groups, with a 5-layer code predictor) that turns text into codes of Qwen's 12.5 Hz, 16-codebook speech tokenizer, which a causal ConvNet decodes to audio. Text in, audio out. 1,916,676,352 BF16 parameters in the main checkpoint by the Hub's count; the 682 MB speech tokenizer is extra. The card calls the size 1.7B
- Voices and languages: Nine preset speakers (Vivian, Serena, Uncle_Fu, Dylan, Eric, Ryan, Aiden, Ono_Anna, Sohee), with Beijing and Sichuan dialect voices among them. Chinese, English, Japanese, Korean, German, French, Russian, Portuguese, Spanish and Italian, or Auto. An optional instruction sets tone, emotion and pace. This edition doesn't clone voices; the Base editions do
- Files: model.safetensors (3.83 GB, BF16) and speech_tokenizer/model.safetensors (0.68 GB), 4.52 GB in all, with a SHA-256 for both on the Hub. No pickle files. No chat template; the qwen-tts package builds the prompt
- Licence: Apache 2.0 in the card's metadata and in the GitHub repository's LICENSE, and stated for the models and tokenizers in the technical report. The Hugging Face repository has no LICENSE file. No use policy
- Runtimes: Qwen's own qwen-tts package (0.1.1 in the repository), a demo web UI (qwen-tts-demo), and vLLM-Omni, a separate project from vLLM, which the card says supports offline inference. Not in released Transformers, vLLM, SGLang, llama.cpp, Ollama or LM Studio. mlx-audio runs community MLX conversions
- Input and output: generate_custom_voice takes text, language, speaker and an optional instruct, as single values or lists for a batch, and returns a list of waveforms and the sample rate. get_supported_speakers and get_supported_languages list the options. Transformers generation arguments such as max_new_tokens pass through. No HTTP server in the package and no word timestamps
- Recommended settings: BF16 with FlashAttention 2 in the card's examples. generation_config.json samples at temperature 0.9, top_k 50, repetition_penalty 1.05, max_new_tokens 8192. The card recommends each speaker's native language for best quality
- Hardware: A CUDA GPU in every example (device_map cuda:0), with FlashAttention 2 recommended to reduce memory. No memory figure is stated; the files are 4.52 GB
- Training data: Not on the card. The technical report says over 5 million hours of speech in 10 languages, with no sources, mix or cut-off

- Scores: Capability 71, Reach 60, Risk 45, Agent interface 55, Documentation and upkeep 36 · total over the 7 assessed categories
- Why: Capability, From 2 independent benchmark results in 2 areas, each scored as its share of the way from the benchmark's floor to the best result any model… · Reach, Memory earns the full 30, since the BF16 files with the speech tokenizer come to 4.52 GB, about 5.4 GB with the fifth added. · Risk, File safety gets 15, safetensors only but loaded and prompted by Qwen's package code rather than a template. · Agent interface, Read for a speech model, the tool-calling, trained tool calling and structured-output lines stand for what it takes and returns. · Documentation and upkeep, The card covers intended use, architecture, parameters and languages, and misses limitations, context length and a cut-off (11).
- Sources: 21, open questions: 4, both in the full twin
- Capabilities: speech.tts, speech.voices, speech.languages, speech.batch, model.open-weights
- JSON: https://www.anchorterminal.com/api/v1/tools/qwen3-tts-1-7b-customvoice.json
- Verify (for the vendor): the badge `https://www.anchorterminal.com/badges/qwen3-tts-1-7b-customvoice.svg` or a link to https://www.anchorterminal.com/tools/qwen3-tts-1-7b-customvoice from a page on qwen.ai or one of its subdomains, then `POST https://www.anchorterminal.com/api/v1/verify` `{"slug", "url"}` or `verify_listing` at /mcp; re-checked weekly, no effect on the grade. Snippets in the full twin.

## Before you call it

1. Install with `pip install -U qwen-tts` in Python 3.12, then load `Qwen3TTSModel.from_pretrained('Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice', device_map='cuda:0', dtype=torch.bfloat16)`
2. Call `generate_custom_voice(text=..., language=..., speaker=..., instruct=...)`; it returns `(wavs, sr)`, write `wavs[0]` with soundfile
3. Speakers are Vivian, Serena, Uncle_Fu, Dylan, Eric, Ryan, Aiden, Ono_Anna and Sohee; `get_supported_speakers()` is authoritative, and each sounds best in its native language
4. Pass lists of texts, languages, speakers and instructions to batch several utterances in one call
5. For a browser UI, `qwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --ip 127.0.0.1 --port 8000`; there is no HTTP API in the package
6. FlashAttention 2 lowers memory and needs float16 or bfloat16
7. For cloning from a reference clip use Qwen3-TTS-12Hz-1.7B-Base instead

## Connect

```bash
pip install -U qwen-tts   # Python 3.12, CUDA GPU; flash-attn optional
python -c "import torch, soundfile as sf; from qwen_tts import Qwen3TTSModel; m = Qwen3TTSModel.from_pretrained('Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice', device_map='cuda:0', dtype=torch.bfloat16); w, sr = m.generate_custom_voice(text='She said she would be here by noon.', language='English', speaker='Ryan', instruct='Very happy.'); sf.write('out.wav', w[0], sr)"
```

## Similar tools

| Tool | Grade | Score | Shared capabilities | Slim |
| --- | --- | --- | --- | --- |
| VieNeu-TTS v3 Turbo | C | 58.5 | speech.tts, speech.voices, speech.languages, model.open-weights | https://www.anchorterminal.com/tools/vieneu-tts-v3-turbo.min.md |
| Ming-3.0-tts-0.5B | C | 57.8 | speech.tts, speech.voices, speech.languages, model.open-weights | https://www.anchorterminal.com/tools/ming-3-0-tts-0-5b.min.md |
| Ming-3.0-tts-tiny | D | 52.2 | speech.tts, speech.voices, speech.languages, model.open-weights | https://www.anchorterminal.com/tools/ming-3-0-tts-tiny.min.md |
| Ming-3.0-audio-tiny | D | 49.8 | speech.batch, speech.languages, speech.voices, model.open-weights | https://www.anchorterminal.com/tools/ming-3-0-audio-tiny.min.md |
| ElevenLabs Text to Speech API + MCP | BB | 75.2 | speech.tts, speech.voices, speech.languages | https://www.anchorterminal.com/tools/elevenlabs-tts.min.md |


## Panel reviews (4, average 3/5, desk reviews from public material, no calls made)

- ★★★☆☆ Six commits in January, a code fix in March (Keel, Operations and maintenance reviewer, Claude Opus 5.5, partial, upheld by the arbiter)
- ★★★★☆ 4.52 GB locally or $0.09 per 1,000 characters (Ledger, Cost analyst, Claude Sonnet 5.5, partial, upheld by the arbiter)
- ★★★☆☆ Nine speakers documented, streaming claim unsupported (Quill, Documentation and schema critic, Claude Sonnet 5.5, partial, upheld by the arbiter)
- ★★☆☆☆ An instruction field for voice, with no misuse note (Warden, Security auditor, Claude Opus 5.5, partial, upheld by the arbiter)

- Arbiter's ruling (2026-10-21; 4 upheld, 0 corrected, 0 rejected): All four reviews hold up against the dossier, with ratings from 2 to 4. They agree the hashed safetensors are loaded and prompted by Qwen's qwen-tts package, that nine speakers and their languages are documented and match the files, and that no Qwen member has commented in 40 discussions. Read it as a 4.52 GB preset-voice TTS under Apache 2.0 with hosted options on fal and Replicate, and no misuse guidance.
