利用Google Translate API翻譯 SRT 字幕

這篇文章算的是影片自動產生字幕,並使用字幕軟體Aegisub修改編輯 (1)使用 Google Cloud Translate API的結合。利用 Autosub 產生字幕獲得不少迴響和瀏覽,一部份是使用上的問題。另一部份是,有些使用者不只是要為中文影片上繁體字幕而已,有的還希望為英文上中文字幕、俄羅斯文、日文…想不到需求還蠻大的。

網路上利用autosub類似的文章也不少,但大家都碰到一個問題。沒辦法在不同語系間上字幕,例如英文影片就不能幫它上中文字幕。autosub 本身其實有個 -K 的參數可以指定要使用的 Google API 金鑰。但測試的結果是程式會 crash…這也是沒辦法的事,免費的比較少維護。

不同語系上字幕怎麼做的

前兩天也是花了一些時間研究一下這個翻譯的問題,發現似乎它也是先用 Google 的語音辨識成同語系,再呼叫 Google Translate API 來做翻譯。說到底也不是特別難,當然可以整合進去就更方便了。另外一個收獲是發現autosub是怎麼斷句的,有看到一個關鍵的 function 叫做 Energyxxx(),估計是判斷哪時沒講話或比較小聲,就在些時候做斷句。

上不同語系字幕替代方案

如果真的非得為影片上不同語系的字幕,這邊建議的做法還是先用  autosub 跑出同語系的結果 (ex. 英–>英, 繁中–>繁中)。然後再用 Google Translate API 來做翻譯,這樣其實就是把 .srt 檔貼到 Google 翻譯的結果。只是免費的 Google 翻譯,沒辦法一次翻太多行。

下面就是我自己寫的利用 Google Translate API 翻譯 .srt 檔的 python 程式,這個程式會吃一個參數,也就是要翻譯的 .srt 檔案。翻譯完會產生同檔名再加上 “.cht” 的字幕檔。從程式中可以看到 sourcetarget 變數,就是設成要翻譯的語系,使用者可以根據自己的需求來改。

另外,最重要的是你要申請自己的 Google Translate API 金鑰才能翻譯。金鑰的申請流程可以參考 使用 Google Cloud Translate API 這篇文章,在執行python程式前,也記得把 CREDENTIAL 的所在位置 export 出來,才可以正確執行。

export GOOGLE_APPLICATION_CREDENTIALS=$HOME/translate.json

 

 

Leave a Reply