字幕段卡片對齊影片時間軸,旁邊有 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 中,而非資料集的資料列。一項針對單一字幕軌的測試執行儲存了 61 個字幕段,以驗證擷取過程,但你仍須在自己的播放器中檢查播放效果。

如果完全沒有附有時間資訊的字幕,請先參閱 YouTube 字幕擷取指南,再驗證檔案。

轉換及驗證的完整方法

  1. 確認影片及語言:檢查影片網址及所選語言。保留原始 JSON 字幕段及來源網址。
  2. 要求輸出:要求輸出 JSON、SRT 及 VTT 格式。檢查是否有成功的資料列,以及字幕段是否非空。如果字幕擷取失敗,請使用連結中的擷取指南。不要憑純文字編造結束時間。
  3. 儲存檔案:將完整的 `srt` 欄位複製到 `lesson.srt`,或將 `vtt` 欄位複製到 `lesson.vtt`。使用支援 UTF-8 編碼的純文字編輯器。不要保留 JSON 引號、字面上的 `\n` 字元或 CSV 儲存格,也不要在檔名後附加 `.txt` 副檔名。
  4. 檢查語法:SRT 使用字幕段編號,並在毫秒前使用逗號。VTT 以 `WEBVTT` 開頭,接着是空白行,並在毫秒前使用句點。兩種格式都以空白行分隔字幕段,並在開始與結束時間之間使用 `-->`。確認結束時間晚於開始時間,並檢查字幕段的開始時間是否按先後排列,沒有倒退。時間重疊可能是正確的;請播放影片檢查,不要自動刪除重疊的字幕段。
  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 · 更新日期

返回頂端 ↑