🎙️

Whisperによる音声の書き起こし on Windows/CUDA

2023/04/16に公開

Whisper について

Whisper は音声の書き起こし(Speech-to-Text)を実現するモデルの一つです。
この記事は、2023/03時点で最新バージョンの20230314をWindows/CUDA環境で動作させるための手順を記録したものになります。

ffmpeg のインストール

Whisper は内部で ffmpeg を使用していますので scoop を使用してインストールします。
scoop がインストールされていない場合は scoop を先にインストールします。

> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
> irm get.scoop.sh | iex
> scoop install ffmpeg

CUDA のバージョンを確認

以下のコマンドで CUDA のバージョンを確認します。
もしインストールされていない場合は、こちらのページが参考になります。https://www.kkaneko.jp/tools/win/cuda.html

> nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

2023/03時点でCUDAの最新版は12.1なのですが、PyTorchが12.1に対応していないため、PyTorchが対応しているバージョンのCUDAをインストールします。
https://pytorch.org/get-started/locally/

私の場合は CUDA 11.8 を使用しました。

PyTorchの再インストール

CUDA のバージョンによって使用する PyTorch のバージョンが異なるため以下のページで確認をします。
https://pytorch.org/get-started/previous-versions/

例えば、 CUDA 11.6 の場合は以下のコマンドになります。

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116

CUDA 11.8 の場合は、2023/03現時点で最新版のPyTorchでOKのため以下のようにバージョン指定なしでインストール可能です。(今後バージョンが変わる可能性があるためCUDAのバージョンとPyTorchのバージョンの対応状況を都度確認することを推奨します)

pip3 install --force-reinstall torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

Whisper をインストールした際に PyTorch も一緒にインストールされるのですが、そのままではCUDA環境で実行することができないため、コマンドに --force-reinstall を追加して強制的に再インストールするのがポイントです。

numba のアップグレード

私が実行したときはPyTorch を再インストールしたときに以下のエラーがでました。
numba のバージョンが依存する numpy のバージョンと現時点の numpy のバージョンに互換性がないため numba が利用できない状態になっています。

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
numba 0.56.4 requires numpy<1.24,>=1.18, but you have numpy 1.24.1 which is incompatible.

今回は以下の記事を参考に numba をアップグレードすることで解決しました。

pip install -U numba

https://qiita.com/y-vectorfield/items/effed435c42d8bad42ac

Whisper を使用する

以上で Whisper を使用する準備は完了です。
以下のコードで音声ファイルを書き起こすことが可能になります。

import whisper

model = whisper.load_model("medium", device="cuda")
result = model.transcribe("audio.wav", language="ja")
print(result["text"])

Discussion