Qwen3-TTS
Qwen3-TTS is a family of open speech models built on a tokenizer Qwen developed themselves — a multi-codebook encoder running at 12 Hz that compresses speech while preserving the parts most systems discard: breath, hesitation, emphasis, and the acoustics of the room. It covers voice cloning from a sample, voice design from a description, style control at fixed timbre, and long-form synthesis. That last capability carries the most convincing number: ten minutes of continuous speech at a 2.36% word error rate in Chinese and 2.81% in English, where most systems drift. Ten languages, dialectal profiles, Apache 2.0.

Qwen3-TTS
Text in, speech out. Ten languages, nine preset voices, and ten minutes of continuous synthesis without drifting.
The Tokenizer Is the Foundation
Everything this family does rests on one component Qwen built rather than borrowed.
Qwen3-TTS-Tokenizer-12Hz — a multi-codebook speech encoder operating at 12 Hz.
What it preserves is the point. Qwen describe it as achieving efficient compression and robust representation while fully preserving paralinguistic information and acoustic environmental features.
Paralinguistic information is everything in speech that is not the words: breath, hesitation, emphasis, the small catch before a difficult sentence. Acoustic environment is the room — the reverberation that makes a voice sound like it exists somewhere rather than nowhere.
Most compression-first approaches discard both. The result is speech that is technically correct and audibly synthetic, and no amount of model capacity downstream recovers what the encoder threw away.

And the architecture skips diffusion. A discrete multi-codebook language-model architecture that bypasses traditional information bottlenecks, enabling high-speed, high-fidelity reconstruction through a lightweight non-DiT path.
Most current high-quality speech synthesis runs a diffusion transformer. This family does not — which is where the speed comes from, and why streaming works.
Nine Preset Voices
This model selects its speaker from a fixed list rather than from a description or a reference recording.
Vivian | Serena | Uncle_Fu |
Dylan | Eric | Ryan |
Aiden | Ono_Anna | Sohee |
The names carry hints. Uncle_Fu, Ono_Anna, and Sohee suggest regional character rather than
generic voices — which fits a model documented as covering dialectal profiles alongside its ten
languages.
Pick by listening, not by name. Generate one line with each voice and choose. That takes a minute and settles a decision you will otherwise live with for the life of the feature.
If you need a voice that is not on this list, the family has siblings for that: one designs a speaker from a written description, another clones one from a recording. This model is the preset path — nine known voices, immediately available, no reference material required.
Ten Minutes Without Drifting
The result that matters most in production, and the one least often reported.
Continuous ten-minute synthesis:
| Language | Word error rate |
|---|---|
| Chinese | 2.36% |
| English | 2.81% |
Why that is the hard number. Short-clip quality is table stakes. Long-form synthesis is where systems fail — timbre drifts, pacing shifts, pronunciation degrades, and by minute six the voice is recognisably not the voice from minute one.
What it makes possible: audiobooks, long-form narration, extended documentation read aloud, course material — anything where the unit of output is a chapter rather than a sentence.
Benchmark Results
Qwen publish figures across the family's capabilities.


