Qwen-TTS Update: Support for Chinese Dialects and Bilingual Synthesis
Qwen has introduced an update to its text-to-speech model, Qwen-TTS (qwen-tts-latest or qwen-tts-2025-05-22), which enables human-level naturalness and expressiveness in speech generation. The update is particularly notable for its ability to synthesize three specific Chinese dialects—Pekingese, Shanghainese, and Sichuanese—and its support for Chinese-English bilingual voices.
Dialect Support and Voice Options
Qwen-TTS now supports the generation of three Chinese dialects, allowing the model to capture regional speech patterns and natural inflections. The available voices are categorized by their dialect or bilingual capability:
- Pekingese: Dylan
- Shanghainese: Jada
- Sichuanese: Sunny
- Bilingual (Chinese-English): Cherry, Ethan, Chelsie, and Serena
In total, there are seven Chinese-English bilingual voices available, with the lab stating that more languages and stylistic options are planned for future releases.
Technical Capabilities and Performance
Qwen-TTS was trained on a large-scale dataset consisting of millions of hours of speech. This training enables the model to automatically adjust prosody, pacing, and emotional inflections based on the input text to achieve a high degree of naturalness.
Performance Benchmarks
The model's performance was evaluated using the SeedTTS-Eval benchmark. The results for the bilingual speakers are as follows:
| Speaker | WER (zh) | WER (en) | WER (hard) | SIM (zh) | SIM (en) | SIM (hard) |
|---|---|---|---|---|---|---|
| Chelsie | 1.256 | 2.004 | 6.171 | 0.658 | 0.473 | 0.662 |
| Serena | 1.495 | 2.206 | 7.394 | 0.804 | 0.508 | 0.803 |
| Ethan | 1.489 | 1.969 | 6.754 | 0.777 | 0.558 | 0.779 |
| Cherry | 1.209 | 1.967 | 6.069 | 0.799 | 0.664 | 0.801 |
API Integration
Qwen-TTS is available via the Qwen API. Developers can integrate the model using the dashscope Python library. The synthesis process involves calling the SpeechSynthesizer.call method with a specified model (e.g., qwen-tts-latest), the target text, and the chosen voice.
import os
import requests
import dashscope
def synthesize_speech(text, voice="Dylan", model="qwen-tts-latest"):
api_key = os.getenv("DASHSCOPE_API_KEY")
response = dashscope.audio.qwen_tts.SpeechSynthesizer.call(
model=model,
api_key=api_key,
text=text,
voice=voice,
)
return response.output.audio["url"]