接口说明
基于 ppt 文件生成数智人讲解视频,当前一个账户仅允许同时提交一个 PPT 视频合成任务,任务最终会扣减相应数智人类型的播报小时包(制作失败不扣减小时包)。通过 视频制作接口-PPT 模式进度查询接口 最终返回成品视频。
调用协议
HTTPS + JSON
POST /v2/ivh/mediaproduction/mediaproduction/videomakewithppt
Header Content-Type: application/json;charset=utf-8
请求参数
参数 | 类型 | 必须 | 说明 |
PPTFileUrl | string | 是 | PPT 文件 URL,支持格式:ppt、pptx、pdf。 大小要求:不超过100MB,页数要求:不超过50页。 |
GlobalConfig | object | 否 | 定义全局默认参数,包含视频相关参数、音频相关参数等。参数优先级规则:PageConfig > GlobalConfig。即每页配置中显式指定的参数将覆盖全局默认值;未指定的参数自动继承全局配置。 |
GlobalConfig.AdaptationType | int | 否 | 全局画面适配模式,当背景图和输出视频分辨率不一致时,提供两种适配模式:0,1;默认0。 以下是两种适配模式: 0: 拉伸适配:强制将 PPT 内容拉伸至充满整个视频画面,可能导致文字、图片变形,适合对画面比例无严格要求的场景; 1 :等比缩放:按原始文件比例缩放内容,确保画面无变形,剩余区域以指定颜色背景填充 |
GlobalConfig.BackgroundColor | string | 否 | 全局背景图填充颜色,当适配模式选择等比缩放时生效, 默认值:#FFFFFF(白色)。 格式要求: 必须为合法的十六进制颜色代码 以#符号开头,后跟6位十六进制字符(0-9, A-F) 不区分大小写 不支持简写形式(如 #FFF) |
GlobalConfig.ShowSubtitles | bool | 否 | 是否在视频内显示字幕(显示要求是文本驱动),默认不展示,展示会大大增加视频制作时间。 说明: 需要注意当值为 true 时,如果某些音色(第三方音色)不支持字幕会导致任务失败。 |
GlobalConfig.LogoParams | 否 | 定义视频中 logo 相关参数。 | |
GlobalConfig.SpeechParam | 否 | 定义全局音频的详细参数。 | |
GlobalConfig.VideoParam | 否 | 定义全局视频的详细参数。 | |
PageConfigs | | 是 | 定义具体页 PPT 的参数,包含数字人形象、音频相关参数、视频相关参数。 说明: PageConfigs 元素数量应不超过 PPT 页数, 当 PageConfigs 元素数量为 N,并且少于 PPT 页数时,仅基于前 N 页 PPT 合成视频。 |
LogoParam
参数 | 类型 | 必须 | 说明 |
LogoFileUrl | string | 否 | LOGO 图片文件下载路径,支持 jpg、png 格式 |
PositionX | int | 否 | LOGO 图片左上角的 X 坐标(坐标范围和视频分辨率相关) |
PositionY | int | 否 | LOGO 图片左上角的 Y 坐标(坐标范围和视频分辨率相关) |
Scale | float | 否 | LOGO 图片缩放比例(1.0为原始图片大小,范围(0,15]) |
PageConfig
参数 | 类型 | 必须 | 说明 |
VirtualmanKey | string | 否 | 数字人形象,包含了播报的角色、服装、姿态、分辨率等信息。 要求每页配置的数智人形象为同一类型,并且分辨率相同。 说明: 当前仅支持1080P 横版(1920×1080)和 1080P 竖版(1080×1920)的形象。 如果不需要数智人出镜(只要 PPT 画面 + 语音旁白),该字段可为空。 可以通过 查询形象资产信息-查询主播下的所有形象 接口查询。 |
InputAudioUrl | string | 否 | 驱动数智人的音频 URL。当 DriverType 为 OriginalVoice 时,该字段必填。 音频格式要求:音频时长不超过60分钟(VirtualmanKey 为空时不超过30分钟),不少于0.5秒。 支持格式:wav、mp3、wma、m4a、aac、ogg。 建议文件大小:不大于100MB。 |
DriverType | string | 否 | 驱动类型,为空时默认 Text。 Text:文本驱动,要求 InputSsml 字段必填。 OriginalVoice:原声音频驱动,要求 InputAudioUrl 字段必填。可通过 Speech.TimbreKey 指定音色,未填写时使用主播默认音色。 |
InputSsml | string | 否 | 播报的文本内容,支持 SSML 标签,支持的标签类型参照 数智人 SSML 标记语言规范,标签写法参照示例,内容不能换行,符号需转义。上限2万字(字数按 unicode 字符数计算)。DriverType 为空、或 Text 时,该字段必填。 |
SpeechParam | 否 | 定义当前页面的音频详细参数。 | |
VideoParam | 否 | 定义当前页面的视频详细参数 。 |
SpeechParam
参数 | 类型 | 必须 | 说明 |
Speed | float | 否 | 语速(1.0为正常语速,范围[0.5-1.5],值为0.5时播报语速最慢,值为1.5时播报语速最快,DriverType 为音频驱动类型时,语速控制不生效)。 |
TimbreKey | string | 否 | 音色 key,默认使用形象自有音色。 |
Volume | int | 否 | 音量大小,范围[0,10],对应音量大小。默认为0,代表正常音量,值越大音量越高。 说明: TimbreKey 在 male_1 - 20、female_1 - 23(即男声1 - 20、女声1 - 23)间的音色不支持音量调节。 |
EmotionCategory | string | 否 | |
EmotionIntensity | int | 否 | 控制合成音频情感程度,取值范围为 [50,200],只有 EmotionCategory 不为空时生效。 |
TimbreLanguage | string | 否 |
VideoParam
参数 | 类型 | 必须 | 说明 |
AnchorParam | 否 | 定义视频中主播相关参数 | |
SmallSampleParam | 否 | 定义小样本相关特殊参数,当为非小样本形象时,此参数不生效。 | |
SmartActionEnabled | bool | 否 | 是否开启智能动作,默认不开启。生效条件:DriverType=Text、且 InputSsml 中不携带动作标签。 |
VideoParam.AnchorParam
参数 | 类型 | 必须 | 说明 |
HorizontalPosition | float | 否 | 定义主播横向位置(0为中间位置) 。 说明: |
VerticalPosition | float | 否 | 定义主播纵向位置(0为中间位置)。 说明: |
Scale | float | 否 | 主播大小(1是默认大小,范围(0,20]) |
Angle | int | 否 | 主播角度(默认0度,范围[0,360])目前仅3D 形象支持。 |
AnchorExtraParam | string | 否 | 需要将该参数组织为 JSON 字符串格式,请参考请求示例组织 JSON。 |
VideoParam.SmallSampleParam
参数 | 类型 | 必须 | 说明 |
MakeType | string | 否 | 定义小样本制作类型: Default:默认配置,会从随机起始帧开始制作,StartIdx 和 EndIdx 均不生效。 Custom:指定视频片段,可以填写 StartIdx 和 EndIdx 来选择片段,默认生成的视频用该“指定的视频片段”进行正倒放循环。 Circle:首尾帧归位,可以填写 StartIdx 来指定视频开始帧数(EndIdx 不生效),注意:该类型只用于声音驱动。 |
StartIdx | int | 否 | 起始帧号,当 MakeType 为 Custom 或 Circle 时生效,当填写的时候,默认生成的视频从该位置开始;不填的时候,默认选取开始帧号,即第0帧。 |
EndIdx | int | 否 | 结束帧号,当 MakeType 为 Custom 时生效,当填写的时候,默认结束的视频到该位置结束;不填的时候,默认选取该“选中的全部视频片段”的结束帧号。 |
VideoParam.AnchorParam.AnchorExtraParam 示例
说明:
colorValue 转换规则:十六进制 Hex 色值,去掉 # 后转为十进制,例如: #FAFAFA =>16448250
{"shirtColor": {"colorValue": 10491928},"clotheColor": {"colorValue": 10491928},"shoeColor": {"colorValue": 10491928}}
返回参数
参数 | 类型 | 必须 | 说明 |
TaskId | string | 是 |
请求示例
{"Header": {},"Payload": {"PPTFileUrl": "https://virtualhuman-cos-prod-1251316161.cos.ap-nanjing.myqcloud.com/12323/%E5%AE%9E%E4%B9%A0%E7%AD%94%E8%BE%A92.pptx","GlobalConfig": {"AdaptationType": 0,"BackgroundColor": "","SpeechParam": {"EmotionCategory": "","EmotionIntensity": 0,"Speed": 0,"TimbreKey": "tts_female_yunxiaoxiao","TimbreLanguage": "","Volume": 0},"VideoParam": {"AnchorParam": {"AnchorExtraParam": "","Angle": 0,"HorizontalPosition": 0,"Scale": 0,"VerticalPosition": 0},"SmallSampleParam": {"EndIdx": 0,"MakeType": "","StartIdx": 0},"SmartActionEnabled": true},"ShowSubtitles": true,"LogoParams": [{"LogoFileUrl": "https://virtualhuman-cos-prod-1251316161.cos.ap-nanjing.myqcloud.com/123/123.png","PositionX": 0,"PositionY": 0,"Scale": 0.1}]},"PageConfigs": [{"DriverType": "","InputAudioUrl": "","InputSsml": "你好呀,我是数智人,这是我的第一次ppt视频","SpeechParam": {"EmotionCategory": "","EmotionIntensity": 0,"Speed": 1,"TimbreKey": "tts_female_yunxiaoxiao","TimbreLanguage": "","Volume": 0},"VideoParam": {"AnchorParam": {"AnchorExtraParam": "","Angle": 0,"HorizontalPosition": 0,"Scale": 0,"VerticalPosition": 0},"SmallSampleParam": {"EndIdx": 0,"MakeType": "","StartIdx": 0},"SmartActionEnabled": false},"VirtualmanKey": "2c3f4c11d1e54b7693156b060990544d"},{"DriverType": "","InputAudioUrl": "","InputSsml": "你好呀,我是数智人,这是我的第一次ppt视频","SpeechParam": {"EmotionCategory": "","EmotionIntensity": 0,"Speed": 1,"TimbreKey": "tts_female_yunxiaoxiao","TimbreLanguage": "","Volume": 0},"VideoParam": {"AnchorParam": {"AnchorExtraParam": "","Angle": 0,"HorizontalPosition": 0,"Scale": 0,"VerticalPosition": 0},"SmallSampleParam": {"EndIdx": 0,"MakeType": "","StartIdx": 0},"SmartActionEnabled": false},"VirtualmanKey": ""},{"DriverType": "","InputAudioUrl": "","InputSsml": "你好呀,我是数智人,这是我的第一次ppt视频","SpeechParam": {"EmotionCategory": "","EmotionIntensity": 0,"Speed": 1,"TimbreKey": "tts_female_yunxiaoxiao","TimbreLanguage": "","Volume": 0},"VideoParam": {"AnchorParam": {"AnchorExtraParam": "","Angle": 0,"Scale": 0,"VerticalPosition": 0},"SmallSampleParam": {"EndIdx": 0,"MakeType": "","StartIdx": 0},"SmartActionEnabled": false},"VirtualmanKey": "2c3f4c11d1e54b7693156b060990544d"}]}}
返回示例
成功
{"Header": {"RequestID": "5e2dd62fa7f3c1aa6030875637688706","SessionID": "gzfa9105ca17749284691612885","DialogID": "","Code": 0,"Message": ""},"Payload": {"TaskId": "098b482c71f643ad8f288df9f2961403"}}
失败
{"Header": {"RequestID": "d99cf740be48d7b0fb1eee4447b71781","SessionID": "gz6240ef0317651792698007383","DialogID": "","Code": 100001,"Message": "InvalidParameter:请求参数错误: Speed value invalid,ranges:0.5-1.5"}}