Appearance
数字人API(请求频率:10次/秒)
本文档适用于第三方系统接入数字人的技术文档
通用
通用请求头
参数 | 描述 |
---|---|
content-type | application/json |
type | 5 |
Authorization | Bearer token |
通用返回参数
参数 | 描述 |
---|---|
statusCode | 状态码 |
message | 信息描述 |
date | 数据 |
所有接口采用Bearer Token认证方式,需要在请求的Header中填入"Authorization":"Bearer token". 在调用前请先联系商务获取token。在调用接口时,如果token验证失败,返回401的statusCode。其他业务异常时会返回相应的错误码状态,需要通过相应体中的code错误码来识别具体的异常原因。
高清和超清的区别
- 超清清晰度更高
- 超清嘴型合成更好
- 超清支持视频中插入空镜(无人像),高清必须训练全程由人像,否则会出现循环现象
- 超清积分算力消耗是高清两倍
合成视频或者音频素材都是临时素材,请获取素材之后,及时转存
通用host
https://api.iiii.com/v1/open/api/
1 获取账户资产
请求方式
Get(同步请求)
接口地址
digital-account
请求参数
无
响应参数
参数 | 类型 | 描述 |
---|---|---|
userId | number | 用户id |
timeCount | number | 可用时长 |
totalTimeCount | number | 总的充值时长 |
voiceCount | number | 可用声音数量 |
totalVoiceCount | number | 总的声音个数 |
digitalCount | number | 可用数字人数量 |
totalDigitalCount | number | 总的数字人数量 |
出参
json
{
"id": 6,
"userId": 23,
"timeCount": 221.85,
"totalTimeCount": 226.67,
"voiceCount": 4,
"totalVoiceCount": 13,
"digitalCount": 106,
"totalDigitalCount": 114
}
2 形象克隆
2.1 形象训练
克隆自己的形象,操作步骤为创建形象、然后训练形象,完成后即可使用这个形象创建作品。此接口创建形象是不消耗算力。
请求方式
POST
接口地址
training/human(异步请求)
请求参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
name | string | 是 | 数字人名称,2-20个字符之间 |
url | string | 是 | 训练url.公网可访问,支持:mp4,mov,视频分辨率:360p-4K,时长:30秒-5分钟,比例:9:16或16:9,文件大小小于500M,建议录制视频带声音,克隆效果更佳,训练时间5分钟 |
响应参数
参数 | 类型 | 描述 |
---|---|---|
data | number | 数字人id |
请求示例
入参
json
{
"name": "测试",
"url": "https://oss.iiii.com/userTraining/1730943170185.mp4"
}
出参
json
{
"data":233424
}
2.2 定制数字人回调
请求方式
POST
接口地址
training/call
回调参数
参数 | 类型 | 描述 |
---|---|---|
id | string | 训练任务ID |
name | string | 数字人名称 |
coverUrl | string | 视频封面url |
videoUrl | string | 训练视频url |
result | number | -2:视频提交中,-1:等待训练,0:合成中,1:成功,2:失败 |
resultDesc | string | 如果训练失败,这里显示失败原因 |
progress | number | 进度 |
sceneId | string | 场景id |
回调示例
输出数据
json
{
id: string;//训练任务ID
name: string;//数字人名称
coverUrl: string;//视频封面url
videoUrl: string;//训练视频url
result: number;//-2:视频提交中,-1:等待训练,0:合成中,1:成功,2:失败
resultDesc: string;//如果训练失败,这里显示失败原因
progress: number;//进度
sceneId: string; // 场景id
}
2.3 查询数字人状态
请求方式
GET(同步请求)
接口地址
training/find/by/id/:id
请求参数
参数 | 类型 | 描述 |
---|---|---|
id | string | 训练任务ID |
响应参数
参数 | 类型 | 描述 |
---|---|---|
id | string | 训练任务ID |
name | string | 数字人名称 |
coverUrl | string | 视频封面url |
videoUrl | string | 训练视频url |
result | number | -2:视频提交中,-1:等待训练,0:合成中,1:成功,2:失败 |
resultDesc | string | 如果训练失败,这里显示失败原因 |
progress | number | 进度 |
sceneId | string | 场景id |
请求示例
入参
json
{
"id": 212121;//训练任务ID
}
出参
json
{
id: string;//训练任务ID
name: string;//数字人名称
coverUrl: string;//视频封面url
videoUrl: string;//训练视频url
result: number;//-2:视频提交中,-1:等待训练,0:合成中,1:成功,2:失败
resultDesc: string;//如果训练失败,这里显示失败原因
progress: number;//进度
sceneId: string; // 场景id
}
2.4 删除数字人
请求方式
Get(同步请求)
接口地址
training/del/:id
请求参数
参数 | 类型 | 描述 |
---|---|---|
id | number | 数字人id |
3 声音克隆
3.1 创建声音
克隆自己的声音,操作步骤为训练声音后即可使用这个声音创建作品。此接口创建高保真声音时会产生训练次数消耗。
请求方式
Post(同步请求)
接口地址
voice-clone/clone/fy/order
请求参数
参数 | 类型 | 描述 |
---|---|---|
localName | string | 音色名称,2-20个字符之间 |
url | string | 声音url,最大10MB,支持:mp3,wav,暂时不支持m4a,时长:10秒-3分钟,传入错误类型或者文件大小,不支持退回权益 |
countryLanguageCode | string | zh-CN:中文,en-US:英文 |
sex | SexEnum | 1:男生.2:女生 |
响应参数
参数 | 类型 | 描述 |
---|---|---|
data | number | 音色ID |
请求示例
入参
json
{
"localName": "测试", //音色名称,2-20个字符之间
"url": "https://www.test111.com/test.wav", //声音url,最大10MB
"countryLanguageCode": "zh-CN", //zh-CN:中文,en-US:英文
"sex":1 // 1:男生.2:女生
}
出参
json
{
"data": 111;//音色ID
}
3.2 获取音色(备注:3秒请求一次)
请求方式
Get(同步请求)
接口地址
voice-clone/find/by/id/:id
请求参数
参数 | 类型 | 描述 |
---|---|---|
id | int | 音色id,必填 |
响应参数
参数 | 类型 | 描述 |
---|---|---|
voiceId | string | 音色的唯一id |
localName | string | 名称 |
sex | number | 性别 |
status | number | 状态:0定制过程中.1:定制完成.2:定制失败 |
url | string | 音色试听url |
请求示例
入参
json
{
"id": "S_3XOEneS31"//音色ID
}
出参
json
{
voiceId: string;//声音的唯一id
localName: string;//名称
sex:number; // 性别
status: number;//状态:0定制过程中.1:定制完成.2:定制失败
url: string;// 试听地址
}
4 创建视频接口
4.1 创建作品
支持使用音频驱动和文本驱动两种方式创作作品。此接口会产生积分消耗。
请求方式
POST(异步请求)
接口地址
order/composite/video
请求参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
sceneId | string | 是 | 数字人sceneId 必填 |
videoName | string | 是 | 合成作品名,长度2-20 |
textToVideo | object | 否 | 文字合成必填,音频合成不是必填 |
audioUrl | string | 否 | 音频地址,默认优先获取音频地址 |
skipRandom | number | 是 | 0:随机,1:关闭随机 |
createMode | number | 是 | 0:高清模式.1:超清模式(消耗2倍算力) |
textToVideo相应参数(文字合成以下参数必填)
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
text | string | 是 | 文本,不支持emoji,和html等... |
voiceId | string | 是 | 声音id |
speed | number | 是 | 区间0.5-1.5 ,默认语速填写:1 |
响应参数
参数 | 类型 | 描述 |
---|---|---|
id | string | 订单id |
userId | string | 用户id |
videoName | string | 视频名称,0-20字 |
result | number | 状态:0合成中,1:成功,2:失败 |
resultDesc | string | 状态描述 |
progress | number | 进度 |
content | string | 合成内容 |
sceneId | string | 数字人id |
createMode | number | 生成模式,0:高清.1:超清 |
realDuration | number | 合成成功后,这里显示扣除的时长/算力 |
taskId | string | 合成任务id |
videoUrl | string | 成功之后的视频地址 |
coverUrl | string | 成功之后的视频封面 |
skipRandom | number | 0:随机,1:顺序 |
请求示例
入参
json
{
"sceneId": "C-7e92e958822543e099b6dee11ba5b649",
"videoName": "未命名",
"createMode": 0,
"audioUrl": null,
"skipRandom": 0,
"textToVideo": {
"text": "我是一个测试文本",
"speed": 1,
"voiceId": "S_hYvM5Nw31"
}
}
出参
json
{
"id": 6683, // 订单id
"userId": 23, // 用户id
"videoName": "未命名", // 视频名称
"result": 0, // 状态:0合成中,1:成功,2:失败
"resultDesc": "合成中", // 状态描述
"progress": null, // 进度
"content": "你好啊,你在哪里啊", // 合成内容
"sceneId": "C-7e92e958822543e099b6dee11ba5b649", // 数字人id
"brandType": 5,
"createMode": 0, // 0:高清.1超清
"duration": 3,
"realDuration": null, // 合成成功后,这里显示扣除的时长/算力
"scoreAmount": 0,
"orientation": 1,
"taskId": null,//合成任务id
"videoUrl": null, // 成功之后的视频地址
"coverUrl": null, // 成功之后的视频封面
"backgroundUrl": null,
"skipRandom": 0, // 0:随机,1:顺序
"audioUrl": null, // 视频合成时候的url
"x": null,
"y": null,
"width": null,
"height": null,
"nodes": null,
"creationDate": "2024-11-06 21:59:06",
"updatedOn": "2024-11-06 21:59:06"
}
4.2 查询作品状态
请求方式
GET(同步请求)
接口地址
order/find/video/by/id/:id
请求参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
id | number | 是 | 作品 ID,必填。 |
响应参数
参数 | 类型 | 描述 |
---|---|---|
id | number | 作品id |
userId | number | 用户id |
result | number | 状态:0合成中,1:成功,2:失败 |
resultDesc | string | 状态描述 |
progress | string | 进度 |
content | string | 合成内容 |
sceneId | string | 数字人id |
createMode | number | 0:高清.1超清 |
realDuration | string | 合成成功后,这里显示真实扣除的时长/算力 |
taskId | string | 合成任务id |
videoUrl | string | 成功之后的视频地址 |
coverUrl | string | 成功之后的视频封面 |
skipRandom | number | 0:随机,1:顺序 |
audioUrl | string | 视频合成时候的url |
请求示例入参
json
{
"id": 1223 // 作品id
}
出参
json
{
"id": 6683, // 订单id
"userId": 23, // 用户id
"videoName": "未命名", // 视频名称
"result": 0, // 状态:0合成中,1:成功,2:失败
"resultDesc": "合成中", // 状态描述
"progress": null, // 进度
"content": "你好啊,你在哪里啊", // 合成内容
"sceneId": "C-7e92e958822543e099b6dee11ba5b649", // 数字人id
"brandType": 5,
"createMode": 0, // 0:高清.1超清
"duration": 3,
"realDuration": null, // 合成成功后,这里显示扣除的时长/算力
"scoreAmount": 0,
"orientation": 1,
"taskId": null,//合成任务id
"videoUrl": null, // 成功之后的视频地址
"coverUrl": null, // 成功之后的视频封面
"backgroundUrl": null,
"skipRandom": 0, // 0:随机,1:顺序
"audioUrl": null, // 视频合成时候的url
"x": null,
"y": null,
"width": null,
"height": null,
"nodes": null,
"creationDate": "2024-11-06 21:59:06",
"updatedOn": "2024-11-06 21:59:06"
}
4.3 作品状态回调
请求方式
post
接口地址
video/call
回调参数
参数 | 类型 | 描述 |
---|---|---|
id | string | 订单id |
result | number | 状态.0:处理中.1:成功.2:失败 |
resultDesc | string | 如果失败这里有错误原因,或错误码 |
videoUrl | string | 视频 url |
progress | number | 视频进度 |
coverUrl | string | 预览地址 |
realDuration | number | 视频时长 |
5 上传文件
请求方式
post
接口地址
oss/pre
请求参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
fileName | string | 是 | 文件名称,使用随机数,时间戳或者uid,结尾必须是.mp3,.mp4等,不支持临时文件格式 |
响应参数
参数 | 类型 | 描述 |
---|---|---|
OSSAccessKeyId | number | 参数直接回传给oss上传接口即可,参考阿里云oss上传文档 |
callback | number | 参数直接回传给oss上传接口即可,参考阿里云oss上传文档 |
dir | number | 参数直接回传给oss上传接口即可,参考阿里云oss上传文档 |
expire | string | 参数直接回传给oss上传接口即可,参考阿里云oss上传文档 |
host | string | 参数直接回传给oss上传接口即可,参考阿里云oss上传文档 |
key | string | 参数直接回传给oss上传接口即可,参考阿里云oss上传文档 |
policy | string | 参数直接回传给oss上传接口即可,参考阿里云oss上传文档 |
signature | number | 参数直接回传给oss上传接口即可,参考阿里云oss上传文档 |
uploadUrl | string | 参数直接回传给oss上传接口即可,参考阿里云oss上传文档 |
参看链接:阿里云OSS上传文档
json
{
"fileName": "1735994464413.mp4", // 作品id
"businessType":3 // 3:音频 4:视频
}
出参
json
{
"expire": "1731135659",
"policy": "eyJleHBpcmF0C232323tL3YxL29zcy9jYWxswMzo1NDoxOS4xMzRaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsNDE5NDMwNDAwMF1dfQ==",
"signature": "hRN+YdI3111je8mplqtsGkXWk=",
"OSSAccessKeyId": "LTAI5tE111vM1221UemEfUN",
"host": "https://oss.iiii.com",
"callback": "eyJjYWxsYmFja1VybC232323tL3YxL29zcy9jYWxsIiwiY2FsbGJhY2tCb2R5IjoiZmlsZU5hbWU9MTczNjA0OTI1OTAyNy5tcDQmZGlyPXVzZXJWaWRlbyZ1c2VySWQ9MjMmZm9ybT0wJmJ1c2luZXNzVHlwZT00Jm9yaWVudGF0aW9uPTEmZ3JvdXBJZD11bmRlZmluZWQmc2l6ZT0ke3NpemV9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmhlaWdodD0ke2ltYWdlSW5mby5oZWlnaHR9JndpZHRoPSR7aW1hZ2VJbmZvLndpZHRofSZmb3JtYXQ9JHtpbWFnZUluZm8uZm9ybWF0fSZoYXNoPSR7Y29udGVudE1kNX0iLCJjYWxsYmFja0JvZHlUeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0=",
"dir": "userVideo/",
"key": "userVideo/17360111259027.mp4",
"uploadUrl": "https://oss.iiii.com/userVideo/1736011259027.mp4"
}
// 以上参数直接丢给aliyun oss上传接口即可
错误码 | 描述 |
---|---|
401 | token验证失败 |
409 | 请求频繁 |