聲音設計(Voice Design)無需音頻樣本,僅通過自然語言描述即可建立定製化音色。
概述
聲音設計適用於快速原型驗證、創意內容生產、遊戲角色配音等情境。阿里雲百鍊提供以下模型系列的聲音設計能力:
-
CosyVoice:支援即時語音合成,可用於北京地區(v3.5 系列和 v3 系列)。
-
Qwen-TTS:支援即時與非即時語音合成,聲音描述長度上限更高(2048 字元),可用於北京和新加坡地區。
前提條件
-
已配置 API Key並將其設定到環境變數。
-
如果通過 DashScope SDK 調用,需要安裝最新版SDK。
快速開始
聲音設計的基本流程為:描述 → 建立 → 使用。
-
編寫聲音描述:用自然語言描述期望的聲音特質。詳細的編寫指南請參見編寫聲音描述。
-
建立音色:調用聲音設計介面,系統根據描述產生音色並返回預覽音頻。建議試聽確認效果後再使用。
-
使用音色合成語音:調用語音合成介面,傳入音色 ID 進行語音合成。
CosyVoice 聲音設計
以下樣本示範如何通過文本描述建立 CosyVoice 音色並用於語音合成。
CosyVoice 聲音設計僅支援北京地區(v3.5 系列和 v3 系列)。
步驟一:通過聲音描述建立音色
調用API,通過voice_prompt參數傳入聲音描述,preview_text參數指定預覽音頻朗讀的文本。
curl -X POST 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/customization' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "voice-enrollment",
"input": {
"action": "create_voice",
"target_model": "cosyvoice-v3.5-plus",
"voice_prompt": "沉穩的中年男性播音員,音色低沉渾厚,富有磁性,語速平穩,吐字清晰,適合用於新聞播報或紀錄片解說。",
"preview_text": "各位聽眾朋友,大家好,歡迎收聽晚間新聞。",
"prefix": "announcer"
},
"parameters": {
"sample_rate": 24000,
"response_format": "wav"
}
}'
步驟二:使用設計音色合成語音
將上一步返回的voice_id值填入以下請求中。
# coding=utf-8
import dashscope
from dashscope.audio.tts_v2 import *
import os
# CosyVoice 聲音設計僅支援北京地區。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:dashscope.api_key = "sk-xxx"
dashscope.api_key = os.environ.get('DASHSCOPE_API_KEY')
# CosyVoice 聲音設計僅支援北京地區,以下為華北2(北京)地區的配置,調用時請將"{WorkspaceId}"替換為真實的業務空間ID,各地區的配置不同。
dashscope.base_websocket_api_url='wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference'
# 聲音設計、語音合成要使用相同的模型
model = "cosyvoice-v3.5-plus"
# 將voice參數替換為聲音設計產生的專屬音色
voice = "voice_id"
# 執行個體化SpeechSynthesizer,並在構造方法中傳入模型(model)、音色(voice)等請求參數
synthesizer = SpeechSynthesizer(model=model, voice=voice)
# 發送待合成文本,擷取二進位音頻
audio = synthesizer.call("今天天氣怎麼樣?")
# 首次發送文本時需建立 WebSocket 串連,因此首包延遲會包含串連建立的耗時
print('[Metric] requestId為:{},首包延遲為:{}毫秒'.format(
synthesizer.get_last_request_id(),
synthesizer.get_first_package_delay()))
# 將音頻儲存至本地
with open('output.mp3', 'wb') as f:
f.write(audio)
Qwen-TTS 聲音設計
以下樣本示範如何建立音色並用於語音合成。
建議先試聽返回的預覽音頻,確認效果後再用於合成,以降低調用成本。
Python
import os
import requests
import dashscope
# ======= 常量配置 =======
DEFAULT_TARGET_MODEL = "qwen3-tts-vd-2026-01-26" # 聲音設計、語音合成要使用相同的模型
DEFAULT_PREFERRED_NAME = "custom_voice"
# 聲音描述:用自然語言描述期望的聲音特質
VOICE_PROMPT = "年輕活潑的女性聲音,語速較快,帶有明顯的上揚語調,適合介紹時尚產品。"
def create_voice_by_design(voice_prompt: str,
target_model: str = DEFAULT_TARGET_MODEL,
preferred_name: str = DEFAULT_PREFERRED_NAME) -> str:
"""
通過聲音描述建立音色,並返回 voice 參數
"""
# 新加坡地區和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:api_key = "sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
# 以下為新加坡地區的配置。
url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"
payload = {
"model": "qwen-voice-design",
"input": {
"action": "create",
"target_model": target_model,
"preferred_name": preferred_name,
"voice_prompt": voice_prompt,
"preview_text": "大家好,歡迎來到我們的直播間!今天給大家推薦的這款產品真的超級好用。"
},
"parameters": {
"sample_rate": 24000,
"response_format": "wav"
}
}
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
resp = requests.post(url, json=payload, headers=headers)
if resp.status_code != 200:
raise RuntimeError(f"建立 voice 失敗: {resp.status_code}, {resp.text}")
result = resp.json()
preview_audio = result.get("output", {}).get("preview_audio")
if preview_audio:
import base64
audio_data = base64.b64decode(preview_audio["data"])
with open("preview_audio.wav", "wb") as f:
f.write(audio_data)
print(f"預覽音頻已儲存到 preview_audio.wav ({len(audio_data)} bytes)")
try:
return result["output"]["voice"]
except (KeyError, ValueError) as e:
raise RuntimeError(f"解析 voice 響應失敗: {e}")
if __name__ == '__main__':
# 以下為新加坡地區的配置。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
voice_id = create_voice_by_design(VOICE_PROMPT)
print(f"建立的音色ID: {voice_id}")
text = "大家好,歡迎來到我們的直播間!今天給大家推薦的這款產品真的超級好用。"
response = dashscope.MultiModalConversation.call(
model=DEFAULT_TARGET_MODEL,
# 新加坡地區和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:api_key = "sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
text=text,
voice=voice_id,
stream=False
)
print(response)
cURL
步驟一:通過聲音描述建立音色
以下為新加坡地區的配置。
curl -X POST 'https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen-voice-design",
"input": {
"action": "create",
"target_model": "qwen3-tts-vd-2026-01-26",
"preferred_name": "custom_voice",
"voice_prompt": "年輕活潑的女性聲音,語速較快,帶有明顯的上揚語調,適合介紹時尚產品。",
"preview_text": "大家好,歡迎來到我們的直播間!今天給大家推薦的這款產品真的超級好用。"
},
"parameters": {
"sample_rate": 24000,
"response_format": "wav"
}
}'
步驟二:使用設計音色合成語音
將 YOUR_VOICE_ID 替換為上一步返回的 voice 值。
以下為新加坡地區的配置。
curl -X POST 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-tts-vd-2026-01-26",
"input": {
"text": "大家好,歡迎來到我們的直播間!今天給大家推薦的這款產品真的超級好用。",
"voice": "YOUR_VOICE_ID"
}
}'
編寫聲音描述
聲音描述(voice_prompt)直接決定產生音色的效果。描述越清晰具體,產生結果越符合預期。
要求與限制
-
長度限制:
voice_prompt的最大長度因模型而異:CosyVoice 不超過 500 個字元,Qwen-TTS 不超過 2048 個字元。 -
支援語言:描述文本僅支援中文和英文。
核心原則
-
具體而非模糊:使用描繪聲音特質的詞語,如"低沉""清脆""語速偏快",避免"好聽""普通"等主觀或模糊的表述。
-
多維而非單一:好的描述通常涵蓋多個維度(如性別、年齡、情感等)。僅寫"女聲"過於寬泛,難以產生有特色的音色。
-
客觀而非主觀:聚焦聲音的物理和感知特徵。例如,用"音調偏高,帶有活力"代替"我最喜歡的聲音"。
-
原創而非模仿:描述聲音的特質,而非要求模仿特定人物(如名人、演員)。模型不支援模仿,且可能涉及著作權風險。
-
簡潔而非冗餘:避免重複的同義字或無意義的修飾,確保每個詞都有明確作用。
描述維度參考
建議組合以下維度描述聲音,維度越豐富,產生效果越精準。
|
維度 |
描述樣本 |
|
性別 |
男性、女性、中性 |
|
年齡 |
兒童 (5-12 歲)、青少年 (13-18 歲)、青年 (19-35 歲)、中年 (36-55 歲)、老年 (55 歲以上) |
|
音調 |
高音、中音、低音、偏高、偏低 |
|
語速 |
快速、中速、緩慢、偏快、偏慢 |
|
情感 |
開朗、沉穩、溫柔、嚴肅、活潑、冷靜、治癒 |
|
特點 |
有磁性、清脆、沙啞、圓潤、甜美、渾厚、有力 |
|
用途 |
新聞播報、廣告配音、有聲書、動畫角色、語音助手、紀錄片解說 |
樣本
-
標準播音風格:吐字清晰精準,字正腔圓
-
年輕活潑的女性聲音,語速較快,帶有明顯的上揚語調,適合介紹時尚產品
-
沉穩的中年男性,語速緩慢,音色低沉有磁性,適合朗讀新聞或紀錄片解說
-
溫柔知性的女性,30 歲左右,語調平和,適合有聲書朗讀
-
可愛的兒童聲音,大約 8 歲女孩,說話略帶稚氣,適合動畫角色配音
管理自訂音色
聲音設計支援查詢列表、查看詳情和刪除操作。API 介面和參數詳情請參見API 參考。
配額與計費
音色配額與自動清理
-
音色總數限制:每個阿里雲百鍊帳號下,CosyVoice 與 Qwen-TTS 分別最多可建立 1000 個自訂音色(兩類配額獨立計算)。
-
自動清理規則:若單個音色在過去 1 年內未被用於任何語音合成請求,系統將自動刪除該音色。
計費規則
-
CosyVoice:建立音色免費。
-
Qwen-TTS:按 $0.2/個 計費,建立失敗不計費。
免費額度(僅新加坡地區提供):
-
阿里雲百鍊開通後 90 天內,可享 10 次免費音色建立機會。
-
建立失敗不佔用免費次數。
-
刪除音色不會恢複免費次數。
-
免費額度用完或超出 90 天有效期間後,建立音色將按 $0.2/個 的價格計費。
-
支援的模型與地區
新加坡
調用以下模型時,請選擇新加坡地區的API Key:
-
Qwen-TTS:
-
Qwen3-TTS-VD-Realtime:qwen3-tts-vd-realtime-2026-01-15(最新快照版)、qwen3-tts-vd-realtime-2025-12-16(快照版)
-
Qwen3-TTS-VD:qwen3-tts-vd-2026-01-26(最新快照版)
-
華北2(北京)
調用以下模型時,請選擇北京地區的API Key:
-
CosyVoice:cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-plus、cosyvoice-v3-flash
-
Qwen-TTS:
-
Qwen3-TTS-VD-Realtime:qwen3-tts-vd-realtime-2026-01-15(最新快照版)、qwen3-tts-vd-realtime-2025-12-16(快照版)
-
Qwen3-TTS-VD:qwen3-tts-vd-2026-01-26(最新快照版)
-
-
CosyVoice 聲音設計基於 FunAudioGen-VD 模型能力。
-
相同描述文本(Prompt)設計的音色可能存在差異,建議多次產生後擇優使用。
API 參考
常見問題
Q:相同的聲音描述每次產生的音色一樣嗎?
不一定。聲音設計具有隨機性,相同描述可能產生略有差異的音色。建議多次產生後試聽,擇優使用。
Q:聲音描述可以使用哪些語言?
目前聲音描述(voice_prompt)僅支援中文和英文,但產生的音色可用於合成多種語言的語音。
Q:聲音設計和聲音複刻有什麼區別?
聲音設計通過文本描述從零建立音色,無需音頻樣本,適合設計全新的聲音形象。聲音複刻基於真實音頻樣本複製音色,適合還原特定人物的聲音。詳情請參見聲音複刻。