2019/01/22

用 Notepad++ 批次轉換字幕 VTT 格式到 SRT

最近 Netflix 把原本的圖片式字幕,突然全部換成了 VTT 格式,這對喜歡收藏字幕的人來說,真是一大福音啊。如果直接把 VTT 副檔名改成 SRT,有部分播放器可以讀到字幕,因為 VTT 格式非常接近 SRT,但是也有少部分會出現錯誤,最好的方式還是轉換一下。因為平常很習慣使用 Notepad++ 文字編輯工具來校對字幕,所以簡單寫一下,如何批次把 VTT 轉成 SRT。

字幕下載其實很快,但是這篇只說明格式轉換,並不教你如何下載字幕哦。打開 Netflix 的字幕壓縮檔,把含有 zh-Hant 的中文字幕檔案放進一個資料夾,我習慣先用 Bulk Rename Tool 把全部副檔名 VTT 改成 SRT。用 Notepad++ 打開 SRT 檔案,可以看到非常類似 SRT 的格式,只是多了一個開頭文件,而且字幕多了一些 tag。

黃色區域就是要去掉的地方,首先去掉最難的開頭,打開 Notepad++ 的搜尋取代功能。我直接用 Find in Files 批次功能,檔案目錄指向字幕檔,Filters: *.srt 表示只處理 SRT 檔案。如果你沒有把握,建議先在 Replace tab 裡面測試處理單一檔案就好。
Search Mode 部分選 Regular expression,才可以用 Regex 指令。因為要搜尋的 VTT 開頭是跨了十幾行,所以 matches newline 要打勾,不然只會搜尋單行。
尋找:WEBVTT(.*?)\n\n\n
取代:(什麼也不打)
注意游標要在文字檔的最開頭,免得從中間開始搜尋。按下 Replace in Files,整批字幕的 VTT 開頭就去掉了。剛剛下的搜尋指令,意思是跨行搜尋 WEBVTT 開頭到連續出現三個換行為止。

接下來刪掉 [空格]position: 直到結尾。
Search Mode 部分一樣選 Regular expression,但是不用勾選 matches newline,因為處理的搜尋是單行。(雖然勾選是不影響結果啦)
尋找:[空格]position:(.*?)$
取代:(什麼也不打)
按下 Replace in Files,整批字幕的 position: 到結尾($ 表示 end of line)就去掉了。

剩下的部分最簡單,Search Mode 部分選回 Normal,然後做簡單的搜尋取代即可。以前 OCR 麻煩的要死,現在一分鐘搞定 VTT 字幕。

小技巧:如果你常常需要轉 VTT 的話,Notepad++ 有 Macro 的功能,可以把上面的動作錄起來,設定熱鍵,下次一鍵就可以直接轉檔啦!

沒有留言: