Qwen3-TTS-VD-Flash 与 Qwen3-TTS-VC-Flash 发布:可控语音设计与快速多语言语音克隆

TL;DR

Qwen 宣布了两款新的文本转语音模型——用于自然语言驱动的语音设计的 Qwen3‑TTS‑VD‑Flash 和用于 3 秒多语言语音克隆的 Qwen3‑TTS‑VC‑Flash——两者均可通过 Qwen API 访问,并在可控性、表现力以及词错误率方面优于领先竞争对手。

新模型概览

Qwen3‑TTS‑VD‑Flash(语音设计)

  • Purpose: 使用户能够通过用自然语言描述声学属性、角色、情感和说话风格来创建自定义语音配置文件。无需提供参考音频或从固定目录中选择。
  • Control Granularity: 支持对音色、韵律、速度、音高和情感语调的细粒度指令,覆盖从 说什么怎么说 的完整流程。
  • Benchmark Performance: 在 InstructTTS‑Eval 套件上,Qwen3‑TTS‑VD‑Flash 整体上优于 GPT‑4o‑mini‑tts 和 Mimo‑audio‑7b‑instruct,并在角色扮演场景中超越 Gemini‑2.5‑pro‑preview‑tts。
  • Expressiveness & Robustness: 生成类人语音,能够自动根据语义线索调整语调和节奏,并可靠地解析复杂或非标准文本(例如拼音、特殊符号、罕见字符)。

Qwen3‑TTS‑VC‑Flash(语音克隆)

  • Purpose: 提供约 3 秒的快速说话人语音克隆,并可使用克隆的音色在十种语言(中文、英文、德文、意大利文、葡萄牙文、西班牙文、日文、韩文、法文和俄文)中合成语音。
  • Multilingual Accuracy: 在 MiniMax TTS 多语言测试集上实现了最低的平均词错误率(WER),在所有支持的语言上超越 MiniMax、ElevenLabs 和 GPT‑4o‑Audio‑Preview。
  • Robust Text Handling: 能够处理复杂脚本、标点以及真实环境中的音频输入而不降级,在保持说话人身份的同时呈现准确内容。
  • Cross‑Species Experimentation: 展示了克隆非人类发声(例如山羊叫声)的能力,作为极端音色灵活性的概念验证。

关键技术能力

可控生成

  • 用户可以使用自然语言提示,例如 “中年男性,浑厚低音,超活力的广告配音” 来获得与描述相匹配的语音。
  • 角色扮演示例包括不同人物(例如邪恶女巫、企业项目经理),并可定制音高、速度、音量和情感曲线。

高表现力

  • 两个模型都会根据语义内容动态调整韵律,提供生动且上下文感知的表达,无需手动时序提示。
  • 示例输出展示了细腻的情感变化——从悲伤、气息化的音调到自信、坚定的语调——在单句中完成。

对复杂输入的鲁棒性

  • 模型能够正确朗读拼音标注、罕见字符以及混合语言句子,保持可懂度和自然度。
  • 对真实环境音频(例如历史中文文本、多语言对话)进行处理时不出现错误,展示了强大的解析流水线。

实际使用

通过 API 进行语音设计(Python 示例)

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)

此代码片段创建了一个自定义语音配置文件并保存预览 WAV 文件。

通过 API 进行语音克隆(Python 示例)

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()

此示例展示了如何注册 3 秒的语音样本,然后实时流式传输合成的多语言文本。

对 TTS 领域的影响

  • 从固定语音集合向动态语音设计的转变:通过允许自然语言规格,Qwen3‑TTS‑VD‑Flash 消除了预录语音库的瓶颈,使 TTS 能够快速原型化品牌专属或角色驱动的语音。
  • 生产速度的多语言克隆:3 秒的克隆时长以及十种语言的低词错误率,使 Qwen3‑TTS‑VC‑Flash 在本地化虚拟助理、配音以及跨语言内容创作等全球化应用中具备可行性。
  • 竞争优势:在基准测试中优于 GPT‑4o‑mini‑tts、Gemini‑2.5‑pro‑preview‑tts、MiniMax 和 ElevenLabs,表明 Qwen 的架构(可能是大型多模态 Transformer 并配有精调声学控制头)正在设定新的性能基准。
  • 研究机会:Hugging Face 与 ModelScope 上的开源演示以及提供的引用,邀请学术界评估可控 TTS、多语言语音迁移以及对噪声输入的鲁棒性。

入门指南

  1. 获取 API 密钥,来自阿里云模型工作室(针对新加坡或北京的地区专属密钥)。
  2. 安装依赖pip install requests dashscope pyaudio(加上操作系统特定的 portaudio 包)。
  3. 选择模型qwen3-tts-vd-realtime-2025-12-16 用于语音设计,qwen3-tts-vc-realtime-2025-11-27 用于克隆。
  4. 按照上述代码片段 创建语音配置文件或克隆说话人,然后通过 REST 或 WebSocket 接口合成文本。

引用

@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}
}

所有技术细节均直接取自 Qwen 于 2025 年 12 月 23 日的博客文章。未加入任何额外的声明或数据。

Sources