Skip to main content

聲音複刻

根據音訊樣本建立自訂音色,用於語音合成或即時語音對話。

功能介紹

聲音複製適用於個人化語音助理、品牌專屬播報和有聲內容訂製等情境,無需訓練模型。
如需透過自然語言描述建立音色,無需提供音訊樣本,請使用聲音設計。

準備工作

  • 取得 API Key,並將其設定至環境變數 DASHSCOPE_API_KEY。
  • 取得業務空間 ID,將範例中的 YOUR_WORKSPACE_ID 替換為實際值。取得方式請參見地域與接入網域。
  • 安裝 Python HTTP 程式庫 requests:
    pip install requests
    
  • 準備符合音訊要求的音訊檔案。Qwen-Audio-TTS、Qwen-Audio-Realtime 和 CosyVoice 支援公開 URL 或 Base64 Data URI;MiniMax 仍使用公開 URL。以下範例使用範例音訊的 URL,本機音訊的編碼和傳參方式請參見 HTTP API。

開始使用

Qwen-Audio-TTS / Qwen-Audio-Realtime / CosyVoice 的複製音色在建立時綁定至 target_model,不能跨模型使用。如需讓多個模型使用同一段音訊的聲音,應為每個模型分別建立音色。
  • Qwen-Audio-TTS / CosyVoice
  • Qwen-Audio-Realtime
Qwen-Audio-TTS 和 CosyVoice 使用相同的音色建立和基本合成流程。以下以 qwen-audio-3.1-tts-flash 為例。
  1. 建立音色:透過 HTTP API 的 audio 欄位傳入參考音訊 URL 或 Base64 Data URI,target_model 指定目標模型,prefix 為音色名稱前綴。
  2. 合成語音:將傳回的音色 ID 傳入 voice,使用同一個目標模型合成語音並儲存音訊。
import os
import time
import requests

workspace_id = "YOUR_WORKSPACE_ID"
target_model = "qwen-audio-3.1-tts-flash"
base_url = f"https://{workspace_id}.cn-beijing.maas.aliyuncs.com/api/v1"
headers = {"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}"}

response = requests.post(
    f"{base_url}/services/audio/tts/customization",
    headers=headers,
    json={
        "model": "voice-enrollment",
        "input": {
            "action": "create_voice",
            "target_model": target_model,
            "prefix": "myvoice",
            "audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/cosyvoice/cosyvoice-zeroshot-sample.wav",
        },
    },
    timeout=60,
)
response.raise_for_status()
voice_id = response.json()["output"]["voice_id"]
print(f"voice_id: {voice_id}")

for _ in range(30):
    response = requests.post(
        f"{base_url}/services/audio/tts/customization",
        headers=headers,
        json={
            "model": "voice-enrollment",
            "input": {"action": "query_voice", "voice_id": voice_id},
        },
        timeout=60,
    )
    response.raise_for_status()
    status = response.json()["output"]["status"]
    if status == "OK":
        break
    if status != "DEPLOYING":
        raise RuntimeError(f"Voice status: {status}")
    time.sleep(1)
else:
    raise TimeoutError("Voice is not ready")

response = requests.post(
    f"{base_url}/services/audio/tts/SpeechSynthesizer",
    headers=headers,
    json={
        "model": target_model,
        "input": {
            "text": "今天天氣晴朗,適合外出散步。祝你度過愉快的一天。",
            "voice": voice_id,
            "format": "wav",
            "sample_rate": 24000,
        },
    },
    timeout=60,
)
response.raise_for_status()
audio_url = response.json()["output"]["audio"]["url"]
audio_response = requests.get(audio_url, timeout=60)
audio_response.raise_for_status()
with open("output.wav", "wb") as f:
    f.write(audio_response.content)
執行後,合成音訊儲存為 output.wav。儲存列印的音色 ID,後續可繼續使用。
更多聲音複製參數與範例請參見 HTTP API、Python SDK 和 Java SDK。 使用複製音色進行語音合成或即時語音對話的呼叫方式,請參見:

音訊要求

