AI 配音接入

最近更新时间:2025-11-19 14:59:52

我的收藏

AI 配音功能简介

AI 配音功能可以将视频原配音替换为翻译语言 AI 配音,并将翻译语言字幕压制至视频画面上。发起 AI 配音任务,需要使用以下两个文件作为输入:
1. 视频文件,需是无痕视频,即画面上不带有源语言字幕。
2. 字幕及角色标记文件(Speaker 文件)。
您也可以直接调用 配音级视频译制 能力,输入带有原始字幕的视频,一站式完成字幕和配音翻译,获取译制后的新视频。
说明:
无痕视频、Speaker 文件的获取可参考下文 常见问题


计费说明

发起 AI 配音任务,收取 「AI 配音(克隆音色)」+ 「压制字幕」费用,其中压制字幕可选。
说明:
AI 配音功能默认使用克隆音色。当前标准音色能力升级中,暂仅开放内测,如有需求您可以联系商务或 提交工单 获得支持。
若使用标准音色,收取「AI 配音(标准音色)」+ 「压制字幕」费用,其中压制字幕可选。

发起视频译制任务

接入前置操作

在接入 AI 配音前,为正常使用 MPS 产品,您需要完成以下前置操作:腾讯云账号注册和登录、开通 MPS 产品、授权服务角色。
具体指引请参考 快速入门。账号授权问题可参考 账号授权 文档。

方式1:控制台发起任务

1. 进入控制台 创建任务 页面,依次选择输入文件路径、配置编排处理流程、输出路径。
2. 在编排配置中,选择媒体 AI - 智能分析节点。
3. 在右侧弹出页面中,选择32号预设模板。开启“更多设置 - 扩展参数”,根据下文 扩展参数说明,传入所需参数。
说明:
发起 AI 配音任务,必须在扩展参数中传入 Speaker 文件路径,否则任务会失败。
MPS 控制台会自动转义,请直接传入 JSON 数据,不要传入转义后的字符串,否则任务会失败。


方式2:API 发起任务

调用 ProcessMedia 接口 ,选择 AiAnalysisTask 任务,将 Definition 设置为32(预设模板 ID),ExtendedParameter 填扩展参数,通过该参数实现 AI 配音能力,取值见下文 扩展参数说明。ProcessMedia 的 JSON 示例如下:
{
"InputInfo":{ //输入视频路径,请替换为您的原始视频
"Type":"URL",
"UrlInputInfo":{
"Url":"https://test-1234567.cos.ap-nanjing.myqcloud.com/mps_test/myvideo.mp4"
}
},
"OutputStorage":{ //输出COS存储桶,请替换
"Type":"COS",
"CosOutputStorage":{
"Bucket":"test",
"Region":"ap-nanjing"
}
},
"OutputDir":"/mps_test/output/",//输出文件夹路径,请替换
"AiAnalysisTask":{
"Definition":32, //预设模板ID,填 32 即可
"ExtendedParameter":"{\\"dubbing\\":{\\"speakerUrl\\":\\"https://mycloud.com/path/to/file.json\\"}}" //扩展参数,必传,用于指定speaker文件路径、字幕样式等参数
},
"TaskNotifyConfig":{ //事件回调通知配置,可选
"NotifyType":"URL",
"NotifyUrl":"http://www.qq.com/callback"
}
}
建议您通过 API Explorer 实现快速验证。您可以将上述 JSON 复制到 API Explorer 的 JSON 模式中,切换至“表单”模式可以自动解析,调整输入输出路径等必要参数后,再单击发起调用即可。
在 API Explorer 表单和 JSON 两种输入模式下,ExtendedParameter 的位置示意如下:

注意:
使用 API Explorer 的表单模式填写 ExtendedParameter 时,需要直接传入 JSON,不用转换成字符串。但使用 API Explorer 的 JSON 模式或直接使用 API 接口,则必须传入转义后的字符串。
API Explorer 表单模式,ExtendedParameter 传入 JSON 即可:

API Explorer JSON 模式,ExtendedParameter 则需要传入转义后的字符串,示例:
{\\"dubbing\\":{\\"speakerUrl\\":\\"https://mycloud.com/path/to/file.json\\"}}

ExtendedParameter 扩展参数说明

ExtendedParameter 用于对 AI 配音任务进行个性设置,全部可选参数及其说明参考:
{
"dubbing": {
"speakerUrl": "https://mycloud.com/path/to/file.json", // 必传,speaker 文件 URL
"subtitleStyle": { // 非必传,字幕样式
"embed": true, // 是否压制字幕,默认开启
"style": { // 字幕样式,启用字幕压制时生效
"font": "simkai", // 字体,默认值"simkai"
"fontSize": 50, // 字体大小,默认值50px
"marginV": 50 // 底部距离,默认值50
}
},
"outputPattern": "filename" // 非必传,输出文件名前缀
}
}
参数
类型
必填
描述
speakerUrl
string
Speaker 文件 URL。
subtitle
json
字幕相关参数。
subtitle.embed
bool
是否压制字幕,默认开启。
subtitle.style
json
字幕样式,启用字幕压制时生效。
subtitle.style.font
string
字体,默认值 "simkai"
支持字体参考 SubtitleTemplate 数据结构
subtitle.style.fontSize
float
字体大小,默认值 50 px。
subtitle.style.marginV
float
底部距离,默认值 50 px。
outputPattern
string
输出文件名前缀,不传则前缀默认为 dub,文件全名为dub_{unixtime}.{format}

Speaker 文件

数据格式

