Whisperをローカル環境で使用する方法について

ビジネスシーンでもプライベートでも、文字起こしをする機会は多いです。

例えばYouTubeの動画の音声を文字にして出力したい時、会議の議事録を作成する時などで、記事を書く際の参照元はインターネット上のテキスト情報になることも多いですが、場合によってはYouTubeの方が詳しく説明されていたり、わかりやすかったりするので、動画を参照して文章を書くケースも近年は増加しています。

また、文字起こしをすることでプレゼンテーションを記録してスキルアップに役立てることが出来たり、プレゼンの内容をテキストで振り返ることができたりするなど、数多くのメリットがあります。
 
しかし、手動による文字起こし作業は人間に強いる負担が大きいのも事実です。

私は若い頃のサラリーマン時代、製造業で人事総務関係の仕事や、製造現場の安全衛生管理業務などを長くやっておりましたので、会議や各種委員会の議事録作成は全て自分に回ってくる仕組みになっておりまして、それだけで徹夜したこともありました。

動画音声の文字起こしにしても、動画を視聴しながらその音声に合わせてキーボードを叩いて文字起こしをすることも可能ではありますが、心身双方に非常に負担が大きい訳です。

OpenAIのWhisperは、そんなユーザーに対して絶大なサポートを提供するオープンソースAIで、昨年から話題になっていました。

そんな中の2023年11月、Whisperの最新の音声認識モデルであるWhisper large-v3が登場し、非常に注目を集めました。

本稿では、Windowsのローカル環境でそのWhisperを利用する方法を記載します。

Whisperに限らずAIモデルをローカル環境で使用するメリットは、外部に対する秘匿性、機密性を最大限担保できる点です。
 
特に企業、組織内で行われる会議議事録の作成などにおいて、音声データをネットワーク上にアップロードすることなく、音声起こしを実行できるメリットは大きいものです。

...

いつもの事ですが、PythonとGitはインストールされている前提で記述していきます。
 
まず最初にWindowsスクリプト環境の制限を解除します。

下図のように、Powershellを管理者権限で起動し、「Set-ExecutionPolicy RemoteSigned」と入力して実行します。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/d718a3af-69bf-6ef9-c175-740fe992fa1f.png)
 
次に下図のように、「y」と入力して実行し、powershellを閉じます。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/455bdfe0-8cd9-7e43-b522-3d2eecdf48ea.png)

次に任意の場所に「Whisper」というフォルダを作成し、下図のようにパスを通した形でPowershellを起動(作成したフォルダ内でタスクバーにpowershellと入力して実行する)し、「python -m venv venv」と入力して実行します。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/59e947ec-d154-f09a-2dc5-3f4ce1c2677b.png)
 
次に下図のように、「./venv/scripts/activate」と入力して実行します。これで、作成した仮想環境がアクティベートされます。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/f87b190f-2784-a44b-60a6-9349d07d40da.png)

 
それでは次に、Whisper本体のライブラリをインストールしていきます。

まず下図のように、
「pip install git+https://github.com/openai/whisper.git
」と入力して実行してください。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/f3513c11-ac0a-fc65-4bed-a6d071013dd9.png)
 
次にffmpegライブラリのインストールを行います。

こちらのサイト(https://github.com/BtbN/FFmpeg-Builds/releases
)から、「ffmpeg-master-latest-win64-gpl.zip」ファイルをダウンロードして、解凍し、下図のように任意のフォルダに設置します。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/5fdd030b-df24-80df-29a8-bd6749aabd45.png)

次に下図のように、環境変数設定を開き(検索窓から環境変数を検索)、ユーザー環境変数内の「path」の編集をクリックします。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/363a99c2-a7b9-f53e-1acd-8f51a795eacf.png)


次に下図のように、先ほど設置したffmpegフォルダのパスを入力してOKをクリックします。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/ace4493a-3c6e-5833-1244-b9421921cb2a.png)
 
これで、Whisperを使う為のインストール作業は完了です。
 
...

Whisperの使用方法について解説していきます。

まず始めに、powershell上のコマンド操作で使用する最も基本的な使用方法について解説します。

