工作緣故,最近需要對公司一個產品的視頻宣傳片的字幕進行翻譯。任務需求很簡單,就是中文到英文的轉換,視頻也不是很長,十分鐘都不到。
我沒有在字幕組工作過,之前也沒有太多這方面的經驗,有的只是零星閱讀過相關的教程或者網貼,但是早已忘到九霄雲外,甚至在拿到任務時候,連應該去下載和使用哪個軟體也沒有概念。
直覺和熱衷各種軟體的經驗告訴自己,這大概只是使用軟體的問題而已。但是很快,我發現我錯了。印象裡YouTube對於字幕的處理功能和自己困難重重的實操形成了鮮明的對比,我高估了自己的智商。
下面我會講到在這次字幕處理的過程中遇到的各種問題,這些問題可能是藉助搜尋引擎並沒有那麼容易找到解決辦法,或者網絡上給出了解決辦法,但實際的操作卻是另一種回事的情況。我不會像大多數網貼一樣去不厭其煩地重複各種軟體操作的步驟,畢竟那些網帖已經講得夠多夠清楚了。
聲明一下,我只是字幕處理領域的初學者,所以接下來的寫作難免會有紕漏,還望各位多多批評指正。
此次任務使用或者涉及的軟體(附下載連結):
gMKVExtractGUI: https://sourceforge.net/projects/gmkvextractgui/
My MP4Box GUI: https://www.videohelp.com/software/My-MP4Box-GUI
Pot Player:https://potplayer.daum.net/
LAV Filter:https://www.videohelp.com/software/LAV-Filters
Codec Tweak Tool:https://www.videohelp.com/software/Codec-Tweak-Tool
Format Factory:http://www.pcgeshi.com/
esrXP: https://www.videohelp.com/software/esrXP
Srt Sub Master: https://mjpclab.net/submaster.html
Abbyy FineReader:https://pan.baidu.com/s/1RXzDBbD_vrhkw8tHLfbvDA
字幕提取的原理(硬字幕):
使用esrXP跑視頻抓字幕OCR
使用Abbyy FineReader等OCR軟體提取文字
使用esrXP或Srt Sub Master對字幕進行校對並導出為字幕文件
1. 硬字幕與軟字幕
我拿到的視頻雖然是高清的(1920*1080),但卻是硬字幕。
什麼是硬字幕呢?就是字幕像是水印一樣嵌在了視頻裡,使用普通的軟體是無法直接提取字幕文件的。和硬字幕對應的概念是軟字幕,即視頻文件和字幕文件是分離的,可以利用某些專門的軟體直接提取。比如Pot Player,比如gMKVExtractGUI(mkv格式視頻),再比如My MP4Box GUI(mp4格式視頻)等等。
(Pot Player提取軟字幕,圖片來源於網絡)
(gMKVExtractGUI提取軟字幕,圖片來源於網絡)
(My MP4Box GUI提取軟字幕,圖片來源於網絡)
2. esrXP
對於硬字幕的提取目前普遍使用的軟體是esrXP,一個非常古老卻又十分有效的工具。有效的同時,調教的過程中又幾乎必然會出現種種屢試不爽的「人為bug」,我一度有想砸電腦的衝動。
問題1:視頻無法載入,即過濾器頁面沒有視頻預覽或者主頁面無法運行「開始」。
解決辦法:1.安裝LAV Filter解碼器;2.安裝並使用Codec Tweak Tool工具設置系統默認解碼器(將視頻解碼託管到LAV Filter)3.文件名有特殊符號導致無法加載(將文件名改成純英文或數字即可,網友貢獻提示)
那麼,執行了上面的步驟後,是否就一定能保證esrXP能夠預覽和開始處理視頻了呢?答案是否定的。視頻解碼是一方面,另一方面,esrXP並不能夠保證對於大多數視頻格式的支持(相反的,我覺得這種兼容性比較差)。自己測試了對於mkv/mpg/avi等格式在LAV Filter託管了系統解碼後是沒有問題的,但礙於時間有限,其他的一些格式並沒有進行測試。不過即使是格式不被支持的情況下,使用Format Factory進行格式的轉換也是一種解決方式,目前網絡上流行的格式不外乎mp4/avi/3gp/rmvb/wmv/mkv/mpg/vob/mov/flv等等,轉換時候可能需要注意一下目標視頻格式的大小(如果一個較長的視頻,採用了體積較大的目標格式,而電腦配置又很一般的話,那將是一種不可描述的災難),以及屏幕的大小設置(大的屏幕輸出對於後期清晰地OCR更加方便,但並非越大越大)。
視頻格式與大小的分類:
最小:mkv/flv/rmvb/wmv(流媒體)
其次:mp4/3gp(手機格式)
再次: mpg/vcd/dvd/mov
最大:avi(無壓縮)
問題2:視頻在可以預覽的情況下,esrXP也可以正常運行OCR截屏,但是截出來的字幕全是糊的。
解決辦法:這是我在此次視頻處理任務中遇到的最大問題之一,甚至在問了幾個朋友後也沒有得到答案。網絡上給出了各種各樣的參數,但也都是針對某個具體視頻的方案,並不是一個普適性的解決辦法。事實上,對於不同的視頻,也沒有一個普適的參數設置。
(進階設置,圖片來源於網絡)
過濾器的進階設置,這裡像是一個高級的複合型濾鏡,參數設置得好的話,可以減少後期非常多的校對工作。我的建議是「啟動過濾器」進行實時參數調整的效果預覽。我只使用了邊線和第一階段的「最高光度」2個參數來調整,最後拿到了滿意的輸出效果,這也得益於拿到的任務是一個黑條白字的視頻,相對於那種字幕浮於視頻上面的複雜情況要容易處理的多。
esrXP的過濾原理主要是通過顏色的判斷來完成的,且過濾器使用了「HSL色彩模型」,HSL分別對應:
H(hue)=色相指的是人眼所能感知的顏色範圍,這些顏色分布在一個平面的色相環上,取值範圍是0°到360°的圓心角,每個角度可以代表一種顏色。
S(saturation)=飽和度指的是色彩的飽和度,它用0%至100%的值描述了相同色相、明度下色彩純度的變化。數值越大,顏色中的灰色越少,顏色越鮮豔,呈現一種從理性(灰度)到感性(純色)的變化。
L(lightness)=亮度指的是色彩的亮度,作用是控制色彩的明暗變化。它同樣使用了0%至100%的取值範圍。數值越小,色彩越暗,越接近於黑色;數值越大,色彩越亮,越接近於白色。
了解了HSL色彩模型是什麼之後,除RGB差距外,每個過濾選項就可以和HSL對應起來了:
色度差距(H) = 所選顏色的色相差距大於設定值,則會被過濾
RGB差距 = 所選顏色的 RGB差距大於設定值,則會被過濾
最低光度(L) = 亮度小於設定值,則會被過濾
最高光度(L) = 亮度大於設定值,則會被過濾
最低色澤(S) = 飽和度小於設定值,則會被過濾
最高色澤(S) = 飽和度大於設定值,則會被過濾
關於HSL和RGB的背景知識(供參考學習):
HSL:https://en.wikipedia.org/wiki/HSL_and_HSV;RGB:https://en.wikipedia.org/wiki/RGB_color_model
(後處理,圖片來源於網絡)
關於過濾器中的「後處理」
「後處理」同樣會對抓取的字幕產生較大的影響,這裡的參數設置也需要考慮到「進階設置」中設定的效果來進行選擇和調整。比如我已經通過「進階設置」拿到了比較好的預覽效果,那麼這裡的設置就不用再做太多的工作。但是如果「進階設置」拿到的效果較差,比如說字幕在設置參數後仍然有很多的雜點,這個時候就需要通過移除像素或是區塊來優化了。
(字幕管理,圖片來源於網絡)
關於「字幕管理」中的「高質量」
在抓到所有的字幕幀後,「高質量」對於輸出清晰的字幕作用同樣非常明顯,這將直接影響到OCR的識別率。點選「高質量」可以感受前後的對比效果,這個效果有些像是列印和低質量的複印甚至手寫的差別。對於出現的多餘相同字幕可以進行合併,多餘的雜色和空白字幕行則可以執行去除和刪除。
這些工作完成後,可以將字幕進行導出。 esrXP支持導出的文件有:
.esr(保存當前抓取的圖像信息以及時間軸)
.ssa(保存ssa字幕文件,且只含有時間軸)
.srt(保存srt字幕文件,且只含有時間軸)
.idx,.sub(保存圖形字幕文件,可直接作為字幕觀看)
.bmp(位圖,用來OCR成文本)
我的處理方式是將字幕文件導出為OCR圖片,再使用Abbyy FineReader(當然你可以使用其他的OCR軟體)進行文字的提取。提取的文字複製粘貼回esrXP或者直接放進Srt Sub Master進行包括時間軸的校對。
補充一點,導出的過程中需要注意的是,最好在導出之前保存一份.esr工程文件。esrXP作為一個古老的軟體,對於大視頻的處理,難免有崩潰的可能。一旦崩潰,又得從頭再跑一遍,關鍵很有可能你已經不記得之前設置的參數了。
在Srt Sub Master中則可以直接對著視頻進行字幕的調整/翻譯/時間軸校對。完成後直接導出字幕文件即可。
(Srt Sub Master,圖片來源於網絡)
到這裡,硬字幕的提取或者說英文/雙語字幕的製作已經完成。至於如何將製作好的字幕完美地封裝到之前的視頻裡進行字幕的替換,對於一個沒有什麼視頻編輯經驗的翻譯來講,我好像遇到了一個更大的問題。
不過沒有關係,就當這是一個契機,迫使自己去學習翻譯領域之外的相關知識,學完後我會繼續和各位分享,就像這次學習字幕的提取一樣。