PR

FFmpeg 8.0のWhisper統合で文字起こしがコマンド1行に 導入手順と注意点

AI×仕事術

結論から書きます。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つある

公式文書には、このフィルタの前提が明記されています。ここを飛ばすとコマンドは動きません。

  1. 音声認識ライブラリ「whisper.cpp」をパソコンに入れておく(フィルタはこのライブラリを呼び出す)
  2. FFmpegを ./configure --enable-whisper を付けてビルドする。このオプションなしのFFmpegには、whisperフィルタが入っていない
  3. 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 - は「変換後の音声は捨てる」という意味で、字幕だけが欲しいときの決まり文句です。モデルファイルは、実際に置いたパスに置き換えてください。

公式文書に載っている主なオプションを表にまとめます。

オプション意味既定値
modelggml形式のモデルファイルのパス(必須)なし
language言語コード。auto/eval/lockで自動判定auto
queue何秒ぶんためてから認識するか。小さいと精度が落ち、大きいと精度が上がる代わりに遅れる3
use_gpuGPUを使うかtrue
destination書き出し先のファイルまたはURL。指定しないとログに出るなし
formattext/srt/jsontext
max_len1区切りの最大文字数。字幕の1行を短くしたいときに使う0(制限なし)
vad_model無音区間を検出するモデル。長いqueueと組み合わせて使うなし

つまずきやすい点

1つ目はqueueです。既定の3秒は生放送向けの短さで、録画済みファイルの文字起こしには短すぎます。公式文書も、10秒から20秒にすると精度が上がりCPU負荷も下がる、と説明しています。字幕を作るだけなら、queueを大きくするほうが得です。

2つ目はモデルの選び方です。名前に「.en」が付くモデルは英語専用です。日本語には多言語版(ggml-base.binggml-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(公式)

タイトルとURLをコピーしました