Qwen3-TTS-VD-Flash and Qwen3-TTS-VC-Flash release: controllable voice design and rapid multilingual voice cloning

TL;DR

Qwen announced two new text‑to‑speech models—Qwen3‑TTS‑VD‑Flash for natural‑language‑driven voice design and Qwen3‑TTS‑VC‑Flash for 3‑second multilingual voice cloning—both accessible via the Qwen API and delivering higher controllability, expressiveness, and lower word‑error rates than leading competitors.

Overview of the New Models

Qwen3‑TTS‑VD‑Flash (Voice Design)

  • Purpose: Enables users to create custom voice profiles by describing acoustic attributes, persona, emotion, and speaking style in plain language. No need to supply reference audio or select from a fixed catalog.
  • Control Granularity: Supports fine‑grained instructions for timbre, prosody, speed, pitch, and emotional tone, covering the full pipeline from what to say to how to say it.
  • Benchmark Performance: On the InstructTTS‑Eval suite, Qwen3‑TTS‑VD‑Flash outperforms GPT‑4o‑mini‑tts and Mimo‑audio‑7b‑instruct overall, and surpasses Gemini‑2.5‑pro‑preview‑tts in role‑playing scenarios.
  • Expressiveness & Robustness: Generates human‑like speech that automatically adapts tone and rhythm to semantic cues, and reliably parses complex or non‑standard text (e.g., pinyin, special symbols, rare characters).

Qwen3‑TTS‑VC‑Flash (Voice Cloning)

  • Purpose: Provides rapid (≈3 seconds) cloning of a speaker’s voice and can synthesize speech in ten languages—Chinese, English, German, Italian, Portuguese, Spanish, Japanese, Korean, French, and Russian—using the cloned timbre.
  • Multilingual Accuracy: Achieves the lowest average word‑error rate (WER) on the MiniMax TTS Multilingual Test Set, beating MiniMax, ElevenLabs, and GPT‑4o‑Audio‑Preview across all supported languages.
  • Robust Text Handling: Handles complex scripts, punctuation, and in‑the‑wild audio inputs without degradation, preserving speaker identity while rendering accurate content.
  • Cross‑Species Experimentation: Demonstrates ability to clone non‑human vocalizations (e.g., goat sounds) as a proof of concept for extreme timbral flexibility.

Key Technical Capabilities

Controllable Generation

  • Users issue natural‑language prompts such as “middle‑aged male, booming baritone, hyper‑energetic infomercial voice” and receive speech that matches the description.
  • Role‑play examples include distinct personas (e.g., an evil sorceress, a corporate project manager) with tailored pitch, speed, volume, and emotional arcs.

High Expressiveness

  • Both models adjust prosody dynamically based on semantic content, delivering vivid, context‑aware delivery without manual timing cues.
  • Sample outputs show nuanced emotional shifts—from sorrowful, breathy tones to confident, assertive speech—within a single utterance.

Robustness to Complex Input

  • The models correctly read pinyin annotations, rare characters, and mixed‑language sentences, maintaining intelligibility and naturalness.
  • In‑the‑wild audio (e.g., historical Chinese text, multilingual dialogues) is processed without failure, demonstrating strong parsing pipelines.

Practical Usage

Voice Design via API (Python example)

import requests, base64, os
api_key = os.getenv("DASHSCOPE_API_KEY")
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "model": "qwen-voice-design",
    "input": {
        "action": "create",
        "target_model": "qwen3-tts-vd-realtime-2025-12-16",
        "voice_prompt": "A composed middle‑aged male announcer with a deep, rich, magnetic voice, steady speed, clear articulation.",
        "preview_text": "Dear listeners, welcome to the evening news.",
        "preferred_name": "announcer",
        "language": "en"
    },
    "parameters": {"sample_rate": 24000, "response_format": "wav"}
}
url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"
resp = requests.post(url, headers=headers, json=payload, timeout=60)
if resp.status_code == 200:
    out = resp.json()["output"]
    voice_name = out["voice"]
    audio = base64.b64decode(out["preview_audio"]["data"])
    with open(f"{voice_name}_preview.wav", "wb") as f:
        f.write(audio)
    print(f"Created voice {voice_name}")
