字幕条目卡片与视频时间轴对齐,旁边放着 2 张字幕文档。
保留字幕条目的时间信息,并通过播放测试保存的文件。

字幕条目是一个带有显示开始时间和结束时间的文本块。SRT(SubRip Text)在毫秒前使用逗号。VTT(WebVTT)以 `WEBVTT` 文件头开头,在毫秒前使用句点。UTF-8 是一种标准文本编码,可完整保留特殊字符。Actor 是采集网络数据的程序,Task 则是为 Actor 保存的一组输入设置。

要提取字幕,请使用 YouTube Transcript Scraper Actor。请求输出 JSON、SRT 和 VTT 格式。原始 JSON 输出包含以下具体的分段字段:`startSeconds`、`endSeconds`、`durationSeconds` 和 `text`。仅将原始字幕字符串保存为 UTF-8 文本文件。不要将整个数据集导出为 CSV,也不要保留含有 `\n` 字符的转义 JSON 字符串。失败的输入会显示在运行结果的 OUTPUT 中,而不会成为数据集中的行。针对 1 条字幕轨的测试运行保存了 61 个字幕条目,用于验证采集过程,但你仍需在自己的播放器中检查播放效果。

如果完全没有带时间信息的字幕,请先查看 YouTube 字幕提取指南,再验证文件。

转换与验证的完整方法

  1. 确认视频和语言:检查视频 URL 和所选语言。保留原始 JSON 字幕条目和来源 URL。
  2. 请求输出:请求 JSON、SRT 和 VTT 格式。检查是否有成功的结果行,以及分段是否非空。如果字幕获取失败,请使用链接中的采集指南。不要根据纯文本臆造结束时间。
  3. 保存文件:将完整的 `srt` 字段复制到 `lesson.srt`,或将 `vtt` 字段复制到 `lesson.vtt`。使用支持 UTF-8 编码的纯文本编辑器。不要保留 JSON 引号、字面形式的 `\n` 字符或 CSV 单元格,也不要在文件名末尾附加 `.txt` 扩展名。
  4. 检查语法:SRT 使用字幕条目编号,并在毫秒前使用逗号。VTT 以 `WEBVTT` 开头,后接一个空行,并在毫秒前使用句点。这 2 种格式都用空行分隔字幕条目,并在起止时间之间使用 `-->`。确认结束时间晚于开始时间,并检查各字幕条目的开始时间没有倒退。时间重叠可能是合理的;请在播放时检查,不要自动删除。
  5. 检查视频播放效果:在视频播放器中,对照检查开头、中间和结尾的字幕条目。检查重音符号、换行和过长的文本行。文件即使通过了格式检查,屏幕上仍可能出现时间不准或文本错误。
  6. 修正时间偏移:如果所有字幕条目都延迟了相同的固定时长,请检查本地视频副本是否删去了片头。仅针对这个特定副本,将开始时间和结束时间都按该准确偏移量调整。如果时间误差随播放进度不断增大,固定平移无法解决问题。当时间漂移不断增大时,请重新使用时间正确的字幕来源,不要应用未经测试的帧率转换。
  7. 保存最终文件:保存源字幕条目,并记录所有已获批准的时间修改。

虚构示例文件

下面是一个简单示例,包含 3 个以秒计时的字幕条目:

  • 字幕条目 1:`0.250` 至 `2.750` 秒——“打开设置。”
  • 字幕条目 2:`3.000` 至 `5.500` 秒——“选择 Français。”
  • 字幕条目 3:`6.000` 至 `8.125` 秒——“保存更改。”

完整的 SRT 文件

srt
1
00:00:00,250 --> 00:00:02,750
Open the settings.

2
00:00:03,000 --> 00:00:05,500
Choose Français.

3
00:00:06,000 --> 00:00:08,125
Save the change.
虚构示例文件

完整的 VTT 文件

vtt
WEBVTT

00:00:00.250 --> 00:00:02.750
Open the settings.

00:00:03.000 --> 00:00:05.500
Choose Français.

00:00:06.000 --> 00:00:08.125
Save the change.
虚构示例文件

请注意,SRT 在每个时间戳中都使用逗号分隔毫秒(`00:00:00,250`),而 VTT 使用句点(`00:00:00.250`)。

计算详解

将以小数表示的秒数换算为毫秒时,乘以 1,000。例如,`0.250` 秒换算为 `250` 毫秒,`8.125` 秒则表示为 `00:00:08.125`。

  • 各字幕条目的持续时间分别为 2.500 秒、2.500 秒和 2.125 秒。
  • 字幕实际显示的总时长为 7.125 秒(`2.500 + 2.500 + 2.125`)。
  • 字幕从开始到结束的总跨度为 7.875 秒(`8.125 - 0.250`),其中包含字幕条目之间的间隔。

这两项总时长都不能衡量文本准确性或阅读速度。

独立的时间偏移示例

假设另有一个独立的视频副本,删去了 1.000 秒的片头。该视频中某个字幕条目的起止时间原为 `10.250–12.750` 秒,减去 1.000 秒后变为 `9.250–11.750` 秒(`10.250 - 1 = 9.250` 和 `12.750 - 1 = 11.750`)。

切勿将这次时间平移应用于前面包含三个字幕条目的示例文件。将首个字幕条目的开始时间(`0.250`)减去 1.000 秒,会得到无效的负开始时间(`-0.750`)。保持原始文件不变,并在使用前通过视频播放器检查经过时间平移的文件。

来源和延伸阅读

作者 Chronometrica · 更新日期

返回顶部 ↑