Vidu/对口型

本文介绍 vidu-lip-sync 模型对口型功能的核心 API(异步提交任务、查询任务状态),详细说明各接口的请求地址、输入输出参数、调用示例及注意事项,供接口调用时查阅参考。该模型支持音频驱动和文字驱动两种方式,可实现原视频画面与指定音频/文本的口型匹配。

1. 认证方式

所有接口均采用 API Key 认证,统一使用 Authorization 请求头,格式如下:

Authorization: \<YOUR\_API\_KEY\>

说明:将 \<YOUR\_API\_KEY\> 替换为您实际的 API Key 即可完成认证,确保接口调用权限。

2. 异步提交任务接口

该接口用于提交 vidu-lip-sync 模型对口型异步任务,需传入固定模型名称、原视频URL、接口类型等核心参数,可根据需求选择音频驱动或文字驱动方式,配置语速、音色等辅助参数,提交成功后返回任务唯一标识及请求唯一标识,后续可通过任务标识查询任务状态及生成结果。

2.1 接口地址

https://api.modelverse.cn/v1/tasks/submit

2.2 输入参数

参数 类型 是否必选 描述
model string 模型名称,固定填写:vidu-lip-sync
input.video_url string 原视频 URL(需要确保可访问),模型将以此视频为画面来匹配口型。- 格式要求:仅支持 mp4、mov、avi- 时长要求:1-600 秒,建议时长 10-120 秒- 大小要求:不超过 5GB- 分辨率要求:单边像素需在 360p-4096p 之间- 编码要求:视频编码格式需为 H.264,若不是请参见 编码格式转换- 内容要求:视频内容需免涉肖像权,否则会被下架或销毁- 视频素材规范: 1. 人脸画面:要求真人出镜(如果是卡通人物,需要人物五官和真人比例相近),画面中的人脸说话时建议正对镜头,水平转动不超过 45 度,俯仰不超过 15 度;人脸尽量不遮挡,面部光线稳定 2. 说话音频:对音频无限制
input.audio_url string 音频文件 URL(与 text 二选一),对口型视频中使用的文字、音色以音频文件内容为准。- 格式要求:支持 wav、mp3、wma、m4a、aac、ogg- 时长要求:大于 1 秒,小于 600 秒- 大小要求:不超过 100MB
input.text string 文本内容(与 audio_url 二选一),对口型视频生成时使用的文本内容。- 字符要求:不少于 4 个字符,不超过 2000 字符(2-1000 个汉字或 4-2000 个英文)- 优先级:与 audio_url 同时有值时,以 audio_url 中的内容生成- 段落切换:用换行符标记- 停顿控制:支持自定义文本之间的语音时间间隔,使用 <#x#> 标记: 1. x 为停顿时长(单位:秒),范围 [0.01, 99.99],最多保留两位小数 2. 文本间隔时间需设置在两个可以语音发音的文本之间,不可连续使用多个停顿标记 3. 示例:你好<#2#>我是modelverse<#2#>很高兴见到你
input.ref_photo_url string 人脸参考图 URL,用于在视频包含多张人脸时指定目标人物。- 格式要求:支持 jpg、jpeg、png、bmp、webp- 分辨率要求:单边分辨率在 192-4096px- 大小要求:不超过 10MB- 内容要求:图片需包含一张清晰的人物正脸,且为视频中出现的人物- 默认行为:若不输入人脸参考图,默认选择视频中第一个有人脸的画面中人脸占比最大的人物为目标
parameters.vidu_type string Vidu 接口类型,此处固定为 lip-sync
parameters.speed float 语速,默认 1.0,范围 [0.5, 2]。0.5 为最慢语速,2 为最快语速;仅文字驱动时生效
parameters.voice_id string 音色 ID,仅文字驱动时生效。参考 音色列表
parameters.volume int 音量大小,范围 0-10,默认 0(正常音量),值越大音量越高;仅文字驱动时生效

2.3 调用注意事项

如果您使用 Windows 系统,建议使用 Postman 或其他 API 调用工具,避免命令行调用出现兼容问题。

