书译
书译

如何翻译 YouTube 字幕:下载、翻译并重新上传而不破坏时间轴

面向创作者的 YouTube Studio 工作流程:修正源字幕、下载文件、在保留时间戳的情况下翻译、检查字幕时间轴,并按时间轴上传每种语言。

BookTranslator

BookTranslator Team

16 min read

快速回答:翻译文件,而非视频

如果你拥有该频道,添加翻译字幕的可靠方法是通过 YouTube Studio 进行文件往返:

  1. 首先修正原始语言的字幕。
  2. 从 YouTube Studio 的 字幕 中下载该轨道。
  3. 翻译带时间轴的文件,确保每条字幕都保留其原始开始和结束时间。
  4. 在上传之前,对照源文件检查翻译后的文件。
  5. 在 Studio 中添加目标语言,并 带时间轴 上传文件。

大多数指南将第 3 步视为全部工作。实际上,其前后的两个步骤决定了新语言的观众能否获得可用的字幕:混乱的源轨道会被复制到每种语言中,而未检查的翻译可能在一条合并字幕后出现同步偏移。

本指南仅涵盖你管理的频道上的视频。不涉及从他人频道下载字幕或视频。

YouTube 接受什么,以及这对翻译意味着什么

YouTube 的支持的文件格式页面列出了基本格式,如 SubRip(.srt)和 SubViewer(.sbv/.sub),高级格式,如 WebVTT(.vtt)和 TTML,以及几种广播格式。对于翻译轨道,重要的细节是:

格式YouTube 表示保留的内容使用场景
SRT(.srt)“无法识别样式信息(标记)。”文件必须是纯 UTF-8。你希望为翻译工具和字幕编辑器使用最通用的文件。
SBV(.sbv)与 SRT 相同:无样式,需要纯 UTF-8。你已从 Studio 获得一个。在使用不读取 SBV 的工具之前,将其转换为 SRT。
WebVTT(.vtt)支持定位;样式仅限于粗体、斜体和下划线标签。你的源字幕轨道使用了定位功能,例如将字幕移离屏幕上的文字。
TTML / DFXP支持样式和定位。你有一个带有样式且必须保留的专业字幕文件。

实用规则:用你将要上传的格式进行翻译,除非工具强制要求转换。如果你的字幕没有定位或样式,SRT 是最安全的选择。如果有,请保留 VTT,以便定位信息与每条字幕保持关联。

第 1 步:在任何人翻译之前修复源轨道

YouTube 可以通过语音识别创建自动字幕,但仅限于视频的默认语言。自动字幕只是草稿。人名、产品术语、数字和同音词是常见的错误,而每一个错误都会被复制到基于该轨道制作的每一份翻译中。

在翻译之前,用源语言一次性修正这些错误:

  • 在 Studio 中,打开自动轨道并选择 复制并编辑。YouTube 的编辑指南说明,编辑自动字幕会创建一个包含你修订内容的新字幕轨道。
  • 修正专有名词、技术术语和数字。这些是译者无法可靠地从上下文中推断出来的词语。
  • 拆分包含两个独立意思的字幕。在从句中间结束的字幕在某些语言中更难翻译,因为动词或否定词可能属于句子的另一端。
  • 发布修正后的轨道,然后下载该版本。

如果你计划翻译三种目标语言,在源语言中做一次修正可以省去翻译中的三次单独修正。

第 2 步:从 YouTube Studio 下载字幕文件

在 YouTube Studio 中,打开 字幕,选择视频,找到修正后的语言轨道。YouTube 的编辑指南说要点击 选项 并选择 下载字幕。

帮助页面没有列出下载提供哪些格式,而且 Studio 的菜单可能会变化。使用你的翻译工具接受的格式。如果你只得到 .sbv,请在翻译前将其转换为 SRT。这两种格式以不同的布局存储相同的时间轴和文本:

SBV
0:00:07.600,0:00:11.800
If the glue is old, a little heat
softens it in about thirty seconds.

SRT
3
00:00:07,600 --> 00:00:11,800
If the glue is old, a little heat
softens it in about thirty seconds.

SBV 没有字幕编号,并用逗号分隔开始和结束时间。SRT 为每条字幕编号,使用 -->,并在逗号后写入毫秒。转换器只需要重写这些部分,因此文本和时间轴应该保持不变。

第 3 步:在不改动时间戳的情况下翻译

翻译后的文件必须保持相同数量的字幕,并且每条字幕的开始和结束时间相同。YouTube 根据时间戳放置每一行文本。如果删除或合并了一条字幕,其后的字幕将不再与说话者所说的内容匹配。

有两件事会促使译者更改时间轴,两者都应谨慎处理:

  • 文本扩展。 西班牙语、德语或法语的行通常比它所替换的英语行更长,但其时间窗口相同。在加宽字幕之前先缩短措辞。
  • 词序。 如果一个句子被分成两条字幕,译者可能会想合并它们以使语法读起来自然。请重新措辞,使每条字幕仍然能独立表达意思。

BookTranslator 的字幕翻译器 接受 SRT、VTT、ASS 和 SSA 文件,并将每条字幕的时间戳与翻译文本保持关联,因此你无需将文本行复制到聊天窗口中再复制出来。它不读取 SBV,所以请先转换。为每种目标语言创建一个翻译任务。关于 AI 字幕翻译常见错误的总体介绍,请参阅 AI 字幕翻译工作流程。

无论你使用什么工具,请将源文件与翻译文件放在一起。下一步你两者都需要。

第 4 步:对照源文件检查译文

上传之前,请逐条对照译文文件和源文件。为此我们写了一个小脚本:check_youtube_subtitles.py。它只使用 Python 标准库,可读取 SRT、VTT 和 SBV 文件,并完成两项工作:

