世界を動かす技術を、日本語で。

FFmpeg 8.0がWhisperサポートを追加

概要

Anubis は、AI企業による ウェブスクレイピング 対策として導入された Proof-of-Work ベースの仕組み。 個人利用にはほぼ影響せず、 大量アクセス のみを抑制。 JavaScript の最新機能が必要で、一部プラグインとの 競合 に注意。 本対策は 一時的な措置 で、今後は 指紋認証 技術の導入を予定。 Anubis v1.21.3 が現在稼働中。

Anubisによるアクセス制限の理由

  • AI企業 による 過剰なウェブスクレイピング の防止策
  • サイトの 過負荷ダウンタイム の発生抑制
  • 一般ユーザーへの リソース確保 優先
  • Proof-of-Work (Hashcashに類似)による 計算負荷 の付与
  • 個人レベルでは 影響が小さく、大量アクセス時のみ コスト増加

Proof-of-Work方式の仕組み

  • Hashcash を参考にした 証明作業 の導入
  • 各アクセスごとに 計算処理 を要求
  • 大量アクセス の場合、計算負荷が 蓄積
  • スクレイパー の運用コスト上昇を狙いとする
  • 一般ユーザーは 通常利用 可能

今後の対策方針

  • 現状は 仮の対策 としてProof-of-Workを使用
  • 将来的には ブラウザ指紋認証 (例:フォントレンダリングの違い検出)へ移行予定
  • 正規ユーザー への負担軽減を目指す
  • 証明作業ページ の表示頻度削減

JavaScriptプラグインとの注意点

  • Anubis最新JavaScript機能 を利用
  • JShelter などの JavaScript制限プラグイン が有効だと正常動作不可
  • 対象ドメインでは 該当プラグインの無効化 が推奨

バージョン情報

  • 現在稼働中の Anubisバージョンv1.21.3

Hackerたちの意見

WhisperはOpenAIが最初に作った音声認識AIモデルだって理解してるんだけど、合ってるかな?

うん、パッチのコメントによると、合ってるよ。

そうだね。

はい。ドキュメントによると、> OpenAIのWhisperモデルを使って自動音声認識を行うんだって。

そうそう、C++の実装もあって、それを使って動かせるよ。

確かそうだったと思う。PotPlayerも自動字幕生成に対応してるはず。

まあ、音声転写モデルのファミリーみたいなもんだね。

これって、情報が増えたときに過去の言葉を編集する機能があるの?例えば、「I scream」って言うと、「Ice cream」と同じ音に聞こえるよね。でも、「I scream is the best dessert」って書くより、「Ice cream is the best dessert」の方がずっと意味が通るよね。これをやらないと、低遅延で高精度を両立するのは難しいと思うんだけど。Androidの音声認識みたいに、話してる間に推測が調整されるのが理想だよね。

Whisperは30秒ごとのチャンクで動作するんだ。だから、そういうこともできるし、 hallucination(幻覚)を起こしやすい理由でもあるね。

I Scream in the Sun https://carmageddon.fandom.com/wiki/I_Scream_in_the_Sun

これが脳が言語を処理するときにすることなんだ。あまり得意じゃない言語だと、音質が悪くなると理解する能力がすぐに落ちるのを感じる。でも母国語だと、音質がひどくても、脳がその言葉がどうあるべきかを文脈に基づいて予測して、意味を補完してくれるんだ。

もし興味があれば、ここで16.3以降を見てみるといいよ: https://web.stanford.edu/~jurafsky/slp3/16.pdf Whisper自体には詳しくないけど、ASRモデルでは通常、デコーダーが「未来」(つまり、デコードしようとしているチャンクの後の音声)を見ている感じで、文法的な生成物が「アイスクリームが好き」とか「アイスクリームが好きだ」とかが選ばれるように、言語モデルがデコーディングをガイドしているんだ。

これについてどう思う? https://www.youtube.com/watch?v=zyvZUxnIC3k

みんなに私のお気に入りのタイトルの論文を紹介する良い機会だね。「How to wreck a nice beach you sing calm incense」 https://dl.acm.org/doi/10.1145/1040830.1040898

人間の字幕者や脚本家が、意図的に曖昧な発言やダジャレ、物語に重要な聞き間違いをどうやって書き起こすのか、すごく気になる。聞こえたものを字幕にする必要があるって感じだよね。重度の聴覚障害を持って生まれた人たちは、ダジャレや韻を理解・創作するために特に言葉の音を勉強するのかな?そうすれば、物語の聞き間違いを理解するのに助けがいらなくなるのかな。経験的な要素がない抽象数学みたいな感じかも…でも、数学者は自分の抽象で音楽のような美しさを主張して、経験的な現象を作り出してるんじゃないかな…うーん!

これって、ffmpegを使ってるソフトウェアはみんな文字起こし機能を追加できるってこと?AudacityとかChrome、OBSとかも?

もし彼らが初めからサポートしたいなら、モデルファイルを埋め込まなきゃいけないよ(だいたい500MBから3GBくらい、サイズと品質はバラバラだけど)。

ローカルでの文字起こしがもっと普及したら、コンテンツクリエイターに動画にバウンスした字幕を焼き付けないように説得できるといいな。乾燥した技術的な内容のプロが制作した録音でも、音質が良いのに、無駄に気を散らす字幕があって、消せないのは本当に意味がないと思う。猫の面白動画じゃない限り、そんなの必要ないよね。それに、ローカルの文字起こしがあれば自動翻訳もできるし、既に焼き付けられた字幕の上に重ねて表示するのは、読む体験としては最悪だよ。

