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"])
仮想環境の構築
既にインストール済みのライブラリが悪影響を与えないよう、仮想環境を構築して実行します。
最低限必要なコードを載せておきます。
python -m venv whisper
whisper\Scripts\Activate.ps1
詳細の手順を知りたい場合は以下を参考にしてください。
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 |
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以外のファイル名にして実行してください。
以下に解決策が載っていました。
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を利用するには以下の手順で行います。
- GitHubからWhisperのデータをGit経由でダウンロードする
- FFmpegをホームページやScoop経由でダウンロードする
- Pythonコードを書いて実行
注意点として、GPUを使う場合は専用のPytorchをインストールするする必要があります。
