API详情

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

概述

Sambert轻量化声音克隆,通过DashScope提供的模型定制API完成,每个声音克隆对应一个任务,采用任务驱动形式进行管理。您将用到以下接口:

接口

请求类型

简要说明

上传录音文件

POST

将音频zip包上传至模型定制文件管理服务,生成file_id。

创建训练任务

POST

使用file_id,创建声音克隆fine-tune任务,生成job_id。

取消任务

POST

通过job_id取消正在训练中的任务。

查询任务状态

GET

通过job_id查询训练任务状态,当训练成功后,会返回最终模型名称,用于模型调用。

获取任务列表

GET

获取所有任务及状态。

删除任务

DELETE

通过job_id删除任务,如模型已上线,删除后模型将不可调用。

交互流程

image.png

训练好的模型调用方式与Sambert语音合成一致,详情见快速开始

调用方式

请求域名

https://dashscope.aliyuncs.com/api/v1/fine-tunes

接口采用HTTP方式调用,请注意不同接口将使用不同的请求类型(GET/POST/DELETE)及传参方式。

API参考

前提条件

说明

需要使用您的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包中音频文件:

  • 支持wav/mp3/m4a格式

  • 支持多级路径

  • 文件名可包含中英文及数字,不可包含标点、空格

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。