前のページまでで CPU による音声認識や話者分離ができるようになりました.PC の性能にも大きく依存しますが,large モデルを用いて音声認識と話者分離まで実行すると,10分間の音声データについて12分程度の処理時間が必要でした.つまり,処理時間の方が長いことからリアルタイムに処理を行うことは不可能ですし,数時間の会議音声データを処理するためにさらに長い処理時間が必要となってしまうことになります.
ここでは NVIDIA 製 GPU を搭載した Windows PC をりようしてより高速な処理を行う方法について説明します.
まず,nvidia-smi コマンドを用いて,GPU の状態を確認してみます.ここで,-l 3 オプションを付与すると,3秒ごとに情報が更新されます.コマンドを終了するには Ctrl + C を押してください.
(base) PS C:\Users\...\whisperx> nvidia-smi -l 3 ⏎ +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 591.94 Driver Version: 591.94 CUDA Version: 13.1 | +-----------------------------------------+------------------------+----------------------+ | GPU Name Driver-Model | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA GeForce RTX 4060 ... WDDM | 00000000:01:00.0 Off | N/A | | N/A 44C P0 1W / 135W | 0MiB / 8188MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+
上の出力結果のように CUDA Version が表示されていることを確認してください.このバージョン番号はサポート上限を意味しています.また,ここでは NVIDIA GeForce RTX 4060 を利用することとします.
音声認識や話者分離を GPU の並列処理によって高速化したいのですが,CUDA (Compute Unified Device Architecture: NVIDIAが開発したGPU向けの並列演算プラットフォーム) のドライバを別途インストールすることなく,CUDA をサポートする pytorch をインストールするだけで並列処理が可能になります.今回は Python 3.10 と CUDA 12.4 の組合せで実行しましょう.
このために,新たな Python 仮想環境を whisperx_gpu という名前で作成し,その環境を有効にします.
conda create -n whisperx_gpu python=3.10 -y conda activate whisperx_gpu
次に,whisperx をインストールしますが,pip install whisperx では CPU 版 torch などの関連パッケージも含め一括でインストールされていしまいます.今回は GPU 版の torch をインストールしたいので,次のとおり --no-deps オプションを付与して関連パッケージをインストールしないようにします.このとき,エラーが表示されても構わず進んでください.
pip install whisperx --no-deps
huggingface-hub はバージョン 1.0 未満にするよう警告が出ることがあるようなので,バージョンを1.0未満に指定してインストールします.(しかしながら,次のステップで結局アップデートされてしまうので,バージョン番号を指定しなくても問題ないように思われます.)
pip install "huggingface-hub<1.0"
続いて,torch 以外の関連パッケージをインストールします.ここでもエラーが表示されたとしても構わず進んでください.
pip install ctranslate2 faster-whisper transformers pandas nltk omegaconf pyannote-audio torchcodec
最後に CUDA 12.4 に対応した torch をインストールします.
pip install --force-reinstall torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
インストールされたパッケージを確認しておきましょう.CUDA 12.4 に対応した torch,torchaudio,torchvision がインストールできていることに注意して下さい.
(whisperx_gpu) PS C:\Users\...\whisperx> pip list | Select-String whisper ⏎ faster-whisper 1.2.1 whisperx 3.8.6 (whisperx_gpu) PS C:\Users\...\whisperx> pip list | Select-String torch ⏎ pytorch-lightning 2.6.5 pytorch-metric-learning 2.9.0 torch 2.6.0+cu124 torch-audiomentations 0.12.0 torch_pitch_shift 1.2.5 torchaudio 2.6.0+cu124 torchcodec 0.13.0 torchmetrics 1.9.0 torchvision 0.21.0+cu124 (whisperx_gpu) PS C:\Users\...\whisperx> pip list | Select-String pyannote ⏎ pyannote-audio 4.0.4 pyannote-core 6.0.1 pyannote-database 6.1.1 pyannote-metrics 4.1 pyannote-pipeline 4.0.0 pyannoteai-sdk 0.4.0 (whisperx_gpu) PS C:\Users\...\whisperx>
環境が構築できたら,GPU を利用した演算が可能であるか簡単に確認してみましょう.次のようなコードをテキストエディタで作成し,任意のファイル名で(例えばcuda_test.pyで)保存します.
cuda_test.py
import torch
print(torch.cuda.is_available())
上のコードを実行して True が表示されたら成功です.次に進んでください.
(whisperx_gpu) PS C:\Users\...\whisperx> python .\cuda_test.py ⏎
True
(whisperx_gpu) PS C:\Users\...\whisperx>
ここまで準備ができたら GPU を用いて高速に処理しましょう.このために必要なオプションは --device cuda だけです.large モデルと turbo モデルで実行してみましょう.
whisperx --model large --language ja voice.m4a --device cuda -o output_large_cuda whisperx --model large --language ja voice.m4a --device cuda -o output_large_cuda_diarize --diarize whisperx --model turbo --language ja voice.m4a --device cuda -o output_turbo_cuda whisperx --model turbo --language ja voice.m4a --device cuda -o output_turbo_cuda_diarize --diarize
実行中に別のターミナルを起動して GPU の状態を確認してください.消費電力(81W),GPUメモリ使用量(5983MiB),GPUコア利用率(100%)がいずれも上昇していることが分かりました.
(whisperx_gpu) PS C:\Users\...\whisperx> nvidia-smi -l 3 ⏎ +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 591.94 Driver Version: 591.94 CUDA Version: 13.1 | +-----------------------------------------+------------------------+----------------------+ | GPU Name Driver-Model | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA GeForce RTX 4060 ... WDDM | 00000000:01:00.0 Off | N/A | | N/A 56C P0 81W / 112W | 5983MiB / 8188MiB | 100% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | 0 N/A N/A 16844 C ...isperx_gpu_diarize\python.exe N/A | +-----------------------------------------------------------------------------------------+
CPU で処理した場合,large モデルの音声認識で8分20秒,発話分離も含めて12分00秒でしたが,GPUを利用することで,それぞれ50秒,1分08秒という圧倒的な結果になりました.GPU によっておよそ10倍の速度で実行できたことになります.
ここで様々な処理時間を表にまとめておきます.(時間計測はそれほど正確ではなく,実験を何度も繰り返して平均時間を求めるようなこともしていません.あくまで一例として示しています.)
no |
Model |
CPU/GPU |
diarize |
large |
turbo |
|---|---|---|---|---|---|
| 1 | aorus CPU | Core i9 | - | 8分20秒 | 5分00秒 |
| 2 | aorus CPU | Core i9 | yes | 12分00秒 | 9分00秒 |
| 3 | aorus GPU | GeForce RTX 4060 Laptop | - | 50秒 | 35秒 |
| 4 | aorus GPU | GeForce RTX 4060 Laptop | yes | 1分08秒 | 50秒 |
| 5 | Mac Studio | M1 Max | - | 6分40秒 | 2分40秒 |
| 6 | Mac Studio | M1 Max | yes | 13分20秒 | 11分00秒 |
| 7 | Mac Studio | 32コアGPU | - | - | 1分20秒 |
| 8 | MacBookAir | M2 | - | 9分10秒 | 3分35秒 |