
字幕段是附有顯示開始及結束時間的一個文字區塊。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 字幕擷取指南,再驗證檔案。
轉換及驗證的完整方法
- 確認影片及語言:檢查影片網址及所選語言。保留原始 JSON 字幕段及來源網址。
- 要求輸出:要求輸出 JSON、SRT 及 VTT 格式。檢查是否有成功的資料列,以及字幕段是否非空。如果字幕擷取失敗,請使用連結中的擷取指南。不要憑純文字編造結束時間。
- 儲存檔案:將完整的 `srt` 欄位複製到 `lesson.srt`,或將 `vtt` 欄位複製到 `lesson.vtt`。使用支援 UTF-8 編碼的純文字編輯器。不要保留 JSON 引號、字面上的 `\n` 字元或 CSV 儲存格,也不要在檔名後附加 `.txt` 副檔名。
- 檢查語法:SRT 使用字幕段編號,並在毫秒前使用逗號。VTT 以 `WEBVTT` 開頭,接着是空白行,並在毫秒前使用句點。兩種格式都以空白行分隔字幕段,並在開始與結束時間之間使用 `-->`。確認結束時間晚於開始時間,並檢查字幕段的開始時間是否按先後排列,沒有倒退。時間重疊可能是正確的;請播放影片檢查,不要自動刪除重疊的字幕段。
- 檢查影片播放效果:在影片播放器中,將第一段、中間及最後一段字幕與影片對照。檢查重音符號、換行及過長的文字行。檔案即使通過格式檢查,畫面上的字幕時間或文字仍可能有誤。
- 修正時間偏移:如果每個字幕段都延遲相同的固定時間,請檢查本機影片副本是否刪除了片頭。只針對該副本,將開始及結束時間一併移動完全相同的時間差。如果時間誤差隨播放時間增加,固定的時間平移便無法解決問題。當時間偏差持續擴大時,應重新使用時間資訊正確的來源,而非套用未經測試的影格率轉換。
- 儲存最終檔案:儲存來源字幕段,並記錄任何經批准的時間變更。
虛構範例檔案
以下是一個簡單範例,包含 3 個以秒為單位的字幕段:
- 字幕段 1:`0.250` 至 `2.750` 秒 —「開啟設定。」
- 字幕段 2:`3.000` 至 `5.500` 秒 —「選擇 Français。」
- 字幕段 3:`6.000` 至 `8.125` 秒 —「儲存變更。」
完整 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 檔案
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 · 更新日期
返回頂端 ↑

