Qwen3‑TTS‑VD‑Flash 與 Qwen3‑TTS‑VC‑Flash 發布:可控語音設計與快速多語言語音克隆

TL;DR

Qwen 宣佈了兩款全新文字轉語音模型——Qwen3‑TTS‑VD‑Flash 用於自然語言驅動的語音設計,Qwen3‑TTS‑VC‑Flash 用於 3 秒多語言語音克隆——兩者皆可透過 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 版圖的影響

  • Shift from Fixed Voice Sets to Dynamic Voice Design: 透過允許自然語言規格,Qwen3‑TTS‑VD‑Flash 消除預錄語音庫的瓶頸,讓 TTS 能快速原型化品牌專屬或角色驅動的語音。
  • Multilingual Cloning at Production Speed: 3 秒的克隆時長與十種語言的低 WER,使 Qwen3‑TTS‑VC‑Flash 成為全球化應用(如在地化虛擬助理、配音與跨語言內容創作)的可行方案。
  • Competitive Edge: 在基準測試上優於 GPT‑4o‑mini‑tts、Gemini‑2.5‑pro‑preview‑tts、MiniMax 與 ElevenLabs,顯示 Qwen 的架構(可能是大型多模態 Transformer 並微調聲學控制頭)正樹立新的效能基準。
  • Research Opportunities: Hugging Face 與 ModelScope 上的開源示範,加上提供的引用,邀請學術界評估可控 TTS、多語言語音轉移與對噪聲輸入的韌性。

如何開始使用

  1. Obtain an API key 從阿里雲 Model Studio 取得 API 金鑰(針對新加坡或北京的區域特定金鑰)。
  2. Install dependenciespip install requests dashscope pyaudio(加上作業系統特定的 portaudio 套件)。
  3. Choose a modelqwen3-tts-vd-realtime-2025-12-16 用於語音設計,qwen3-tts-vc-realtime-2025-11-27 用於克隆。
  4. Follow the code snippets 上述步驟建立語音檔案或克隆說話者,然後透過 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