🤗
whisper.cppでHuggingFaceのwhisperモデルを使う
はじめに
Huggingfaceにある日本語でfinetuneしたモデルでwhisper.cppを使えないかなと思い,試した結果を載せていきます.
結論から言うと,whisper.cpp/models にあるREADMEにhuggingfaceのモデルを使用する場合の流れが書いてあるので,それに従います.
1. モデルの用意
今回は以下のモデルを使用したいと思います.
モデルによっては,git-lftが必要になるかもしれません.
pythonのライブラリ依存としては,pytorch
とtransformers
がインストールされていれば満たしていると思います.
$ mkdir model
$ git clone https://github.com/ggerganov/whisper.cpp.git repo/whisper-cpp
$ cd whisper-cpp && make && cd ..
$ git clone https://github.com/openai/whisper.git repo/orig
$ git clone https://huggingface.co/vumichien/whisper-medium-mix-jp-ver2 repo/jp_model
$ mkdir -p model
$ python whisper-cpp/models/convert-h5-to-ggml.py repo/jp_model repo/orig model
これで,model/ggml-model-f32.bin が生成されると思います.
2. 実行
$ whisper-cpp/main -m model/ggml-model.bin -l ja -f /path/to/audio_file -otxt
実行すると,/path/to/audio_file.txtが生成され,txtファイルには文章が入っていると思います.
テストとして,VOICEVOXのずんだもんに「今日の天気は晴れなのだ」と言わせた音声(zundamon.wav)について推論をしてみようと思います.
16kHz以外だと怒られてしまうので,事前にsoxでリサンプルしておきます.
$ sox zundamon.wav -r 16000 zundamon_16kHz.wav
$ whisper-cpp/main -m model/ggml-model.bin -l ja -f zundamon_16kHz.wav -otxt
$ cat zundamon_16kHz.wav.txt
今日 の 天気 は 晴れ な の だ .
出力が形態素ごとにスペースが入っているので,今後の解析に使いやすいかもしれないですね.
まとめ
Huggingfaceでfinetuningするコードは共有されていると思うので,もし自作のWhisperモデルを作成した方は試してみてください.
P.S. whisperすごい whisper.cppすごい
コピペ用
#!/bin/bash
# wavファイルでしか試していない...
data_file=<16kHzの音声ファイル>.wav
git clone https://github.com/ggerganov/whisper.cpp.git repo/whisper-cpp
cd repo/whisper-cpp
make
cd ../../
git clone https://github.com/openai/whisper repo/orig
git clone https://huggingface.co/vumichien/whisper-medium-mix-jp-ver2 repo/jp_model
mkdir -p model
python repo/whisper-cpp/models/convert-h5-to-ggml.py repo/jp_model repo/orig ./model
repo/whisper-cpp/main -m model/ggml-model.bin -l ja -f $data_file -otxt
cat $data_file.txt
Discussion