2023年まで、WhisperDesktopは私の音声認識ツールの第一選択でした。しかし最近、どのモデルに変更しても文字が正しく生成されない状況が発生したため、他のWhisper系ツールを試し、正常に動作するか確認してみることにしました。

WhisperDesktopの最新バージョンは2023年7月22日に公開されたもので、しばらく更新がありません。そこで、継続的に更新されているWhisper.cppを試し、WhisperDesktopの代替になるか検証しました。以下、Whisper.cppの試用レポートです。

1. モデルファイルのダウンロード

Whisper.cppのモデルファイルはWhisperDesktopと同じで、hugging faceから入手できます。私は以下のファイルを再ダウンロードしました。

  • ggml-large-v3.bin
  • ggml-medium.bin
  • また、別のサイトから中国語により正確とされるモデルggml-whisper-large-zh-cv11.binもダウンロードしましたが、出力は簡体字でした。

2. CPU版の使用

Whisper.cppには複数のバージョンがありますが、whisper-bin-x64.zipはCPUで実行する版です。
解凍後、主な実行ファイルはwhisper-cli.exeで、読み込める音声ファイルは拡張子がflacmp3oggwavのものです。もしmp3mp4を使う場合は、事前にwav形式へ変換が必要です。

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
または
ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 16000 -ac 1 output.wav

その後、whisper-cli.exeを実行します。

whisper-cli.exe -l zh -osrt -m models/ggml-medium.bin --prompt "プロンプト文字" output.wav
  • -l: 言語を中国語(zh)に指定
  • -osrt: 出力形式をSRTに指定(-otxt-ocsv-oj(json)なども可)
  • -m: モデルファイル名を指定(ファイルはインストールフォルダのmodels/ディレクトリに配置)
  • -prompt: 初期プロンプト文字列

CPU版は簡単ですが速度が遅いため、NVIDIA GPUを使用した方が実行速度は向上します。

3. NVIDIA GPU版の使用

whisper-cublas-12.4.0-bin-x64.zipをダウンロード・インストールします。
実行前にNVIDIA CUDAバージョンが12.4以上であることを確認します。

nvidia-smi

私の環境ではGTX 1650、CUDAバージョン12.1であり、whisper-cli.exe実行時にCUDAエラーが出ました。

gh|700

エラーメッセージ例:

ggl_cuda_compute_forward: IM2COL failed
CUDA error: the provided PTX was compiled with an unsupported toolchain.
  current device: 0, in function ggml_cuda_compute_forward at D:\a\whisper.cpp\whisper.cpp\ggml\src\ggml-cuda\ggml-cuda.cu:2531
  err
D:\a\whisper.cpp\whisper.cpp\ggml\src\ggml-cuda\ggml-cuda.cu:88: CUDA error

NVIDIA Developerダウンロードサイトから最新のドライバを取得します。

  • GPU型番とOS(例: Windows 11 64-bit)を選択
  • 「Search」をクリックし、最新の**Game Ready Driver(GRD)またはStudio Driver(SD)**をダウンロード

インストール後、CUDAは13.0となり、whisper-cli.exeが正常に動作しました。

whisper_init_state: compute buffer (cross)  =    9.27 MB
whisper_init_state: compute buffer (decode) =  100.04 MB

system_info: n_threads = 4 / 12 | WHISPER : COREML = 0 | OPENVINO = 0 | CUDA : ARCHS = 520 | PEER_MAX_BATCH_SIZE = 128 | CPU : SSE3 = 1 | SSSE3 = 1 | AVX = 1 | AVX2 = 1 | F16C = 1 | FMA = 1 | OPENMP = 1 | REPACK = 1 |

main: processing 'meeting.wav' (25827068 samples, 1614.2 sec), 4 threads, 1 processors, 5 beams + best of 5, lang = zh, task = transcribe, timestamps = 1 ...

[00:00:00.000 --> 00:00:29.980]  台中高雄会議が始まりました。高雄、マイクが入っていません。聞こえますか?OK、皆さんこんにちは。

4. Rust製GUIアプリケーション

whisper.cppは基本的にコマンドラインツールのため、Rustで作られたGUIツールwhisper_desktopも調べてみました。GUIが必要な時はこちらも試すことができます。

gh|700

5. 💡 関連リンク

✅ 解説記事(繁体字中国語): https://jdev.tw/blog/9025/
Explanation article (English)
解説記事(日本語)

✅ Whisper.cpp GitHub: https://github.com/ggml-org/whisper.cpp
hugging faceモデルファイルダウンロード
✅ Rust GUI: whisper_desktop