SubRip 轉出字幕的原理

之前寫過一篇小小的Note,關於如何快速地使用 SubRip 把 DVD 的字幕轉出來。不過由於沒有說明清楚,導致有不少的迴響在索取文中的"TNG-matrix_02.sum",彷彿有了該檔案就可以直接把字幕轉出來。

其實,不是這樣的。

SubRip的功用,主要是將DVD片中的字幕轉出來。DVD中的字幕,是以圖形的格式儲存著,而常見的字幕檔如 .srt ,則是文字格式。兩者之間的轉換,則可以使用 SubRip來達成。

SubRip是怎麼做到的呢? 它使用 OCR 的技術,將每一個字幕上的「圖案」轉換成「文字」。字幕上出現一個 “A",其實是一個像A的圖案,SubRip 可以依據字與字的邊界把這個A給框出來,但是軟體自己不知道這個圖案代表什麼,需要我們告訴軟體,這個字是英文字母"A"。所以,軟體OCR(辨識)需要學習。

從頭開始時,SubRip 開始撥放字幕,每當它碰到不懂的「圖案」時,它就會停下來問我們:「這是什麼字?」我們必需告訴 SubRip,A的圖案是字母A,B的圖案是字母B,SubRip會記住你教過它的字母,所以基本上以英文來說你要教他 26(英文字母) * 2 (大小寫) + 10(數字) + 32 (常見其他符號/標點) = 94,也就是大約100次,它才能順利地把一份字幕轉出來。

當然,如果每一片就要學一次,就太沒有效率了。所以 SubRip 可以把辨識所學到的資訊給儲存起來,稱之為 OCR matrix (也就是那文中的 TNG-matrix_02.sum),下次如果要辨識同一片,只要把這個 OCR matrix 讀進來,就可以繼續做轉出的動作。

問題來了。

不同的DVD,其字幕圖案的字型有所不同,平平是一個A,長的不一樣,就必須使用不同的 OCR matrix。我那個 TNG-matrix_02.sum,只能辨識某系列DVD的字幕,因為該DVD的字幕字型較特殊,因此自行製作。其他的DVD字幕,由於使用了不一樣的字型,其實是不適用的。如果確定字幕字型相同,那當然可以直接拿來用,不過由於訓練 OCR 並不會花去很久的時間(上面有計算),因此自己訓練是較好的方式。

那中文呢?

中文的字數不若英文只有26種,這茫茫字海,若要一一訓練,恐得花上許許多多時間,我沒有中文的 OCR matrix,也不覺得那是一個時間較短的方式,把英文字幕轉出來,再翻成中文,可能是一個更有效率的方式。不過如果常常有轉出中文字幕的需求,由於中文字型的變化較少,應該可以嘗試建立屬於自己的OCR matrix,但初期要花許多時間就是了。

所以,想要使用 SubRip轉出字幕的人,如果是英文字幕,那花點小時間訓練它吧,如果是中文字幕,那….再想想吧。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

%d 位部落客按了讚: