CosyVoice声音复刻服务依托先进的大模型技术进行特征提取,从而完成声音的复刻,且无需训练过程。仅需提供时长较短的音频,即可迅速生成高度相似且听感自然的定制声音。本文将详细介绍CosyVoice声音复刻服务的使用方法和操作流程,帮助您快速实现声音复刻。
应用场景
陪伴场景:利用复刻的家人声音提供个性化陪伴,用于智能助手和车载导航语音,以及家庭娱乐项目,如为家人朗读绘本、控制家用电器或提供教育辅导。
教育场景:使用复刻老师的声音,加强师生互动,丰富教学视频和课件的内容,打造更亲切、更生动的学习体验。
音视频产业:通过复刻主播的声音,方便后期补录、配音等应用场景,提高音视频的制作效率。
智能客服:借助复刻的客户经理声音,提供语音服务,包括但不限于客户回访和市场营销电话,以赋予服务更加个性化、人性化的特点。
产品优势
低样本音频要求:仅需短短10~20秒的录音便能完成声音复刻,显著降低了录制成本,提升了效率。
高度拟真:利用阿里通义语音实验室自研的CosyVoice生成式神经网络语音大模型算法,结合前沿的零样本学习技术,能够在语调、韵律以及情感表达上高度还原真人声音,很难与真实录音相辨。
即时合成:秒级还原真实音色,提供高效、实时的声音复刻服务。
重要说明
声音复刻数量限制:每个UID最多可复刻1000个音色。若您需求超过此限额,请提前与我们的售前团队联系沟通。超过1年未使用的声音将下线处理。目前暂不支持删除已复刻的音色。
版权与合法性:您需对所提供声音的所有权及合法使用权负责,请注意阅读开通智能语音交互-流式文本语音合成的服务协议。
复刻后语音的使用:使用复刻产生的语音(VoiceName)和流式文本语音合成中(采用CosyVoice大模型)的预设音色(例如:longxiaoxia)在使用步骤一致。
服务调用方式:声音复刻服务当前仅支持通过调用API方式使用。该服务作为个性化人声定制服务的进阶版本,可提供更优质的使用体验,推荐使用。
计费说明
声音复刻为免费服务,复刻成功后在使用文字转语音服务时会产生“语音合成CosyVoice大模型”相关的接口使用费用,当前价格为2元/万字符,详情请参见计费说明-后付费方式。
前提条件
使用示例
本文以阿里云Python SDK和Java SDK举例说明,其他语言SDK,请参见阿里云SDK开发参考。
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
# 通过环境变量获取阿里云Ak ID以及Ak 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成品音色相同,您在调用CosyVoice大模型时,将voice字段替换为复刻的VoiceName即可。CosyVoice大模型使用方法请参见语音合成CosyVoice大模型。
Java 使用示例
步骤一:安装阿里云SDK
从Maven服务器下载最新版本的SDK。
<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",
System.getenv("AK_ID"),
System.getenv("AK_SECRET"));
client = new DefaultAcsClient(profile);
}
public static void main(String[] args) throws InterruptedException {
String voicePrefix = "your-voice-prefix";
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成品音色相同,您在调用CosyVoice大模型时,将voice字段替换为复刻的VoiceName即可。CosyVoice大模型使用方法请参见语音合成CosyVoice大模型。