Speaker 文件指带有字幕及对应角色信息的 JSON 格式文件,数据格式如下:
{
"SrcLang": "zh",
"DstLangs": ["en"],
"Speakers": [
{
"Id": "speaker_0",
"Gender": "male"
},
{
"Id": "speaker_1",
"Gender": "female"
}
],
"Clips": [
{
"TextStartTime": "00:00:00.100",
"TextEndTime": "00:00:00.600",
"SpeakerId": "speaker_0",
"SrcText": "没谁",
"DstTexts": {
"en": "No one"
}
},
{
"TextStartTime": "00:00:01.0",
"TextEndTime": "00:00:01.200",
"SpeakerId": "speaker_1",
"SrcText": "早上好",
"DstTexts": {
"en": "Morning"
}
}
]
}

参数
是否必填
类型
说明
SrcLang
string
视频源语言。下文列出了支持语种
DstLangs
list<string>
译制目标语言,当前仅支持单种语言。下文列出了支持语种
Speakers[i].Id
string
说话人 ID。
Speakers[i].Gender
string
说话人性别,取 male 或 female。
Clips[i].TextStartTime
string
字幕切片开始时间戳,时:分:秒.毫秒。
Clips[i].TextEndTime
string
字幕切片结束时间戳,时:分:秒.毫秒。
Clips[i].SpeakerId
string
字幕切片对应的说话人 ID。
Clips[i].SrcText
string
字幕切片源语言。
Clips[i].DstTexts
map<string,string>
字幕切片翻译语言,当前仅支持单种语言。

支持语种

选用 AI 配音克隆音色,支持以下语种:
语种
Code
是否可用于源语言(SrcLang)
是否可用于译制目标语言(DstLangs)
中文 (Chinese)
zh
英语 (English)
en
日语 (Japanese)
ja
德语 (German)
de
法语 (French)
fr
韩语 (Korean)
ko
俄语 (Russian)
ru
乌克兰语 (Ukrainian)
uk
葡萄牙语 (Portuguese)
pt
意大利语 (Italian)
it
西班牙语 (Spanish)
es
印度尼西亚语 (Indonesian)
id
荷兰语 (Dutch)
nl
土耳其语 (Turkish)
tr
菲律宾语 (Filipino)
fil
马来语 (Malay)
ms
希腊语 (Greek)
el
芬兰语 (Finnish)
fi
克罗地亚语 (Croatian)
hr
斯洛伐克语 (Slovak)
sk
波兰语 (Polish)
pl
瑞典语 (Swedish)
sv
印地语 (Hindi)
hi
保加利亚语 (Bulgarian)
bg
罗马尼亚语 (Romanian)
ro
阿拉伯语 (Arabic)
ar
捷克语 (Czech)
cs
丹麦语 (Danish)
da
泰米尔语 (Tamil)
ta
匈牙利语(Hungarian)
hun
越南语(Vietnamese)
vi

查询任务结果

AI 配音任务会输出处理后的视频文件、精调后的 Speaker 文件(在配音的同时,会对原始 Speaker 文件中的译文做精简逻辑,保证配音的语速正常,避免语速过快的情况,因此会生成新的 Speaker 文件),保存在任务配置的输出路径下。

控制台查询结果

1. 您可以在控制台 任务管理 页面查看任务状态,当子任务状态为“成功”时,单击回调 JSON

2. 可以在输出信息中找到输出文件路径。

如果使用 COS 作为输出路径,您可以在 MPS 控制台的编排管理 > COS Bucket > 输出 Bucket 页面中找到输出文件。文件名类似"dub-xxx.mp4"、"dub-xxx.json"的文件即为 AI 配音处理后的视频文件、Speaker文件。


事件通知回调

在使用 ProcessMedia 发起媒体处理任务时,您可以通过 TaskNotifyConfig 参数配置事件回调。当任务处理完成后,会通过配置的回调信息回调任务结果,您可以通过 ParseNotification 解析事件通知结果。下方列出了相关数据结构以供参考。

调用接口查询任务结果

在使用 ProcessMedia 发起媒体处理任务后,会返回任务 ID(TaskId),例如:24000022-WorkflowTask-b20a8exxxxxxx1tt110253、24000022-ScheduleTask-774f101xxxxxxx1tt110253。调用 DescribeTaskDetail 接口,输入任务 ID 即可获取任务结果,您需要解析 WorkflowTask ->AiAnalysisResultSet > DubbingTask > Output 字段获取任务结果。下方列出了相关数据结构以供参考。

相关数据结构

常见问题

如何获得无痕视频?

您可以通过 智能擦除 功能去除视频上的字幕、水印等内容,获得无痕视频。

是否支持输入视频,一站式进行去字幕+翻译字幕+压制字幕+AI 配音处理?

支持,请参考 配音级视频译制接入

如何通过 SRT/VTT 格式字幕文件生成 Speaker 文件?

MPS 提供字幕文件转 Speaker 文件脚本 subtitle2speaker.py
支持 SRT 或 VTT 格式字幕文件,使用示例如下:
提供双语字幕文件(原字幕和翻译字幕在同一个字幕文件里)。
python3 subtitle2speaker.py input.srt output.json --src_lang "zh" --dst_langs "en"
提供两个单语字幕文件(原字幕和翻译字幕不在一个文件)。
python3 subtitle2speaker.py input_src.vtt input_dst.vtt output.json --src_lang "zh" --dst_langs "en"
说明:
通过 SRT/VTT 格式字幕文件生成的 Speaker 文件,说话人 ID 都为默认值,您需要手动修改说话人信息,否则配音效果可能不符合预期。