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
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
文字起こししてみる
以下のコードから文字起こしします。
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以外のファイル名にして実行してください。
以下に解決策が載っていました。
-
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を使うときは対応するPytochをインストール
仮想環境を作った段階ではGPUに対応したPytorchがインストールされていません。pip
コマンドから新たにPytorhをインストールします。
まずターミナルから以下のコマンドを実行して現在インストールされているCUDAのバージョンを確認します。
nvcc --version
対応するPytorchのバージョンをHPから確認してインストールします。
-
PyTorch
pytorch.org
モデルのサイズによってはGPUのメモリが足りずにエラーが出てしまいます。
まとめ
Whisperを利用するには以下の手順で行います。
- GitHubからWhisperのデータをGit経由でダウンロードする
- FFmpegをホームページやScoop経由でダウンロードする
- Pythonコードを書いて実行
注意点として、GPUを使う場合は専用のPytorchをインストールするする必要があります。
オススメ書籍
・Python1年生
コードを書くときにどうしても最低限の知識は必要になります。
Pythonの基礎を学びたいときはこの書籍から始めるのがオススメです。
丁寧な表現で導入に向いています。
-
Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ
www.amazon.co.jp
・Kaggleで勝つデータ分析の技術
データ分析技術を上げたいときにKaggleはオススメです。
Kaggleに参加するにあたり技術的に非常に勉強になる書籍があります。
-
Kaggleで勝つデータ分析の技術
www.amazon.co.jp
・PyCaretで学ぶ 機械学習入門
機械学習モデルを構築するのは想像以上に手間がかかります。
その一連の作業を自動化できるPyCaretというライブラリの使い方が分かりやすく解説されています。
-
PyCaretで学ぶ 機械学習入門
www.amazon.co.jp