
whisperx導入覚書
需要があるのかは知りませんが、各国語の動画クリップ、長編動画をダウンロードして、自分で字幕を付けたい、字幕を翻訳したいみたいな需要にはあのFacebookのMETA社が公開しているフリーのツールであるwhisperという聞き取り書き起こしtoolを改良し、話して推定までしてくれるwhisperxというスタンフォード大学の学生が作って公開しているツールがあります。
これがなかなか便利で、話して推定と、字幕のタイミング調整を自動でやり直ししてくれるので精度がwhisperそのものよりも場合によっては高いです。長い動画ほどいい感じになります。
似たようなオンラインサービスにotterというのがあります。日本語サイトではTranskriptorという名前になっているようです。面倒くさい人はこちらを使うのが良いかもですが、有料だし、めっちゃ大量に字幕付けたいとか、自分のBotに取り込んで自動化したい(しろののWe The Media日本語訳チャネルのBot)などとなるとwhisperかwhisperxが勝ります。

先ずは動画のダウンロード最強ツールであるyt-dlpを導入
yt-dlpは昔からあったyoutube-dlというPythonのツールからフォークされたプロジェクトです。コマンドラインで動画のURLを渡すと後は勝手にダウンロードしてくれます。
先ずは上のリンクからGithubページに行きましてリリースファイルのところからyt-dlpをダウンロードします。

皆さんはウインドウズでしょうからそのつもりで解説していきますが、このyt-dlp.exeファイルをダウンロードしましょう。
Win8+というのはウインドウズ8からそれ以上の新しいやつWin10とかWin11とかに対応という意味です。
ダウンロードしたら自分のユーザー領域に適当にフォルダを作って移動します。私はこんなのを作りました。shironoのところは自分のユーザー名で。
C:\Users\shirono\localffmpegとffprobのインストール

さっきのリリースファイルの下の方にずっといくとffmpegへのリンクがありますので、飛びます。
緑のどでかいダウンロードボタンがあるので押すと次の画面に実行ファイルへのリンクがあります。

最新ので大丈夫でしょう
Latest Auto-Buildから
ffmpeg-master-latest-win64-gpl-shared.zip
をゲットして下さい
そこからはこちらのサイトを参考にパスを設定までやってください。

同じ手順でyt-dplにもパスの設定をして下さい。
面倒くさいのでyt-dplも同じbinフォルダに入れちゃうというのもありです。
パスを設定したら一度コマンドラインは閉じて新しいのを開きます。設定が反映しませんので。
私は解凍したzipからbinフォルダに入っているdllとexeを全部さっきのlocalのフォルダにコピーしました。で、このlocalにパスを設定してどこからでも使えるようにしました。
Twitterの動画をyt-dlpでダウンロード
それではここまでのテストに一つダウンロードしてみましょう
All the time we are told how evil Vladimir Putin is.
— Richard (@ricwe123) November 17, 2024
But then every time I see him talk, he's more learned, sensible, straightforward and honest than any western politician..... pic.twitter.com/HEh9wVr8ac
これのリンクをコピーをしてそれをyt-dlpに渡してやります。
上の記事でもうコマンドラインの開き方はわかりますよね?
cmdを開いて
yt-dlp https://twitter.com/ricwe123/status/1858127088441569729とやってみてください。
こんな感じにダウンロードが開始するはずです。

