全部产品
Search
文档中心

大模型服务平台百炼:声音复刻

更新时间:Oct 21, 2026

根据音频样本创建自定义音色,用于语音合成或实时语音对话。

功能介绍

声音复刻适用于个性化语音助手、品牌专属播报和有声内容定制等场景,无需训练模型。

说明如需通过自然语言描述创建音色,无需提供音频样本,请使用声音设计。

准备工作

  • 获取 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-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,后续可继续使用。

Qwen-Audio-Realtime

Qwen-Audio-Realtime 的复刻音色用于自定义实时语音对话的回复声音。以下以 qwen-audio-3.1-realtime-plus 为例创建音色。

import os
import time
import requests

workspace_id = "YOUR_WORKSPACE_ID"
target_model = "qwen-audio-3.1-realtime-plus"
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")

建立实时语音对话连接后,在首次 session.update 事件中,将 session.voice 设置为返回的音色 ID(替换下方的 VOICE_ID)。会话模型必须与创建音色时的 target_model 一致。

{
    "type": "session.update",
    "session": {
        "voice": "VOICE_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 各模型支持的语言

  • 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

新加坡

使用该地域的 API Key 调用以下模型:

  • Qwen-Audio-TTS:qwen-audio-3.1-tts-plus、qwen-audio-3.0-tts-plus、qwen-audio-3.0-tts-flash

  • CosyVoice:cosyvoice-v3-plus、cosyvoice-v3-flash

配额与限制

  • 音色数量:每个阿里云百炼账号的自定义音色总数上限为 1000 个。声音复刻和声音设计共用该配额,不按模型分别计算。

    说明

    • 达到上限后,新的声音复刻或声音设计创建请求将失败。需先删除不再使用的音色,释放配额后再创建。

计费说明

  • Qwen-Audio-TTS / Qwen-Audio-Realtime / CosyVoice:创建音色免费。使用复刻音色合成语音或进行实时语音对话时,按目标模型计费。具体费用请参见模型计费。