讀取本地影片或音訊檔(mp4 / mp3 / wav / m4a ...),自動完成三件事:
- 產出字幕文字檔 — 用 faster-whisper 語音辨識,輸出
.srt(含時間軸)與.txt(純文字) - 翻譯成繁體中文 — 輸出
.zh-TW.srt與.zh-TW.txt,並用 OpenCCs2twp統一為台灣慣用語 - 燒錄繁中字幕 — 用 ffmpeg 把字幕硬壓進影片,輸出
.zh-TW.mp4
mp3 等純音訊檔也支援:會自動產生深色背景影片再壓上字幕。
目前僅在 Windows 上開發與測試(字幕燒錄預設使用 Windows 內建的「微軟正黑體」)。
- Windows 10/11 + Python 3.10 以上(本專案以 3.12 開發)
- ffmpeg(需自行下載,見下方安裝步驟——不包含在本專案內,因體積過大)
git clone https://github.com/<your-username>/VideoSubtitler.git
cd VideoSubtitler
py -3.12 -m venv .venv
.venv\Scripts\python -m pip install -r requirements.txt-
到 BtbN/FFmpeg-Builds releases 下載
ffmpeg-master-latest-win64-gpl.zip -
解壓縮後,將整個資料夾(例如
ffmpeg-master-latest-win64-gpl)放到專案的tools/資料夾下,使tools/ffmpeg-*/bin/ffmpeg.exe存在或者,直接把 ffmpeg 安裝到系統並加入
PATH,程式會自動偵測。
不想準備自己的影片?專案內附兩個合成測試素材(純語音朗讀 + 純色背景,無版權疑慮),可以直接跑一次看效果:
.venv\Scripts\python main.py samples\test_video.mp4執行完成後,output/ 資料夾會出現 test_video.zh-TW.mp4(已燒錄繁中字幕的影片)。
# 一鍵完成三步驟(辨識 → 翻譯 → 燒錄)
.venv\Scripts\python main.py "D:\影片\demo.mp4"
# mp3 也可以
.venv\Scripts\python main.py "D:\音樂\podcast.mp3"
# 只做某幾步
.venv\Scripts\python main.py demo.mp4 --steps transcribe
.venv\Scripts\python main.py demo.mp4 --steps translate,burn| 選項 | 說明 | 預設 |
|---|---|---|
--model |
Whisper 模型:tiny / base / small / medium / large-v3,越大越準但越慢 |
small |
--engine |
翻譯引擎:auto / google / claude / opencc |
auto |
--language |
強制指定來源語言(如 en、ja、zh),不指定則自動偵測 |
自動 |
--steps |
要執行的步驟,逗號分隔 | 全部 |
--output-dir |
輸出資料夾 | output |
--font-size |
燒錄字幕的字級 | 22 |
--font |
燒錄字幕的字型名稱(需系統已安裝該字型) | Microsoft JhengHei |
--font-color |
燒錄字幕的顏色,6 碼十六進位色碼(如 FFFF00 為黃色) |
FFFFFF(白色) |
--position |
燒錄字幕的位置:top / bottom |
bottom |
--bold |
加上此旗標讓字幕變粗體 | 不加粗 |
範例:黃色粗體字幕、字級 28、顯示在畫面上方
.venv\Scripts\python main.py demo.mp4 --font-color FFFF00 --bold --font-size 28 --position topgoogle— 免費 Google 翻譯,再經 OpenCCs2twp統一為台灣正體用語,免金鑰claude— 用 Anthropic Claude API(claude-opus-4-8)翻譯,品質最佳,能理解上下文與口語語氣。需自行申請並設定環境變數ANTHROPIC_API_KEYopencc— 純簡轉繁,只適合來源本來就是簡體中文的影片auto— 有設定ANTHROPIC_API_KEY時自動用 claude,否則用 google
以 demo.mp4 為例,輸出到 output/:
| 檔案 | 內容 |
|---|---|
demo.srt |
原文字幕(含時間軸) |
demo.txt |
原文純文字 |
demo.zh-TW.srt |
繁體中文字幕 |
demo.zh-TW.txt |
繁體中文純文字 |
demo.zh-TW.mp4 |
已燒錄繁中字幕的影片 |
Whisper 辨識或翻譯偶爾會出錯(聽錯字、翻譯不通順)。output/ 資料夾裡的字幕檔就是純文字檔,可以直接編輯修正,不需要重新跑整個流程。
-
用文字編輯器(記事本、VS Code 皆可)打開
output/影片名.zh-TW.srt,內容格式如下:2 00:00:08,480 --> 00:00:16,640 人工智慧使這個過程變得非常簡單。感謝您的觀看,我們下次再見。數字下一行是時間軸(
開始 --> 結束),再下一行才是字幕文字。找到涵蓋你要修正時間點的那一段,直接改文字、存檔。 -
只重新執行燒錄步驟,不用重跑辨識與翻譯:
.venv\Scripts\python main.py demo.mp4 --steps burn這會直接讀取你剛剛手動修正的
demo.zh-TW.srt重新燒錄,速度比整套重跑快很多。
如果錯字是辨識階段聽錯(原文就錯了),要修正的是
demo.srt,改完後執行--steps translate,burn讓翻譯跟著重新產生;如果只是翻譯用詞不通順、原文沒問題,直接改demo.zh-TW.srt再--steps burn即可。想要有時間軸拖拉介面而不是純文字編輯,可以用免費的 Aegisub 或 Subtitle Edit 開啟 SRT 檔案。
VideoSubtitler/
├── main.py # 命令列進入點,串接三個步驟
├── subtool/
│ ├── transcribe.py # 步驟 1:faster-whisper 語音辨識
│ ├── translate.py # 步驟 2:翻譯成繁體中文
│ ├── burn.py # 步驟 3:ffmpeg 燒錄字幕
│ └── ffmpeg_utils.py # ffmpeg 執行檔偵測
├── samples/ # 合成測試素材(無版權疑慮)
├── requirements.txt
└── tools/ # 放置自行下載的 ffmpeg(已加入 .gitignore)
- 目前一次只能處理一個檔案,沒有批次處理功能
- 字幕斷句直接沿用 Whisper 原始分段,長句可能單行字幕偏長
- 只支援硬字幕(燒錄進畫面),沒有輸出可開關的軟字幕選項
- 未做配音/口譯功能
- 僅在 Windows 上驗證過
如果需要更完整的功能(YouTube 下載、批次處理、智慧斷句、配音等),可以參考 VideoLingo 或 subsai。
- 本專案採用 MIT License
- ffmpeg 本身採用 GPL/LGPL 授權,請依 ffmpeg 授權條款自行下載使用,不包含在本專案內
- 請確保你有權處理輸入的影片內容。 本工具只是自動化字幕流程,轉譯、翻譯、燒錄產生的檔案版權歸屬仍取決於原始影片內容的授權狀態,使用者需自行負責
- faster-whisper — 語音辨識
- OpenCC — 簡繁轉換
- deep-translator — 翻譯介接
- FFmpeg — 影音處理與字幕燒錄