📹
完全に無料で翻訳字幕入り動画作成をしたい
海外のカンファレンスの動画を手に入れたのですがネイティブの発音を追っかけていたら
理解するのに動画の何倍も時間がかかってしまうので翻訳した字幕入り動画を作ります
カンファレンスが10時間とか超えるので有料のサービス使うとあっという間に数百ドル…
ローカルで処理してケチります
環境:Macbook Pro (M3 Pro)
WhisperもffmpegもCPUでも動きますが速度が段違いなのでGPUでやる前提で書いています
1時間の動画を処理するのに全部で10分はかかりません
Step:
- 文字起こしをする
a. 動画から音声データだけ抽出する
b. 音声データから字幕ファイル(SRT)を作成する - 字幕データを翻訳する
- 字幕を元動画に書き込む(エンコード)
使ったもの
- 文字起こし > Whisper
- 音声データ抽出 > ffmpeg
- 字幕データ翻訳 > https://www.syedgakbar.com/projects/dst
- 精度にこだわるなら ChatGPTかDeepLあたりがいいかも
- 上記はとにかく無料で早い。精度はGoogle翻訳なので察して
- 字幕焼き付けエンコード > ffmpeg
Step 1 文字起こし
前提:ffmpegをインストール済みであること
-
動画データから音声データを抽出する
動画次第ではwavにしなくても良さそうなのですがおそらくこちらの方が処理も早いですffmpeg -i 001.mov -ar 16000 -ac 1 -c:a pcm_s16le 001.wav
-
Whisper をインストール 最新をローカルでビルドして使用します
ビルドのためにcmakeをインストールbrew install cmake
whisper.cpp をクローン
git clone https://github.com/ggerganov/whisper.cpp cd whisper.cpp
モデルをダウンロード
mkdir -p models curl -L -o models/ggml-base.en.bin https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin
Metal(M1/M2 GPU)を有効にしてビルド
make clean WHISPER_METAL=1 make
動画から文字起こしをする > SRTに出力
./build/bin/whisper-cli -m models/ggml-base.en.bin -f 001.wav --output-srt --threads 4
これで001.srtが作られます
Step 2 翻訳
srtを任意のツールで翻訳します
Step 3 エンコード
ffmpegでsrtを字幕として書き込むことができます
ffmpeg -i 001.mov -vf "subtitles=001.srt" -c:v h264_videotoolbox -b:v 2500k -c:a aac -b:a 128k 001_h264.mp4
あとは待つだけ
翻訳部分をChatGPTでいい感じにするツールを作ったらこれらを一括してできるツールにしようと思います
Discussion