Linuxでは大丈夫でしたが、ウインドウズだとファイル名が長過ぎるみたいでエラーになりましたwww
そんな時は-oオプションでファイル名を適当に指定します。
yt-dlp https://twitter.com/ricwe123/status/1858127088441569729 -o putin.mp4ダウンロード出来たでしょうか?
こんな感じでrumbleの動画だろうがyoutubeだろうがXだろうが結構ダウンロード出来てしまいます。
いよいよwhisperxのインストール
m-bain whisperxと検索すると出てくるGithubのページに飛びます。
失敗
ここの項目は残して起きますが、うまく行きませんでしたので次の成功まで飛ばしてください。
セットアップの項目にあるこのコマンドを実行するのが当面の目標です。
conda create --name whisperx python=3.10
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 cpuonly -c pytorch
pip install git+https://github.com/m-bain/whisperx.gitこのcondaというのはアナコンダのことでございます。
Pythonというプログラム言語を使うことになりますが、パイソンというのは蛇の一種で、アナコンダも蛇ですな。
アナコンダはパッケージ管理をするツールでまあ蛇にちなんだ名前になっています。Pythonにはものすごい量のパッケージ、ライブラリがありまして、お互いに依存関係がありまして、それぞれのバージョンの組み合わせがかち合って手作業でやると死ぬほど苦労することがあるので、パッケージのインストールをおまかせするツールですな。
アナコンダには必要最小限のパッケージ管理ツールであるミニコンンダというのがありましてそちらを使います。
アナコンダだとすでにパッケージがてんこ盛りのPythonが来るのですがそれはダウンロード大変です。

で、この2つのcondaコマンドと最後のpipをやってみましたが、インストールは成功したようにもみえましたが、Numpy 2.0と1.0がごっちゃになったようで、環境が壊れていました。失敗です。
condaとpipが混ざるとろくなことがないですなぁ。このインストールガイドはLinuxでCPU版のTorchだとcondaでもうまく行きましたが、GPUも使おうとするとだめで結局普通にpipだけを使いましたのでcondaは諦めて、普通にPython 3.10を導入しますか。
成功
マイクロソフトのアプストアで"python 3 10"と検索してうえのcondaの使ってたPythonと同じバージョンを入れてみましょう。

コマンドラインで
python --versionとやって3.10.11とか出てきたら成功です。
さっきのAnaconda Promptは絶対にここでは使わないでください。普通のCMDで大丈夫です。Powershellが好きならそちらで。
次にwhisperxのgithubの<>Codeボタンを押してDownload ZIPからZIPを出して、適当な場所で解凍します。さっきのlocakの隣とかで大丈夫です。

whisperX-mainというフォルダが解凍されると思いますがそれをwhisperxとリネームします。しなくてもいいですが。
C:\Users\shirono\whisperxのなかにLICENSEやsetup.pyというファイルが見えている感じです(setupだけで拡張子みえてない設定でも気にしない)。
そしたらwhisperxフォルダの中にvenvという名前でvirtualenvを使って新しい環境を作ります。
python -m venv venv
作った環境を立ち上げます。
.\venv\Scripts\activateプロンプトが
C:\Users\shirono\whisperx
から
(venv)C:\Users\shirono\whisperx
と変わったら成功です。
次はCPUしかない環境を前提にpyTorchを導入します。
pip3 install torch==2.0.0 torchvision==2.0.0 torchaudio==2.0.0 --index-url https://download.pytorch.org/whl/cpuうまく行った場合はpip listをするとtorchの2.0.0+cpuとaudioとvisionの兄弟が見えるはずです。
pip list
ここまで来たらwhisperxのインストールする環境が整ってます。
私はsetup.pyをpipから使うソースインストールをします。
pip install -e .setup.pyがあるフォルダからです。つまりさっきからいる場所です。

これでwhisperx putin.mp4とテストしてみるとエラーに。どうもC+のDLLが不足しているそうです。
https://aka.ms/vs/16/release/vc_redist.x64.exe
だそうですのでこれをぶっこみます。
whisperx putin.mp4とやってみるとボキャブラリーファイルとかのダウンロードが始まったので動いている模様。

でもfloat16 compute typeはサポートされてねーよとエラー。
そうでしたCPUの場合は--compute_type int8というフラグを渡します。
whisperx --compute_type int8 putin.mp4やたらでかいjsonファイルをダウンロードしまくってますが、うまく行っているようです。

色々とファイルが出来ましたが使いやすいのはvtt形式ですかね。srtもわかりやすいです。
以上、導入までです。
CPUだとかなり遅いので、一時間とかの動画だと3−4時間かかるんじゃないでしょうか。GPUだと3時間の動画で20分くらいです。