🔊

Windows で OpenAI Whisper (large-v3) を動してみた

2024/09/16に公開

はじめに

持っている音声ファイルを文字起こししたい。

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 で動かしているが、オープンソースで同様なアプリはなさそう。一応使いやすそうなツールとして

などがあるが、今回は試したほかの方法について説明する。

ggerganov/whisper.cpp

ビルドしたくないので GitHub Actions からダウンロードしてみた。GPU を使いたいので、whisper-cublas-12.2.0-bin-x64 をダウンロードした。おそらく CUDA Toolkit インストールしてなくてもビルドに入っているライブラリで実行できると思う。

モデルは自分でダウンロードしないといけないので、HuggingFace の leafspark/whisper-large-v3-ggml をダウンロードした。wav しか使えないから、ffmpegmp3wav に変換した。

.\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 に従って cu121torch を入れた。

モデルをダウンロードしてくれるのは楽。あと 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