1. audio_url 和 text 必须提供其中一个,不可同时为空;若两者同时有值,以 audio_url 中的内容生成对口型视频。 2. speed、voice_id、volume 三个参数仅在使用文字驱动(即仅输入 text,未输入 audio_url)时生效,音频驱动时不生效。

2.4 请求示例

2.4.1 音频驱动

curl --location --globoff 'https://api.modelverse.cn/v1/tasks/submit' \
--header 'Authorization: <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "model": "vidu-lip-sync",
    "input": {
      "video_url": "https://umodelverse-inference.cn-wlcb.ufileos.com/maxcot-dance.mp4",
      "audio_url": "https://umodelverse-inference.cn-wlcb.ufileos.com/%E6%AC%A2%E8%BF%8E%E4%BD%BF%E7%94%A8Modelverse_API.mp3"
    },
    "parameters": {
      "vidu_type": "lip-sync"
    }
  }'

2.4.2 文字驱动

curl --location --globoff 'https://api.modelverse.cn/v1/tasks/submit' \
--header 'Authorization: <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "model": "vidu-lip-sync",
    "input": {
      "video_url": "https://umodelverse-inference.cn-wlcb.ufileos.com/maxcot-dance.mp4",
      "text": "你好,欢迎使用对口型功能"
    },
    "parameters": {
      "vidu_type": "lip-sync",
      "voice_id": "your_voice_id",
      "speed": 1.0,
      "volume": 4
    }
  }'

2.5 输出参数

参数 类型 描述
output.task_id string 异步任务的唯一标识,用于后续查询任务状态及获取生成结果
request_id string 本次请求的唯一标识,用于问题排查时定位具体请求记录

2.6 响应示例

{
  "output": {
    "task_id": "task_id"
  },
  "request_id": "request_id"
}

3. 查询任务状态接口

该接口用于查询已提交异步任务的执行状态、对口型视频生成结果、任务耗时及相关信息,需传入异步提交任务时返回的 task_id 作为查询标识,根据任务状态返回对应信息(成功返回生成后视频URL,失败返回错误信息)。

3.1 接口地址

https://api.modelverse.cn/v1/tasks/status?task_id=<task_id>

说明:将 \<task\_id\> 替换为异步提交任务接口返回的实际 task_id,即可发起查询。

3.2 输入参数

输入参数通过 URL 路径参数传递,具体说明如下:

参数 类型 是否必选 描述
task_id string 异步任务的唯一标识,由异步提交任务接口返回,用于定位查询具体任务

3.3 请求示例(curl)

curl --location 'https://api.modelverse.cn/v1/tasks/status?task_id=<task_id>' \
--header 'Authorization: <YOUR_API_KEY>'

3.4 输出参数

参数 类型 描述
output.task_id string 异步任务的唯一标识,与查询时传入的 task_id 一致
output.task_status string 任务状态,可选值:Pending(待处理)、Running(执行中)、Success(成功)、Failure(失败)
output.urls array 视频结果的 URL 列表,仅当 task_status 为 Success 时返回,可通过该 URL 下载生成的对口型视频
output.submit_time integer 任务提交时间戳(单位:秒)
output.finish_time integer 任务完成时间戳(单位:秒),仅当 task_status 为 Success 或 Failure 时返回
output.error_message string 任务失败时返回的错误信息,仅当 task_status 为 Failure 时返回,用于排查失败原因
usage.duration integer 视频时长(秒)
request_id string 本次查询请求的唯一标识,用于问题排查时定位具体查询记录

3.5 响应示例

3.5.1 成功响应示例

{
  "output": {
    "task_id": "task_id",
    "task_status": "Success",
    "urls": ["https://xxxxx/xxxx-lipsync.mp4"],
    "submit_time": 1756959000,
    "finish_time": 1756959050
  },
  "usage": {
    "duration": 30
  },
  "request_id": ""
}

3.5.2 失败响应示例

{
  "output": {
    "task_id": "task_id",
    "task_status": "Failure",
    "submit_time": 1756959000,
    "finish_time": 1756959019,
    "error_message": "error_message"
  },
  "usage": {
    "duration": 5
  },
  "request_id": ""
}