使用 Python 替影片自動產生字幕 srt 檔

前言

有時候我們要替影片上字幕是滿麻煩的事情,因為必須重複地聽才能夠抓出時間區段,但是如果透過工具先幫我們抓出 50% 字幕區間,然後在來做調整,這樣一定會比較準確,所以這邊做一下筆記該如何使用這個套件。

※ 注意這是透過 Google Translate 替我們抓出語音辨識的,所以可能翻譯出來會有點好笑(?),所以翻譯出來的結果主要也是與主講人口齒清晰度有關係。

使用工具

由於在 Window 上使用會稍微複雜一點,主要會使用到這幾個東西

流程操作

1.安裝 Python 2.7.12 (我已經安裝過了,所以就直接忽略吧)

Python

2.開啟命令字元視窗 (CMD) 輸入以下指令
我是習慣使用 PowerShell。

1
C:\Python27\Scripts\pip.exe install autosub

安裝過程會稍微有點久,所以輸入完之後可以泡一下茶…

Image

如果不想用上面這種方式也可以用另一種安裝指令,基本上大同小異

1
C:\Python27\Scripts\pip.exe install https://pypi.python.org/packages/35/7b/9d5361c0f7abfcc6d826a5279b1c4501f7616505629f6c54857587ec6e37/autosub-0.3.9.tar.gz

3.安裝完畢後,要輸入以下指令更改剛剛安裝的套件檔名(很重要)

CMD 作法:

1
Rename C:\Python27\Scripts\autosub autosub_app.py

CMD

Powershell 做法:

1
Rename-Item C:\Python27\Scripts\autosub.py autosub_app.py

Powershell

如果不確定是否已經更改成功,可以進去 C:\Python27\Scripts 找看看 autosub.py 是否已經更改成 autosub_app.py

4.將剛剛下載的 ffmpeg 解壓縮,然後找到裡面的 ffmpeg.exe 複製起來

(路徑: ffmpeg-4.1.3-win64-static\bin)

ffmpeg

接下來貼到 Python 目錄下

ffmpeg

調整 autosub 程式碼

接下來必須調整 autosub_app.py 內部程式碼否則無法正常運作。

將約 48 行 temp = tempfile.NamedTemporaryFile(suffix='.flac') 修改為 temp = tempfile.NamedTemporaryFile(suffix='.flac', delete=False)

autosub_app

最後還有一個雷點一定要調整,否則絕對無法編譯,要將 138 ~ 140 的程式碼註解掉

很重要

AI 自動替影片產生字幕

終於到最後一步驟,接下來試著在指令視窗下輸入以下指令

1
C:\Python27\python.exe C:\Python27\scripts\autosub_app.py --list-languages

python

這些代表著可辨識的語言及辨識後生成的語言字幕,這邊只需要記得 zh-TW 即可。

python

接下來只需要輸入以下指令就可以自動辨識及生成字幕啦~

1
C:\Python27\python.exe C:\Python27\scripts\autosub_app.py -S zh-TW -D zh-TW Video.mp4

指令說明:

1
C:\Python27\python.exe C:\Python27\scripts\autosub_app.py -S 辨識語言 -D 輸出語言 影片路徑

以我的影片路徑做範例的話,就像這樣

1
C:\Python27\python.exe C:\Python27\scripts\autosub_app.py -S zh-TW -D zh-TW C:\Users\Hsiangfeng\Downloads\Veido\test.mp4

編譯速度非常快,所以一下子就生成好哩

AI 自動生成字幕

參考文獻

影片自動產生字幕

Install AutoSub Step to Step in Windows with Translate subtitle

Liker 讚賞

這篇文章如果對你有幫助,你可以花 30 秒登入 LikeCoin 並點擊下方拍手按鈕(最多五下)免費支持與牡蠣鼓勵我。
或者你可以也可以請我「喝一杯咖啡(Donate)」。

Buy Me A Coffee Buy Me A Coffee

Google AD

撰寫一篇文章其實真的很花時間,如果你願意「關閉 Adblock (廣告阻擋器)」來支持我的話,我會非常感謝你 ヽ(・∀・)ノ