結論から書きます。FFmpeg 8.0では、動画ファイルから字幕ファイルを作る作業がコマンド1行で済むようになりました。ただし、その1行を打つ前に準備が3つ要ります。この記事では、公式の文書に沿って、準備・コマンドの形・つまずきやすい点を整理します。
※本記事は公式資料・公開情報をもとにした解説です。筆者による実機検証は含みません。
※2026年9月追記: FFmpeg 8.0(コードネーム「Huffman」)は2025年8月22日に正式リリースされました。新フィルタとして「whisper」が入っています(公式リリースノート)。初稿にあった「2025年8月リリース予定」は過去のことになったため、本文を現在の状況に書き直しています。コマンド例も、初稿の「イメージ」の構文を捨て、公式のフィルタ文書に沿った形に直しました。
そもそもFFmpegとWhisperとは
FFmpegは、動画や音声を変換・切り出し・結合するための無料のコマンドラインツールです。多くの動画編集ソフトや配信サービスの裏側で動いています。Whisperは、OpenAIが公開した音声認識モデルで、日本語を含む多言語の文字起こしができます。
これまでは「FFmpegで音声を抜き出す」「別のツールでWhisperにかける」「字幕を編集ソフトに戻す」の3段階でした。道具を3つまたぐのがふつうだったわけです。8.0からは、FFmpegの中にWhisperを呼ぶフィルタが入ったので、この往復が1回のコマンドにまとまります。
先に必要な準備が3つある
公式文書には、このフィルタの前提が明記されています。ここを飛ばすとコマンドは動きません。
- 音声認識ライブラリ「whisper.cpp」をパソコンに入れておく(フィルタはこのライブラリを呼び出す)
- FFmpegを
./configure --enable-whisperを付けてビルドする。このオプションなしのFFmpegには、whisperフィルタが入っていない - whisper.cppのggml形式のモデルファイル(例:
ggml-base.bin)を別途ダウンロードしておく
HomebrewやLinuxのパッケージで配られているFFmpegに、このオプションが入っているかは配布元しだいです。手元のFFmpegで ffmpeg -filters を実行し、一覧に「whisper」があるかを先に確かめてください。なければ、自分でビルドするか、対応済みのビルドを探すことになります。正直、非エンジニアにとってはこの準備が一番の山です。
コマンドの形(公式文書の例に沿った書き方)
動画 input.mp4 から日本語の字幕ファイル output.srt を作る場合、公式の例に沿うとこうなります。
ffmpeg -i input.mp4 -vn -af "whisper=model=ggml-base.bin:language=ja:destination=output.srt:format=srt" -f null -
読み方を分解します。-vn は映像を捨てて音声だけ処理する指定です。-af の中身がwhisperフィルタです。model にモデルファイルの場所、language に言語コードを指定します。destination が書き出し先で、format が形式です。最後の -f null - は「変換後の音声は捨てる」という意味で、字幕だけが欲しいときの決まり文句です。モデルファイルは、実際に置いたパスに置き換えてください。
公式文書に載っている主なオプションを表にまとめます。
| オプション | 意味 | 既定値 |
|---|---|---|
| model | ggml形式のモデルファイルのパス(必須) | なし |
| language | 言語コード。auto/eval/lockで自動判定 | auto |
| queue | 何秒ぶんためてから認識するか。小さいと精度が落ち、大きいと精度が上がる代わりに遅れる | 3 |
| use_gpu | GPUを使うか | true |
| destination | 書き出し先のファイルまたはURL。指定しないとログに出る | なし |
| format | text/srt/json | text |
| max_len | 1区切りの最大文字数。字幕の1行を短くしたいときに使う | 0(制限なし) |
| vad_model | 無音区間を検出するモデル。長いqueueと組み合わせて使う | なし |
つまずきやすい点
1つ目はqueueです。既定の3秒は生放送向けの短さで、録画済みファイルの文字起こしには短すぎます。公式文書も、10秒から20秒にすると精度が上がりCPU負荷も下がる、と説明しています。字幕を作るだけなら、queueを大きくするほうが得です。
2つ目はモデルの選び方です。名前に「.en」が付くモデルは英語専用です。日本語には多言語版(ggml-base.bin や ggml-medium.bin など)を使います。大きいモデルほど精度は上がりますが、必要なメモリと時間も増えます。
3つ目は上書きです。destinationに指定したファイルがすでにあると、確認なしで上書きされます。公式文書に明記されている仕様なので、出力先の名前は毎回変えるか、空のフォルダで作業するのが安全です。
向いている仕事、向いていない仕事
向いているのは、字幕や議事録の「下書き」を大量に作る仕事です。動画をよく作る人なら、字幕の初稿を機械に任せて、人は直しに専念できます。会議の録音も同じで、発言の一覧をまず機械で起こし、要点の整理だけ人がやる分担になります。ファイルを外部サービスに送らないので、社外秘の録音でも扱えます。
向いていないのは、そのまま納品する字幕です。固有名詞や専門用語は、どんなモデルでも取りこぼします。人の確認を省く道具ではなく、人の確認にかける時間を減らす道具、と考えるほうが期待外れになりません。「もう文字起こしは要らない」も「機械はまだ使えない」も、どちらも極端です。
たとえば名古屋で税理士事務所をやっている人なら、顧問先との打ち合わせ録音を毎回この1行にかける。できたテキストの要約だけをAIに頼む。フリーランスの動画編集者なら、納品前の字幕初稿をこれで作り、直しの時間だけを見積もりに載せる。どちらも「準備3つ」を一度こなせば、あとは同じコマンドの使い回しです。
まとめ
FFmpeg 8.0のwhisperフィルタは、文字起こしの手順を3ツールから1コマンドに縮めました。代わりに、whisper.cpp・--enable-whisper付きのビルド・ggml形式のモデルという準備が要ります。準備ができたら、queueを大きめにして、多言語モデルを選び、出力先の上書きに気をつける。この3点で、初回のつまずきはだいたい避けられます。
出典: FFmpeg 8.0 “Huffman” リリースノート(公式)/FFmpeg Filters Documentation: whisper(公式)