まず、「Whipser」フォルダにパスを通した形でpowershellを起動し、下図のように「./venv/scripts/activate」と入力して実行し、仮想環境をアクティベートします。
 ![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/58ee7136-1512-59ad-932f-0f661c31aa67.png)
 
次に下図のように、「whisper --model (モデル名) --language Japanese (対象ファイルのパス)」と入力して実行します。
 ![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/73acfe7c-3242-3a7f-1990-105adff878ff.png)

上の図の場合、私はnVidia RTX 4070 12GBを使用している為「large」を使用していますが、下の図を参考にして自身のパソコンの性能に応じたモデルを選択することになります。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/f053a13e-0e5f-fc30-7a46-233324d45ec0.png)

当然ながら、文字起こし精度はモデルサイズに比例します。
 
文字起こしタスクが完了すると、Whisperフォルダに下図のように出力結果が保存されます。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/ead0ab3b-d401-548d-3680-e4725fe6219a.png)

各種フォーマットで出力されますが、最もシンプルなtxt形式も存在するので、非常に使いやすいです。

...

Whisperの使用方法は、前章で解説した通り非常にシンプルですが、それでも仮想環境をアクティベートし、一定のコマンド入力は必要になります。

そこで次は、そのアクティベート作業とコマンド入力を自動化し、極力簡単にWhisperを実行するプログラムを作成していきます。

まず始めに、メモ帳を開き下の記述を入力し、「sendkeys.vbs」ファイルとしてWhisperフォルダ直下に保存します。この時、必ず拡張子を「.vbs」と指定して保存すること。

set OBJECT=WScript.CreateObject("WScript.Shell")
WScript.sleep 1000
OBJECT.SendKeys "whisper --model large --language Japanese "
 
次に、同じくメモ帳で新しいファイルを開いて下の記述を入力し、「whisper-start.bat」ファイルとしてWhisperフォルダ直下に保存します。この時、必ず拡張子を「.bat」と指定して保存すること。

@echo off
start Powershell.exe -noexit -Command "& {. .\venv\Scripts\Activate}"
cscript //nologo sendkeys.vbs

![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/1b91a597-a903-c4c1-6a42-97e6de4093d9.png)

当然ながら、この記述例は「large」モデルを使用する前提の記述です。それぞれ自分の環境に応じてモデル名は変更する必要があります。
 
これで、仮想環境のアクティベートと起動を簡略化するプログラムの作成は完了です。

ここで、whisper-start.batフィルをダブルクリックすると、下図のように
仮想環境のアクティベートと実行コマンドが自動的に行われ、後は対象となるファイルのパスを追加すれば良いだけになります。

対象ファイルのパスを追記して実行すれば、下図のようにプログラムが開始されます。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/92ccf60d-7e4e-0301-4f2c-24879e7282ce.png)

...

尚、Whisperの初期パッケージに含まれるPytorchはCPU用ですが、当然一定水準以上のnVidia製GPUを使用している場合には、CUDA用Pytorchを使用することにより、処理速度が向上します。

Whisperインストール後に、改めてCUDA用Pytorchをインストールする為には、まず
「Whipser」フォルダにパスを通した形でpowershellを起動し、下図のように「./venv/scripts/activate」と入力して実行し、仮想環境をアクティベートします。
 ![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/58ee7136-1512-59ad-932f-0f661c31aa67.png)

 次に、「pip uninstall torch」と入力して実行し、次に「y」と入力して実行してください。

 次に、Pytorchの公式サイト(https://pytorch.org/get-started/locally/
)から、CUDA用torchをインストールする為のコマンドをコピーします。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661150/a4e66e7a-d344-40dc-751c-66a2a55f03b9.png)

対応するCUDAのバージョンは随時更新されていきますが、Pytorch公式サイトからコマンドをコピーしてくることにより、その時の最新のバージョンが使用できます。

2024年6月11日現在、Pyorchは2.3.1、対応するCUDAは12.1が最新のものとなります。

コピーしてきたコマンドを張り付けて実行すると、最新のCUDA用Pytorchがインストールされます。