CosyVoice 声音复刻服务使用大模型提取音频中的声音特征,无需训练即可生成定制音色。本文介绍声音复刻的使用条件,提供复刻和查询音色的 Python、Java SDK 示例,并说明如何使用复刻音色进行语音合成。
声音复刻服务已于 2025 年 4 月 14 日升级至 CosyVoice 2.0。在此之后复刻的音色默认使用 CosyVoice 2.0,相比 1.0 具有更好的复刻效果。
在此之前使用 CosyVoice 1.0 复刻的音色可以正常使用,也可以使用原始音频重新复刻,以获得更好的复刻效果。
应用场景
陪伴场景:利用复刻的家人声音提供个性化陪伴,用于智能助手和车载导航语音,以及家庭娱乐项目,如为家人朗读绘本、控制家用电器或提供教育辅导。
教育场景:使用复刻老师的声音,加强师生互动,丰富教学视频和课件的内容,打造更亲切、更生动的学习体验。
音视频产业:通过复刻主播的声音,方便后期补录、配音等应用场景,提高音视频的制作效率。
智能客服:借助复刻的客户经理声音,提供语音服务,包括但不限于客户回访和市场营销电话,以赋予服务更加个性化、人性化的特点。
产品优势
短音频复刻:仅需 10~20 秒的录音即可完成声音复刻。
声音还原:使用阿里千问语音实验室自研的 CosyVoice 生成式神经网络语音大模型,结合零样本学习技术,还原真人声音的语调、韵律和情感表达。
即时合成:秒级还原音色,提供实时的声音复刻服务。
重要说明
音色数量与有效期:每个 UID 最多可复刻 1000 个音色,v1 和 v2 共用此额度。超过 1 年未使用的音色将下线处理。目前暂不支持删除已复刻的音色。
版权与合法性:需对所提供声音的所有权及合法使用权负责。开通智能语音交互的流式文本语音合成服务前,请阅读服务协议。
-
复刻音色的使用:复刻音色(
VoiceName)与 CosyVoice 预置音色(例如longxiaoxia)的使用方法相同。调用方式请参见CosyVoice 语音合成接口说明。重要CosyVoice 复刻音色只能用于 CosyVoice 语音合成。用于其他语音合成服务会导致合成失败。
调用方式:声音复刻服务当前仅支持通过 API 调用。
计费说明
声音复刻免费。复刻成功后,使用文字转语音服务会产生“语音合成 CosyVoice 大模型”的接口使用费用,当前价格为 2 元/万字符。详情请参见计费方式。
前提条件
使用示例
以下示例使用 Python 和 Java SDK 调用声音复刻 API。运行前,配置环境变量 ALIYUN_AK_ID 和 ALIYUN_AK_SECRET,分别保存 AccessKey ID 和 AccessKey Secret;将示例中的音频 URL 替换为已准备的公网可访问地址。
Python
步骤一:安装阿里云 SDK
安装阿里云 Python SDK。
pip install aliyun-python-sdk-core
步骤二:复刻声音并查询音色
声音复刻接口调用的代码示例如下:
import os
import json
import time
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
# 从环境变量读取 AccessKey ID 和 AccessKey Secret。
client = AcsClient(os.environ.get('ALIYUN_AK_ID'), os.environ.get('ALIYUN_AK_SECRET'))
domain = 'nls-slp.cn-shanghai.aliyuncs.com'
version = '2019-08-19'
def build_request(api_name, method):
request = CommonRequest()
request.set_domain(domain)
request.set_version(version)
request.set_action_name(api_name)
request.set_method(method)
request.set_protocol_type('https')
return request
def cosy_clone(voice_prefix, url):
clone_request = build_request('CosyVoiceClone', 'POST')
clone_request.add_body_params('Url', url)
clone_request.add_body_params('VoicePrefix', voice_prefix)
# 设定等待超时时间为15s
clone_request.set_read_timeout(15)
begin = int(round(time.time() * 1000))
clone_response = client.do_action_with_exception(clone_request)
end = int(round(time.time() * 1000))
print(json.loads(clone_response))
print('cost: {}'.format(end - begin))
def cosy_list(voice_prefix, page_index=1, page_size=10):
list_request = build_request('ListCosyVoice', 'POST')
list_request.add_body_params('VoicePrefix', voice_prefix)
list_request.add_body_params('PageIndex', page_index)
list_request.add_body_params('PageSize', page_size)
list_response = client.do_action_with_exception(list_request)
print(json.loads(list_response))
if __name__ == '__main__':
# 1. 调用CosyVoiceClone接口复刻声音
audio_url = 'https://your-url'
prefix = 'tongyi' # 要求英文字母或数字
cosy_clone(prefix, audio_url)
# 调用成功后接口会同步返回VoiceName, 格式为 cosyvoice-${voice_prefix}-${7位随机字符}
# 2. 调用 ListCosyVoice 接口查询指定前缀下的音色状态。
cosy_list(prefix)
更多关于CosyVoice声音复刻API信息,请参见CosyVoice声音复刻API。
步骤三:使用复刻音色
调用 CosyVoice 语音合成时,将 voice 字段设置为复刻得到的 VoiceName。具体调用方法请参见CosyVoice 语音合成接口说明。
Java
步骤一:安装阿里云 SDK
在 Maven 项目中添加以下依赖。示例使用 aliyun-java-sdk-core 4.6.4。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.6.4</version>
</dependency>
步骤二:复刻声音并查询音色
声音复刻接口调用的代码示例如下:
package org.example;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.profile.DefaultProfile;
public class CosyVoiceDemo {
//域名
private static final String DOMAIN = "nls-slp.cn-shanghai.aliyuncs.com";
// API版本
private static final String API_VERSION = "2019-08-19";
private static final IAcsClient client;
static {
// 创建DefaultAcsClient实例并初始化
DefaultProfile profile = DefaultProfile.getProfile(
"cn-shanghai",
// 从环境变量读取 AccessKey ID 和 AccessKey Secret。
System.getenv("ALIYUN_AK_ID"),
System.getenv("ALIYUN_AK_SECRET"));
client = new DefaultAcsClient(profile);
}
public static void main(String[] args) throws InterruptedException {
String voicePrefix = "tongyi";
String url = "your-file-url";
cosyClone(voicePrefix, url);
cosyList(voicePrefix);
}
private static void cosyList(String voicePrefix) {
CommonRequest request = buildRequest("ListCosyVoice");
request.putBodyParameter("VoicePrefix", voicePrefix);
String response = sendRequest(request);
System.out.println(response);
}
private static void cosyClone(String voicePrefix, String url) {
CommonRequest cloneRequest = buildRequest("CosyVoiceClone");
cloneRequest.putBodyParameter("VoicePrefix", voicePrefix);
cloneRequest.putBodyParameter("Url", url);
// 设定等待超时时间为15s
cloneRequest.setSysReadTimeout(15000);
long startTime = System.currentTimeMillis();
String response = sendRequest(cloneRequest);
long endTime = System.currentTimeMillis();
System.out.println(response);
System.out.println("cost: "+ (endTime - startTime) + " 毫秒");
}
private static CommonRequest buildRequest(String popApiName) {
CommonRequest request = new CommonRequest();
request.setMethod(MethodType.POST);
request.setDomain(DOMAIN);
request.setVersion(API_VERSION);
request.setAction(popApiName);
request.setProtocol(ProtocolType.HTTPS);
return request;
}
private static String sendRequest(CommonRequest request) {
try {
CommonResponse response = client.getCommonResponse(request);
return response.getData();
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
return null;
}
}
更多关于CosyVoice声音复刻API信息,请参见CosyVoice声音复刻API。
步骤三:使用复刻音色
调用 CosyVoice 语音合成时,将 voice 字段设置为复刻得到的 VoiceName。具体调用方法请参见CosyVoice 语音合成接口说明。
服务状态码
状态码 | 状态消息 | 原因和处理方法 |
40001000 | QUOTA_ERROR | 检查是否开通服务。 |
40001001 | VOICE_LIMIT_ERROR | 音色克隆数量超限,目前默认 1000 个。 |
40001002 | VOICE_PREFIX_ERROR | 音色名前缀不满足规则:
|
40002000 | AUDIO_URL_ERROR | 音频 URL 地址无效。 |
40002001 | AUDIO_DOWNLOAD_FAIL | 下载音频失败。 |
40002002 | FILE_SIZE_EXCEED | 音频文件超过 10 MB。 |
40002003 | AUDIO_SAMPLE_RATE_ERROR | 音频采样率小于 16 kHz。 |
40002004 | AUDIO_FORMAT_ERROR | 音频格式错误,解码失败,目前支持 |
40003000 | SILENT_AUDIO_ERROR | 音频内无足够的有效语音。 |
40003001 | AUDIO_SNR_ERROR | 音频信噪比太低。 |
50000000 | SERVER_ERROR | 服务错误,一般可通过重试解决。 使用 CosyVoice 声音复刻时出现该错误,通常是因为录音质量不合格。请按照录音操作指南重新录制并复刻声音。录音应尽量无杂音,避免频繁且不必要的停顿,并确保至少有 5 秒以上的连续声音。 |
- | ACCESS_DENIED : Permission denied! | 没有权限。 使用未授予 AliyunNLSFullAccess 权限的 RAM 用户调用声音复刻时,会出现此错误。授权方法请参见管理 RAM 用户的权限。 |