Windows11のWSL上にcudaとcudnnを入れてfaster-whisperを動かす(faster-whisper 1.0.3)
概要
文字起こし用のAIモデルであるfaster-whisperをWindows11で動かしたときの、導入の流れを紹介します
WSL上にインストールしたUbuntuにCUDA等をいれ、WSL上でfaster-whisperを動作させました(最初Windows上に直接入れようとしたんですがうまく動かなかった・・・)
環境はwindows11搭載の自作PCでスペックは下記になります
スペック | |
---|---|
OS | Windows11 24H2 |
CPU | Ryzen5 3600 |
メモリ | 32GB |
GPU | RTX 4060 Ti 16GB |
WSL上でcuda使うとこんな感じになるらしい
https://docs.nvidia.com/cuda/wsl-user-guide/index.html# より
備考
余談ですがGTX1650でも同様の手順で導入はできました。ただしmediumモデルを動かすのが限界で、large-v2/v3はおそらくVRAMが4GBしかないせいで動きませんでした
色々試してたときのスクラップ: https://zenn.dev/yuuri23/scraps/49adab02ff9e06
faster-whisper 1.0.3が要求するCUDA/cuDNNのバージョン
2024/10/6 現在のfaster-whisperの最新バージョンは1.0.3で、README記載のRequirementsが下記になります
- cuDNN 8 for CUDA 12 or cuBLAS for CUDA 12(GPU extentionを使う場合)
https://github.com/SYSTRAN/faster-whisper?tab=readme-ov-file#requirements
なのでWSL上に下記バージョンのCUDA/cuDNNをインストールしました
- cuda tool kit CUDA Toolkit 12.6 Update 2
- cuDNN v8.9.7 (December 5th, 2023), for CUDA 12.x
Windows11の設定
wsl2のインストール
参考: https://learn.microsoft.com/ja-jp/windows/wsl/install
管理者モードでターミナル(PowerShell)を開き、下記コマンドを実行しWSLをインストールします
wsl --install
デフォルトでインストールされたUbuntuのバージョンは24.04LTSでした
yuuri@hotcocoa:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.1 LTS"
備考
WSL 2.3.24 で下記のエラーがでてうまくセットアップできませんでした
PS C:\Users\yuuri> wsl --install
クラスが登録されていません
エラー コード: Wsl/CallMsi/Install/REGDB_E_CLASSNOTREG
githubから2.3.22をダウンロードした(wsl.2.3.24.0.x64.msi をダウンロード・実行した)ところうまくインストールされるようになりました
NVIDIAのドライバのインストール
手持ちのGPU/環境にあうドライバを選択・インストールします
自分は下記のものがインストールされました
- GeForce Game Ready ドライバー 565.90 | Windows 11
WSLでの設定
CUDA12.6のインストール
下記のOption 1にしたがってwsl内にcuda設定を行います
セクション内のリンクを開くと、下記のようにインストール手順が表示されるのでこれをwsl内部で実行します
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.6.2/local_installers/cuda-repo-wsl-ubuntu-12-6-local_12.6.2-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-6-local_12.6.2-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6
参考
ccuDNN v8.9.7 for CUDA 12.xのインストール
下記ページから「Local Installer for Ubuntu22.04 x86_64 (Deb)」をダウンロードします(このときNVIDIA accountでログインする必要があります)
ダウンロードしたファイルをWSLへコピーしインストールを行います
# Windowsのダウンロードフォルダからwslのカレントディレクトリへファイルをコピーする
yuuri@hotcocoa:~$ cp /mnt/c/Users/yuuri/Downloads/cudnn-local-repo-ubuntu2204-8.9.7.29_1.0-1_amd64.deb .
# インストールを行う
yuuri@hotcocoa:~$ sudo dpkg -i cudnn-local-repo-ubuntu2204-8.9.7.29_1.0-1_amd64.deb
[sudo] password for yuuri:
Selecting previously unselected package cudnn-local-repo-ubuntu2204-8.9.7.29.
(Reading database ... 54408 files and directories currently installed.)
Preparing to unpack cudnn-local-repo-ubuntu2204-8.9.7.29_1.0-1_amd64.deb ...
Unpacking cudnn-local-repo-ubuntu2204-8.9.7.29 (1.0-1) ...
Setting up cudnn-local-repo-ubuntu2204-8.9.7.29 (1.0-1) ...
The public cudnn-local-repo-ubuntu2204-8.9.7.29 GPG key does not appear to be installed.
To install the key, run this command:
sudo cp /var/cudnn-local-repo-ubuntu2204-8.9.7.29/cudnn-local-08A7D361-keyring.gpg /usr/share/keyrings/
yuuri@hotcocoa:~$ sudo cp /var/cudnn-local-repo-ubuntu2204-8.9.7.29/cudnn-local-08A7D361-keyring.gpg /usr/share/keyrings/
yuuri@hotcocoa:~$ sudo apt update
yuuri@hotcocoa:~$ sudo apt install libcudnn8
yuuri@hotcocoa:~$ sudo apt install libcudnn8-dev
yuuri@hotcocoa:~$ sudo apt install libcudnn8-samples
参考
pythonの設定
デフォルトでPython 3.12が入ってるようなのですが、pip/venvが入っていないのでこのあたりをインストールします
yuuri@hotcocoa:~$ sudo apt install python3-pip
yuuri@hotcocoa:~$ sudo apt install python3-venv
参考
faster-whisperを動かす
事前準備
venvの用意とfaster_whisperのインストールを行います
yuuri@hotcocoa:~/whisper-test$ python3 -m venv .venv
yuuri@hotcocoa:~/whisper-test$ source .venv/bin/activate
(.venv) yuuri@hotcocoa:~/whisper-test$ pip3 install faster_whisper
faster-whisperを実行する
下記サイトからコードをお借りして、文字起こしする音声ファイル名を記載します。
### 文字起こし(faster_whisperを使用)
from faster_whisper import WhisperModel
# モデル設定
model_size = "large-v3"
# GPU設定
model = WhisperModel(model_size, device="cuda", compute_type="float16")
AUDIO_FILE = "record_test.wav" #文字起こしする音声データのファイル名を記載
# 文字起こしの実行
segments, info = model.transcribe(AUDIO_FILE, beam_size=5)
# 結果の表示
print("Detected language:", info.language)
for segment in segments:
print(f"[{segment.start:.2f} - {segment.end:.2f}]: {segment.text}")
venvの環境内にファイルを配置し、実行してみます
(.venv) yuuri@hotcocoa:~/whisper-test$ python whisper.py
config.json: 100%|█████████████████████████████████████████████████████████████████| 2.39k/2.39k [00:00<00:00, 27.2MB/s]
vocabulary.json: 100%|█████████████████████████████████████████████████████████████| 1.07M/1.07M [00:00<00:00, 7.38MB/s]
preprocessor_config.json: 100%|████████████████████████████████████████████████████████| 340/340 [00:00<00:00, 4.36MB/s]
tokenizer.json: 100%|██████████████████████████████████████████████████████████████| 2.48M/2.48M [00:00<00:00, 3.02MB/s]model.bin: 100%|███████████████████████████████████████████████████████████████████| 3.09G/3.09G [00:50<00:00, 61.5MB/s]
Detected language: ja██████████████████████████████████████████████████████████████| 2.48M/2.48M [00:00<00:00, 3.03MB/s]
[0.00 - 5.30]: 雨にも負けず 風にも負けず
[5.30 - 13.06]: 雪にも夏の暑さにも負けぬ 丈夫な体を持ち
[13.06 - 16.30]: 欲はなく 決して怒らず
[16.30 - 19.36]: いつも静かに笑っている
[22.30 - 27.78]: 一日に玄米四合と 味噌と少しの野菜を食べ
[27.78 - 33.16]: あらゆることを 自分を感情に入れずに
[33.16 - 37.64]: よく見聞きし分かり そして忘れず
[37.64 - 45.46]: 野原の松の林の影の 小さなかやぶきの小屋にいて
[46.60 - 51.66]: 東に病気の子供あれば 行って看病してやり
[51.66 - 56.46]: 西に疲れた母あれば 行って
[56.46 - 57.76]: その稲の手を 探してやる
[57.76 - 65.88]: 南に死にそうな人あれば 行って怖がらなくてもいいといい
[65.88 - 72.60]: 北に喧嘩や訴訟があれば つまらないからやめろといい
[72.60 - 80.26]: 日出りの時は涙を流し 寒さの夏はおろおろ歩き
[80.26 - 85.92]: みんなにデクノボーと呼ばれ 褒められもせず
[85.92 - 87.74]: 苦にもされず 涙を流し 涙を流し
[87.76 - 91.52]: そういうものに 私はなりたい
「西に疲れた母あれば、その稲の束を負い」の箇所がやや微妙な感じですがだいたい良い感じではないでしょうか
Discussion