else:
    print("Error", resp.status_code, resp.text)

The snippet creates a custom voice profile and saves a preview WAV file.

Voice Cloning via API (Python example)

import dashscope, base64, pathlib, os
from dashscope.audio.qwen_tts_realtime import QwenTtsRealtime, QwenTtsRealtimeCallback, AudioFormat

def create_voice(file_path):
    api_key = os.getenv("DASHSCOPE_API_KEY")
    data_uri = "data:audio/mpeg;base64," + base64.b64encode(pathlib.Path(file_path).read_bytes()).decode()
    payload = {
        "model": "qwen-voice-enrollment",
        "input": {
            "action": "create",
            "target_model": "qwen3-tts-vc-realtime-2025-11-27",
            "preferred_name": "guanyu",
            "audio": {"data": data_uri}
        }
    }
    headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
    resp = requests.post("https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization", json=payload, headers=headers)
    return resp.json()["output"]["voice"]

class PrintCallback(QwenTtsRealtimeCallback):
    def on_event(self, response):
        if response.get('type') == 'response.audio.delta':
            audio = base64.b64decode(response['delta'])
            # stream or save audio here

voice = create_voice("voice.mp3")
callback = PrintCallback()
tts = QwenTtsRealtime(model="qwen3-tts-vc-realtime-2025-11-27", callback=callback,
                       url="wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime")
tts.connect()
tts.update_session(voice=voice, response_format=AudioFormat.PCM_24000HZ_MONO_16BIT, mode='server_commit')
for chunk in ["Right? I really like this kind of supermarket,", "especially during the New Year."]:
    tts.append_text(chunk)
    time.sleep(0.1)
tts.finish()
callback.wait_for_finished()

The example shows how to enroll a 3‑second voice sample, then stream synthesized multilingual text in real time.

Implications for the TTS Landscape

  • Shift from Fixed Voice Sets to Dynamic Voice Design: By allowing natural‑language specifications, Qwen3‑TTS‑VD‑Flash removes the bottleneck of pre‑recorded voice libraries, opening TTS to rapid prototyping of brand‑specific or character‑driven voices.
  • Multilingual Cloning at Production Speed: The 3‑second cloning window and low WER across ten languages make Qwen3‑TTS‑VC‑Flash viable for global applications such as localized virtual assistants, dubbing, and cross‑language content creation.
  • Competitive Edge: Benchmark superiority over GPT‑4o‑mini‑tts, Gemini‑2.5‑pro‑preview‑tts, MiniMax, and ElevenLabs indicates that Qwen’s architecture (likely a large multimodal transformer with fine‑tuned acoustic control heads) is setting a new performance baseline.
  • Research Opportunities: The open‑source demos on Hugging Face and ModelScope, together with the provided citation, invite academic evaluation of controllable TTS, multilingual voice transfer, and robustness to noisy inputs.

How to Get Started

  1. Obtain an API key from Alibaba Cloud Model Studio (region‑specific keys for Singapore or Beijing).
  2. Install dependencies: pip install requests dashscope pyaudio (plus OS‑specific portaudio packages).
  3. Choose a model: qwen3-tts-vd-realtime-2025-12-16 for voice design, qwen3-tts-vc-realtime-2025-11-27 for cloning.
  4. Follow the code snippets above to create a voice profile or clone a speaker, then synthesize text via the REST or WebSocket endpoints.

Citation

@misc{qwen3_tts_202512,
  author = {Qwen Team, Alibaba},
  title = {Qwen3-TTS Steps Up: Voice Cloning and Voice Design!},
  year = {2025},
  url = {https://qwen.ai/blog?id=qwen3-tts-vc-voicedesign},
  urldate = {2025-12-23}
}

All technical details are drawn directly from the Qwen blog post dated 23 December 2025. No additional claims or figures have been introduced.

Sources