LoginSignup
5
2

WindowsゲーミングPCでOpenAI Whisperを使って自動文字起こしを実現する

Last updated at Posted at 2024-01-18

はじめに

OpenAI Whisper を Windows ゲーミング PC の GPU を使って実行する手順を紹介します。様々な検証が可能なように、Docker を使って環境を用意してみます。

前提条件

手順

手順は次のようになります。

  • CUDA バージョンの確認
  • Whisper コンテナのビルド
  • Whisper コンテナの起動
  • 動作条件の確認
  • Whisper の実行

CUDA バージョンの確認

WSL Ubuntu にてnvidia-smiを実行し、CUDA バージョンを確認します。私の環境では、次の通り、CUDA 12.1 でした。

$ nvidia-smi
Mon Jan 15 22:15:44 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.54                 Driver Version: 531.97       CUDA Version: 12.1     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                  Persistence-M| 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 L...    On | 00000000:01:00.0 Off |                  N/A |
| N/A   32C    P3               14W /  N/A|      0MiB /  8188MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

Whisper コンテナのビルド

github/openai/whisper/Setup の項目にWhisper は、Python 3.9.9、PyTorch 1.10.1 でトレーニングとテストを実施しているとのことです。また、Python 3.8 - 3.11 と最新の PyTorch で動作するでしょう、と記載があります。
私の環境は CUDA 12.1 ですので、nvidia/cuda:12.1.1-base-ubuntu22.04を利用しました。それぞれの環境似合わせて適切なコンテナイメージを nvidia/cudaより選択して下さい。

$ mkdir whisper1
$ cd whisper1

下記をDockerfileとして作成します。

FROM nvidia/cuda:12.1.1-base-ubuntu22.04 AS env_base
# Prepare env_base
RUN apt-get update && apt-get install --no-install-recommends -y \
    git vim build-essential python3-dev python3-venv python3-pip
RUN pip3 install --upgrade pip setuptools && \
    pip3 install torch torchvision torchaudio

# config whisper
FROM env_base AS whisper_base
# Install openai-whisper
RUN pip3 install -U openai-whisper
RUN apt-get update && apt-get install --no-install-recommends -y ffmpeg

上記を使って whisper が含まれた CUDA 処理が可能なコンテナをビルドします。

docker build . -t whisper1

上記を実行すると whisper1 という名前の image が作成されます。

$ docker image ls
REPOSITORY                                      TAG                             IMAGE ID       CREATED         SIZE
whisper1                                        latest                          d34d27ba6d55   3 hours ago     8.94GB

Whisper コンテナの起動

場所を確認し、dataディレクトリを作成します。Whisper コンテナと Windows でファイルをやり取りする場所となります。エクスプローラにて\\wsl.localhost\Ubuntu\home\ubuntu\whisper1\dataのようなディレクトリを探し、音声ファイルを保存します。

$ pwd whisper1
/home/ubuntu/whisper1
$ mkdir data

run.shを準備してコンテナを起動します。実行の際は、chmod 755 run.shを行なって./run.shなどと実行して下さい。

#!/usr/bin/env bash

DOCKER_ROOT="/whisper1" # specidy docker directory
CONTAINER_IMAGE="whisper1"  # set your image name
USER_COMMAND="/bin/bash"

# generate mount commands
DATA_VOLUME=" \
--volume $PWD/data:$DOCKER_ROOT/data"

# run docker with GPU
docker run -it --rm --gpus all \
      $DATA_VOLUME $USER_VOLUME $DEV_VOLUME \
      $CONTAINER_IMAGE $USER_COMMAND

動作条件の確認

コンテナ内にて/bin/bashの状態となっているはずです。Python と Torch のバージョンが Whisper の動作条件を満たしていることを確認します。

$ python3 --version
Python 3.10.12
$ pip3 list|grep torch
torch                    2.1.2
torchaudio               2.1.2
torchvision              0.16.2

念の為torch.cuda.is_available()Trueを返すことも確認しましょう。

$ python3
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
>>> exit()

Whisper の実行

/whisper1dataがマウントされています。次を実行すると GPU を使った処理が行われます。--device cpuとするとCPUのみで処理を行います。上で作成した環境は、GPU がデフォルトで動作する状態なので、--deviceを入力しない場合は、GPU が動作します。
次のコマンドでは、出力先が同じく data となっています。抽出したテキストはいくつかの形式で出力されています。

whisper {your_file_name} --language Japanese --model medium --device cuda --output_dir data

おまけ、処理時間

以前作成した記事では、Apple Macbook Pro にて whisper を動作させてみました。同一ファイルを用いて参考までに、比較してみました。次の内容は、# OpenAI Whisperを使ってノーコードで自動文字起こしを実現する、しかもタダおよびGoogle ColabでOpenAI Whisperを使って自動文字起こしを実現するから部分出来に抜粋したものです。最後の2つが今回の環境で測定した結果です。

ファイル種別 ファイルサイズ audio尺 モデル 処理時間 CPU/GPU
audio (m4a) 3.3MB 3分26秒 small 3分1秒 M1 CPU
audio (m4a) 3.3MB 3分26秒 medium 5分44秒 M1 CPU
audio (m4a) 3.3MB 3分26秒 large 12分41秒 M1 CPU
audio (m4a) 3.3MB 3分26秒 large-v2 9分55秒 M1 CPU
audio (m4a) 3.3MB 3分26秒 medium 1分20秒 Google Colab T4 16GB VRAM
audio (m4a) 3.3MB 3分26秒 medium 29秒 GeForce RTX4060 8GB VRAM
audio (mp4) 3.3MB 3分26秒 medium 3分52秒 Core i7-12650H

また、VRAM 8GB ですと--model large-v2 --device cuda--model large-v3 --device cudaは起動できませんでした。VRAM 10GB 程度は必要なようです。ということで、今回の比較は、medium を使った場合の結果を追加しています。

large-v3 を使おうとした際のエラーメッセージはこちらです。

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 26.00 MiB. GPU 0 has a total capacty of 8.00 GiB of which 0 bytes is free. Of the allocated memory 6.90 GiB is allocated by PyTorch, and 354.72 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

所感

Apple Macbook Pro M1 や Google Colab の NVIDIA T4 16GB 環境よりも GeForce RTX4060 8GB の方が高速なようです。NVIDIA GeForce RTX 4060 Laptop GPU は CUDA コアが 3072、8GB GDDR6 となります。一方 Google Colab に搭載されているデータセンター向けの NVIDIA T4 は CUDA コアが 2560、16G GDDR6 となります。T4 は 2018 年にリリースされた Turing 世代、GeForce RTX 4060 はコンシュマー向けとはいえ Ada Lovelace 世代の方が半分以下の時間で動作するとは、びっくりでした。この 5年ほどで GPU の性能が大幅に向上していることがわかりました。

参考

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2