定制数字人
定制数字人用于基于素材训练并管理你的专属数字人形象。完成定制后,可将形象用于 合成数字人视频 等后续流程。
定制数字人并发限制
| 类型 | 限制 | 说明 |
|---|---|---|
| QPS | 10/分钟 | 单个appid,最多可以在1分钟内提交10个数字人定制任务。如有增购需求,请咨询商务。 |
| 并发限额 | 50 | 单个appid,最多同时进行50个数字人定制任务。如有增购需求,请咨询商务。 |
生成数字人形象
说明
异步任务,具体进度通过查询接口查看
QPS 10/min
请求地址
http
POST /open/v1/create_customised_personHeader
http
access_token: {{access_token}}
Content-Type: application/json; charset=utf-8请求参数 Body
json
{
"name": "open_api_测试",
"callback":"https://xx.com",
"train_type":"",
"file_id":"XXXX",
"error_skip":false
}参数说明
| 字段 | 说明 | 限制 |
|---|---|---|
| name | 定制数字人名称 | |
| callback | 回调地址 | 任务结束后会向该地址发送一个 POST 请求。请求体的格式和拉取数字人详情查询结果返回的data相同 |
| train_type | 训练类型 【可选】 | 参数可选择 - figure 【仅生成形象形象,允许传递无声视频】 |
| language | 语种【可选】 | 需生成声音时可传,默认为cn,支持en英文,其他语种暂不支持,如有特殊语种需要支持,请联系客服 |
| file_id | 文件管理获取的id | 《文件管理》 |
| error_skip | 是否跳过定制数字人部分失败 | 目前支持跳过声音克隆失败(声音分离失败、高质量音频裁剪失败),跳过后定制数字人列表/详情的audio_id将为空值 |
| resolution_rate | 数字人分辨率,0:1080p、1:4K | 默认0。参数为1时需要上传4K视频,非4K视频也能完成定制,但数字人不是4K分辨率 |
响应示例
json
{
"trace_id": "4820a8cb9078e39656c387458de79954",
"code": 0,
"msg": "success",
"data": "C-ef91f3a6db3144ffb5d6c581ff13c7ec"
}响应字段说明
| 字段 | 说明 |
|---|---|
| code | 响应状态码 |
| data | 定制的数字人id |
响应状态码说明
| code | 说明 |
|---|---|
| 0 | 响应成功 |
| 400 | 传入参数格式错误 |
| 10400 | AccessToken验证失败 |
| train_type参数错误,支持的值为: ["voice", "figure", "both"] | |
| APP状态有误 | |
| 不支持的视频格式,请上传 mp4, webm 或者 mov 并请确认文件URL的扩展名(如.mp4)位于路径末尾,示例格式: https://domain.com/your_file.mp4?key=xxxxx | |
| 获取视频信息失败,请检查视频 | |
| 视频时长过长,请重新上传,上限5分钟 | |
| 40000 | 参数错误 |
| 40001 | 超出QPS限制 |
| 40002 | 定制数字人数量到达上限 |
| 50000 | 系统内部错误 |
| 51000 | 系统内部错误 |
示例代码
shell
curl -L 'https://www.chanjing.cc/api/open/v1/create_customised_person' -H 'access_token: token' -H 'Content-Type: application/json' -d '{"name":"数字人","callback":"","train_type":"","file_id":""}'go
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.chanjing.cc/api/open/v1/create_customised_person"
method := "POST"
payload := strings.NewReader(`{"name":"数字人","callback":"","train_type":"","file_id":""}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("access_token", "token")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}java
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"name\":\"数字人\",\"callback\":\"\",\"train_type\":\"\",\"file_id\":\"\"}");
Request request = new Request.Builder()
.url("https://www.chanjing.cc/api/open/v1/create_customised_person")
.method("POST", body)
.addHeader("access_token", "token")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();py
import requests
import json
url = "https://www.chanjing.cc/api/open/v1/create_customised_person"
payload = "{\"name\":\"数字人\",\"callback\":\"\",\"train_type\":\"\",\"file_id\":\"\"}"
headers = {
'access_token': 'token',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)拉取形象列表
请求地址
http
POST /open/v1/list_customised_personHeader
http
access_token: {{access_token}}请求参数 Body
json
{
"page": 1,
"page_size": 20
}参数说明
| 字段 | 说明 |
|---|---|
| page | 当前页 |
| page_size | 每页数量,最大 50 |
响应
响应JSON
json
{
"trace_id": "64e18685b3181c7753513267ce7c5edb",
"code": 0,
"msg": "success",
"data": {
"list": [
{
"id": "C-ef91f3a6db3144ffb5d6c581ff13c7ec",
"name": "open_api_测试",
"type": "person",
"pic_url": "https://changjing.cc/res/3c628295c46d8cee735fb0ec923639a5c0d820d1-cover.png",
"preview_url": "https://changjing.cc/res/81baa81b-5f6f-40a4-8f88-1575967c9275_480.mp4",
"width": 960,
"height": 544,
"audio_man_id": "C-0ae461135d8a4eb2b59c853162ea9848",
"status": 2,
"err_reason": "",
"is_open": 1,
"reason": "",
"progress": 100,
"height_4k": 3840,
"width_4k": 2160,
"support_4k": true
}
],
"page_info": {
"page": 1,
"size": 20,
"total_count": 1,
"total_page": 1
}
}
}响应字段说明
| 一级字段 | 二级字段 | 三级字段 | 说明 |
|---|---|---|---|
| code | 响应状态码 | ||
| msg | 响应消息 | ||
| data | 响应数据 | ||
| list | 形象列表数据 | ||
| id | 数字人形象id | ||
| name | 数字人名称 | ||
| type | 类型,默认person | ||
| pic_url | 预览封面图 | ||
| preview_url | 预览地址 | ||
| width | 形象宽度 | ||
| height | 形象高度 | ||
| audio_man_id | 数字人的声音音色id | ||
| status | 当前状态: 1制作中,2成功,4失败,5系统错误 | ||
| err_reason | 失败后显示错误原因 | ||
| is_open | 是否可用,1可用,0不可用 | ||
| reason | 失败原因 | ||
| progress | 进度百分比,0-100。 | ||
| support_4k | 布尔类型,是否支持4k视频合成 | ||
| height_4k | 4k数字人高度,support_4k为true时有效 | ||
| width_4k | 4k数字人宽度,support_4k为true时有效 | ||
| page_info | 分页信息 | ||
| page | 当前页码 | ||
| size | 页面大小 | ||
| total_count | 数字人总数 | ||
| total_page | 总页数 |
响应状态码说明
| code | 说明 |
|---|---|
| 0 | 响应成功 |
| 400 | 传入参数格式错误 |
| 10400 | AccessToken验证失败 |
| APP状态有误 | |
| 40000 | 参数错误 |
| 50000 | 系统内部错误 |
| 51000 | 系统错误 |
拉取形象详情
请求地址
http
GET /open/v1/customised_personHeader
http
access_token: {{access_token}}请求参数 Query Params
| Key | Value | 说明 |
|---|---|---|
| id | d5183e2974c2453a84173a8bdb556504 | 视频id,创建任务时返回 |
响应
响应示例
json
{
"trace_id": "a2d6adc006baaa904f38140f285a3bf6",
"code": 0,
"msg": "success",
"data": {
"id": "C-d18784a364e74e77b5bd86e7a560ddcd",
"name": "open_api_测试_1",
"type": "person",
"pic_url": "https://www.chanjing.cc/chanjing/dp/output/2024-08-21/b23fcedc7c602260549a3a46a8a8279007befd0f-cover.png",
"preview_url": "https://www.chanjing.cc/chanjing/res/person/2024-08-21/11955355-4ff1-46f7-8ae4-cb0b3de31719_480.mp4",
"width": 1080,
"height": 1920,
"audio_man_id": "C-9048cb4e6b7d4a3d868e30e03e357835",
"status": 2,
"err_reason": "",
"is_open": 1,
"reason": "",
"progress": 100,
"create_time": 1724209567,
"height_4k": 3840,
"width_4k": 2160,
"support_4k": true
}
}响应字段说明
| 一级字段 | 二级字段 | 说明 |
|---|---|---|
| code | 响应状态码 | |
| msg | 响应消息 | |
| data | 响应数据 | |
| id | 数字人形象id | |
| name | 数字人名称 | |
| type | 类型,默认person | |
| pic_url | 预览封面图 | |
| preview_url | 预览地址 | |
| width | 形象宽度 | |
| height | 形象高度 | |
| audio_man_id | 数字人的声音音色id | |
| status | 当前状态: 1制作中,2成功,4失败,5系统错误 | |
| err_reason | 失败后显示错误原因 | |
| is_open | 是否可用,1可用,0不可用 | |
| reason | 失败原因 | |
| progress | 进度百分比,0-100。 | |
| create_time | 创建时间戳 | |
| support_4k | 布尔类型,是否支持4k视频合成 | |
| height_4k | 4k数字人高度,support_4k为true时有效 | |
| width_4k | 4k数字人宽度,support_4k为true时有效 | |
| create_time | 创建时间戳 |
响应状态码说明
| code | 说明 |
|---|---|
| 0 | 响应成功 |
| 10400 | AccessToken验证失败 |
| APP状态有误 | |
| 40000 | 参数错误 |
| 50000 | 系统内部错误 |
| 51000 | 系统内部错误 |
删除形象
请求地址
http
POST /open/v1/delete_customised_personHeader
http
access_token: {{access_token}}请求参数 Body
json
{
"id": "C-ef91f3a6db3144ffb5d6c581ff13c7ec"
}参数说明
| 字段 | 说明 | |
|---|---|---|
| id | 定制数字人 id |
响应
响应示例
json
{
"trace_id": "add385eca3fe8b8bfa916e9e8719f6cc",
"code": 0,
"msg": "success"
}响应字段说明
| 字段 | 说明 |
|---|---|
| code | 响应状态码 |
| msg | 响应消息 |
响应状态码说明
| code | 说明 |
|---|---|
| 0 | 响应成功 |
| 400 | 传入参数格式错误 |
| 10400 | AccessToken验证失败 |
| APP状态错误 | |
| 40000 | 参数错误 |
| 40001 | 超出QPS限制 |
| 50000 | 系统内部错误 |
| 51000 | 系统内部错误 |