面倒な文字起こしは、ゲーミングPCを使って AI に任せましょう。（第1弾：openai-whisper編）

# はじめに

今回は Windows 端末で Whisper を GPU で動かしてみました。  

Whisper は CPU でも動かすことができますが、やはり CPU で処理するとかなり時間がかかってしまい、実用的に使うのは難しい感じでした。  
そこで、 FPS ゲームや Minecraft のために買ったはいいけど、ろくにゲームをする時間がなくて、宝の持ち腐れになっていたゲーミングPCを使って、 Whisper を動かしてみました。

なお、 CPU で Whisper を動かすだけなら、下記の記事の通りで OK です。  

https://qiita.com/vfuji/items/72083b8e64d8a509be67

この記事の後掲として openai-whisper よりも早く動作すると言われている faster-whisper を使った文字起こしの記事も作成しました。
後掲の記事は下記からご覧ください。

https://qiita.com/IoriGunji/private/dcf33196700f85662c2d

# 環境

今回の環境は下記のとおりです。  
なお、 NVIDIA 製の GPU が必須になります。

## 端末

- **OS：** Windows 11 Home
- **CPU：** 13th Gen Intel Core i7-13620H 2.40 GHz
- **メモリ：** 32GB
- **GPU：** NVIDIA GeForce RTX 4060 Laptop（VRAM：8GB）

## Python 実行環境

Python は10系統のものが必要になるので、注意してくだだい。

- **Python：** 3.10.11
- **Python バージョン管理ツール：** pyenv-win（ver 3.1.1）
- **Python パッケージ管理ツール：** Poetry（ver 1.8.3）

Python 仮想環境の構築方法はこちらご覧ください。

https://qiita.com/IoriGunji/items/290db948c11fdc81046a#poetry-%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D

# 環境構築（セットアップ編）

Whisper を GPU で動かすには下記のものが必要になります。

- Build Tools for Visual Studio
- CUDA Toolkit（ver.11.8）
- cuDNN Library
- FFmpeg

## Build Tools for Visual Studio

### ダウンロード

下記のサイトから **Build Tools for Visual Studio** をダウンロードします。  

https://visualstudio.microsoft.com/ja/downloads/

画面を下にスクロールします。  
`Tools for Visual Studio` をクリックし、 `Build Tools for Visual Studio 2022` の `ダウンロード` をクリックしてダウンロードします。  

![download_visual_studio_tools.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/ea486776-e097-8d67-0cd0-adef02b46b9b.png)

### インストール

ダウンロードした `vs_BuildTools` を実行し、インストーラーを起動します。  

`続行(O)` をクリックします。

![install_visual_studio_tools_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/5a27c140-a799-a65e-6cb9-11bf6ebc0c65.png)

`C++ によるデスクトップ開発` にチェックを入れ、右下の `インストール(I)` をクリックします。

![install_visual_studio_tools_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/56e9b2a2-ff81-10be-0bea-25d8492b3895.png)

インストールが完了するのを待ちます。

![install_visual_studio_tools_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/575a5290-3a83-29bf-207f-4b2fb17f590e.png)

インストールが完了したら、 `OK(O)` をクリックし、画面右上の `☓` をクリックして、インストーラーを閉じます。

![install_visual_studio_tools_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/43406eb7-f5ee-0eb0-3ea8-d707f45371b0.png)

## CUDA Toolkit

CUDA Toolkit のバージョンは 11.8 を利用します。

### ダウンロード

下記のサイトから **CUDA Toolkit** をダウンロードします。

https://developer.nvidia.com/cuda-toolkit-archive

`CUDA Toolkit 11.8.0` をクリックします。

![download_cudatoolkit_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/502a88c9-18cf-2adc-b571-7ffa41432644.png)

利用してる環境に合わせて選択していきます。

1. `Operating System` は `Windows` をクリックします。
1. `Architecture` は `x86_64` をクリックします。
1. `Version` は `11` をクリックします。
1. `Installer Type` は `exe (local)` をクリックします。
1. `Download (3.0GB)` をクリックして、ダウンロードします。

![download_cudatoolkit_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/f0b0c44a-e130-3a2d-7764-47098d4bd487.png)

### インストール

ダウンロードした `cuda_11.8.0_522.06_windows.exe` を実行し、任意のフォルダに解凍します。

![rapture_20250108165505.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/e0976bec-cc99-c6d0-0d8a-117a809c69b0.png)

解凍が終わるのを待ちます。

![Install_cudatoolkit_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/e205594d-39ea-3119-a098-e75e509039b1.png)

解凍が終わるとインストーラーが自動で起動します。
システムの互換性チェックが終わるのを待ちます。

![Install_cudatoolkit_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/a969a567-0a84-4333-de3d-222f9c4a8baf.png)

`同意して続行する(A)` をクリックします。

![Install_cudatoolkit_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/93b8b079-2af3-c2f1-e063-92a73d0c5487.png)

インストールオプションは `高速(推奨)(E)` のまま `次へ(N)` をクリックします。

![Install_cudatoolkit_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/323e6950-79ba-0342-5565-45c68a101fdf.png)

`I understand, and wish to continue the installation regardless.` にチェックを入れて `NEXT` をクリックします。

![Install_cudatoolkit_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/b1517d63-7079-3c9a-0aa5-aa5ee2156d66.png)

インストールが完了するのを待ちます。

![Install_cudatoolkit_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/daa2ca72-6de5-f34f-0078-ddbe88853815.png)

`次へ(N)` をクリックします。

![Install_cudatoolkit_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/7706529d-85fe-a998-5a6a-fbc09f11ec6e.png)

