根据音频样本创建自定义音色,用于语音合成或实时语音对话。
功能介绍
声音复刻适用于个性化语音助手、品牌专属播报和有声内容定制等场景,无需训练模型。
说明如需通过自然语言描述创建音色,无需提供音频样本,请使用声音设计。
准备工作
-
获取 API Key,并将其配置到环境变量
DASHSCOPE_API_KEY。 -
获取业务空间 ID,将示例中的
YOUR_WORKSPACE_ID替换为真实值。获取方式请参见地域与接入域名。 -
安装 DashScope SDK:
pip install -U dashscope
开始使用
说明Qwen-Audio-TTS / Qwen-Audio-Realtime / CosyVoice 的复刻音色在创建时绑定到 target_model,不能跨模型使用。如需让多个模型使用同一段音频的声音,应为每个模型分别创建音色。
Qwen-Audio-TTS / CosyVoice
Qwen-Audio-TTS 和 CosyVoice 使用相同的音色创建和基础合成流程。以下以 qwen-audio-3.1-tts-flash 为例。
- 创建音色:用
url指定参考音频,通过target_model指定目标模型,prefix为音色名称前缀。 - 合成语音:将返回的音色 ID 传入
voice,使用同一个目标模型合成语音并保存音频。
import os
import dashscope
from dashscope.audio.tts_v2 import AudioFormat, SpeechSynthesizer, VoiceEnrollmentService
dashscope.api_key = os.environ["DASHSCOPE_API_KEY"]
workspace_id = "YOUR_WORKSPACE_ID"
target_model = "qwen-audio-3.1-tts-flash"
dashscope.base_http_api_url = (
f"https://{workspace_id}.cn-beijing.maas.aliyuncs.com/api/v1"
)
dashscope.base_websocket_api_url = (
f"wss://{workspace_id}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference"
)
# 创建音色。
service = VoiceEnrollmentService()
voice_id = service.create_voice(
target_model=target_model,
prefix="myvoice",
url="https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/cosyvoice/cosyvoice-zeroshot-sample.wav",
)
print(f"voice_id: {voice_id}")
# 使用绑定模型和返回的音色 ID 合成语音。
synthesizer = SpeechSynthesizer(
model=target_model,
voice=voice_id,
format=AudioFormat.WAV_24000HZ_MONO_16BIT,
)
audio = synthesizer.call("今天天气晴朗,适合外出散步。祝你度过愉快的一天。")
with open("output.wav", "wb") as f:
f.write(audio)
运行后,合成音频保存为 output.wav。保存打印的音色 ID,后续可继续使用。
Qwen-Audio-Realtime
Qwen-Audio-Realtime 的复刻音色用于自定义实时语音对话的回复声音。以下以 qwen-audio-3.1-realtime-plus 为例创建音色。
import os
import dashscope
from dashscope.audio.tts_v2 import VoiceEnrollmentService
dashscope.api_key = os.environ["DASHSCOPE_API_KEY"]
workspace_id = "YOUR_WORKSPACE_ID"
target_model = "qwen-audio-3.1-realtime-plus"
dashscope.base_http_api_url = (
f"https://{workspace_id}.cn-beijing.maas.aliyuncs.com/api/v1"
)
# 创建音色。
service = VoiceEnrollmentService()
voice_id = service.create_voice(
target_model=target_model,
prefix="myvoice",
url="https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/cosyvoice/cosyvoice-zeroshot-sample.wav",
)
print(f"voice_id: {voice_id}")
建立实时语音对话连接后,在首次 session.update 事件中,将 session.voice 设置为返回的音色 ID(替换下方的 VOICE_ID)。会话模型必须与创建音色时的 target_model 一致。
{
"type": "session.update",
"session": {
"voice": "VOICE_ID"
}
}
MiniMax
MiniMax 通过 HTTP API 创建音色,并支持非实时语音合成。
创建音色:用 voice_id 指定新音色的 ID,audio_url 指定可访问的音频 URL,text 指定试听文本。请求返回试听音频,费用见计费说明。
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; charset=utf-8' \
-d '{
"input": {
"action": "voice_clone",
"voice_id": "my-custom-voice",
"audio_url": "https://your-audio-url.wav",
"text": "你说是什么就是什么"
},
"model": "MiniMax/speech-2.8-turbo"
}'
合成语音:将创建时指定的 voice_id 传入 voice_setting.voice_id。
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": "MiniMax/speech-2.8-turbo",
"input": {
"text": "今天天气怎么样?",
"voice_setting": {
"voice_id": "my-custom-voice",
"speed": 1,
"vol": 1,
"pitch": 0
},
"audio_setting": {
"sample_rate": 32000,
"bitrate": 128000,
"format": "mp3",
"channel": 1
}
}
}'
更多声音复刻参数与示例请参见 HTTP API、Python SDK和 Java SDK。
使用复刻音色进行语音合成或实时语音对话的调用方式,请参见:
- Qwen-Audio-TTS:模型接入方式
- CosyVoice:模型接入方式
- Qwen-Audio-Realtime:模型接入方式
- MiniMax:非实时语音合成 API 参考
音频要求
输入音频的质量会影响音色的相似度和自然度。按目标模型的规格准备样本,并参照下方录音建议减少噪声、混响和其他人声。
Qwen-Audio-TTS / Qwen-Audio-Realtime / CosyVoice
| 项目 | 要求 |
|---|---|
支持格式 | WAV(16-bit)、MP3、M4A |
音频时长 | 推荐 10~20 秒,最长不超过 60 秒。 |
文件大小 | ≤ 10 MB |
采样率 | ≥ 16 kHz |
声道 | 单声道或双声道。双声道音频仅处理首声道,首声道需包含有效人声。 |
内容 | 至少包含 5 秒连续清晰的朗读内容,其余部分仅允许短暂停顿(≤ 2 秒)。避免背景音乐、环境噪声和其他人声。使用正常语速的说话音频,不使用歌曲或唱歌录音。 |
支持语言 |
点击查看 CosyVoice 各模型支持的语言
|
MiniMax
| 项目 | 要求 |
|---|---|
支持格式 | MP3、M4A、WAV |
音频时长 | 不低于 10 秒,最长不超过 5 分钟 |
文件大小 | ≤ 20 MB |
内容 | 音频应包含连续清晰的朗读内容(无背景音),停顿时长不超过 2 秒。整段音频应避免出现背景音乐、环境噪音或其他人声。请使用正常语速的说话音频,不要上传歌曲或唱歌录音。 |
支持语言 | 无特殊限制 |
清晰、自然的录音有助于获得高质量的参考音频并保留声音特征。录音前可参考以下录音与操作建议。
点击查看录音与操作建议
录音设备
可使用手机、数字录音笔、专业录音机等。建议使用支持高采样率(≥ 24 kHz)录音的设备,以满足音频要求。
录音环境
场地
- 建议在 10 平方米以内的小型封闭空间录音。
- 优先选择配有吸音材料(如吸音棉、地毯、窗帘)的房间。
- 避免空旷大厅、会议室、教室等高混响场所。
噪音控制
- 室外噪音:关闭门窗,避免交通、施工等干扰。
- 室内噪音:关闭空调、风扇、日光灯镇流器等设备;可通过手机录制环境音并放大播放,识别潜在噪音源。
混响控制
- 混响会导致声音模糊、清晰度下降。
- 减少光滑表面反射:拉上窗帘、打开衣柜门、铺放衣物或床单覆盖桌面/柜面。
- 利用不规则物体(如书架、软包家具)实现声波漫反射。
录音文案
- 内容无特殊限制,建议与目标应用场景一致。
- 避免短句(如你好、是的),应使用完整句子。
- 保持语义连贯,朗读时避免频繁停顿(建议至少连续 3 秒无中断)。
- 录音全程保持一致的语速,避免开头或结尾语速过快导致合成时出现卡顿。
- 可加入适当情绪表达(如温暖、亲切、严肃),避免机械朗读。
- 不包含敏感词汇(如政治、色情、暴力相关内容),否则会导致复刻失败。
操作建议
以普通卧室为例,完成降噪和混响控制后:
- 提前熟悉文案,设定角色语气,自然演绎。
- 与录音设备保持约 10 厘米距离,避免喷麦或信号过弱。
音色管理
Qwen-Audio-TTS、Qwen-Audio-Realtime 和 CosyVoice 使用相同的音色查询、更新与删除接口。具体接口与参数请参见声音复刻 HTTP API 参考。
- 查询音色列表:查看账号下已有的自定义音色。
- 查询音色详情:查看创建时间、绑定模型等信息。
- 更新音色:替换参考音频,保留原有音色 ID。
- 删除音色:删除不再使用的音色,释放配额。
创建的音色默认长期有效。保存音色 ID,需要时可通过查询接口确认音色是否可用。
说明MiniMax 的音色查询与删除请参见声音管理。
支持模型
华北2(北京)
使用该地域的 API Key 调用以下模型:
-
Qwen-Audio-TTS: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
-
MiniMax:MiniMax/speech-2.8-hd、MiniMax/speech-02-hd、MiniMax/speech-2.8-turbo、MiniMax/speech-02-turbo
新加坡
使用该地域的 API Key 调用以下模型:
-
Qwen-Audio-TTS:qwen-audio-3.0-tts-plus、qwen-audio-3.0-tts-flash
-
CosyVoice:cosyvoice-v3-plus、cosyvoice-v3-flash
配额与限制
-
音色数量:每个阿里云百炼账号的自定义音色总数上限为 1000 个。声音复刻和声音设计共用该配额,不按模型分别计算。
说明
- 达到上限后,新的声音复刻或声音设计创建请求将失败。需先删除不再使用的音色,释放配额后再创建。
- MiniMax 创建的音色不受上述数量配额约束。
计费说明
-
Qwen-Audio-TTS / Qwen-Audio-Realtime / CosyVoice:创建音色免费。使用复刻音色合成语音或进行实时语音对话时,按目标模型计费。具体费用请参见模型计费。
-
MiniMax:声音复刻本身不计费。复刻请求生成的试听音频按同步语音合成单价计费;首次使用复刻音色进行语音合成时,扣除 9.9 元音色解锁费用,且无免费额度。