2020-07-30

將影片檔及聲音檔輸出成字幕檔

最近有朋友查問在下,如何將語音轉文字,在下當推介在下之前製作使用 Web Speech Recognition API 工具
但在下的朋友並不是實時語音轉文字,而是錄製語音後轉成文字
沒有理由實時播放聲音檔,再用 Web Speech Recognition API 辨認輸出聲音
因此在網上尋找有沒有方便工具……


網上推介使用 pyTranscriberautosub
兩個程式的安裝程序及操作方式都好簡單

安裝 autosub

安裝 CURL, FFmpeg, Python2
要正確執行 autosub 需要 CURL, FFmpeg, Python2
開啟 Terminal 輸入
sudo apt-get install curl ffmpeg python2
按此安裝CURL按此安裝FFmpeg按此安裝Python2

安裝 pip2
由於 autosub 需要使用 pip2安裝 但 Python2 已於 2020年2月終止更新
而新版本的 Linux發行版 都使用 Python3 ,因此不能經 Linux發行版 安裝 pip2
輸入
curl "https://bootstrap.pypa.io/get-pip.py" | sudo python2

安裝 autosub
安裝 autosub
安裝 pip2 後輸入
sudo pip install autosub
安裝 autosub

執行 autosub

執行 autosub
執行 autosub
執行 autosub
執行 autosub
autosub 借用 FFmpeg 將影片檔及聲音檔 轉換成 Flac 再借用 Google Cloud Speech to Text API 製作 SRT字幕檔
以下是 autosub 的操作例子
autosub -S "zh-TW" -D "zh-TW" "media-file"
  • -S 為 來源影片語言 (autosub 可接受的語言)
  • -D 為 輸出字幕文字 (autosub 可接受的文字)
  • media-file 為 來源檔案
輸出字幕檔會存放在與來源相同節目錄,檔案名與來源相同,只是副檔名不同

查看還支援哪些語言及文字,輸入
autosub --list-language
autosub 預設使用 SRT 為輸出字幕格式,但支持其他字幕格式,輸入
autosub --list-formats
決定輸出字幕格式後,輸入
autosub --format "subtitle-format" ......
輸出對應字幕格式

安裝 pyTranscriber

檢示 pyTranscriber 版本
https://github.com/raryelcostasouza/pyTranscriber/releases ,並選擇下載合適的版本
(在下使用 Linux 因此選擇 Linux版本,但 Linux版 的 Portable版 及 Installer版 其實是相同)

將檔案解壓縮
解壓縮後會有 install.sh

檔案列表
實際上可以直接執行 app/pyTranscriber 不需要安裝亦可

安裝 pyTranscriber
如果安裝 pyTranscriber 可以以 super user 執行 install.sh
sudo bash "install.sh"
其實安裝過程只是將需要的檔案複製到 /opt/pyTranscriber/*/usr/share/applications/pyTranscriber.desktop
要移除只需要執行 /opt/pyTranscriber/uninstall.sh 即可

pyTranscriber 在主選單顯示
安裝後可以在 主選單 開啟 pyTranscriber

執行 pyTranscriber

pyTranscriber 界面
選擇檔案
開啟 pyTranscriber 的主畫面
Select file(s) 選取需要聲音轉文字的影片檔或聲音檔 (可多選)

選擇存放位置
Output Location 選擇字幕檔的輸出位置
(預設會存放到 桌面)

選擇來源語言
Audio Language 選擇合適的聲音來源語言

轉換檔案
Transcribe Audio / Generate Subtitles 將聲音輸出成字幕檔

輸出 SRT字幕檔 及 TXT純文字檔
除了 SRT字幕檔, pyTranscriber 還會輸出 TXT純文字檔

檢示文字內容
pyTranscriber 只是提供圖形使用者界操作,背後實際都是使用 autosub 來執行
因此輸出結果與 autosub 大致上是相同

總結

在下在 YouTube 使用一些時間簡短的影片作為測試
如果內容是 一人發聲、一種語言、清晰、速度適中,輸出的字幕準確度會好高
但內容是 多人發聲、多種語言、速度太快太慢,輸出的字幕則比較多錯誤
但由於字幕檔都是純文字檔案,如果輸出的字幕內容有錯誤,可以立即修改

由於 autosub 背後是借助 Google Cloud Speech to Text API ,因此必須要具備 網絡功能能存取Google 才能使用

參考資料

1 則留言 :

  1. This is a bit too complicated for me but ill have my nephew help me out a bit. Thanks

    https://aab-edu.net/

    回覆刪除