【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"])

仮想環境の構築

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

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

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比
tiny39 Mtiny.entiny~1 GB~32x
base74 Mbase.enbase~1 GB~16x
small244 Msmall.ensmall~2 GB~6x
medium769 Mmedium.enmedium~5 GB~2x
large1550 MN/Alarge~10 GB1x
使用可能なモデルと性能(参考: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
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

pytorch.org

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

まとめ

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

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

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

オススメ書籍

・Python1年生

コードを書くときにどうしても最低限の知識は必要になります。
Pythonの基礎を学びたいときはこの書籍から始めるのがオススメです。
丁寧な表現で導入に向いています。

Amazon.co.jp: Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ eBook : 森 巧尚: Kindleストア
Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ

www.amazon.co.jp

・Kaggleで勝つデータ分析の技術

データ分析技術を上げたいときにKaggleはオススメです。
Kaggleに参加するにあたり技術的に非常に勉強になる書籍があります。

Kaggleで勝つデータ分析の技術 | 門脇 大輔, 阪田 隆司, 保坂 桂佑, 平松 雄司 |本 | 通販 | Amazon
Kaggleで勝つデータ分析の技術

www.amazon.co.jp

・PyCaretで学ぶ 機械学習入門

機械学習モデルを構築するのは想像以上に手間がかかります。
その一連の作業を自動化できるPyCaretというライブラリの使い方が分かりやすく解説されています。

PyCaretで学ぶ 機械学習入門
PyCaretで学ぶ 機械学習入門

www.amazon.co.jp

関連記事

-業務効率化
-