功能介绍
轻量化声音克隆能力,通过真人语音数据训练生成独特的定制语音合成模型,为您的品牌或角色合成清晰自然的声音。定制的语音模型,可应用于数字人音频合成、音视频制作配音、个性化有声书朗读等场景。前往ModelScope开源社区,查看更多Sambert模型介绍。
声音克隆API调用需申请体验并通过后才可使用,否则API调用将返回错误状态码。
仅面向企业认证客户开放申请。
当前处于邀测阶段,模型训练免费,合成调用费用为1元/万字。
目前仅支持中文普通话。
配额说明
邀测期间,每个申请通过的用户默认可训练10个模型,训练任务并发限制为2个。
如何恢复额度:
删除不再使用的模型。
向您的商务经理或对接人申请扩容。
使用步骤
下面概述了轻量化声音克隆使用步骤:
上传录音
音频文件支持wav/mp3/m4a格式,采样率建议满足24~48kHz,语音数据有效时长满足20分钟以上。
将音频数据压缩至zip包内(无目录限制要求),zip包文件小于等于300MB。
录音应避免出现噪音、混响等问题,详见录音指导。
模型训练
通过接口提交并训练,注意保存返回参数job_id。
查询任务状态
通过接口查询训练状态,当返回参数status为UNDER_REVIEW时,表示训练成功待人工审核。
等待人工审核
审核时间不超过1个工作日。
获取模型名称
再次查询任务状态将返回最终模型名称。
合成调用
通过模型名称按照Sambert语音合成的方式调用。
示例代码
以下代码展示了Sambert轻量化声音克隆服务上传录音至合成调用的全过程。
前提条件
已开通服务并获得API-KEY:API-KEY的获取与配置。
上传录音
需要替换示例中的代码才能正常运行:
your-dashscope-api-key,您的API-KEY。
your-audio-file-with-path,您本地的录音zip文件及路径。
curl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/files' \
--header 'Authorization: Bearer your-dashscope-api-key' \
--form 'files=@"your-audio-file-with-path"'
请求示例:
curl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/files' \
--header 'Authorization: Bearer sk-2b961b351c7845408186d1XXXXXXXXXX' \
--form 'files=@"/Users/XXXXX/Desktop/cf.zip"'
成功时生成file_id,请注意保存。
模型训练
需要替换示例中的代码才能正常运行:
your-dashscope-api-key,您的API-KEY。
your-file-id,您的file_id,由上一步文件上传生成。
your-model-name,您期望的模型名称,最终模型名称在训练成功后由接口返回。
请求示例:
curl --location 'https://dashscope.aliyuncs.com/api/v1/fine-tunes' \
--header 'Authorization: your-dashscope-api-key' \
--header 'Content-Type: application/json' \
--data '{
"model": "sambert",
"training_file_ids": [
"your-file-id"
],
"finetuned_output_suffix": "your-model-name"
}'
返回示例:
{
"request_id":"e4b52b13-af91-4b02-85bc-XXXXXXXXXXXX",
"output":{
"job_id":"ft-202307131709-XXXX",
"status":"PENDING"
}
}
成功时生成job_id,请注意保存。
查询训练状态
需要替换示例中的代码才能正常运行:
your-dashscope-api-key,您的API-KEY。
your-job-id,您的job_id。
请求示例:
curl --location 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/your-job-id' \
--header 'Authorization: your-dashscope-api-key'
返回示例:
{
"request_id":"6892b15e-4022-46c2-bc66-XXXXXXXXXXXX",
"output":{
"job_id":"ft-202307131709-XXXX",
"status":"UNDER_REVIEW",
"model":"sambert",
"output_report":"https://finetune-swap-bj.oss-cn-beijing.aliyuncs.com/artifacts/tts/resources/reports/ft-202307131709-XXXX.zip?Expires=1689331675&OSSAccessKeyId=LTAI5tDAubSHmnPEoxJ7XXXX&Signature=avcPIxSHRxerHsU19TXXXXXXXXXXXX",
"training_file_ids":["7947f965-a12f-4ebd-b57f-XXXXXXXXXXXX"],
"validation_file_ids":[],
"hyper_parameters":{}
}
}
当返回参数status为UNDER_REVIEW时,表示当前正在进行人工审核,审核时间不超过1个工作日。
模型训练过程中,如出现“FAILED”状态,可根据code参数判断原因,详见API详情错误码。
获取模型名称
人工审核通过后,再次查询训练状态,获取最终模型名称。
需要替换示例中的代码才能正常运行:
your-dashscope-api-key,您的API-KEY。
your-job-id,您的job_id。
请求示例:
curl --location 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/your-job-id' \
--header 'Authorization: your-dashscope-api-key'
返回示例:
{
"request_id":"976427b2-9dbe-4665-a08e-XXXXXXXXXXXX",
"output":{
"job_id":"ft-202307131709-XXXX",
"status":"SUCCEEDED",
"finetuned_output":"sambert-cf-ft-202307131709-XXXX",
"model":"sambert",
"output_report":"https://finetune-swap-bj.oss-cn-beijing.aliyuncs.com/artifacts/tts/resources/reports/ft-202307131709-XXXX.zip?Expires=1689332170&OSSAccessKeyId=LTAI5tDAubSHmnPEoxJ7XXXX&Signature=wPLXOJFGdsRMR%2Bn4cBXXXXXXXXXXXX",
"training_file_ids":["7947f965-a12f-4ebd-b57f-XXXXXXXXXXXX"],
"validation_file_ids":[],
"hyper_parameters":{}
}
}
当返回参数status为SUCCEEDED时,表示审核通过,可进行合成调用,最终模型名称是finetuned_output参数值。
合成调用
需要替换示例中的代码才能正常运行:
your-dashscope-api-key,您的API-KEY。
your-model,您的模型名称,来自上一步finetuned_output返回参数。
更多合成调用方式详见API详情。
# coding=utf-8
import dashscope
from dashscope.audio.tts import SpeechSynthesizer
dashscope.api_key='your-dashscope-api-key'
result = SpeechSynthesizer.call(model='your-model',
text='这是由阿里巴巴达摩院语音实验室提供的声音合成技术',
sample_rate=24000)
if result.get_audio_data() is not None:
with open('output.wav', 'wb') as f:
f.write(result.get_audio_data())
print(' get response: %s' % (result.get_response()))
package com.alibaba.dashscope.sample;
import com.alibaba.dashscope.audio.tts.SpeechSynthesizer;
import com.alibaba.dashscope.audio.tts.SpeechSynthesisParam;
import com.alibaba.dashscope.audio.tts.SpeechSynthesisResult;
import com.alibaba.dashscope.audio.tts.SpeechSynthesisAudioFormat;
import com.alibaba.dashscope.common.ResultCallback;
import com.alibaba.dashscope.common.Status;
import java.io.*;
import java.nio.ByteBuffer;
public class Main {
public static void SyncAudioDataToFile() {
SpeechSynthesizer synthesizer = new SpeechSynthesizer();
SpeechSynthesisParam param =
SpeechSynthesisParam.builder()
.apiKey("your-dashscope-api-key")
.model("your-model")
.text("这是由阿里巴巴达摩院语音实验室提供的声音合成技术")
.sampleRate(16000)
.build();
File file = new File("output.wav");
// 调用call方法,传入param参数,获取合成音频
ByteBuffer audio = synthesizer.call(param);
try (FileOutputStream fos = new FileOutputStream(file)) {
fos.write(audio.array());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
SyncAudioDataToFile();
System.exit(0);
}
}
音频录制建议
最终模型的合成效果,很大程度取决于录音数据的质量和时长,请务必重视。
更多的录音数据有利于合成更自然的效果。
更多录制建议,请参考录音指导。
混响控制
混响是声音经墙壁等反射产生的,录音场地要避免空旷或者很大的房间,可选择杂物比较多、摆放不规则的环境。
风格一致性
周期性的回放听测之前已录制的音频,尽量保持前后录音一致性,如音调、语速、情绪饱满度等。也可以请其他人协助监听,在风格不一致时发出提醒。
噪声控制
建议在室内进行,关闭会产生噪声的电器,如空调、风扇,避免录音时的肢体动作产生的摩擦声,尽量避免过于频繁的呼吸声和口腔噪声。
姿态控制
保持固定的身姿,控制与麦克风的距离不变,避免声音忽大忽小。
音频一致性
尽量保证一次完成所有录音,保持录音环境、录音质量的一致性。