声动人像VideoRetalk是一个人物视频生成模型,可基于人物视频和人声音频,生成人物讲话口型与输入音频相匹配的新视频。本文档介绍了该模型提供的视频生成能力的API调用方法。
HTTP调用接口
VideoRetalk视频生成API仅支持通过HTTP进行调用。为了减少等待时间并且避免请求超时,采用了异步处理方法。因此,您需要发起两个请求来生成视频。
- 作业提交接口:您需要先发送一个请求来创建视频生成任务。任务提交后,将返回该任务ID。
- 作业任务状态查询和结果获取接口:使用上一步获得的任务ID,再发送一个请求,获取任务状态及生成的视频。
前提条件
您需要已获取与配置 API Key并配置API Key到环境变量。
输入限制
-
视频要求:
- 文件限制:支持mp4、avi、mov,文件≤300MB,2秒<时长<120秒。
- 视频限制:15fps≤帧率≤60fps;编码采用H.264或H.265;边长不低于640,不大于2048。
- 视频内容:视频应为人物正面出镜的近景画面。避免大角度侧脸或人脸过小。
-
音频要求:
- 文件限制:支持wav、mp3、aac,文件≤30MB,2秒<时长<120秒。
- 音频内容:音频中需包含清晰、响亮的人声语音,并去除了环境噪音、背景音乐等声音干扰信息。
-
人物参考图要求:
- 文件限制:支持jpeg、jpg、png、bmp、webp,文件≤10MB。
- 图片内容:需包含一张清晰的人物正脸,且该人物出现在视频画面中。也可从视频画面中截图用作人物参考图。
-
上传文件链接要求:
- 上传的视频、音频、图像文件支持HTTP链接,不支持本地路径。也可使用平台提供的临时存储空间,上传本地文件并创建链接。
- 如果使用临时存储空间上传文件后获取到的
oss://前缀URL,在HTTP请求头中必须添加X-DashScope-OssResourceResolve: enable参数。未添加该参数会导致报错No connection adapters were found for 'oss://...'。详细说明请参见上传文件获取临时URL。
作业提交接口
入参描述
字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
Content-Type | String | Header | 是 | 请求类型:application/json | application/json |
Authorization | String | Header | 是 | API-Key,例如:Bearer d1**2a | Bearer d1**2a |
X-DashScope-Async | String | Header | 是 | 设置为 | enable |
model | String | Body | 是 | 指明需要调用的模型 | videoretalk |
input.video_url | String | Body | 是 | 用户上传的视频文件 URL。 URL 需为公网可访问的地址,并支持 HTTP 或 HTTPS 协议。您也可在此获取临时公网URL。 视频文件要求:
| http://aaa/bbb.mp4 |
input.audio_url | String | Body | 是 | 用户上传的音频文件 URL。 URL 需为公网可访问的地址,并支持 HTTP 或 HTTPS 协议。您也可在此获取临时公网URL。 音频文件要求:
| http://aaa/bbb.wav |
input.ref_image_url | String | Body | 否 | 用户上传的人脸参考图 URL。 URL 需为公网可访问的地址,并支持 HTTP 或 HTTPS 协议。您也可在此获取临时公网URL。 当输入视频中存在多张人脸时,您可以通过该参数指定用于口型匹配的人脸。如果视频中仅有一张人脸,则无需进行指定。 若不输入人脸参考图,默认将选择视频中第一个有人脸的画面中,人脸占比最大的人物为目标。 图像文件要求:
| http://aaa/bbb.jpg |
parameters.video_extension | Boolean | Body | 否 | 当输入的音频时长大于视频时长时,是否扩展视频长度。默认值为
| false |
parameters.query_face_threshold | Integer | Body | 否 | 当输入人脸参考图时,可通过该值调整人脸匹配的置信度。 取值范围为120-200。值越小,人脸参考图的匹配越宽松;值越大,人脸参考图的匹配越严格。默认值为170。 备注:input.ref_image_url 为空时该参数不生效。 | 170 |
出参描述
字段 | 类型 | 描述 | 示例值 |
|---|---|---|---|
output.task_id | String | 提交异步任务的作业 ID,实际作业结果需要通过异步任务查询接口获取。 | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
output.task_status | String | 提交异步任务后的作业状态。 | “PENDING” |
request_id | String | 本次请求的系统唯一码。 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
请求示例
响应示例
作业任务状态查询和结果获取接口
入参描述
字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
Authorization | String | Header | 是 | API-Key,例如:Bearer d1**2a。 | Bearer d1**2a |
task_id | String | Url Path | 是 | 需要查询作业的task_id,为作业提交接口返回的值。 | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
出参描述
字段 | 类型 | 描述 | 示例值 |
|---|---|---|---|
output.task_id | String | 查询作业的 task_id。 | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
output.task_status | String | 被查询作业的作业状态。 | 任务状态:
|
output.video_url | String | 生成的视频,video_url有效期为作业完成后24小时。 | |
usage.video_duration | Float | 本次请求生成视频时长计量,单位:秒。 | "video_duration": 10.23 |
usage.video_ratio | String | 本次请求生成视频的画幅类型,该值为standard,默认按原视频比例输出。 | "video_ratio": "standard" |
usage.size | String | 本次请求生成视频的分辨率,和输入视频分辨率一致 | "size": "1080*1920" |
usage.fps | Integer | 本次请求生成视频的帧率,和输入视频帧率一致 | "fps": 25 |
request_id | String | 本次请求的系统唯一码。 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
请求示例
响应示例
异常响应示例
状态码说明
大模型服务通用状态码请查阅:错误码
同时本模型还有如下特定错误码:
HTTP 返回码 | 错误码(code) | 错误信息(message) | 含义说明 |
|---|---|---|---|
400 | InvalidParameter | Field required: xxx | 缺少入参,或格式错误 |
400 | InvalidURL.ConnectionRefused | Connection to ${url} refused, please provide avaiable URL | 下载被拒绝,请提供可用的url |
400 | InvalidURL.Timeout | Download ${url} timeout, please check network connection. | 下载超时,60s超时 |
400 | InvalidFile.Size | Invalid file size. The video/audio/image file size must be less than **MB. | 视频/音频/图像文件必须小于**MB |
400 | InvalidFile.Format | Invalid file format,the request file format is one of the following types: MP4, AVI, MOV, MP3, WAV, AAC, JPEG, JPG, PNG, BMP, and WEBP. | 文件格式不符合要求,视频支持mp4、avi、mov;音频支持mp3, wav, aac;图片支持jpg, jpeg, png, bmp, webp |
400 | InvalidFile.Resolution | Invalid video resolution. The height or width of video must be 640 ~ 2048. | 视频边长需介于640-2048之间 |
400 | InvalidFile.FPS | Invalid video FPS. The video FPS must be 15 ~ 60. | 视频帧率需介于15-60fps之间。 |
400 | InvalidFile.Duration | Invalid file duration. The video/audio file duration must be 2s ~ 120s. | 视频/音频时长需介于2-120s之间 |
400 | InvalidFile.ImageSize | The size of image is beyond limit. | 图片大小超出限制。 要求图片长宽比例不大于2,且最长边不大于4096 |
400 | InvalidFile.Openerror | Invalid file, cannot open file as video/audio/image. | 视频/音频/图像文件无法打开 |
400 | InvalidFile.Content | The input image has no human body or multi human bodies. Please upload other image with single person. | 输入图片中没有人或有多人 |
400 | InvalidFile.FaceNotMatch | There are no matched face in the video with the provided reference image. | 参考图与视频人脸匹配失败 |
常见问题
- 输入语音和视频长度不一致,会如何处理? 默认将按音频、视频两者中时长较短的来截断。 当输入的音频时长大于视频时长时,并希望按音频长度来生成时,可将入参的视频扩展(parameters.video_extension)值设为true,算法将使用原视频画面“倒放-正放”交替模式扩展视频时长,直至与音频相同。
- 输入音频中有静音的情况,会如何处理? 音频静音的时段,预期视频中人物也会闭嘴。
- 输入视频的画面中有无人/脸拍不全的情况,会如何处理? 若音频中有人声,但画面无人或未出现人物嘴型,则保留原视频画面,音频正常播放。
- 输入视频的画面中有多人的情况,会如何处理? 仅支持替换一个人物。算法会按照输入人脸参考图(input.ref_image_url),识别指定人脸。若未输入人脸参考图,则默认选择第一个有人脸画面中,占比最大的人脸。