本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
概述
Sambert轻量化声音克隆,通过DashScope提供的模型定制API完成,每个声音克隆对应一个任务,采用任务驱动形式进行管理。您将用到以下接口:
接口 | 请求类型 | 简要说明 |
上传录音文件 | POST | 将音频zip包上传至模型定制文件管理服务,生成file_id。 |
创建训练任务 | POST | 使用file_id,创建声音克隆fine-tune任务,生成job_id。 |
取消任务 | POST | 通过job_id取消正在训练中的任务。 |
查询任务状态 | GET | 通过job_id查询训练任务状态,当训练成功后,会返回最终模型名称,用于模型调用。 |
获取任务列表 | GET | 获取所有任务及状态。 |
删除任务 | DELETE | 通过job_id删除任务,如模型已上线,删除后模型将不可调用。 |
交互流程
训练好的模型调用方式与Sambert语音合成一致,详情见快速开始。
调用方式
请求域名
https://dashscope.aliyuncs.com/api/v1/fine-tunes
接口采用HTTP方式调用,请注意不同接口将使用不同的请求类型(GET/POST/DELETE)及传参方式。
API参考
前提条件
已开通服务并获得API-KEY:API-KEY的获取与配置。
需要使用您的API-KEY替换示例中的your-dashscope-api-key,代码才能正常运行。
上传录音文件
如使用OSS文件链接,可跳过此步骤。请注意OSS文件链接仍需使用zip文件。
接口描述
本接口提供文件上传服务。请将所有待训练音频文件打包为zip后再上传。上传成功后会生成file_id,模型训练时会根据file_id自动拉取训练数据。
请求方法
HTTP POST,Body传参,可使用命令行或其他语言调用。
接口约束
单个文件大小最大为300MB
每主账号下总计空间配额为5GB
每主账号下总计文件数量配额为100个
当配额不足时,需要删除无用数据以恢复配额,详见模型定制文件管理服务。
参数列表
输入参数
参数 | 类型 | 是否必填 | 说明 |
files | Array | 是 | 训练文件,需包含文件路径。 |
descriptions | Array | 否 | 文件描述。 |
请求示例
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"'
返回参数
返回参数 | 类型 | 说明 |
request_id | String | 请求的响应ID。 |
data | Object | 结构化返回数据。 |
data参数详情:
返回参数 | 类型 | 说明 |
uploaded_files | Array | 上传成功的文件数组信息。 |
failed_uploads | Array | 上传失败的文件数组信息。 |
uploaded_files参数详情:
返回参数 | 类型 | 说明 |
file_id | String | 文件id。 |
name | String | 文件名称。 |
failed_uploads参数详情:
返回参数 | 类型 | 说明 |
name | String | 文件名称。 |
code | String | 错误类型。 |
message | String | 错误信息。 |
返回示例
{
"request_id":"a434c053-fbd4-956c-9674-XXXXXXXXXXXX",
"data":{
"uploaded_files":[{
"file_id":"7947f965-a12f-4ebd-b57f-XXXXXXXXXXXX",
"name":"your-file-name"
}],
"failed_uploads":[]
}
}
创建训练任务
接口描述
本接口提供创建训练任务服务。需要使用录音文件上传录音文件步骤中生成的file_id或OSS文件路径,指定基模型(固定为sambert,对应轻量化声音克隆),并可以设置一个方便后续区分音色的自定义字符串。
请求方法
HTTP POST,Body传参,可使用命令行或其他语言调用。
接口约束
每主账号下默认有10个配额。
最大可同时训练2个任务。
参数列表
输入参数
参数 | 类型 | 是否必填 | 说明 |
training_file_ids | Array | 是 | 传入用户的file_id或OSS文件链接,仅支持传入一个元素。zip包中音频文件:
|
model | String | 是 | 基础模型名称,请设置为sambert。 |
finetuned_output_suffix | String | 否 | 用于区分音色的自定义字符串,可包含小写英文及数字。 |
请求示例
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 | String | 请求的响应ID。 |
output | Object | 结构化返回数据。 |
output参数详情:
返回参数 | 类型 | 说明 |
job_id | String | 任务ID。 |
status | String | 任务状态。 |
返回示例
{
"request_id": "6892b15e-4022-46c2-bc66-XXXXXXXXXXXX",
"output": {
"job_id": "your-job-id",
"status": "PENDING"
}
}
取消任务
接口描述
本接口用于取消训练中的任务。取消训练任务,可能会节省成本。如训练过程中发现数据质量问题将导致最终模型效果不理想时,可以通过取消训练任务避免资源浪费。
请求方法
HTTP POST,URL传参,可使用命令行或其他语言调用。
接口约束
任务状态为PENDING、RUNNING时可以取消,其他状态时无法取消。
参数列表
输入参数
参数 | 类型 | 是否必填 | 说明 |
job_id | String | 是 | 任务ID。 |
请求示例
curl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/ft-202305251344-XXXX/cancel' \
--header 'Authorization: Bearer <YOUR-DASHSCOPE-API-KEY>' \
--header 'Content-Type: application/json'
返回参数
返回参数 | 类型 | 说明 |
request_id | String | 请求的响应ID。 |
output | Object | 结构化返回数据。 |
output参数详情:
返回参数 | 类型 | 说明 |
job_id | String | 需要取消的任务ID。 |
返回示例
{
"request_id": "6892b15e-4022-46c2-bc66-XXXXXXXXXXXX",
"output": {
"job_id": "your-job-id"
}
}
查询任务状态
接口描述
本接口提供查询任务状态服务。通过判断任务状态,方便您对业务流程进行控制,如当任务状态为成功时,才可以进行语音合成调用。
请求方法
HTTP GET,URL传参,可使用命令行或其他语言调用。
任务状态
状态 | 说明 |
PENDING | 正在准备训练所需资源。 |
RUNNING | 训练正在进行中。 |
UNDER_REVIEW | 等待人工审核。 |
SUCCEEDED | 训练成功。 |
FAILED | 训练失败。失败时会同时返回错误码,详见错误码。 |
CANCELED | 训练取消。 |
参数列表
输入参数
参数 | 类型 | 是否必填 | 说明 |
job_id | String | 是 | 需要查询的任务ID。 |
请求示例
curl --location 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/your-job-id' \
--header 'Authorization: your-dashscope-api-key'
返回参数
返回参数 | 类型 | 说明 |
request_id | String | 请求的响应ID。 |
output | Object | 结构化返回数据。 |
output参数详情(正常状态):
返回参数 | 类型 | 说明 |
job_id | String | 任务ID。 |
status | String | 任务状态。 |
finetuned_output | String | 输出模型名称,状态为SUCCEEDED才返回。 |
model | String | 基础模型名称,应返回sambert。 |
output_report | String | 训练报告,状态为SUCCEEDED才返回。 |
training_file_ids | Array | 任务指定的训练数据。 |
output参数详情(异常状态):
返回参数 | 类型 | 说明 |
job_id | String | 任务ID。 |
status | String | 任务状态。 |
model | String | 基础模型名称,应返回sambert。 |
training_file_ids | Array | 任务指定的训练数据。 |
validation_file_ids | Array | 空值,无需关注。 |
hyper_parameters | Array | 空值,无需关注。 |
code | String | 错误码。 |
training_type | String | 固定为sft,无需关注。 |
create_time | String | 任务创建时间。 |
返回示例(正常状态)
{
"request_id": "6892b15e-4022-46c2-bc66-XXXXXXXXXXXX",
"output": {
"job_id": "your-job-id",
"status": "RUNNING",
"model": "sambert",
"training_file_ids": [
"your-file-id"
],
"validation_file_ids": [],
"hyper_parameters": {}
}
}
返回示例(异常状态)
{
"job_id":"ft-202312111005-xxxx",
"status":"FAILED",
"model":"sambert",
"training_file_ids":[
"491fda83-bb9d-428c-bc66-XXXXXXXXXXXX"
],
"validation_file_ids":[
],
"hyper_parameters":{
},
"code":"13",
"training_type":"sft",
"create_time":"2023-12-11 10:05:18"
}
获取任务列表
接口描述
本接口提供所有任务及状态列表查询服务。可根据实际情况设置查询分页大小及对应页码。
请求方法
HTTP GET,URL传参,可使用命令行或其他语言调用。
参数列表
输入参数
参数 | 类型 | 是否必填 | 说明 |
page_no | Number | 否 | 页数,默认值1。 |
page_size | Number | 否 | 分页大小,默认值10,最大值100,最小值1。 |
model | String | 是 | 固定值sambert。 |
请求示例
curl --location 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/?page_no=1&page_size=100&model=sambert' \
--header 'Authorization: your-dashscope-api-key'
返回参数
返回参数 | 类型 | 说明 |
request_id | String | 请求的响应ID。 |
output | Object | 结构化返回数据。 |
output参数详情:
返回参数 | 类型 | 说明 |
page_no | Number | 当前为第几页。 |
page_size | Number | 分页大小。 |
total | Number | 总记录条数。 |
jobs | Array | 部任务列表,信息与单独查询任务状态一致。 |
返回示例
{
"request_id": "6892b15e-4022-46c2-bc66-XXXXXXXXXXXX",
"output": {
"page_no": 1,
"page_size": 10,
"total": 2,
"jobs": [
{
"job_id": "your-job-id",
"status": "RUNNING",
"model": "sambert",
"training_file_ids": [
"your-file-id"
],
"validation_file_ids": [],
"hyper_parameters": {}
},
{
"job_id": "your-job-id",
"status": "SUCCEEDED",
"finetuned_output": "sambert-your-job-id",
"model": "sambert",
"training_file_ids": [
"your-file-id"
],
"validation_file_ids": [],
"hyper_parameters": {}
}
]
}
}
删除任务
接口描述
本接口提供任务删除服务。
对于已上线使用的模型,删除任务将同步下线模型,会造成模型不可调用,此操作不可逆。
请求方法
HTTP DELETE,URL传参,可使用命令行或其他语言调用。
接口约束
任务状态为SUCCEEDED、FAILED、CANCELED时可以删除,其他状态时无法删除。
参数列表
输入参数
参数 | 类型 | 是否必填 | 说明 |
job_id | String | 是 | 指定删除的任务ID。 |
请求示例
curl --location --request DELETE 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/your-job-id' \
--header 'Authorization: your-dashscope-api-key'
返回参数
返回参数 | 类型 | 说明 |
request_id | String | 请求的响应ID。 |
output | Object | 结构化返回数据。 |
output参数详情:
返回参数 | 类型 | 说明 |
status | String | 删除操作的结果。 |
返回示例
{
"request_id": "6892b15e-4022-46c2-bc66-XXXXXXXXXXXX",
"output": {
"status": "success"
}
}
合成调用
模型调用方式与Sambert语音合成一致,详见API详情。
错误码
当模型微调任务状态为FAILED,同时返回相应的错误码,错误码对应的错误信息如下:
错误码 | 说明 | 处理方法 |
10 | 压缩包格式错误。 | 压缩包使用zip压缩,无密码。 |
13 | 无有效音频。 | 需提供20分钟以上有效音频,支持wav/mp3/m4a格式,24~48KHz采样率。 |
14 | 音频文件命名不规范。 | 可包含中英文及数字,不可包含标点、空格。 |
16 | 音频文件有效时长不足。 | 停顿等静音部分不计入有效时长,需补充更多音频,有效时长需满足20分钟以上。 |
如遇到其他类型错误请添加钉钉技术支持群49920000773。