FFmpeg 8.0、Whisperサポートを追加
(code.ffmpeg.org)- FFmpeg 8.0 では、Whisper音声認識モデルのサポートが正式に追加された
- WhisperはOpenAIが開発したオープンソースの音声認識モデルで、さまざまな言語の自動音声変換に使われる
- この機能の導入により、動画および音声処理作業で直接音声からテキストへの変換ワークフローを自動化できる可能性が高まった
- 開発者やメディア自動化分野において、FFmpegの活用性と効率性が大きく強化された
- 最新の音声認識機能を内蔵することで、追加の外部ツールや複雑な統合プロセスの負担を軽減する
FFmpeg 8.0のWhisperサポート概要
- FFmpeg 8.0では、Whisper音声認識モデルのサポートを追加することで、さまざまな言語の音声データをテキストへ自動変換する機能を提供する
- WhisperはOpenAIが作成したディープラーニングベースのアルゴリズムを活用し、高精度な音声からテキストへの変換性能を実現する
- 既存のFFmpegユーザーは外部ツールを介さず、内蔵されたWhisperサポート機能によって、動画および音声ファイルから字幕を生成したり音声内容を抽出したりできる利便性を得られる
Whisper統合の主な利点
- Whisperの統合により、FFmpegベースのメディア処理および自動化パイプラインで、効率的かつスケーラブルな音声認識ワークフローを実装できるようになった
- 音声認識アルゴリズムが内蔵されたことで、開発者は複雑な追加連携や別途スクリプトを書く負担なしに、簡単なコマンドだけで音声テキスト変換結果を得られるという利点がある
FFmpegとWhisperの組み合わせが持つ産業的意義
- 大規模なメディア資産管理、字幕生成、映像データのアーカイブ化など、さまざまな分野でFFmpeg + Whisperの組み合わせはコスト効率と自動化を同時に実現できる強みを持つ
- これまでは別個のオープンソース音声認識ツールをFFmpegと連携させる必要があったが、今後はFFmpeg本体で直接処理できるため、ワークフローの簡素化と処理速度の向上が期待できる
技術的な詳細
- FFmpegにはWhisper.cppライブラリをベースとして、FFmpeg内部で直接自動音声認識(ASR) を実行する音声フィルターが追加された
--enable-whisperオプションで有効化でき、モデルパス(model)の指定は必須- 主なオプション: 言語設定(language)、GPU使用有無(use_gpu)、キューサイズ(queue)、出力形式(format: text/srt/json)、VAD(音声活動検出)モデルおよびしきい値設定 など
- queue の値を小さくするとリアルタイム性は高まるが精度が下がりCPU負荷が増加し、大きくすると精度は上がるが遅延が増える
- destination オプションで出力ファイル・URL・メタデータに結果を保存でき、AVIOプロトコルもサポートする
- 例として、SRT字幕生成、JSON形式でのHTTP送信、マイク入力のリアルタイム文字起こし(VAD使用) のシナリオを含む
- SRT字幕ファイル生成例
ffmpeg -i input.mp4 -vn \ -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin:language=en:queue=3:destination=output.srt:format=srt" \ -f null -
- SRT字幕ファイル生成例
1件のコメント
Hacker Newsのコメント
Subtitle Editを勧めたい(開発者への支援もおすすめ)。Subtitle EditはWhisperを試しながら使うのに適したインターフェースだ。以前Aegisubを使ったことがある人なら、Subtitle EditをAegisub 2.0と呼びたくなるはず
HOWTO: 映像や音声ファイルを右側のペインにドラッグして、Video > Audio to text (Whisper) に進む。自分はたいていFaster-Whisper-XXLが最も性能が良かった。可能ならlarge-v2を使うのを勧める(large-v3には逆にいくつか退行がある)。完璧ではないが、Subtitle EditのTools > Fix common errorsのような機能で十分修正できる
最新のNvidiaグラフィックカードなら
--compute_type float32を入力しないと正常に動作しないことがある。エラーが出るなら、torchライブラリを以下のコマンドのように特定のインデックスから再インストールする必要があるかもしれない こうしたエラーが解決したなら、どんな問題でどう解決したのかコメントに残してくれると他の人の助けになると思う(Web検索にも役立つ)Subtitle Edit公式サイト
Subtitle Edit開発者支援ページ
Subtitle Edit最新版 releases
次のコマンドで自動バックエンド選択が可能
uv pip install torch torchvision torchaudio --torch-backend=auto詳しい案内はこちら
torch関連パッケージはtorchインデックスから、それ以外はPyPIからそれぞれダウンロードされるので衝突の心配はない
専門的に作られた技術動画でも、不要で消せない字幕を入れる例を見たことがある。猫動画でもないのにそれはやりすぎだ
ローカル文字起こしを使えば自動翻訳もできるし、すでに焼き込まれた字幕の上にさらに字幕を重ねて表示しなければならない不快な体験も解消できる
たとえば “I scream” と “Ice cream” のように発音は似ていても意味がまったく違う場合、長い文脈で後から出てきた情報を根拠に前のテキスト結果を変えられるのか確認したい
こうした仕組みが、リアルタイム性と精度を両立するための必要条件だと思う。実際、Androidでの文字起こしでは話している最中にテキストが逐次調整されるのを見たことがある
"How to wreck a nice beach you sing calm incense"
論文リンク
先天的に聴覚障害のある人たちは、音声の言葉遊び(言語的な遊び、韻律など)を理解したり作ったりするために別途研究したりするのだろうかと気になる
これは、経験的感覚なしに抽象数学を扱うような感じかもしれない。ただ数学者も、自らの抽象から音楽のような体験的現象を生み出していると主張するので、その点も興味深い
該当pdf
Whisperの構造を自分は詳しく知らないが、一般にASRモデルではデコーダが現在のチャンク以降の音も参照して文脈を理解する。そのため “I like ice cream” のような文法的に自然な形を推定するよう、言語モデルで補正する
Run Whisper audio transcriptions with one FFmpeg command
以前sr(super resolution)フィルタが追加されたが古く、重みを入手するのも複雑で、複数のMLライブラリ(libtorchなど)対応が追加されても導入は簡単ではない
いっそready-to-useのモデルを
modelsフォルダにまとめて置き、アップスケール、ノイズキャンセル、時系列アップスケールなど多様なモデルをすぐ使えるようになってほしい最近の音声・映像フィルタ研究の大半はMLベースであり、新しいコーデックもおそらくMLベースになる可能性が高い
WhisperのWikipedia説明
Whisper全モデル一覧
とても古い日本映画を持っているが、英訳版がなくて観られない
以前Fiverrで翻訳者を探したが、公式レートだと数千ドル、交渉して数百ドルまで下がったものの結局連絡が途絶えた
品質は方言や音質に左右されるが、
large-v3モデルが最良の結果を出す次のようなコマンドでffmpeg統合機能を使える
ffmpeg -i movie.mp4 -af whisper=model=large-v3:task=translate output.srt「英語」モデルも実際には多くの言語をサポートしており、直接英語に翻訳してくれる
また、いったん日本語で文字起こししてから別の翻訳器で英語に移すこともできる。意味的に複雑な会話なら、この方法の方が良いこともある
例:
直接翻訳: 日本語→英語: whisper-standalone-win参考リンク
音声にない内容を作り出すことが多く、動画内で複数言語が混ざると完全に混乱していた
文脈をまったく理解できておらず、YouTubeの自動翻訳で見られるような誤りが頻繁に出る
最高の性能を得るには最大モデルを使う必要があるが、速度はハードウェア次第で変わる
別の方法として、VideoToTextAIのように字幕を抽出→100以上の言語に翻訳→SRTファイルとして保存する方式もある
存在しない文をランダムに追加することがよくある
クラス分類には使えても、字幕の文字起こしには不十分だ
モデルの調達なしにMac上ですぐ動くなら良さそうだ
SpeechTranscriberドキュメント
SpeechAnalyzerドキュメント
実使用レビューとWhisperとの比較
つまり、
1. whisper.cpp を git clone
2. そのライブラリの依存関係をインストール
3. ビルド成功
4. 実際のモデルをダウンロード
その後になって初めて
-af "whisper=model...フィルタを使える事前準備なしでは失敗するし、初心者にはかなりの挫折になるだろう
いっそWhisper avfilterをネイティブ実装にして、モデルだけダウンロードさせる方が効率的で、実際の利用者もずっと増えると思う
whisper-cppプロジェクトの変化の速さを考慮しなければならない
他のフィルタ(vmafなど)のように依存関係のビルドやモデルダウンロードが必要なケースでは、初心者向けのprecompiled binaryもそのうち提供されるだろうと予想する(whisper-cppがMITライセンスでもあるので)
エラーや幻覚はあるが、望んでいた水準ではうまく動いている
こういう場面では話者認識(speaker recognition)が特に重要になると思う