Faster WhisperをDockerでワンパン起動させてみた (CUDA12)

チュートリアル

Faster Whisperを使用して、手早くかつ効率的に音声認識を行う方法について、Dockerを使った手順を初心者にもわかりやすく解説します。Dockerを用いることで、環境依存を減らし、どのようなマシンでも同じ条件でFaster Whisperを起動させることができます。


Faster Whisperについてはこちら

Faster WhisperのCTranslate2による高速な音声書き起こし【日本語版リポジトリ】
faster-whisper は、OpenAIのWhisperモデルをCTranslate2 を使って再実装したものです。CTranslate2は、Transformerモデルのための高速な推論エンジンです。この実装は、同じ精度でopena...

はじめに

Faster WhisperはOpenAIのWhisperモデルを高速化したもので、音声ファイルをテキストに書き起こす際に使用されます。この記事では、そのセットアップと基本的な使用方法を、Dockerを通じて解説します。Dockerを使うことで、インストールや設定の複雑さを大幅に削減できるため、より手軽にFaster Whisperの力を活用できます。

Dockerの準備

まず、Faster Whisperを動かすために必要なdocker-compose.ymlDockerfileの基本的な内容から見ていきましょう。

docker-compose.ymlの設定


services:
  app:
    build: .
    volumes:
      - ./:/app

    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [ gpu ]
    working_dir: /app
    tty: true

この設定ファイルでは、アプリケーションがDockerコンテナ内で動くための基本設定を行います。特に、NVIDIAのGPUを使用する設定が含まれているため、音声認識の処理速度が大幅に向上します。

Dockerfileの内容


FROM nvidia/cuda:12.0.1-cudnn8-runtime-ubuntu20.04
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update \
    && apt-get upgrade -y \
    && apt-get install -y --no-install-recommends \
        gcc \
        curl \
        wget \
        sudo \
        pciutils \
        python3-all-dev \
        python-is-python3 \
        python3-pip \
        ffmpeg \
        portaudio19-dev \
    && pip install pip -U

RUN pip install faster-whisper

このDockerfileでは、Faster Whisperが必要とする依存関係をインストールし、最後にfaster-whisper自体をインストールします。nvidia/cudaイメージをベースにしているため、GPUを活用した高速な音声認識処理が可能です。

起動手順

DockerとDocker Composeがインストールされている環境では、以下のコマンドでFaster Whisperを含むコンテナをビルドし、起動します。


C:\Prj\faster-whisper>docker-compose up

このコマンド一つで、必要な環境が全てセットアップされ、Faster Whisperが使用可能な状態になります。

デモスクリプトの実行

セットアップが完了したら、実際に音声ファイルをテキストに書き起こしてみましょう。以下のデモスクリプトを使用します。


from faster_whisper import WhisperModel

model_size = "large-v3"  # モデルのサイズを指定

# GPUでFP16を使用して実行
model = WhisperModel(model_size, device="cuda", compute_type="float16")

# またはGPUでINT8を使用して実行
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")
# またはCPUでINT8を使用して実行
# model = WhisperModel(model_size, device="cpu", compute_type="int8")

segments, info = model.transcribe("audio/Word2Motion/001/02_nodding.wav", beam_size=5)

print("Detected language '%s' with probability %f" % (info.language, info.language_probability))
for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

コンテナ内でこのスクリプトを実行するには、まずコンテナのシェルにアクセスします。


C:\Prj\faster-whisper>docker-compose exec app /bin/bash

そして、上記のスクリプトを実行します。


root@d065c8828702:/app# python demo/demo01_whisper_audio_transcription.py

preprocessor_config.json: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 340/340 [00:00<00:00, 188kB/s]vocabulary.json: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.07M/1.07M [00:00<00:00, 3.01MB/s]config.json: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2.39k/2.39k [00:00<00:00, 1.82MB/s]tokenizer.json: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2.48M/2.48M [00:01<00:00, 1.76MB/s]model.bin: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3.09G/3.09G [04:29<00:00, 11.4MB/s]
Detected language 'ja' with probability 0.987793███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3.09G/3.09G [04:29<00:00, 11.7MB/s]
[0.00s -> 5.10s] 本日は、大規模

これにより、指定した音声ファイルがテキストに書き起こされ、検出された言語と各セグメント(テキスト)の時間範囲が表示されます。

まとめ

Dockerを利用することで、Faster Whisperのセットアップと実行が大幅に簡単になります。この記事を参考に、あなたもFaster Whisperを使って、効率的に音声ファイルをテキスト化してみてください。

リポジトリ

GitHub - Sunwood-ai-labs/faster-whisper-docker: Faster Whisper transcription with CTranslate2
Faster Whisper transcription with CTranslate2. Contribute to Sunwood-ai-labs/faster-whisper-docker development by creating an account on GitHub.

コメント

タイトルとURLをコピーしました