Voice cloning
| Multilingual WER, 10 languages | 1.835% |
| Speaker similarity | 0.789 |
Qwen report it surpassing MiniMax and SeedTTS on speech stability for both Chinese and English cloning on Seed-tts-eval.
Two numbers, two different questions. Word error rate asks whether the words came out right. Speaker similarity asks whether it sounds like the person. A cloning model can win one and lose the other — an accurate reading in the wrong voice, or the right voice mangling the text.
Voice control
| Average WER, single-speaker multilingual | 2.34% |
| InstructTTS-Eval | 75.4% |
The capability here is maintaining timbre while providing precise style control — the same speaker delivering the same words differently.
Voice design
Outperformed MiniMax-Voice-Design, a closed-source model, on InstructTTS-Eval in both instruction-following and generative expressiveness, while leading other open models significantly.
Four Capabilities, One Foundation
The family covers four distinct problems that are easy to confuse.
| Capability | What you supply | What you get |
|---|---|---|
| Preset voice | A voice name | One of nine known speakers |
| Voice clone | A recording | That speaker |
| Voice design | A description | A new speaker |
| Voice control | A fixed voice + an instruction | Same speaker, different delivery |
This model is the first row. Nine voices, selected by name, no reference material and no description required.
The distinction that catches people: design invents a timbre, control changes delivery at fixed timbre. If you want a consistent narrator reading angrily then calmly, that is control. If you want a narrator who did not previously exist, that is design.
Specifications
| Model ID | Qwen/Qwen3-TTS |
| Sizes | 0.6B and 1.7B |
| Tokenizer | Qwen3-TTS-Tokenizer-12Hz, multi-codebook |
| Architecture | Discrete multi-codebook LM — non-DiT |
| Voice selection | Preset list — 9 voices |
| Languages | 10, plus dialectal profiles |
| Long-form | 10 minutes continuous |
| Streaming | Supported |
| Licence | Apache 2.0 |
| Released | 22 January 2026 |
| Endpoint | /v1/audio/speech |
| Developer | Qwen Team, Alibaba |
Languages: Chinese, English, Japanese, Korean, German, French, Russian, Portuguese, Spanish, Italian.
Plus multiple dialectal voice profiles — which is a separate capability from speaking a language. Regional variety is what makes synthesised speech sound local rather than translated.
Capabilities
| Capability | Value |
|---|---|
input_types | text |
output_types | audio |
voice_input_type | preset_list |
preset_voices | 9 |
languages | 10 plus dialects |
long_form | Supported — 10 minutes continuous |
streaming | Supported |
endpoint | /v1/audio/speech |
deterministic | No |
requires_prompt | Yes — input text required |
Using Qwen3-TTS on DEVUP AI
Endpoint: POST https://api.devupai.com/v1/audio/speech
The response is raw audio bytes, not JSON. Write response.content to a file directly.
Python
import requests
DEVUP_API_KEY = "$DEVUP_API_KEY"
MODEL = "Qwen/Qwen3-TTS"
response = requests.post(
"https://api.devupai.com/v1/audio/speech",
headers={
"Authorization": f"Bearer {DEVUP_API_KEY}",
"Content-Type": "application/json",
},
json={
"model": MODEL,
"input": "Hello! This is a text-to-speech example using DEVUP AI.",
},
)
# Save the returned audio
with open("output.wav", "wb") as f:
f.write(response.content)cURL
curl -X POST "https://api.devupai.com/v1/audio/speech" \
-H "Authorization: Bearer $DEVUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-TTS",
"input": "Hello! This is a text-to-speech example using DEVUP AI."
}' \
--output output.wavAuditioning the Voices
Nine voices, one script, one loop. Run this once before choosing.
import requests
DEVUP_API_KEY = "$DEVUP_API_KEY"
MODEL = "Qwen/Qwen3-TTS"
VOICES = [
"Vivian", "Serena", "Uncle_Fu",
"Dylan", "Eric", "Ryan",
"Aiden", "Ono_Anna", "Sohee",
]
SCRIPT = (
"Your order shipped this morning and should arrive within three working days. "
"We'll send a tracking link as soon as the carrier scans it."
)
for voice in VOICES:
response = requests.post(
"https://api.devupai.com/v1/audio/speech",
headers={
"Authorization": f"Bearer {DEVUP_API_KEY}",
"Content-Type": "application/json",
},
json={
"model": MODEL,
"input": SCRIPT,
"voice": voice,
},
)
response.raise_for_status()
with open(f"audition_{voice}.wav", "wb") as f:
f.write(response.content)
print(f"{voice}: {len(response.content):,} bytes")Use your own copy, not a generic sentence. A voice that sounds right reading a demo line can sound wrong reading your product's actual tone. Nine files, five minutes of listening, and the decision is made on evidence.
Listen on the device your users will use. A voice that is warm through studio headphones can be thin through a phone speaker, and most people are on the phone speaker.
Writing Text for Speech
The script matters more than most people expect, and the habits differ from writing for the page.
Shorter sentences. A sentence with three subordinate clauses is readable and unspeakable. The model will read it; a listener will lose the thread.
Natural contractions. "It's" and "don't" sound human; "it is" and "do not" sound like a document being read aloud, because that is what they are.
Punctuation as breath, not as grammar. A comma tells the model to pause. Use them where a person would breathe rather than where a style guide requires one.
Spell out anything ambiguous. Numbers, abbreviations, units, and dates are read according to rules that may not match your intent. "3/4" and "2026" have more than one correct reading.
Read it aloud yourself first. Anywhere you stumble, the model will too.
Long-Form Work
Where the ten-minute figure becomes a workflow decision.
Synthesise in the longest coherent unit you can. A chapter generated as one request holds consistent pacing and timbre throughout. The same chapter generated as forty separate sentences and concatenated has forty places where the prosody resets.
Break at meaning, not at length. If a piece must be split, split at section boundaries where a listener expects a pause anyway.
Keep the text natural across the seam. A sentence split across two requests produces two sentences with two intonation contours, which is audible.
Use the same voice throughout. Obvious, and worth stating — a voice name passed inconsistently across a batch produces a chapter that changes narrator mid-way.
The Family
Five variants at two sizes, and choosing the wrong one is easy.
| Variant | What it does |
|---|---|
| Base | Foundation checkpoint |
| CustomVoice | Custom voice profiles |
| VoiceDesign | Creates a speaker from a description |
| VoiceClone | Reproduces a speaker from a sample |
| Instruct | Style control at fixed timbre |
Two sizes: 0.6B and 1.7B. The smaller is for cases where footprint matters more than fidelity — edge deployment, high volume, or anywhere a gigabyte of model is a constraint.
Self-Hosting
Weights are published on both Hugging Face and ModelScope, with the tokenizer as a separate download — it is a distinct component, not bundled into each variant.
Streaming is supported, which matters for interactive use: speech starts before the full text has been processed, so a listener hears the beginning while the end is still generating.
Apache 2.0 covers commercial deployment and fine-tuning alike.
Where It Fits
Long-form narration — audiobooks, courses, documentation read aloud, where the ten-minute result is the relevant one.
Product and support voice, where nine ready voices remove the setup a design or cloning workflow requires.
Multilingual products across ten languages with dialectal profiles.
Interactive voice applications, where streaming keeps latency low.
Localisation, with consistent speaker identity across languages.
Not for a specific person's voice. That is the cloning variant.
Not for a voice outside the nine. That is the design variant.
Not for speech recognition. This family generates speech; transcription is a different model.
Practical Notes
The response is audio bytes — write them directly rather than parsing JSON.
Audition all nine voices with your own copy before choosing.
Write the script for speaking, not for reading.
Spell out numbers, dates, and abbreviations where the reading could go either way.
Synthesise in long coherent units; the model holds up across ten minutes.
Pass the voice name consistently across a batch.
Pick the right variant — preset, design, clone, and control solve different problems.
Limitations
Nine voices. A voice outside the list requires a different model in this family.
Ten languages. Others are outside the documented capability.
Audio output only. Text in, speech out — no transcription and no understanding.
Published word error rates are vendor-reported, measured on Qwen's own test sets. Your text, your languages, and your speaking style are the measurement that matters.
Variants are not interchangeable. Preset selection, cloning, design, and style control are separate models with separate inputs.
Determinism is unverified. Whether a repeat request reproduces identical audio is worth testing rather than assuming — and it decides whether you archive every clip or regenerate on demand.
Apply your own moderation. Synthesised speech that sounds human carries obvious misuse potential, and a preset voice used to impersonate a service is as effective as a cloned one.