声音设计(Voice Design)无需音频样本,仅通过自然语言描述即可创建定制化音色。
概述
声音设计适用于快速原型验证、创意内容生产、游戏角色配音等场景。阿里云百炼提供以下模型系列的声音设计能力:
CosyVoice:支持实时与非实时语音合成,可用于北京地域(v3.5 系列)和新加坡地域(v3 系列)。
Qwen-TTS:支持实时与非实时语音合成,声音描述长度上限更高(2048 字符),可用于北京和新加坡地域。
前提条件
已配置 API Key并将其设置到环境变量。
如果通过 DashScope SDK 调用,需要安装最新版SDK。
快速开始
声音设计的基本流程为:描述 → 创建 → 使用。
编写声音描述:用自然语言描述期望的声音特质。详细的编写指南请参见编写声音描述。
创建音色:调用声音设计接口,系统根据描述生成音色并返回预览音频。建议试听确认效果后再使用。
使用音色合成语音:调用语音合成接口,传入音色 ID 进行语音合成。
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://help.aliyun.com/zh/model-studio/get-api-key
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
# 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization
url = "https://dashscope.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__':
# 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope.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://help.aliyun.com/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
步骤一:通过声音描述创建音色
以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization。
curl -X POST 'https://dashscope.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 值。
以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation。
curl -X POST 'https://dashscope.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"
}
}'CosyVoice 声音设计
CosyVoice 同样支持通过文本描述创建音色,使用流程与 Qwen-TTS 类似。
CosyVoice 声音设计仅支持北京地域(v3.5 系列)和新加坡地域(v3 系列)。
步骤一:通过声音描述创建音色
调用API,通过voice_prompt参数传入声音描述,preview_text参数指定预览音频朗读的文本。
以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization。
curl -X POST 'https://dashscope.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
# 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
# 若没有配置环境变量,请用百炼API Key将下行替换为:dashscope.api_key = "sk-xxx"
dashscope.api_key = os.environ.get('DASHSCOPE_API_KEY')
# 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:wss://dashscope-intl.aliyuncs.com/api-ws/v1/inference
dashscope.base_websocket_api_url='wss://dashscope.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)编写声音描述
声音描述(voice_prompt)直接决定生成音色的效果。描述越清晰具体,生成结果越符合预期。
要求与限制
长度限制:
voice_prompt的最大长度因模型而异:CosyVoice 不超过 500 个字符,Qwen-TTS 不超过 2048 个字符。支持语言:描述文本仅支持中文和英文。
核心原则
具体而非模糊:使用描绘声音特质的词语,如"低沉""清脆""语速偏快",避免"好听""普通"等主观或模糊的表述。
多维而非单一:好的描述通常涵盖多个维度(如性别、年龄、情感等)。仅写"女声"过于宽泛,难以生成有特色的音色。
客观而非主观:聚焦声音的物理和感知特征。例如,用"音调偏高,带有活力"代替"我最喜欢的声音"。
原创而非模仿:描述声音的特质,而非要求模仿特定人物(如名人、演员)。模型不支持模仿,且可能涉及版权风险。
简洁而非冗余:避免重复的同义词或无意义的修饰,确保每个词都有明确作用。
描述维度参考
建议组合以下维度描述声音,维度越丰富,生成效果越精准。
维度 | 描述示例 |
性别 | 男性、女性、中性 |
年龄 | 儿童 (5-12 岁)、青少年 (13-18 岁)、青年 (19-35 岁)、中年 (36-55 岁)、老年 (55 岁以上) |
音调 | 高音、中音、低音、偏高、偏低 |
语速 | 快速、中速、缓慢、偏快、偏慢 |
情感 | 开朗、沉稳、温柔、严肃、活泼、冷静、治愈 |
特点 | 有磁性、清脆、沙哑、圆润、甜美、浑厚、有力 |
用途 | 新闻播报、广告配音、有声书、动画角色、语音助手、纪录片解说 |
示例
标准播音风格:吐字清晰精准,字正腔圆
年轻活泼的女性声音,语速较快,带有明显的上扬语调,适合介绍时尚产品
沉稳的中年男性,语速缓慢,音色低沉有磁性,适合朗读新闻或纪录片解说
温柔知性的女性,30 岁左右,语调平和,适合有声书朗读
可爱的儿童声音,大约 8 岁女孩,说话略带稚气,适合动画角色配音
管理自定义音色
声音设计支持查询列表、查看详情和删除操作。API 接口和参数详情请参见API 参考。
适用范围
不同服务部署范围支持的模型不同:
中国内地
服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
调用以下模型时,请选择北京地域的API Key:
CosyVoice:cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-plus、cosyvoice-v3-flash
Qwen-TTS:
千问3-TTS-VD-Realtime:qwen3-tts-vd-realtime-2026-01-15(最新快照版)、qwen3-tts-vd-realtime-2025-12-16(快照版)
千问3-TTS-VD:qwen3-tts-vd-2026-01-26(最新快照版)
国际
服务部署范围为国际时,模型推理计算资源在全球范围内动态调度(不含中国内地);静态数据存储于您所选的地域。该部署范围支持的地域:新加坡。
调用以下模型时,请选择新加坡地域的API Key:
CosyVoice:cosyvoice-v3-plus、cosyvoice-v3-flash
Qwen-TTS:
千问3-TTS-VD-Realtime:qwen3-tts-vd-realtime-2026-01-15(最新快照版)、qwen3-tts-vd-realtime-2025-12-16(快照版)
千问3-TTS-VD:qwen3-tts-vd-2026-01-26(最新快照版)
CosyVoice 声音设计基于 FunAudioGen-VD 模型能力。
相同描述文本(Prompt)设计的音色可能存在差异,建议多次生成后择优使用。
API 参考
常见问题
Q:相同的声音描述每次生成的音色一样吗?
不一定。声音设计具有随机性,相同描述可能生成略有差异的音色。建议多次生成后试听,择优使用。
Q:声音描述可以使用哪些语言?
目前声音描述(voice_prompt)仅支持中文和英文,但生成的音色可用于合成多种语言的语音。
Q:声音设计和声音复刻有什么区别?
声音设计通过文本描述从零创建音色,无需音频样本,适合设计全新的声音形象。声音复刻基于真实音频样本复制音色,适合还原特定人物的声音。详情请参见声音复刻。