Windows で OpenAI Whisper (large-v3) を動してみた
はじめに
持っている音声ファイルを文字起こししたい。
OpenAI の API の Whisper (large-v2?) を使ってもいいけど、$0.006 / minute(1 時間約 50 円)なのでちょっと高い。特に長い音声ファイルをプロンプトを修正しながら文字起こししたいので、API はちょっと厳しい。
一応 Groq 使えば $0.111 / hour(1 時間約 15 円)で行けるが、Free Plan は 1 時間に 2 時間の音声ファイル、1 日に 8 時間の音声ファイルしか送信できなくて、Developer Plan が出てくるとは思わないので、とりあえず存在しないことにする。ということでローカルで動かしたい。
ツール
LLM は大体 LM Studio で動かしているが、オープンソースで同様なアプリはなさそう。一応使いやすそうなツールとして
- Speech Indexer
- AloeWhisper
- Lycoris(Mac のみ)
などがあるが、今回は試したほかの方法について説明する。
ggerganov/whisper.cpp
ビルドしたくないので GitHub Actions からダウンロードしてみた。GPU を使いたいので、whisper-cublas-12.2.0-bin-x64
をダウンロードした。おそらく CUDA Toolkit インストールしてなくてもビルドに入っているライブラリで実行できると思う。
モデルは自分でダウンロードしないといけないので、HuggingFace の leafspark/whisper-large-v3-ggml をダウンロードした。wav
しか使えないから、ffmpeg
で mp3
を wav
に変換した。
.\main.exe -m ggml-model.bin -f .\audio.wav -osrt -pp -of .\transcript.srt --prompt "<プロンプト>" -l ja
で文字起こしできるが、プロンプトに日本語入れるととりあえずうまくいかない。(英語は行けた。)
openai/whisper
ggerganov/whisper.cpp
で日本語のプロンプト使えなかったので、とりあえず openai/whisper
を試してみる。
CUDA Toolkit をインストールする。必要かどうかわからないけど、Stack Overflow の Answer に従って cu121
の torch
を入れた。
モデルをダウンロードしてくれるのは楽。あと mp3
をそのまま使える。mkdir output
しておいて以下の Python スクリプトを実行する。
import whisper
from whisper.utils import WriteSRT
filename = "audio.mp3"
prompt = "<プロンプト>"
model = whisper.load_model("large-v3")
result = model.transcribe(filename, initial_prompt=prompt, language="ja", verbose=True)
WriteSRT(output_dir="./output")(result, filename)
動くけど、ggerganov/whisper.cpp
の 2 倍ぐらいは VRAM を使ってる。デスクトップに積んでる RTX 3060 は 12GB あるので十分のはずだが、他のアプリも使うので一部が共有メモリに溢れてしまった。遅くなってると思うけど仕方ない...
SYSTRAN/faster-whisper
cuBLAS と cuDNN をインストールしないと動かないらしい。疲れたので試さなかった...
終わりに
openapi/whisper
使っていきたいと思う。ggerganov/whisper.cpp
でプロンプト使えたら一番楽だけどね...
Discussion