一、功能介绍
| 功能 | 说明 |
| 语音音色转换 | 输入原始视频或音频,指定音色 ID 或传入用于克隆音色的训练音频/视频,可以替换原始音色,说话内容不变且情绪自然。 |
| 视频加语音 | 输入原始视频,指定音色 ID 和文本内容,系统将自动生成配音并合成到视频中,输出新视频文件。 |
二、前提条件
在使用本功能前,你需完成以下前置操作:
·腾讯云账号注册/登录、开通 MPS 产品、完成服务角色授权。
·若你使用腾讯云子账号,还需要保证账号有足够权限使用 MPS 产品。
具体指引请参考 快速入门。账号授权问题可参考 账号授权 文档。
三、计费说明
若发起任务时指定音色 ID,收取“AI 配音-指定音色”费用。
若传入了 cloneVideoUrl,则会先进行克隆音色操作再进行语音合成,收取“克隆音色”+“AI 配音-指定音色”费用。
详细定价请参考 计费说明文档。
四、发起任务
调用 ProcessMedia 接口 ,选择 AiAnalysisTask 任务,将 Definition 设置为36(预设模板 ID)。
ExtendedParameter 填写扩展参数,用于指定功能场景、配置对应参数,参考下文 扩展参数说明。
传参 JSON 示例如下:
{ "InputInfo": { "Type": "URL", "UrlInputInfo": { "Url": "https://test.myqcloud.com/video/xxx.mp4" // SpeechToSpeech模式替换成要做音色替换的视频/音频,TextToSpeech模式下随便填写一个可访问的音视频链接即可,不会统计时长计费 } }, "AiAnalysisTask": { "Definition": 36, //预设语音合成模板 ID "ExtendedParameter": "{\\"dubbing\\":{\\"dubbingType\\":\\"SpeechToSpeech\\",\\"voiceId\\":\\"clone_v1_Q03FBduA\\"}}" //扩展参数,用于传入转换音色以及其他个性化能力,见下文说明 }, "OutputStorage": { "CosOutputStorage": { "Bucket": "test-mps-123456789", "Region": "ap-guangzhou-2" }, "Type": "COS" }, "OutputDir": "/output/", "TaskNotifyConfig": { "NotifyType": "URL", "NotifyUrl": "http://qq.com/callback/qtatest/?token=xxxxxx" }, "Action": "ProcessMedia", "Version": "2019-06-12"}
五、ExtendedParameter 扩展参数说明
ExtendedParameter 用于指定不同功能场景和对应参数。
六、场景一、语音音色转换(音视频音色替换)
输入原始音频或视频,指定音色 ID 或传入用于克隆音色的训练音频/视频,可以替换原始音色,说话内容不变。
ExtendedParameter 传参示例:
{ "dubbing": { "dubbingType": "SpeechToSpeech", "cloneVideoUrl": "https://test.tencentcos.cn/test/trainingvoice.mp4" }}//调用API时需进行转义!
| 参数 | 类型 | 必填 | 描述 |
| dubbingType | String | 是 | 配音任务类型,该场景填 SpeechToSpeech。 |
| conversionMode | String | 否 | 转换模式,默认 stage-by-stage。stage-by-stage 分阶段转换(识别->合成)。end-to-end 端到端转换。该模式仅支持部分系统音色(“音色转换”场景)。 |
| srcLang | String | 否 | 源视频/音频对应语言,源视频即 InputInfo 中的音视频。 |
| voiceId | String | 否 | 指定音色 ID,可填克隆音色或系统音色,系统音色见 此文档。 |
| cloneVideoUrl | String | 否 | 克隆音色的视频/音频,要求时长不小于5s且只包含一个说话人。若没有指定 voiceId,将克隆该音视频的音色。 |
| cloneVideoLang | String | 否 | 克隆视频/音频对应的语言,默认中文。选项见 此文档。 |
| outputPattern | String | 否 | 输出文件名前缀,支持占位符{taskType}、{timestamp},默认文件名为{taskType}_{timestamp}。 |
| extraPara | Object | 否 | 其他参数。 |
| extraPara.synExt | Object | 否 | 语音合成扩展参数。 |
| synExt.pitch | Integer | 否 | 结果音频音调,取值[-12,12],默认0即原音色输出。 |
七、场景二、视频加语音场景
文本转语音,并将语音和字幕添加到视频上
ExtendedParameter 传参示例:
{ "dubbing": { "dubbingType": "AddAudioByTTS", "text": "肌肤总干燥紧绷、透着黯黄?想要皮肤状态好,清洁到位是首要!魅护这款洁面乳,甄选芦荟与玫瑰精华,洗完清爽又透亮,日常清洁选它很省心~", "voiceId": "s1_W6dm+psx/nndDcTY9fy8CXAuxN82CrmPBVLhaLBZGbylzrAzDwog9zElho/SYnVtGxU=" }}
| 参数 | 类型 | 必填 | 描述 |
| dubbingType | String | 是 | 配音任务类型,该场景填 AddAudioByTTS。 |
| durationMode | String | 否 | 时长基准模式。默认 video 模式。video:以视频时长为准。audio:以音频时长为准。 |
| fitMode | String | 否 | 时长对齐方式。video:pad_trim(默认方式)。若合成音频时长不等于视频,通过倍速或在两端填充静音保证时长一致。audio:trim_loop(默认方式)。若音频时长大于视频,循环播放视频;若小于视频则截断视频,保证视频与合成音频时长相同speed。视频倍速以适配音频时长(背景声同步变速)。 |
| text | String | 否 | 语音合成文本。 |
| textLang | String | 否 | 文本对应语言,默认中文。 |
| textSegments | Array of Object | 否 | 文本片段列表,可以将 TTS 的结果插入到指定位置。 |
| textSegments[i].text | String | 否 | 文本。 |
| textSegments[i].startTime | Float | 否 | 插入到视频中的起始时间位置。 |
| textSegments[i].endTime | Float | 否 | 插入到视频中的结束时间位置。 |
| voiceId | String | 否 | 指定音色 ID,可填克隆音色或系统音色,系统音色见附录。 |
| cloneVideoUrl | String | 否 | 克隆音色的视频/音频,要求时长不小于5s且只包含一个说话人。若没有指定 voiceId,将克隆该音视频的音色。 |
| cloneVideoLang | String | 否 | 克隆视频/音频对应的语言,默认中文。 |
| extraPara | Object | 否 | 其他参数。 |
| extraPara.synExt | Object | 否 | 语音合成扩展参数。 |
| synExt.pitch | Integer | 否 | 结果音频音调,取值[-12,12],默认0原音色输出。 |
| subtitle | Object | 否 | 字幕相关参数。 |
| subtitle.style | Style | 否 | 字幕样式。详情见相关数据结构。 |
八、事件通知回调
在使用 ProcessMedia 发起媒体处理任务时,你可以通过 TaskNotifyConfig 参数配置事件回调。当任务处理完成后,会通过配置的回调信息回调任务结果,你可以通过 ParseNotification 解析事件通知结果。相关数据结构可参考下文。
九、调用接口查询任务结果
在使用 ProcessMedia 发起媒体处理任务后,会返回任务 ID(TaskId),例如:24000022-WorkflowTask-b20a8exxxxxxx1tt110253、24000022-ScheduleTask-774f101xxxxxxx1tt110253。调用 DescribeTaskDetail 接口,输入任务 ID 即可获取任务结果,你需要解析 WorkflowTask ->AiAnalysisResultSet > DubbingTask > Output 字段获取任务结果。
下方列出了相关数据结构以供参考:
·AiAnalysisTaskDubbingResult
·AiAnalysisTaskDubbingInput
·AiAnalysisTaskDubbingOutput