焼き付けられた字幕のもう一つの問題は、言語を変えられないことだね。

あと、普通のクローズドキャプションのsrt字幕としてそのトランスクリプトをアップロードすることもできるよね…

それをやるのは「エンゲージメント」を増やすためであって、ユーザーの字幕体験を気にしてるわけじゃないんだよね。

Netflixみたいなところが、ほとんどのコンテンツに対して3〜4言語しか提供しないのが本当にイライラする。ブラウザ拡張機能を使えば基本的に無料で手に入るのに(ブラウザで見る場合)。多分、労働組合の影響かな。

アルゴリズムがそうさせてるから、みんなやるんだよね。もし全てのデバイスにリアルタイムで100%正確な字幕が組み込まれてても、動画のパフォーマンスが良くなるなら、やっぱりやると思う。

Debianにパッケージされるかはわからないけど、外部のバイナリモデルがどうやって作られたのか、神のみぞ知るって感じだね…。

モデルファイルは呼び出し時に提供する必要があるみたいだから、バイナリーブロブはパッケージングには必要ないね。

Whisperについては全然知らないんだけど、自動翻訳に使えるのかな?すごく古い日本の映画をいくつか持ってるんだけど、翻訳されたことはないみたい。日本語は話せないけど、観てみたいんだよね。数年前にFiverrで翻訳してくれる人と交渉してたんだけど、彼の通常の料金だと何千ドルもかかるって言われて、結局数百ドルにまで値下げしてもらったんだけど、彼が多分うんざりして音信不通になっちゃった。

うん、Whisperはそれができるよ。字幕と話している言葉を合わせるのに、WhisperX(https://github.com/m-bain/whisperX)を試してみるのもいいかもね。

どの映画か教えてもらってもいい?ちょっと気になる。

Whisperはハルシネーションの問題がかなりひどいよ。音声で言われていない文を勝手に挿入しちゃう。分類にはそこそこだけど、トランスクリプションにはあまり向いてないね。

自分の経験では、トランスクリプション(翻訳じゃなくて)は完全に失敗だった。勝手に内容を作り出すし、複数の言語が使われると全然ダメになる。文脈も理解できないから、YouTubeの自動翻訳でよく見るようなエラーがたくさん出るよ。

Whisperは確かに日本語を文字起こしして英語に翻訳できるけど、方言や音声の明瞭さによって質が変わるよ。最高の結果を得るには「large-v3」モデルが必要で、ffmpegの新しい統合を使って、ffmpeg -i movie.mp4 -af whisper=model=large-v3:task=translate output.srtみたいなコマンドを使うといいよ。

Whisperは本当に素晴らしいよ。ちゃんとした使い方をすればね。これが私の人生を明確に良い方向にひっくり返してくれた唯一のAIだと思う。Subtitle Editを試してみるべきだし、開発者にお金を投げてあげてほしい。Whisperのトランスクリプションを試すのに最適なインターフェースだから。基本的にAegisub 2.0みたいなもんだよ、私みたいに古い人にはね。やり方は、動画や音声ファイルを右のウィンドウにドラッグして、次に「Video > Audio to text (Whisper)」に行くって感じ。私はFaster-Whisper-XXLで最高の結果が出るよ。できればlarge-v2を使って(v3はちょっと不具合があるから)、簡単にトランスクリプションと翻訳のワークフローができる。結果は完璧じゃないけど、Subtitle Editは「Tools > Fix common errors」みたいな機能で不完全なトランスクリプトを整理するためのものだから。追記:あ、もしNvidiaの最新世代のカードを使ってるなら、トランスクリプションを正しく動かすために「--compute_type float32」を追加しなきゃいけないかも。エラーは空のファイルとか出力に関するものだと思う。追記2:もし別のエラーが出たら、whisper.exeに関するものであれば、特定のインデックスからTorchライブラリを再インストールしなきゃいけなかった気がする。これに関しては、pipかuvを使うかによって変わるけど、こんな感じで: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 エラーが出て、上記の修正がうまくいったら、エラーメッセージと何が効いたかを返信に書いて、後から来る人の助けになるようにしてね。少なくとも、助けを探してる人のためにウェブクローラーに役立つから。 https://www.nikse.dk/subtitleedit https://www.nikse.dk/donate https://github.com/SubtitleEdit/subtitleedit/releases

Aegisubはまだアクティブに開発されてる(フォークされてる)し、個人的にはこの2つのソフトは本当に比べられないと思う。お互いを補完し合うことはできるけど、実際のトランスクリプションにはSEの方がずっと優れてる。Aegisubはまだ組版とかを担当してるから。

関連で、パッチの著者によるブログ記事:FFmpegコマンド1つでWhisper音声トランスクリプションを実行する https://medium.com/@vpalmisano/run-whisper-audio-transcripti... ここに投稿されてるけど、コメントはゼロだね: https://news.ycombinator.com/item?id=44869254

私はFFmpegとWhisperを使って、私の街のライブ警察スキャナー音声を録音してトランスクリプションして、リアルタイムでライブウェブサイトに更新してるんだ。すごくうまくいってるけど、予想通りのトランスクリプションエラーや幻覚もあるよ。

このウェブサイトは開いてるの?あなたの作品見てみたいな :P

このWhisperもテキスト読み上げできるの?