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轉出字幕的人,如果是英文字幕,那花點小時間訓練它吧,如果是中文字幕,那….再想想吧。

在〈SubRip 轉出字幕的原理〉中有 6 則留言

  1. 有個大陸的軟體叫做 SubOCR,內建有簡繁的 OCR 程式,可以把電影字幕的中文圖案辨識成文字,可以試試看。之前的經驗是好像簡體比較正常不會有問題,我都找簡體字幕然後再用 word 同步把名詞翻譯成繁體中文,但是有些名詞或人名不一樣就沒辦法了

    回覆
  2. 各位大虾有没有人有DVD字幕存储格式的资料啊?小弟有一个问题是现在标准的DVD一般都有很多种语言的阿,那么肯定的是字幕文件要跟视频分开存放才行啊?那么又是怎样存储的呢?有知道的请发Email给小弟,谢谢!yznwan@sohu.com

    回覆

PipperL 發表迴響 取消回覆

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料