影片字幕的編輯,一直是一件很惱人又花時間的事,影片來來回回聽取、打字幕,枯燥又無力。配字幕的時間,往往都超過影片本身了。當然,以上描述的慘況,是之前不專業的時候,從現在開始不一樣了。
字幕自動產生方案們
一開始也研究過幾個網路上找的到的方案,但感覺都不太滿意。
Youtube 自動產生字幕:沒這功能喔…
雖然也有人說 Youtube 可以自己產生5分鐘內的字幕,但另一個問題是 Youtube 現在無法強制顯示字幕了。辛苦編輯的字幕卻要使用者自己啟動才看的到,這顯然是不可以的。所以需要將字幕嵌入影片中才行。
利用大陸的「網易見外」網站:電腦達人電腦王阿達有一篇就是教學如何使用該服務來自動產生字幕的,但我不想要註冊和用大陸的網站,所以也沒去試了。而且它是線上服務,要把整個影片傳上去,感覺這方式鳥鳥的。
使用 IBM 語音辨識:這篇文章有介紹如何用 IBM 的 Cloud Service 做字幕產生,我也認真的註冊了 IBM 帳號…可惜 IBM Cloud Service 認証方式變了,和程式不合,也只好放棄。
可用的方案 – autosub
autosub 是一支 Python 的程式,它利用了 ffmpeg 與 Google Translate 來做字幕的翻譯。這是一個確實可用的方法,我有把影片的字幕自動產生出來了。有需要研究程式的人可以直接在 github 上看到他的原始碼,一般用戶則直接使用 Python 套件管理 pip 就可以直接安裝了。
Windows autosub 安裝
Windows 上的 autosub 比較麻煩,無法直接使用,需要修改一下程式。可以參考這一篇。另外,如果你想要把它打包成單一執行檔的話,會出現 “mutliprocessing-fork” 的 error。根據這一篇,的第二個回應。你需要在 autosub.py 的一開始(if __name__ == ‘__main__’: 後第一行) 就呼叫 multiprocessing.freeze_support()。
所以,如同以往,我打包了一版 Winows 可以直接執行的單一執行檔 (64bit 版本),給不熟 Linux 的朋友使用。直接將檔案,拖拉至 “拖拉檔案進來翻譯.bat” 就可以翻譯出字幕了,字幕檔會和影片檔放在同一個目錄,檔名相同,副檔名變成 .srt。
範例檔
自己錄了一小段影片,來做自動字幕的測試檔。這裡下載。方便大家可以快速測試
展示影片
Linux autosub 安裝
本文是使用 Ubuntu 16.04 64bit 測試。並安裝下列套件 Python 2.7 (預設已安裝), ffmpeg, python-pip 與 Python package autosub。
1 2 3 4 |
sudo apt-get -y install python2.7 sudo apt-get -y install ffmpeg sudo apt-get -y install python-pip pip install autosub |
autusub 產生字幕
本文是要自動產生繁體中文字幕,autosub 還支援很多其它語言,可以使用 –list-languages 來將它們列出。
1 |
autosub --list-language |
最後就可以開始產生字幕了。以下列命令產生 。據網友反應,若語音與字幕使用不同語言,會無法成功,也許是要付費的才可以。
1 |
autosub -S zh-TW -D zh-TW video.mkv |
下面範例是一個200MB的影片,片長28分鐘。是之前 Google 小姐講故事 – 自動製做三隻小豬故事影片 的影片,最後產生字幕的畫面如下面的截圖。轉檔花了51秒,翻譯花了3分35秒,速度還算挺快的。
最後會產生一個 video.srt 的字幕檔,我們就可以拿這個畫面來修改後使用。下一篇我們將介紹使用 Aegisub免費配字幕軟體 來修正字幕檔案。最終當然是要將字幕嵌入影片中,產生最終的影片。不過這部份軟體 (威力導演、ffmpeg、avidemux) 很多,就不做介紹了。
效果
透過 Google Translate 自動翻譯出的字幕,效果跟場景其實很有關係。比較適合演講、直播、自拍類的影片,比較不適合生活上的影片。聲音的清晰度很重要,以上面的範例來說,其實效果還不錯。但如果是翻譯親子影片,效果會讓人翻桌,翻不出幾個字來
另外,如果在說話時能注意自己說話的語調、清晰度,那正確率會更高,也減少了後面更正所需的後製時間了。
參考
影片自動產生字幕,並使用字幕軟體Aegisub修改編輯 (2)
我最近訂閱一個俄語版YOUTUBER的頻道,可以請大大再做一個俄語轉英語的PYTHON AutoSub 執行檔 ??
你好,
可以把”拖拉檔案進來翻譯.bat”檔案裡的有一行 autosub_app.exe,改成 autosub_app.exe -S ru -D en %1。就可以把俄語轉英語了~
謝謝指導
可是那個執行檔點進去 不是只能拖拉視頻 然後產生SRT檔 .. 怎麼做修改..??
檔案上面按右鍵有個編輯,就可使用記事本修改。
你好
用記事本修改後
把視頻ˊ托拉進去 顯示不是外部或內部命令 .可執行程式或批次檔..
結果這次執行檔完全無法運作 也沒有導出SRT
??????
你好,程式應該是可以執行,你可以再檢查一下是否有缺少空白,或檔名打錯。但是,我有試了一段俄語轉英語,最後結果會失敗。錯誤訊息是俄語需要另外的 API Key,可能不是這種免費的 Google Translate API 可以使用的,這方面如果你有需求,可能就要請你自己試試看了。
謝謝指導
真的無法執行 , 我打算用powerpoint的speech to text , 利用 microsoft翻譯出文字
再利用這個執行檔給出的字幕時間軸 做出俄翻英SRT
有點麻煩…祝你順利了~~~
程式可以用,很方便,口條清楚、控制好斷句節奏的話,這個應該無敵了,謝謝!
只是我測試的時候沒注意產生的 srt 路徑名稱規則,結果把我原本的字幕檔案蓋掉了 QQ (還好影片已經上傳)
對於常製做影片的人,稍微練習一下,應該都有不錯的效果~
嘗試之後發現只能同種語言轉換,若要翻譯可以嘗試以下網址:
https://github.com/agermanidis/autosub/issues/31
autosub 確實支援數種語言,這邊為了簡化文章/程式,只舉例繁體中文。我想這也是各位youtuber比較常用到的語言才是。
你好~想請問英文影片想直接讀出英文字幕
不要翻譯的話該怎麼做?
修改 “拖拉檔案進來翻譯.bat”,將 【autosub_app.exe -S zh-TW -D zh-TW %1】 改成【autosub_app.exe -S en -D en %1】試試。這就是把英文語音,翻成英文字幕。
你好!
錯誤訊息是需要另外的 API Key,我已經申請好一組 api key!
如何使用?
程式如何寫?
sorry, 其它語言的轉換,若需要另外的key,這方面我沒有試過~~
大大您好,我想將英文的影片翻譯成中文
將 【autosub_app.exe -S zh-TW -D zh-TW %1】 改成
【autosub_app.exe -S en -D zh-TW %1】
會出現下面的錯誤提示,請問大大該如何解決呢?
subtitle translation requires specified google translate api key
感謝大大的製作!不過生成出來的字幕,似乎是粵語口語而不是國語,但autosub_app.exe -S zh-TW -D zh-TW %1都沒有改過,請問該怎麽做才能輸出國語字幕?感恩!
有幾個人有反應此問題,我懷疑是會不會是 Google 根據您的位置來決定要生成何種字幕。
我下載下來的Autosub的檔案裏沒有 “拖拉檔案進來翻譯”的東西 只有”autosub_app”的檔案 怎麼辦?
請先用 7-zip 解壓縮
我解壓縮後還是沒有 ._.
我剛剛又下載了一次,沒有發現問題。我建議你可以試試不同的瀏覽器,或用別台電腦試試.
您好 我下載了 也按照步驟執行了
視窗跳出Bat 執行畫面
一切都跟您影片中的一樣
也沒有任何錯誤訊息 甚至CMD也跟我說產生在檔案旁了
但我切到資料夾視窗一個東西也沒生成…?
*防毒軟體也關閉過,依然沒有生成QQ
如果訊息都一樣,還真的想不到原因,可以在視窗上按個F5重新整理看看,有時檔案不會立刻出現。
不好意思,請問要怎麼打開 “拖拉檔案進來翻譯.bat”進行其他語言翻譯的更改的
用記事本打開該檔,或在檔案上面按右鍵選擇編輯。
試了幾種方式後,不知道是認知上的問題還是用詞上的誤會,
目前只成功到自動產生”字幕”(試過英文en,日文ja),並無法自動翻釋,
也就是….【autosub_app.exe -S zh-TW -D zh-TW %1】裡的2個 zh-TW 要一起都改成跟影片來源一樣的語言,就可以成功生成字幕檔.
再來用樓上”賴”提供的連結,下載”Subtitle Edit”,把生成的字幕檔翻釋成你想要的語言…..搞定
的確我沒試過繁中以外的檔案,只是想說指令有應該是可以用,謝謝您的回饋。
客氣了….要感謝的是你那麼用心寫了這麼好用的免安裝自動執行檔,造福大家
^^
PS:新發現….如果是英文字幕的話,用PotPlayer播放器播放的話,
可以按”右鍵”>>>字幕>>>即時字幕翻譯>>>選擇1.僅用於英語 2.Google翻譯……
它就可以自動將字幕翻譯成你要的語言….
別進入”即時字幕翻譯設定”去動任何東西……我就是不知道動了什麼,現在變成無法自動翻譯了…..有人知道的話,也請救救我….><
请问可以添加一个批量导入的功能吗
建議是不要大量或商業使用,Google 偵測到此等行為,可能會停用此免費服務~~~
請問改成日文的該如何改
這樣autosub_app.exe -S ja-JP -D ja-JP %1
還是autosub_app.exe -S JP -D JP %1
還是說兩種都錯誤
一直都搞不定
原來是改成這樣
autosub_app.exe -S ja -D ja %1
沒事了
很感謝提供這個程式
請問32位元的有沒有什麼方法可以使用?謝謝。
64 位元系統已經很普遍了,建議可跟朋友借來試試,再決定後需是否要重新安裝 64 位元的。
請問這個還能使用嗎?最近拖檔案進去產生字幕都顯示C:\Users\Flora\Desktop\autosub_app>autosub_app.exe -S zh-TW -D zh-TW
Error: You need to specify a source path.
@@
剛試了沒問題喔~ 再請您確認一下,看是否是檔名路徑上有空格,這樣可能會有問題。
請問可以拿掉時間碼只要單純文本的方法嗎?
可以使用 Word 的取代功能第一次把 < [0-9]*^13 取代成空的,第二次把 ^13^13 取代成 ^13,這樣就可以了,記得要開啟萬用字元的模式
您好、看了您的介紹
我在日本執行的結果字幕輸出都是簡體中文
爬文有看了設定確定是zh-TW
所以地點會影響輸出結果是有可能的?
我也是根據網友回饋猜測的,如果有碰到類似問題可以考慮這種可能性。
我在澳洲執行結果也是簡體中文,明知沒支援硬試了zh_Hant_TW,果然沒用。
後來VPN回台灣再執行,就又是正體中文了。
確認了IP地點會影響執行結果,Google系列產品老是這樣,囧。
在WINDOWS中,英文教學視頻字幕未能轉化成功,如何修復?
Converting speech regions to FLAC files: 100% |#################| Time: 0:00:56
Traceback (most recent call last):% |### | ETA: 0:03:11
File “autosub_app.py”, line 302, in
File “autosub_app.py”, line 249, in main
File “multiprocessing\pool.py”, line 673, in next
requests.exceptions.ChunkedEncodingError: (‘Connection broken: IncompleteRead(17 bytes read)’, IncompleteRead(17 bytes read))
[22024] Failed to execute script autosub_app
請先試試看文章中的影片測試檔可否成功轉換中文,如果可以的話,可能就是英文有地區的限制。可能的話,用英語國家的ip試試看,也許可突破限制。
我在本地測試發現GOOGLE TRANSLATE API已經無法調用,但我已經申請了,請問在哪個文件更改和替換?
autosub 有個指定 API 檔案的參數 (-K),你可以試試看。不過我是沒使用過就是了,剛也順便試一下,繁體中文在台灣目前還可以用.
-K API_KEY, –api-key API_KEY
The Google Translate API key to be used. (Required for
subtitle translation)
為何會跑出繁體中文字幕的亂碼 ?
對不起 想請教一個處理好幾天都弄不好的問題 用您的示範影片 帶到 batch檔後 會產生正確的繁體中文字幕 可是把我自己錄製的影片 帶入batch檔後 卻跑出亂碼出來 不知道原因出在哪裡 敬請協助 非常感謝
謝謝大大 我已經解決了 原來是影音播放軟體的因素 原先用windows 10的播放軟體 您的sample video可跑出正常的繁體中文 但是我錄製的影片就會跑出亂碼 後來改用VLC 與 威力導演 來播放 繁體中文字幕就正常了 不會變亂碼了 非常感謝堤供 auto subtitle的windows batch file, 真的幫助我很大 非常感恩 ! 謝謝在謝謝 !
解決就好,雖然聽起來蠻奇怪的,直覺上可能是BIG5與UTF8編碼的問題。後續的朋友有問題的話,也可以參考您的經驗。
請問有沒有mac可用的版本
沒有喔~~ 因為是特地為 Windows 打包的,如果你可以用 Python 環境,從原始碼執行也可以
您好,我的電腦是win 10,Python 3.7
照影片教學直接點擊文章連結下載、拖曳影片執行後,顯示
此應用程式無法在您的電腦上執行
想請教作者有無解決方案?
這個程式是給64位元 的 Windows 執行的,如果是32位元的就會不能用。你可以試試在其它64位元的Windows執行看看。另外,程式內已自帶 Python 環境,跟本機的 python 無關。
請問如果是香港廣東話, 可以轉換到嗎?
可以用這個命令看支援哪些語言【autosub_app.exe –list-languages】,看來是沒有支援廣東話
自己沒試過但應該是可用的,把 zh-TW 改成 yue-Hant-HK,粵語漢字繁體香港。
您好,有確認過是64位元作業系統><
这个软体需要翻墙吗 ? 我拖进去 进度太慢了. 经常识别不出来…..不知道是什么原因
需連到Google API, 不確定在大陸能不能用
Hi 蔡先生 您好
我在您的網誌上看到了您分享的”影片自動產生字幕”一文
(https://moon-half.info/p/2993)
真的非常高興您分享了這麼實用的方式給大家,但是小弟使用window介面,也依照您分享的連結依序解決安裝問題
但是無奈嘗試了幾天都無法使用,在這邊只能向您求助
是否可以請蔡先生協助打包一個可以直接執行的單一執行檔呢? (64bit 版本)
我需要翻譯英文影片使用(您製作的為中文,我有嘗試是無法翻譯英文影片的)
主要是因為家父年老耳朵已經重聽,之前的英文影片也都無字幕(家父是看英文字幕的)
如果需要費用也請您報價喔
再麻煩您協助了,小弟拜謝
我剛試過英翻英是可以的,跨語系翻譯才會有問題。跨語系的問題,您可以參考這篇文章 https://moon-half.info/p/3790。要英翻英的話,把 .bat 檔裡的內容改成 en 就好了,看起來會像這樣。
set filename=%~nx1
cd /d %0\..
cd autosub_app
autosub_app.exe -S en -D en %1
cd ..
pause
大大你好
不知道有無另一種方式提取字幕?
就是一個影片已經內嵌字幕,那如果利用OCR去自動辨識產生SRT等外掛字幕?
https://www.cnblogs.com/Hard/p/netcore_winfrom_audiotranscript_videoOCR_word.html
這是我目前看過最容易上手的軟體,上面文章大大可以參考
只可惜軟體只有1小時試用,不夠使用,不知道大大你是否也能做看看?謝謝
你好,你所提的應該算是不同的需求。我這篇文章,是幫助自己錄製影片時,方便做字幕。由於我沒有你所提到的這種需求,可能無法幫上忙.
想請問一下,如果沒有自動生成字幕檔該怎麼辦?
對不起 我找到了 這個文章真的很有幫助 十分感謝!!!!!!!
我之前用pyTranscriber一直發生錯誤自動關閉,要在Win10使用autosub又一堆毛。弄好WSL要裝ubuntu前發現了這裡,省了我好多時間,非常感謝版主打包好這個版本。
很高興對你有用~~~
謝謝作者提供程式,原本使用pyTranscriber,今天使用一直錯誤閃退,後來很幸運搜尋找到這篇,可以順利執行,使用上也更方便
很高興有幫到忙!
您好! 我在使用時想要英文發音轉出英文字幕,但是執行過程中會出現下面的錯誤訊息,請問作者知道這是甚麼問題嗎?
C:\Users\suwei\Desktop\autosub_app\autosub_app>autosub_app.exe -S en -D en C:\Users\suwei\Desktop\test.mp4
Output file #0 does not contain any stream
Traceback (most recent call last):
File “autosub_app.py”, line 302, in
File “autosub_app.py”, line 227, in main
File “autosub_app.py”, line 139, in extract_audio
File “subprocess.py”, line 223, in check_output
subprocess.CalledProcessError: Command ‘[‘ffmpeg’, ‘-y’, ‘-i’, ‘C:\\Users\\suwei\\Desktop\\test.mp4’, ‘-ac’, ‘1’, ‘-ar’, ‘16000’, ‘-loglevel’, ‘error’, ‘c:\\users\\suwei\\appdata\\local\\temp\\tmpebt64y.wav’]’ returned non-zero exit status 1
[24472] Failed to execute script autosub_app
已找到問題 感謝作者