【Python】Whisperを使ってローカルで文字起こししてみる

概要

pythonで文字起こしできるOpenAIのWhisperが公開されたのでさっそくローカルで動かしてみました。
この間、stable diffusionをローカルで動かしたくてGPUを12Gぐらい積んだPCをうっかり買ったんですがこいつが役に立つ日が来そうです。

更新履歴

2022-11-19 CUDAを使う方法を追記

参考

GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision
Robust Speech Recognition via Large-Scale Weak Supervision - openai/whisper

Zenn
How to make it work with CUDA enabled GPU? GTX 1050 Ti- 4GB · openai/whisper · Discussion #47
edit : i prepared an excellent tutorial video after my all experience : I have installed python 3.9.9 Then I have run th...

環境

Windows10
Python 3.9.12

コード

本体のインストール

whisper本体をインストールします。

pip install git+https://github.com/openai/whisper.git

ffmpegのインストール

ffmepegもインストールします。
が、chocoを使ってインストールするのが面倒だったので下記サイトからffmpegをダウンロードして、音声ファイルと同じフォルダに置いても動きました。

FFmpeg

GPUを使う

GPUを使うにはGPU対応のtorchをインストールすると良いそうです。
一旦アンインストールしてインストールし直します。

pip uninstall torch
pip install torch --extra-index-url https://download.pytorch.org/whl/cu116

CPUでmediumモデルを動かすと30秒あたりの書き出しに3分ぐらいかかってました。
が、GPUだと15分の音声が1分ぐらいで書き出し終わりました。すごいなGPU…。

動画。音声ファイルの書き出し実行

書き出しの実行をします。
この指定だと同じフォルダに文字起こししたshift-jisのtxtファイル(改行なし)と、字幕ファイルのvttファイルができます。
指定するファイルはmp3でもmp4でも大丈夫でした。便利だなあ…。

whisper --model medium --task transcribe --language Japanese 書き出したいファイル名.mp3

下記のような感じでターミナルに随時書き出されました。
modelはsmallよりmediumのほうがだいぶ精度が良かったです。疑問符とか感嘆符もついててすごいですね…、切り抜きとか捗りそう。

CUDAを使う

CUDAはGPUを並列処理で動かす仕組みらしいです。
コマンドで使う分には特に意味がなさそうですが設定してみます。
ちょうどCUDAに対応しているらしいNVIDIAのGPUを持っているので使ってみます。

使用しているGPUの最新のドライバをインストールします。

NVIDIA 公式最新ドライバーのダウンロード
最新の NVIDIA 公式ドライバーをダウンロードして、PC ゲーミング体験を向上し、アプリケーションをより速く実行しましょう。

CUDA ツールキットをダウンロードしてインストールします。特にデフォルトからかえていません。

CUDA Toolkit 12.1 Downloads
Get the latest feature updates to NVIDIA's proprietary compute stack.

CUDA対応のpytorchのインストール。

python -m pip install --upgrade --force-reinstall torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116

コマンドでpytorchのデフォルトを確認する。

whisper --help | findstr -i

下記のように「default: cuda」となっていれば使えているようです。
–device DEVICE device to use for PyTorch inference (default: cuda)

コマンド実行してみます。オプションで念のため「–device cuda」としてみました。タスクマネージャーを見るとGPUで動いているようです。

whisper --model medium --task transcribe --language Japanese '書き出したいファイル名.mp4' --device cuda

おわり。