【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の基礎を学びたいときはこの書籍から始めるのがオススメです。
丁寧な表現で導入に向いています。

Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ
Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ

www.amazon.co.jp

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

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

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

www.amazon.co.jp

・PyCaretで学ぶ 機械学習入門

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

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

www.amazon.co.jp

関連記事

記事への問い合わせはこちら

-業務効率化
-

//