Video Subtitle
動画に自動で字幕を追加し、その字幕を画面に焼き付けて、"字幕付きMP4 + SRT"を出力します。
パイプライン
- 16kHzモノラルwavを抽出(ffmpeg)
- whisper.cppでSRTに文字起こし(whisper-cli)
- SRT → ASS:画面幅に合わせて自動改行、CJKフォント、下部中央の半透明背景枠
- libass対応のffmpegでASSを焼き込み、音声はそのままコピー
使い方
bash scripts/add_subtitles.sh input.mp4 -o output.mp4 -l zh
-l/--language元の言語、デフォルトはzh、autoも指定可-f/--fontsizeフォントサイズ、デフォルトは42-s/--srt-onlySRTのみ出力し、焼き込みは行わない
遵守事項
- 文字起こしの内容を確認してから納品すること:スクリプトはSRTをターミナルに出力します。人名、地名、慣用句は誤認識されることがよくあります(例:「重阳姐」→「重阳节」、「久久重扬」→「九九重阳」)。誤りがある場合は、
-sで一度SRTのみ出力し、修正した後に焼き込みを行ってください。 - 最終成果物を検証すること:完成した動画から2〜3フレームを抽出し(
-ss <秒> -frames:v 1)、字幕が完全で、切れたり画面からはみ出していないことを確認してください。 - Homebrewの軽量版
ffmpegを使用しないこと:そのビルドにはlibassが含まれておらず、subtitles/ass/drawtextフィルターがすべて欠けています。スクリプトは自動的にlibass対応のffmpegを選択します。インストール方法はREADME.mdを参照してください。 - 長い文は必ず改行すること:ASSでは
WrapStyle: 2(\Nのみ認識)を使用しており、srt_to_ass.pyが「画面幅 / フォントサイズ」に基づいて自動的に\Nを挿入します。それでも文が画面からはみ出る場合は、-fのフォントサイズを小さくしてください。
環境依存関係
ffmpeg(libass対応)+ whisper-cli + ggmlモデル + python3。不足がある場合、スクリプトは明確なエラーを表示します。完全なライブラリリスト、インストールコマンド、トラブルシューティングについては README.md を参照してください。