`閉じる(C)` をクリックします。

![Install_cudatoolkit_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/29d9e6d3-eca3-5155-4e8b-e7f07d04fe0b.png)

## cuDNN Library

### ダウンロード

下記のサイトから **cuDNN Library** をダウンロードします。

https://developer.nvidia.com/cudnn

`Download cuDNN Library` をクリックします。

![download_cudnn_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/d29e1ba7-e3e9-5116-f926-657c912d5f6d.png)

下記の順で選択していきます。

1. `Operating System` は `Windows` をクリックします。
1. `Architecture` は `x86_64` をクリックします。
1. `Version` は `Tarball` をクリックします。
1. `CUDA Version` は `11` をクリックします。
1. `Download (640.3MB)` をクリックして、ダウンロードします。

> **補足**  
> cuDNN Library はWebサイトを開いた際に表示される最新バージョンをダウンロードすれば大丈夫です。

![download_cudnn_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/c601bae0-0982-e18a-a1e6-bbd07ca832cd.png)

### ライブラリの展開

ダウンロードした `cudnn-windows-x86_64-9.0.0.312_cuda11-archive.zip` を解凍し、下記の3つのフォルダを CUDA をインストールしたフォルダに移動させます。

- bin
- include
- lib

![install_cudnn_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/2ecb08db-7cd3-5a7d-6ac9-bfac3042f3ea.png)

※デフォルトでの CUDA のフォルダは `C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8` になります。

## FFmpeg

### ダウンロード

下記のサイトから **FFmpeg** をダウンロードします。

https://github.com/BtbN/FFmpeg-Builds/releases

`ffmpeg-master-latest-win64-gpl.zip` をクリックしてダウンロードします。

![download_ffmpeg_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/d68f4942-7790-6f8b-a92a-1f2000960d8d.png)

### インストール

ダウンロードした `ffmpeg-master-latest-win64-gpl.zip` を解凍して、任意のフォルダに配置します。
フォルダを配置したら `bin` フォルダに Path を通します。

# 環境構築（Python 編）

Whisper を使うにあたり Python 実行環境が必要になります。  
今回は pyenv-win と Poetry を利用する前提で進めています。

Python 実行環境の構築については、下記を参照してください。

https://qiita.com/IoriGunji/items/290db948c11fdc81046a

## 新規環境構築

下記の記事を参考にし、新しく Pyhon 実行環境を構築します。  
なお、 Python は10系統のものが必要になります。  
今回は、 Python 3.10.11 を利用しました。

> **補足**  
> 今回作成した仮想環境のプロジェクト名は `WhisperExecutionEnvironment` としています。

https://qiita.com/IoriGunji/items/290db948c11fdc81046a#%E6%96%B0%E8%A6%8F%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AE%E6%A7%8B%E7%AF%89

## PyTorch のインストール

Poetry を利用している場合は `pip` コマンドとは異なり、下記のコマンドを実行します。

```powershell
poetry source add --priority=explicit pytorch-gpu-src https://download.pytorch.org/whl/cu118
poetry add --source pytorch-gpu-src torch torchvision torchaudio
```

## Whisper のインストール

Poetry を利用している場合、普通に `add` コマンドを利用してもインストール出来ません。  
下記の手順でインストールします。

1. pyproject.toml を開きます。
1. `[tool.poetry.dependencies]` に `openai-whisper = {git = "https://github.com/openai/whisper.git", rev = "v20231117"}` を追記します。

   ```diff_toml
   [tool.poetry]
   name = "whisperexecutionenvironment"
   version = "0.1.0"
   description = ""
   authors = ["IoriGunji-Vantiq <igunji@vantiq.com>"]
   readme = "README.md"

   [tool.poetry.dependencies]
   python = "^3.10"
   torch = {version = "^2.5.1+cu118", source = "pytorch-gpu-src"}
   torchvision = {version = "^0.20.1+cu118", source = "pytorch-gpu-src"}
   torchaudio = {version = "^2.5.1+cu118", source = "pytorch-gpu-src"}
   + openai-whisper = {git = "https://github.com/openai/whisper.git", rev = "v20231117"}

   [[tool.poetry.source]]
   name = "pytorch-gpu-src"
   url = "https://download.pytorch.org/whl/cu118"
   priority = "explicit"

   [build-system]
   requires = ["poetry-core"]
   build-backend = "poetry.core.masonry.api"
   ```

1. `poetry update` コマンドを実行します。

> **補足**  
> 私の環境では依存関係にある `llvmlite (0.34.0)` のインストールに失敗しました。  
> 以下の手順で解決しました。
> 1. `poetry add llvmlite` コマンドを実行します。
> 1. 今度は `numba` がコケるので、 `poetry add numba` を実行します。

# Whisper の実行

準備が整ったら Whisper を実行してみます。

```powershell
poetry run whisper {your_file_name} --language Japanese --model medium --device cuda --output_dir data
```

```powershell
poetry run whisper sample_voice.mp4 --language Japanese --model medium --device cuda --output_dir data
```

> **補足**  
> 実行に失敗する場合は、端末を再起動してみましょう。

# 参考文献

下記のサイトを参考にさせて頂きました。

https://qiita.com/vfuji/items/72083b8e64d8a509be67

https://qiita.com/vfuji/items/5a9dd57f804511c5748e

https://note.com/hcanadli12345/n/nb8cf59ca2596#20e218c1-da0e-4be4-aa19-2228a0a99d7f

https://github.com/python-poetry/poetry/issues/7685

https://github.com/openai/whisper/discussions/683