python3 check_youtube_subtitles.py convert captions.sbv captions.srt
python3 check_youtube_subtitles.py check captions.srt captions.es.srt

check 命令会报告:

  • 发生变化的字幕条数;
  • 任何开始或结束时间与源文件不同的字幕;
  • 空字幕、结束时间早于开始时间的字幕,以及相互重叠的字幕;
  • 超过 42 个字符的行,以及每秒超过 20 个字符的字幕;
  • 不是有效 UTF-8 的文件,而 YouTube 要求 SRT 和 SBV 文件必须为 UTF-8。

行长度和阅读速度的默认值来自 Netflix English (USA) Timed Text Style Guide 中的成人节目限制。YouTube 并未发布同等限制,因此请将这些值视为起点,并根据你的语言用 --max-line 和 --max-cps 进行调整。Netflix 也为其他语言发布了风格指南。

一个完整示例

为了展示检查器能发现哪些问题,我们制作了一个关于重新装订平装书的六条英文字幕样本,然后手工编写了两个西班牙语版本。这些文件是公开的,你可以自己运行检查:

干净的译文通过检查,显示“未发现问题”。第二个版本会产生如下输出:

Source cues: 6  Translated cues: 5
Cue count changed: source 6, translation 5
Cue 3: timing changed 00:00:07,600-00:00:11,800 -> 00:00:07,600-00:00:13,400
Cue 4: timing changed 00:00:12,000-00:00:13,400 -> 00:00:13,600-00:00:17,000
Cue 5: timing changed 00:00:13,600-00:00:17,000 -> 00:00:17,200-00:00:20,600
Cue 1: 20.2 characters/second (limit 20)
Cue 1: line has 46 characters (limit 42)
Cue 3: line has 45 characters (limit 42)

以下是每种情况的具体说明:

  1. 合并。 译者将“If the glue is old...”与简短的“Don't rush this part.”合并。合并后的字幕现在结束于 13.4 秒,之后每条字幕都向后偏移了一位。请阅读第一个时间错误:它指向了这次合并。其后的错误都是这次合并的后果,因此请先修复第一个错误,然后再次运行检查。

  2. 被修改的结束时间。 这个问题在第一次运行中被隐藏了,因为合并后检查器比较的是错误的字幕对。请将合并的字幕重新拆分为两条,然后再次运行检查。第一次运行中的行长度和阅读速度警告仍然存在,并且出现了一个新的时间错误:

    Source cues: 6  Translated cues: 6
    Cue 6: timing changed 00:00:17,200-00:00:20,000 -> 00:00:17,200-00:00:20,600
    

    最后一条字幕从 20.0 秒延长到了 20.6 秒。这是一个很小的改动,你在文件中不会注意到它,但字幕现在会在说话人停止后继续留在屏幕上。

  3. 扩展。 “Hoy vamos a reencuadernar un libro de bolsillo”是忠实的翻译,但 46 个字符对于一行来说太长了,而且这条字幕的阅读速度太快。干净版本使用“Hoy reencuadernamos un libro de bolsillo”,在 40 个字符内保留了所有细节。

该脚本不评判翻译质量。一条轨道可以通过所有检查,却仍然错误翻译了某个术语。它能捕捉到只阅读文本时容易忽略的结构性问题。

第 5 步:上传带时间轴的各种语言字幕

YouTube 的上传指南描述了操作路径:在 YouTube Studio 中打开字幕,选择视频,添加语言,然后在“字幕”下点击添加,选择上传文件,并在选择文件前选择带时间轴或不带时间轴。

对于翻译后的 SRT 或 VTT 文件,请选择带时间轴。该文件已经包含你刚刚检查过的时间戳。

不要对翻译使用 Without timing 或 Auto-sync。Auto-sync 会将纯文本转录与音频进行时间对齐,而 YouTube 表示转录“必须与视频中使用的语言相同”。英语视频的西班牙语转录不符合该要求。Auto-sync 适用于源语言,不适用于翻译轨道。

发布前再检查两件事:

  • 语言标签。 将轨道添加到正确的目标语言下。将西班牙语文件作为葡萄牙语上传,会显示给选择葡萄牙语的观众。
  • 标题和描述。 翻译字幕不会翻译你的标题或描述。YouTube 在 Studio 的同一“字幕”部分中单独处理标题和描述翻译;请参阅翻译你自己的视频标题和描述。

第 6 步:观看已发布的轨道

在播放器中选择新语言,观看视频的开头、快速对话部分和最后一分钟。这些检查能发现文件检查无法发现的问题:

  • 屏幕文字或下三分之一图形被字幕遮挡;
  • 某条字幕在时间上准确,但拆分了笑点或关键术语;
  • 字符显示为方框,因为源文件未保存为 UTF-8(参见如何修复字幕编码);
  • 目标语言行读起来正确,但内容过于密集,无法以正常速度读完。

如果你需要字幕编辑器、审阅平台或其他翻译工具,字幕翻译软件对比涵盖了每种工具值得额外设置的情况。

上传前检查清单

对每个目标语言使用此列表:

  • 源轨道已在翻译前修正并发布
  • 下载的文件为 UTF-8 格式,且为你的翻译工具接受的格式(如有需要,将 SBV 转换为 SRT)
  • 翻译文件与源文件具有相同的字幕条数
  • 每个开始和结束时间都与源文件匹配
  • 没有超过你限制的行长,也没有超过你阅读速度限制的字幕
  • 轨道已在正确语言下以 With timing 上传
  • 如有需要,标题和描述已单独翻译
  • 已在播放器中观看轨道的开头、快速部分和结尾

顺序是关键。每一步在下一步之前都更容易修正:在源文件中修正一个名字只需一次编辑,而发布后发现的同一错误则需要每种语言各编辑一次。

相关文章