Whisperで行う無料の文字起こし(自分のPCで動かす)

コラム/体験記公開広告

OpenAIが公開している音声認識AI、Whisperを自分のPC(ローカル)で利用できる方法を解説します。

この記事の内容
  1. 仮想環境の構築
  2. GitHubからインストール
  3. ffmpegのインストール
  4. 文字起こししてみる
  5. 関連記事

仮想環境の構築

既にインストール済みのライブラリが悪影響を与えないよう、仮想環境を構築して実行します。
最低限必要なコードを載せておきます。

python -m venv whisper
whisper\Scripts\Activate.ps1

詳細の手順を知りたい場合は以下を参考にしてください。

venvで気軽にPythonの仮想環境を構築する

GitHubからインストール

以下のコマンドでOpenAIのGitHub(別サイト)からWhisperライブラリをインストールします。

pip install git+https://github.com/openai/whisper.git

git+httpsを使ってGitHubから直接インストールするには、Gitがシステムにインストールされている必要があります。
事前にGitをインストールしておいてください。

Git(別サイト)git-scm.com

ffmpegのインストール

Whisperを使うには合わせてFFmpeg(エフエフエムペグ)(別サイト)という動画と音声を記録・変換・再生するためのフリーソフトが必要です。
FFmpegをインストールするためにScoop(スクープ)を使います。

Scoopを使用すると、Windows上でコマンドラインからアプリケーションやユーティリティを簡単にインストール、更新、管理することができます。
Scoopがまだインストールされていない場合は、PowerShellを開き、以下のコマンドを実行してScoopをインストールします。

Set-ExecutionPolicy RemoteSigned -scope CurrentUser
iwr -useb get.scoop.sh | iex

Scoopがインストールされたら、以下のコマンドを使用してFFmpegをインストールします。

scoop install ffmpeg

インストールが成功したかどうかを確認するためには、コマンドプロンプトまたはPowerShellを開き、以下のコマンドを実行します。
ffmpegのバージョン情報を表示すれば、インストールは成功しています。

ffmpeg -version

文字起こししてみる

以下のコードから文字起こしします。

音声・動画ファイルをFFmpegで変換し、Whisperのモデルのtranscribeで処理して文字にする流れ。FFmpegはscoopで、WhisperはGitHubからインストールし、GPUを使う場合は対応するPyTorchが別に必要。
音声・動画から文字までの流れと、各段で使うもの
import whisper

model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])

モデルの種類と性能

使用可能なモデルは5種類です。パラメータ数が多くなるほど文字起こし性能は上がり、処理時間が伸びます。

tinyからlargeまでの5モデルについて、横軸をパラメータ数として、largeを1とした処理速度の倍率(tinyは約32倍、largeは1倍)と必要なGPUメモリ(約1GBから約10GB)を2段のグラフで示した図。
パラメータ数が増えると遅くなり、GPUメモリが要る(本文の表の値)
種類 パラメータ数 英語専用モデル 多言語モデル 必要なGPUメモリ 処理速度:large比
tiny 39 M tiny.en tiny ~1 GB ~32x
base 74 M base.en base ~1 GB ~16x
small 244 M small.en small ~2 GB ~6x
medium 769 M medium.en medium ~5 GB ~2x
large 1550 M N/A large ~10 GB 1x
使用可能なモデルと性能(参考:GitHub(別サイト))

whisper.pyでは実行できない!

実行するファイル名をwhisper.pyというファイル名にして実行すると、以下のようなエラーが出てしまいます。

AttributeError: partially initialized module 'whisper' has no attribute 'load_model' (most likely due to a circular import)

解決策としてファイル名を例えばwhisper_test.pyのようにwhisper.py以外のファイル名にして実行してください。
以下に解決策が載っていました。

AttributeError: partially initialized module 'whisper' has no attribute 'load_model' (most likely due to a circular import) · openai whisper · Discussion #959 · GitHub(別サイト)github.com

CPUで実行する場合はfp16=Falseを記載

CPUを使って実行する時、以下の警告が出る場合があります。

UserWarning: FP16 is not supported on CPU; using FP32 instead warnings.warn("FP16 is not supported on CPU; using FP32 instead")

その際はmodel.transcribe()の引数にfp16=Falseを追加します。

result = model.transcribe("voice.mp4", fp16=False)

GPUを使うときは対応するPyTorchをインストール

仮想環境を作った段階ではGPUに対応したPyTorchがインストールされていません。
pipコマンドから新たにPyTorchをインストールします。

まずターミナルから以下のコマンドを実行して現在インストールされているCUDAのバージョンを確認します。

nvcc --version

対応するPyTorchのバージョンをHPから確認してインストールします。

PyTorch Foundation - PyTorch(別サイト)pytorch.org

モデルのサイズによってはGPUのメモリが足りずにエラーが出てしまいます。

関連記事

PyAutoGUIで作るRPAツール

venvで気軽にPythonの仮想環境を構築する

コラム

関連する書籍

執筆・監修のご依頼は、ご相談のページで受け付けています。