EMO模型,可基于通过了EMO-detect模型检测的人物肖像图片和人声音频文件生成视频。本文档介绍了该模型提供的视频生成能力的API调用方法。
模型概览
模型名 | 模型简介 |
emo-v1 | emo-v1是一个人物视频生成模型,可基于人物肖像图片和人声音频文件生成人物肖像动态视频。 |
HTTP调用接口
功能描述
用于生成人物头像、半身像动态视频。不推荐用于生成人物全身像动态视频。
前提条件
已开通服务并获得API-KEY:获取API Key。
输入图像已通过EMO图像检测API检测,并获得对应人脸区域和动态区域的范围值作为入参。
输入限制
图像格式:格式为jpg,jpeg,png,bmp,webp。
图像分辨率:图像最小边长≥400像素,最大边长≤7000像素。
图像坐标框:图像需先通过EMO图像检测API,以获得正确的人脸区域和动态区域坐标信息。
音频格式:格式为wav、mp3。
音频限制:文件<15M,时长<60s。
音频内容:音频中需包含清晰、响亮的人声语音,并去除了环境噪音、背景音乐等声音干扰信息。
上传图片、音频链接仅支持HTTP链接方式,不支持本地链接方式。
作业提交接口
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis/
因该算法调用耗时较长,故采用异步调用的方式提交任务。
任务提交之后,系统会返回对应的作业ID,后续可通过“作业任务状态查询和结果获取接口”获取任务状态及对应结果。
入参描述
字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
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,表明使用异步方式提交作业。 | enable |
model | String | Body | 是 | 指明需要调用的模型,此处用emo-v1。 说明 若调用独立部署模型,则改为填入部署成功的模型名称 | emo-v1 |
input.image_url | String | Body | 是 |
说明 上传图片仅支持HTTP链接方式,不支持本地链接方式。 | http://aaa/bbb.jpg |
input.audio_url | String | Body | 是 |
说明 上传文件仅支持HTTP链接方式,不支持本地链接方式。 | http://aaa/bbb.wav |
input.face_bbox | Array | Body | 是 | 图片中人脸区域bbox,应输入EMO图像检测API出参中同名字段的值。 | [10,20,30,40] |
input.ext_bbox | Array | Body | 是 | 图片中动态区域bbox,应输入EMO图像检测API出参中同名字段的值。 该区域的宽高比应为1:1或3:4。 | [10,20,30,40] |
parameters.style_level | String | Body | 否 | 可选择动作风格强度控制人物的运动姿态和幅度,当前支持3种:normal、calm、active,分别对应人物动作风格适中、平静、活泼。默认为normal。 | normal |
出参描述
字段 | 类型 | 描述 | 示例值 |
output.task_id | String | 提交异步任务的作业id,实际作业结果需要通过异步任务查询接口获取。 | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
output.task_status | String | 提交异步任务后的作业状态。 | “PENDING” |
request_id | String | 本次请求的系统唯一码。 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
请求示例
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis/' \
--header 'X-DashScope-Async: enable' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "emo-v1",
"input": {
"image_url": "http://xxx/1.jpg",
"audio_url": "http://xxx/1.wav",
"face_bbox": [10, 20, 30, 40],
"ext_bbox": [10, 20, 30, 40]
},
"parameters": {
"style_level": "normal"
}
}'
响应示例
{
"output": {
"task_id": "a8532587-fa8c-4ef8-82be-0c46b17950d1",
"task_status": "PENDING"
}
"request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51"
}
作业任务状态查询和结果获取接口
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
入参描述
字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
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.results | Array | 如果作业成功,包含模型生成的结果 object,然后每个object中包含按照要求生成的结果地址。 | "video_url":"https://xxx/1.mp4" |
output.results.video_url | Array | 生成的视频文件。 | |
usage.video_duration | Float | 本次请求生成视频时长计量 | "video_duration": 10.23 |
usage.video_ratio | String | 本次请求生成视频的画幅,该值为1:1或3:4 | "video_ratio": "1:1" |
request_id | String | 本次请求的系统唯一码。 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
请求示例
curl -X GET \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
https://dashscope.aliyuncs.com/api/v1/tasks/<YOUR_TASK_ID>
响应示例(作业成功执行完毕)
{
"output":{
"task_id":"a8532587-fa8c-4ef8-82be-0c46b17950d1",
"task_status":"SUCCEEDED",
"results":
{
"video_url":"https://xxx/1.mp4"
}
},
"usage":{
"video_duration": 10.23,
"video_ratio": "1:1"
},
"request_id":"7574ee8f-38a3-4b1e-9280-11c33ab46e51"
}
响应示例(作业失败)
{
"output": {
"task_id": "a8532587-fa8c-4ef8-82be-0c46b17950d1",
"task_status": "FAILED",
"code": "xxx",
"message": "xxxxxx",
},
"request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51"
}
状态码说明
大模型服务平台通用状态码请查阅:错误码。
本模型还有如下特定错误码:
HTTP返回码 | 错误码(code) | 错误信息(message) | 含义说明 |
400 | InvalidParameter | The request is missing required parameters or in a wrong format, please check the parameters that you send. | 入参格式不对。 |
400 | InvalidParameter | The style_level is invalid. | style_level不在枚举范围内。 |
400 | InvalidURL | The request URL is invalid, please check the request URL is available and the request image format is one of the following types: JPEG, JPG, PNG, BMP, and WEBP. | 输入图片下载失败,请检查网络或者输入格式。 |
400 | InvalidURL | Required URL is missing or invalid, please check the request URL. | 输入的URL不正确或缺失。 |
400 | InvalidURL | The input audio is longer than **! | 输入的音频文件超过最大时长**秒。 |
400 | InvalidURL | File size is larger than 15MB. | 输入的音频文件超过最大限制15M。 |
400 | InvalidURL | File type is not supported. Allowed types are: .wav, .mp3. | 输入的音频格式不合规,当前支持wav、mp3。 |
400 | InvalidFile.Content | The input image has no human body. Please upload other image with single person. | 输入图片中没有人。 |
400 | InvalidFile.Content | The input image has multi human bodies. Please upload other image with single person. | 输入图片中有多人。 |
400 | InvalidFile.BodyProportion | The proportion of the detected person in the picture is too large or too small, please upload other image. | 上传图片中人物占比不符合要求。 |
400 | InvalidFile.Resolution | The image resolution is invalid, please make sure that the largest length of image is smaller than 7000, and the smallest length of image is larger than 400. | 上传图片大小不符合要求。 |
400 | InvalidFile.Value | The value of the image is invalid, please upload other clearer image. | 上传图片过暗不符合要求。 |
400 | InvalidFile.FrontBody | The pose of the detected person is invalid, please upload other image with the front view. | 上传图片中人物背身不符合要求。 |
400 | InvalidFile.FullFace | The pose of the detected face is invalid, please upload other image with whole face. | 上传图片中人物面部姿态不符合要求(要求面部可见)。 |
400 | InvalidFile.FacePose | The pose of the detected face is invalid, please upload other image with the expected oriention. | 上传图片中人物面部姿态不符合要求(要求面部朝向无严重偏移)。 |