Closed14
whisper.cppをMac(M4)で高速処理する(Core ML support)
前提背景
Mac M4
(brewでもpython3あるけど使わん)
→pyenvで仮想環境作って作業する
公式docより
git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
今回はCore ML support使うんで、公式docを見ながらpipをインストール
pythonは3.11推奨ということで。
pyenv
pyenv install 3.11.12
pyenv local 3.11.12
python -m venv .env-for-whisper
source .env-for-whisper/bin/activate
必要なやつら
pip install ane_transformers
pip install openai-whisper
pip install coremltools
さっそくmodelをgenerate。日本語文字起こしの精度高くいきたいのでlarge-v1にしまつ
./models/generate-coreml-model.sh large-v1
はいエラー
Traceback (most recent call last):
File "/Users/hogehoge/tools/whisper.cpp/models/convert-whisper-to-coreml.py", line 320, in <module>
encoder = convert_encoder(hparams, encoder, quantize=args.quantize)
File "/Users/hogehoge/tools/whisper.cpp/models/convert-whisper-to-coreml.py", line 255, in convert_encoder
model = ct.convert(
File "/Users/hogehoge/tools/whisper.cpp/whisper/lib/python3.10/site-packages/coremltools/converters/_converters_entry.py", line 635, in convert
mlmodel = mil_convert(
File "/Users/hogehoge/tools/whisper.cpp/whisper/lib/python3.10/site-packages/coremltools/converters/mil/converter.py", line 186, in mil_convert
return _mil_convert(
File "/Users/hogehoge/tools/whisper.cpp/whisper/lib/python3.10/site-packages/coremltools/converters/mil/converter.py", line 245, in _mil_convert
return modelClass(
File "/Users/hogehoge/tools/whisper.cpp/whisper/lib/python3.10/site-packages/coremltools/models/model.py", line 489, in __init__
self.__proxy__, self._spec, self._framework_error = self._get_proxy_and_spec(
File "/Users/hogehoge/tools/whisper.cpp/whisper/lib/python3.10/site-packages/coremltools/models/model.py", line 550, in _get_proxy_and_spec
_MLModelProxy(
ValueError: basic_string
ログ見たらこのようなwarning
Torch version 2.6.0 has not been tested with coremltools. You may run into unexpected errors. Torch 2.5.0 is the most recent
が出ていたので以下を実行してみる
pip install torch==2.5.0
あと、large-v1が良くない説もあるのでmediumに落としてみる
./models/generate-coreml-model.sh medium
エラー変わった!進歩!
xcrun: error: unable to find utility "coremlc", not a developer tool or in PATH
xcrunのパスを確認する
xcode-select -p
/Library/Developer/CommandLineTools
パスだめぽいので変更しようね。ワイのはApplicationsの中にあるのでこう。
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
いちおうちゃんと動く確認
xcrun coremlc
coremlc: error: usage: coremlc <command> <inputdocument> <outputpath> [options ...]
OK
もっかい実行
./models/generate-coreml-model.sh medium
(出力完了後のログ)models/coreml-encoder-medium.mlmodelc -> models/ggml-medium-encoder.mlmodelc
うごいた!!!
あとは公式通りに
cmake -B build -DWHISPER_COREML=1
cmake --build build -j --config Release
おっと、mediumのbinないやんけ!になってた。
モデルのダウンロードをしよう
./models/download-ggml-model.sh medium
サンプルの音声で実行を試してみる
./build/bin/whisper-cli -m /Users/asadeyy/tools/whisper.cpp/models/ggml-medium.bin -f samples/jfk.wav
ログ(抜粋)
system_info: n_threads = 4 / 14 | WHISPER : COREML = 1 | OPENVINO = 0 | Metal : EMBED_LIBRARY = 1 | CPU : NEON = 1 | ARM_FMA = 1 | FP16_VA = 1 | MATMUL_INT8 = 1 | DOTPROD = 1 | ACCELERATE = 1 | AARCH64_REPACK = 1 |
main: processing 'samples/jfk.wav' (176000 samples, 11.0 sec), 4 threads, 1 processors, 5 beams + best of 5, lang = en, task = transcribe, timestamps = 1 ...
[00:00:00.000 --> 00:00:11.000] And so, my fellow Americans, ask not what your country can do for you; ask what you can do for your country.
でぎだ!!!
使いやすいようにalias設定しちゃうぞ
vim ~/.zshrc
一番下に以下を追加する
alias whisper-medium='~/tools/whisper.cpp/build/bin/whisper-cli -m ~/tools/whisper.cpp/models/ggml-medium.bin -f'
以下の感じで実行できる!
whisper-medium 音声ファイル.wav -l ja -otxt
日本語の場合はjaを、あとはtxtで出したいので
(番外)
large-v1にリトライ
→おんなじエラー結果吐いた。large-v1が悪いみたい。。。
→友人の話ではlarge-v3はできたよーとのこと(私は試してない)
このスクラップは4ヶ月前にクローズされました