31 ポイント 投稿者 GN⁺ 2025-08-14 | 1件のコメント | WhatsAppで共有
  • 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 -  
      

1件のコメント

 
GN⁺ 2025-08-14
Hacker Newsのコメント
  • Whisperは本当に驚くべきツールだと実感した。適切なプロンプトを与えると、生活が前向きに変わるような体験ができた
    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ライブラリを以下のコマンドのように特定のインデックスから再インストールする必要があるかもしれない
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118  
    
    uv pip install --system torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118  
    
    こうしたエラーが解決したなら、どんな問題でどう解決したのかコメントに残してくれると他の人の助けになると思う(Web検索にも役立つ)
    Subtitle Edit公式サイト
    Subtitle Edit開発者支援ページ
    Subtitle Edit最新版 releases
    • uvではtorch関連パッケージをインストールする際、CUDAドライバに合ったテンソル版を自動選択してくれる。ただしシステムPythonではなく仮想環境(venv)で使う方がよい
      次のコマンドで自動バックエンド選択が可能
      uv pip install torch torchvision torchaudio --torch-backend=auto
      詳しい案内はこちら
      torch関連パッケージはtorchインデックスから、それ以外はPyPIからそれぞれダウンロードされるので衝突の心配はない
    • Aegisubも今なおforkされて開発が続いている。両ソフトは性格が異なるため比較しにくく、補完的に使える。Subtitle Editの方が実際の文字起こしにははるかに向いており、Aegisubはタイポグラフィ作業などで依然として強みがある
    • Subtitle Editは素晴らしいが、ハードウェア(Python、Nvidia GPUなど)の制約があるかもしれない。GPUがない、あるいはサーバー構成が負担なら、lemonfox.ai のようなシンプルで安価なAPIも選択肢だ
    • Whisperによって生活が大きく良くなったという点について、具体例を挙げてもらえるとありがたい
    • Whisperの性能は非常に良いのに、なぜYouTubeの自動字幕はいまだに質が低いのか気になる。Whisperの最小モデルでさえGoogleのソリューションより良いのに、ライセンスの問題なのか、大規模展開の難しさなのかと疑問に思う
  • ローカル文字起こしがもっと広く活用されれば、動画制作者がギラギラして邪魔な字幕を動画に直接焼き込むのを控えるようになってほしい
    専門的に作られた技術動画でも、不要で消せない字幕を入れる例を見たことがある。猫動画でもないのにそれはやりすぎだ
    ローカル文字起こしを使えば自動翻訳もできるし、すでに焼き込まれた字幕の上にさらに字幕を重ねて表示しなければならない不快な体験も解消できる
    • 動画に焼き込み字幕を入れるのは、ユーザー体験よりも「エンゲージメント」を高める目的が大きいという指摘
    • あえて比べるなら、昔ファンが作っていたアニメオープニング用のテーマ字幕の方が、今どきの動画の焼き込み字幕よりずっと格好良かったと思う
    • 結局はアルゴリズムの影響が大きい。あらゆる端末でリアルタイムに100%正確な字幕が出せるようになっても、動画のパフォーマンスが良いなら焼き込み字幕は入れ続けるだろう
    • 焼き込み字幕は言語を変更できないという問題がある
    • この現象にはYouTubeの「無音自動再生」機能も一因となっている。焼き込み字幕が人を動画へ引き込む助けになる
  • Whisperは音声文字起こしモデルだが、聞き取り中に前の内容をあとから修正する能力があるのか気になる
    たとえば “I scream” と “Ice cream” のように発音は似ていても意味がまったく違う場合、長い文脈で後から出てきた情報を根拠に前のテキスト結果を変えられるのか確認したい
    こうした仕組みが、リアルタイム性と精度を両立するための必要条件だと思う。実際、Androidでの文字起こしでは話している最中にテキストが逐次調整されるのを見たことがある
    • 自分が最も好きな論文タイトルを紹介したい
      "How to wreck a nice beach you sing calm incense"
      論文リンク
    • 人間の字幕制作者や脚本家は、意図的に曖昧な言い回しや言葉遊び、物語上の誤解が重要な台詞をどう文字にするか、いつも悩んでいるのではないかと思う。聞こえたものを表現することと、原文(実際に話されたもの)そのものを書くことは違う
      先天的に聴覚障害のある人たちは、音声の言葉遊び(言語的な遊び、韻律など)を理解したり作ったりするために別途研究したりするのだろうかと気になる
      これは、経験的感覚なしに抽象数学を扱うような感じかもしれない。ただ数学者も、自らの抽象から音楽のような体験的現象を生み出していると主張するので、その点も興味深い
    • Whisperは30秒のチャンクで動作する。このネットワーク構造のおかげで前後の文脈を見て結果を変えられる。ただしそのせいで幻覚も多く発生する
    • “I scream” は “ice cream” よりも “I” の発音が強調されるように思う。ただ、文脈が不可欠だという意見には同意する
    • この話題に興味があるなら、Stanfordの『Speech and Language Processing』の16.3章以降を勧める
      該当pdf
      Whisperの構造を自分は詳しく知らないが、一般にASRモデルではデコーダが現在のチャンク以降の音も参照して文脈を理解する。そのため “I like ice cream” のような文法的に自然な形を推定するよう、言語モデルで補正する
  • 関連して、このパッチを作った作者が書いたブログもおすすめ
    Run Whisper audio transcriptions with one FFmpeg command
  • FFmpegにさらに多様なMLベースのフィルタが追加される始まりになってほしい
    以前sr(super resolution)フィルタが追加されたが古く、重みを入手するのも複雑で、複数のMLライブラリ(libtorchなど)対応が追加されても導入は簡単ではない
    いっそready-to-useのモデルを models フォルダにまとめて置き、アップスケール、ノイズキャンセル、時系列アップスケールなど多様なモデルをすぐ使えるようになってほしい
    最近の音声・映像フィルタ研究の大半はMLベースであり、新しいコーデックもおそらくMLベースになる可能性が高い
  • ここで言うWhisperは、OpenAIが作った音声認識AIモデルのことか?
    WhisperのWikipedia説明
    • そう。さらにC++実装もある whisper.cpp GitHub
    • そう。ドキュメントから直接引用すると

      It runs automatic speech recognition using the OpenAI's Whisper model.

    • 完全に単一ではなく、「音声文字起こしモデルのファミリー」だ(複数のバージョンとモデル群がある)
      Whisper全モデル一覧
  • Whisperについてまったく知らないが、自動翻訳(特に日本語→英語)にも使えるのか気になる
    とても古い日本映画を持っているが、英訳版がなくて観られない
    以前Fiverrで翻訳者を探したが、公式レートだと数千ドル、交渉して数百ドルまで下がったものの結局連絡が途絶えた
    • Whisperなら確かに日本語を英語に文字起こし・翻訳できる
      品質は方言や音質に左右されるが、large-v3 モデルが最良の結果を出す
      次のようなコマンドでffmpeg統合機能を使える
      ffmpeg -i movie.mp4 -af whisper=model=large-v3:task=translate output.srt
    • 自分の経験ではだいたい実用的だった
      「英語」モデルも実際には多くの言語をサポートしており、直接英語に翻訳してくれる
      また、いったん日本語で文字起こししてから別の翻訳器で英語に移すこともできる。意味的に複雑な会話なら、この方法の方が良いこともある
      例:
      直接翻訳:
      faster-whisper-xxl.exe --language English --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard   
      
      日本語→英語:
      faster-whisper-xxl.exe --language Japanese --task translate --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard   
      
      whisper-standalone-win参考リンク
    • 自分の経験では文字起こしは完全に失敗だった
      音声にない内容を作り出すことが多く、動画内で複数言語が混ざると完全に混乱していた
      文脈をまったく理解できておらず、YouTubeの自動翻訳で見られるような誤りが頻繁に出る
    • Whisperで日本語動画の字幕化と翻訳(英語のみ)も可能だ
      最高の性能を得るには最大モデルを使う必要があるが、速度はハードウェア次第で変わる
      別の方法として、VideoToTextAIのように字幕を抽出→100以上の言語に翻訳→SRTファイルとして保存する方式もある
    • Whisperの幻覚は深刻だ
      存在しない文をランダムに追加することがよくある
      クラス分類には使えても、字幕の文字起こしには不十分だ
  • Appleの近日公開予定のspeech APIもffmpegに追加できるのか気になる
    モデルの調達なしにMac上ですぐ動くなら良さそうだ
    SpeechTranscriberドキュメント
    SpeechAnalyzerドキュメント
    実使用レビューとWhisperとの比較
  • 今回のPR/パッチの唯一の問題は、whisper.cppライブラリのavfilterラッパーしか提供せず、ユーザーが依存関係の管理を自分でやらなければならない点だ
    つまり、
    1. whisper.cpp を git clone
    2. そのライブラリの依存関係をインストール
    3. ビルド成功
    4. 実際のモデルをダウンロード
    その後になって初めて -af "whisper=model... フィルタを使える
    事前準備なしでは失敗するし、初心者にはかなりの挫折になるだろう
    いっそWhisper avfilterをネイティブ実装にして、モデルだけダウンロードさせる方が効率的で、実際の利用者もずっと増えると思う
    • エンドユーザーにとってはその方が良いが、FFmpeg側から見ると保守面で難しさが大きい
      whisper-cppプロジェクトの変化の速さを考慮しなければならない
      他のフィルタ(vmafなど)のように依存関係のビルドやモデルダウンロードが必要なケースでは、初心者向けのprecompiled binaryもそのうち提供されるだろうと予想する(whisper-cppがMITライセンスでもあるので)
  • 自分はFFmpegとWhisperを使って、うちの街の警察無線の実況音声をリアルタイムで録音・文字起こしし、Webサイトに即時反映している
    エラーや幻覚はあるが、望んでいた水準ではうまく動いている
    • Webサイトが公開されているならぜひ見てみたい
    • 自分はこの機能を地元の郡議会の会議に適用してみたかった
      こういう場面では話者認識(speaker recognition)が特に重要になると思う