見出し画像

whisperx導入覚書

需要があるのかは知りませんが、各国語の動画クリップ、長編動画をダウンロードして、自分で字幕を付けたい、字幕を翻訳したいみたいな需要にはあのFacebookのMETA社が公開しているフリーのツールであるwhisperという聞き取り書き起こしtoolを改良し、話して推定までしてくれるwhisperxというスタンフォード大学の学生が作って公開しているツールがあります。

これがなかなか便利で、話して推定と、字幕のタイミング調整を自動でやり直ししてくれるので精度がwhisperそのものよりも場合によっては高いです。長い動画ほどいい感じになります。

似たようなオンラインサービスにotterというのがあります。日本語サイトではTranskriptorという名前になっているようです。面倒くさい人はこちらを使うのが良いかもですが、有料だし、めっちゃ大量に字幕付けたいとか、自分のBotに取り込んで自動化したい(しろののWe The Media日本語訳チャネルのBot)などとなるとwhisperかwhisperxが勝ります。

https://transkriptor.com/ja/discover/


先ずは動画のダウンロード最強ツールであるyt-dlpを導入

yt-dlpは昔からあったyoutube-dlというPythonのツールからフォークされたプロジェクトです。コマンドラインで動画のURLを渡すと後は勝手にダウンロードしてくれます。

先ずは上のリンクからGithubページに行きましてリリースファイルのところからyt-dlpをダウンロードします。

皆さんはウインドウズでしょうからそのつもりで解説していきますが、このyt-dlp.exeファイルをダウンロードしましょう。

Win8+というのはウインドウズ8からそれ以上の新しいやつWin10とかWin11とかに対応という意味です。

ダウンロードしたら自分のユーザー領域に適当にフォルダを作って移動します。私はこんなのを作りました。shironoのところは自分のユーザー名で。

C:\Users\shirono\local


ffmpegとffprobのインストール

さっきのリリースファイルの下の方にずっといくとffmpegへのリンクがありますので、飛びます。

緑のどでかいダウンロードボタンがあるので押すと次の画面に実行ファイルへのリンクがあります。

BtbNというのに更に飛びます
最新ので大丈夫でしょう
Latest Auto-Buildから
ffmpeg-master-latest-win64-gpl-shared.zip
をゲットして下さい

そこからはこちらのサイトを参考にパスを設定までやってください。

上の記事のここまでやってください

同じ手順でyt-dplにもパスの設定をして下さい。
面倒くさいのでyt-dplも同じbinフォルダに入れちゃうというのもありです。

パスを設定したら一度コマンドラインは閉じて新しいのを開きます。設定が反映しませんので。

私は解凍したzipからbinフォルダに入っているdllとexeを全部さっきのlocalのフォルダにコピーしました。で、このlocalにパスを設定してどこからでも使えるようにしました。


Twitterの動画をyt-dlpでダウンロード

それではここまでのテストに一つダウンロードしてみましょう

これのリンクをコピーをしてそれを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が来るのですがそれはダウンロード大変です。

インストールされたcondaコマンドはAnaconda Promptから使います。

で、この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分くらいです。