【Whisper】自分のPCで無料の高性能な文字起こし

コラム/体験記公開広告

OpenAIが公開している音声認識AI、Whisperを自分のPC(ローカル)で利用できる方法を解説します。
通常はAPIを使って1分1円程度で利用(別サイト)できますが、無料で利用したい方・機密情報を扱いたい方にオススメです。

GitHub(別サイト)より必要なデータをダウンロードします。

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

併せて音声変換ツールであるFFmpegもscoop経由でダウンロードします。

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

後はPythonコードを書いて指定の音声データや動画データを文字起こしするだけです。
モデルは5種類あり、性能順にlarge>small>base>medium>tinyです。

import whisper

model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])
この記事の内容
  1. 仮想環境の構築
  2. GitHubからインストール
  3. ffmpegのインストール
  4. 文字起こししてみる
  5. まとめ
  6. 関連記事

仮想環境の構築

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

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(別サイト)

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

文字起こししてみる

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

import whisper

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

モデルの種類と性能

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

種類 パラメータ数 英語専用モデル 多言語モデル 必要な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(別サイト)

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を使うときは対応するPytochをインストール

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

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

nvcc --version

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

PyTorch Foundation - PyTorch(別サイト)

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

まとめ

Whisperを利用するには以下の手順で行います。

  1. GitHubからWhisperのデータをGit経由でダウンロードする
  2. FFmpegをホームページやScoop経由でダウンロードする
  3. Pythonコードを書いて実行

注意点として、GPUを使う場合は専用のPytorchをインストールするする必要があります。

関連記事

【PyAutoGUI】手軽にRPAツールを作ろう!

体験記の記事

関連する書籍

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