輸入音訊品質會影響音色的相似度和自然度。按照目標模型的規格準備樣本,並參照下方錄音建議減少雜訊、混響和其他人聲。
項目要求
支援格式WAV(16-bit)、MP3、M4A
音訊時長建議 10~20 秒,最長不超過 60 秒。
檔案大小≤ 10 MB
取樣率≥ 16 kHz
聲道單聲道或雙聲道。雙聲道音訊僅處理首聲道,首聲道需包含有效人聲。
內容至少包含 5 秒連續清晰的朗讀內容,其餘部分僅允許短暫停頓(≤ 2 秒)。避免背景音樂、環境雜訊和其他人聲。使用正常語速的說話音訊,不使用歌曲或唱歌錄音。
支援語言
  • Qwen-Audio-TTS / Qwen-Audio-Realtime:中文(普通話、廣東話、重慶話、東北話、甘肅話、貴州話、浙江話、河北話、河南話、湖北話、湖南話、江西話、寧波話、寧夏話、青島話、陝西話、山西話、山東話、上海話、四川話、雲南話)、英語、日語、韓語、俄語、法語、德語、葡萄牙語、泰語、印尼語、越南語、西班牙語、意大利語、馬來西亞語、菲律賓語、阿拉伯語
  • CosyVoice:參考音訊支援的語言因驅動音色的目標模型而異。
  • cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-flash:中文(普通話、廣東話、東北話、甘肅話、貴州話、河南話、湖北話、江西話、閩南話、寧夏話、山西話、陝西話、山東話、上海話、四川話、天津話、雲南話)、英文、法語、德語、日語、韓語、俄語、葡萄牙語、泰語、印尼語、越南語
  • cosyvoice-v3-plus:中文(普通話、廣東話、東北話、甘肅話、貴州話、河南話、湖北話、江西話、閩南話、寧夏話、山西話、陝西話、山東話、上海話、四川話、天津話、雲南話)、英文、法語、德語、日語、韓語、俄語
  • cosyvoice-v2:中文(普通話)、英文
清晰、自然的錄音有助於取得高品質的參考音訊並保留聲音特徵。錄音前可參考以下錄音與操作建議。
錄音裝置 可使用手機、數字錄音筆、專業錄音機等。建議使用支援高採樣率(≥ 24 kHz)錄音的裝置,以滿足音頻要求。錄音環境 場地
  • 建議在 10 平方米以內的小型封閉空間錄音。
  • 優先選擇配有吸音材料(如吸音棉、地毯、窗帘)的房間。
  • 避免空曠大廳、會議室、教室等高混響場所。
噪音控制
  • 室外噪音:關閉門窗,避免交通、施工等幹擾。
  • 室內噪音:關閉空調、風扇、日光燈鎮流器等裝置;可通過手機錄製環境音並放大播放,識別潛在噪音源。
混響控制
  • 混響會導致聲音模糊、清晰度下降。
  • 減少光滑表面反射:拉上窗帘、開啟衣櫃門、鋪放衣物或床單覆蓋案頭/櫃面。
  • 利用不規則物體(如書架、軟包傢具)實現聲波漫反射。
錄音文案
  • 內容無特殊限制,建議與目標應用情境一致。
  • 避免短句(如你好、是的),應使用完整句子。
  • 保持語義連貫,朗讀時避免頻繁停頓(建議至少連續 3 秒無中斷)。
  • 錄音全程保持一致的語速,避免開頭或結尾語速過快導致合成時出現卡頓。
  • 可加入適當情緒表達(如溫暖、親切、嚴肅),避免機械朗讀。
  • 不包含禁用語(如政治、色情、暴力相關內容),否則會導致複刻失敗。
操作建議 以普通臥室為例,完成降噪和混響控制後:
  1. 提前熟悉文案,設定角色語氣,自然演繹。
  2. 與錄音裝置保持約 10 厘米距離,避免噴麥或訊號過弱。

音色管理

Qwen-Audio-TTS、Qwen-Audio-Realtime 和 CosyVoice 使用相同的音色查詢、更新與刪除介面。具體介面與參數請參見聲音複製 HTTP API 參考。
  • 查詢音色清單:查看帳號下已有的自訂音色。
  • 查詢音色詳情:查看建立時間、綁定模型等資訊。
  • 更新音色:替換參考音訊,保留原有音色 ID。
  • 刪除音色:刪除不再使用的音色,釋放配額。
建立的音色預設長期有效。儲存音色 ID,需要時可透過查詢介面確認音色是否可用。

支援模型

  • 華北2(北京)
  • 新加坡
使用該地域的 API Key 呼叫以下模型:
  • Qwen-Audio-TTS:qwen-audio-3.1-tts-plus、qwen-audio-3.1-tts-flash、qwen-audio-3.0-tts-plus、qwen-audio-3.0-tts-flash
  • Qwen-Audio-Realtime:qwen-audio-3.1-realtime-plus、qwen-audio-3.0-realtime-plus、qwen-audio-3.0-realtime-flash
  • CosyVoice:cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-plus、cosyvoice-v3-flash、cosyvoice-v2

配額與限制

  • 音色數量:每個阿里雲百煉帳號的自訂音色總數上限為 1000 個。聲音複製和聲音設計共用此配額,不按模型分別計算。
    • 達到上限後,新的聲音複製或聲音設計建立請求將失敗。需先刪除不再使用的音色,釋放配額後再建立。

計費說明

  • Qwen-Audio-TTS / Qwen-Audio-Realtime / CosyVoice:建立音色免費。使用複製音色合成語音或進行即時語音對話時,按照目標模型計費。具體費用請參見模型計費。