Whisperは、OpenAIがMITライセンスで公開した汎用音声認識モデル。機械学習の訓練済みのモデルなので、そのまま使うことができる。
https://openai.com/blog/whisper/
https://github.com/openai/whisper
これを試すために、ほぼまっさらなWindows11 Proの上に、インストールして、実際に使ってみた。そのときの手順は下記。
Pythonをインストール
Pythonの公式サイトから、Windows用のインストーラーをダウンロードしてインストールする。
Windowsでインストールするときは、ユーザ環境ではなく、ALLユーザの環境を選択して、インストール先をCドライブの下にフォルダを作成して、そこにインストールするのがよい。ユーザ環境にインストールする場合、ユーザ名で日本語が使われていたりして、実行時にエラーになるので。
PyTorchをインストール
インストールするコマンドを下記のpytorchのサイトで確認して実行する。
https://pytorch.org/get-started/locally/
NVIDIAのGPUがない普通のPC(とりあえずSurface Pro7)なので、PytorchもCPU版を選択した(CUDAなしの環境)。インストールは、Python標準についてくるpip3で。そのときのコマンドは下記。
pip3 install torch torchvision torchaudio
もし、pip3が見つからない場合は、Windowsを再起動してみる。パスが認識されていない可能性があるため。
FFMPEGをインストール
いろいろと検討したが、Windows用のパッケージ管理ツールのchocolateyを使うのが楽だった。
まずは、chocolateyをインストールする。Powershellを管理者権限で開いて下記を実行する。
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
インストール後、パスが正常に読み込まれていないようだったので、Windowsを再起動した。
Powershellを管理者権限で開いて、下記のコマンドを実行してffmpegをインストールする。
choco install ffmpeg
Rustをインストール
Whisperのページによると、念のため、 rustもインストールしておくとのこと。
pip install setuptools-rust
Gitをインストール
下記のサイトからWindows用のGitをダウンロードしてインストールする。
インストールしたら、Windowsを再起動する。
Whisperのインストール
Powershellを開いて、下記のコマンドを実行する
pip install git+https://github.com/openai/whisper.git
やっとインストールが完了。
Whisperで動画ファイルの音声起こしをやってみる
Powershellを起動して、下記の書式でWhisperを利用する。実際に動作するのは、Pythonのコードだが、使うだけならPythonを起動させなくてもいい。
whisper ファイル名 --language Japanese --model small
「–model xxx」のxxxには「tiny」「base」「small」「medium」「large」を選択して、指定する。モデルは、処理速度と精度のトレードオフになる。モデルがmedium、largeと大きくなるほど、処理負荷が増える。
利用するモデルの初回実行時には、モデルのダウンロードが行われるため、処理が始まるまでに時間がかかる。
実際に、1時間程度のMP4の動画の文字起こしを、モデルsmallでさせてみたところ、第10世代のCore i5での処理で、5時間かかって、30分弱しか処理できていない。認識の精度としては、漢字への変換も含めて、かなり読める精度だ。「xxx代」が「xxx台」になっているとか、コンテキストを読まないと変換できないものは、違っているけれど、おおむね文字起こしできている。
NVIDIAのGPUを入れて、CUDAで、Pytorchの処理をさせないと、高速化はできないということもわかった。CPUだけだと、向き不向きの不向きな処理なので、実用に耐えられる速度はだせないのかもしれない。「base」や「tiny」も試してみないことには結論はだせないけれども。