本文面向开发者,详细介绍如何通过 API 调用 AI 视频翻译能力,将国际化视频的自动化生产流程无缝集成到您的业务系统中。您将了解到 API 的核心调用流程、参数配置,并通过丰富的代码示例快速上手。
说明
在开始之前,建议您先阅读 AI 视频翻译的快速开始指南,了解其核心功能、应用场景和计费规则,并通过控制台操作体验 AI 视频翻译的实际效果。
视频点播提供以下两种工作流,以满足不同场景下的视频翻译需求:
调用 SubmitAITranslationWorkflow 接口创建 AI 翻译任务。在此场景下,不要设置 ProcessConfig.SuspensionStageList 参数,让任务一次性执行到底。请求示例如下:
POST https://vod.volcengineapi.com?Action=SubmitAITranslationWorkflow&Version=2025-01-01 { "SpaceName": "test_space", "Vid": "v0cctrans***onvideoid", "TranslationConfig": { "SourceLanguage": "zh", "TargetLanguage": "en", "TranslationTypeList": ["SubtitleTranslation","VoiceTranslation"] } }
任务完成后,您可以通过以下两种方式获取 AI 翻译任务的产物信息:
调用 UpdateAITranslationUtterances 接口更新字幕。您可以根据修改规模选择任一方式:
通过文件更新:上传校对后的源语言、目标语言或双语的字幕文件(SRT/WebVTT)。在字幕文件中,您可以使用特殊标记实现静音或使用原声等操作,详细说明和示例,请见字幕文件中的特殊标记说明。请求示例:
POST https://vod.volcengineapi.com?Action=UpdateAITranslationUtterances&Version=2025-01-01 { "SpaceName": "test_space", "UpdateType": "OutputSubtitleFile", "ProjectId": "684038d6b71***05b266fefe", "OutputSubtitleFileName": "your_target_subtitle_file.vtt" }
通过句段 ID 更新:将 UpdateType 设置为 Utterances,并传入一个或多个包含句段 ID、新文本和说话人 ID 的字幕对象,精确修改特定句段。请求示例:
POST https://vod.volcengineapi.com?Action=UpdateAITranslationUtterances&Version=2025-01-01 { "SpaceName": "test_space", "UpdateType": "Utterances", "ProjectId": "684038d6b71***05b266fefe", "Utterances": [ { "Id": "68403b6***364cc4835c8141", "Text": "Welcome to this video. Today we will introduce how to use the VOD service.", "SpeakerId": "68403b6***364cc4835c80f4" } ] }
说明
如需通过以上方式替换音色,请参考通过 OpenAPI 替换音色。
完成所有修改后,调用 RefreshAITranslationProject 接口。系统会应用您所有的变更(包括修改的文本、新生成的单句音频等),重新导出一个全新的翻译视频。
调用 SubmitAITranslationWorkflow 接口创建 AI 翻译任务,并通过 ProcessConfig.SuspensionStageList 参数指定在特定阶段暂停。
SubtitleRecognition):任务将在生成源语言字幕后暂停。SubtitleTranslation):任务将在生成目标语言字幕后暂停。// 请求示例:在字幕翻译后暂停任务 POST https://vod.volcengineapi.com?Action=SubmitAITranslationWorkflow&Version=2025-01-01 { // ... 其他参数 ... "ProcessConfig": { "SuspensionStageList": ["SubtitleTranslation"] } }
获取待校对的字幕:调用 GetAITranslationProject 接口获取项目详情。
SubtitleRecognition 阶段暂停,您可获取到 SourceUtterances(源语言字幕句段信息)和 InputSubtitle(源语言字幕文件)。SubtitleTranslation 阶段暂停,您可获取到 SourceUtterances(源语言字幕句段信息)、InputSubtitle(源语言字幕文件)、TargetUtterances(目标语言字幕句段信息)和 OutputSubtitle(目标语言字幕文件)。更新字幕内容:调用 UpdateAITranslationUtterances 接口提交您的修改。您可以根据修改范围,选择任一方式:
通过文件更新:上传校对后的源语言、目标语言或双语的字幕文件(SRT/WebVTT)。在字幕文件中,您可以使用特殊标记实现静音或使用原声等操作,详细说明和示例,请见字幕文件中的特殊标记说明。请求示例:
POST https://vod.volcengineapi.com?Action=UpdateAITranslationUtterances&Version=2025-01-01 { "SpaceName": "test_space", "UpdateType": "OutputSubtitleFile", "ProjectId": "684038d6b71***05b266fefe", "OutputSubtitleFileName": "your_target_subtitle_file.vtt" }
通过句段 ID 更新:将 UpdateType 设置为 Utterances,并传入一个或多个包含句段 ID、新文本和说话人 ID 的字幕对象,精确修改特定句段。请求示例:
POST https://vod.volcengineapi.com?Action=UpdateAITranslationUtterances&Version=2025-01-01 { "SpaceName": "test_space", "UpdateType": "Utterances", "ProjectId": "684038d6b71***05b266fefe", "Utterances": [ { "Id": "68403b6***364cc4835c8141", "Text": "Welcome to this video. Today we will introduce how to use the VOD service.", "SpeakerId": "68403b6***364cc4835c80f4" } ] }
说明
如需通过以上方式替换音色,请参考通过 OpenAPI 替换音色。
完成字幕内容的更新和校对后,调用 ContinueAITranslationWorkflow 接口恢复任务,继续执行后续流程。
任务完成后,您可以通过以下两种方式获取 AI 翻译任务的产物信息:
说明
最终输出的字幕文件中将包含双语字幕。源语言和目标语言字幕文件中的 <v> 标签信息会被移除。
如果您对某个说话人的音色不满意,需要更换,可按以下流程操作:
SpeakerId 和 Name。UpdateType 设置为 Utterances。在 Utterances 数组中,将需要更换音色的句段的 SpeakerId 更新为您在上一步中获取的 SpeakerId。<v SpeakerName> 标记。这里的 SpeakerName 就是您在上一步中获取的新说话人的 Name。如果您需要在翻译过程中应用您自定义的术语表,以确保特定词汇(如品牌名、产品名、专有名词等)的翻译准确性和一致性,可按以下流程操作:
TermbaseId。TermbaseId,向术语库添加若干术语条目。TranslationTermbaseIds 中传入一个或多个要应用的术语库 ID。系统将按照您指定的术语进行翻译干预。您可以在字幕文件中使用以下特殊标记来增强控制能力。
<v {speaker}>:为该句字幕指定一个说话人。可指定 Speaker 名称为一个不为空的字符串。需放置在字幕文本行的最前方。如不指定,系统会通过 ASR 自动识别并匹配说话人。<a {action}>:对该句字幕的音频执行特殊操作。需放置在字幕文本行的最前方,可与 <v> 标签同时使用。支持以下 action:MuteSpeech:静音。该句字幕将没有语音,实现静音效果。UseOriginal:使用原声。该句字幕将直接使用原视频对应时间段的音频,不进行翻译和语音合成。字幕文件示例:
SRT 双语字幕文件:
1 00:00:10,198 --> 00:00:11,118 你干什么 <v Speaker1><a MuteSpeech>What have you done? 2 00:00:17,039 --> 00:00:19,018 我打台球比赛 <v Speaker2>I was playing in a pool tournament.
WebVTT 目标语言字幕文件:
00:00:00.160 --> 00:00:01.160 <v Speaker1>Oh 00:00:01.160 --> 00:00:02.660 <v Speaker2><a UseOriginal>Stop messing around, Your Highness