キャプションと字幕
ソーシャル動画の多くはミュートで視聴されます。キャプションは編集の一部であり、オプションではありません。
1. 文字起こし
# openai-whisper (pip install openai-whisper)
whisper audio.mp3 --model small --language en --output_format srt --output_dir captions/
# faster-whisper (pip install faster-whisper): より高速、低メモリ、ワードタイムスタンプ対応
python - <<'PY'
from faster_whisper import WhisperModel
model = WhisperModel("small", compute_type="int8")
segments, info = model.transcribe("audio.mp3", word_timestamps=True, vad_filter=True)
for s in segments:
for w in s.words:
print(f"{w.start:.2f}\t{w.end:.2f}\t{w.word}")
PY
より良い結果を得るために、まずクリーンな音声を抽出します:
ffmpeg -i video.mp4 -vn -ac 1 -ar 16000 audio.wav
モデルサイズは精度と速度のトレードオフがあります: base < small < medium < large。英語の場合は small または medium を、難しいアクセントや他言語の場合は large を使用します。
スクリプトが既に存在する場合(ナレーションをスクリプトから生成した場合)、文字起こしの文言を信頼しないでください。スクリプトのテキストを使用し、Whisperはタイミング調整(強制アライメント)のみに使用します。これにより、固有名詞や数値が正確に保たれます。
2. テキストの修正
固有名詞、製品名、数値を校正します。Whisperはこれらを誤認識することがよくあります。トピックが技術的な場合は、ユーザーに用語集を依頼してください。
3. キャプションファイルの作成
SRT:
1
00:00:00,000 --> 00:00:02,400
Most builds fail on Friday.
2
00:00:02,400 --> 00:00:05,100
Here is why.
可読性のルール:
- 最大2行、1行あたり約42文字(縦型動画の場合は約20文字)。
- 読み取り速度は毎秒17文字未満、最小キューの長さは1秒。
- フレーズの区切りで改行し、フレーズの途中で切らない。名前を複数のキューに分割しない。
- キューが重ならないようにする。2フレームのギャップを空けるか、ギャップをなくす。
4. 焼き込み
# force_style によるソフトスタイリング (SRT)
ffmpeg -i in.mp4 -vf "subtitles=captions.srt:force_style='FontName=Arial,FontSize=22,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Alignment=2,MarginV=60'" -c:a copy out/captioned.mp4
# ASS で完全なコントロール(カラオケワードハイライト、位置、アニメーション)
ffmpeg -i in.mp4 -vf "ass=captions.ass" -c:a copy out/captioned.mp4
Windows のパスの注意点:フィルター内ではドライブのコロンをエスケープし、フォワードスラッシュを使用してください(subtitles='C\:/work/captions.srt')。または、ファイルが置かれているフォルダから FFmpeg を実行し、相対パスを使用します。
5. ショートフォーム向けワードハイライトスタイル
1イベントあたり2~4語のグループで ASS ファイルを生成し、\k カラオケタグまたは単語ごとの色オーバーライドを使用して、アクティブな単語の色が変わるようにします。典型的な見た目:太字サンセリフ、白文字、3~4pxの黒い輪郭、アクティブな単語はブランドアクセントカラー。画面の下中央からやや上(プラットフォームのUIに覆われない位置)に配置します。
開始用の最小限の ASS ヘッダー:
[Script Info]
ScriptType: v4.00+
PlayResX: 1080
PlayResY: 1920
[V4+ Styles]
Format: Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,OutlineColour,BackColour,Bold,Italic,Underline,StrikeOut,ScaleX,ScaleY,Spacing,Angle,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,Encoding
Style: Default,Arial,72,&H00FFFFFF,&H0000D7FF,&H00000000,&H64000000,-1,0,0,0,100,100,0,0,1,4,0,2,60,60,520,1
[Events]
Format: Layer,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text
Dialogue: 0,0:00:00.00,0:00:01.20,Default,,0,0,0,,{\k30}Most {\k40}builds {\k30}fail
ASS での色は &HAABBGGRR(青-緑-赤の順、アルファが先頭)です。
6. 配信
- ソーシャルプラットフォーム向けの焼き込み版。
- YouTube、LinkedIn、Webプレーヤー向けの個別の
.srtまたは.vttファイル(視聴者はオン/オフや翻訳が可能)。 - MP4 へのソフト字幕トラックの埋め込み:
-i captions.srt -c copy -c:s mov_text。
翻訳
タイミングではなく、キューのテキストのみを翻訳します。言語ごとの行制限を守ってください(ドイツ語やフィンランド語は長くなるため、折り返しを調整します)。動画が公開されたら、ネイティブスピーカーに確認を依頼してください。