🤗

whisper.cppでHuggingFaceのwhisperモデルを使う

2023/01/08に公開

はじめに

Huggingfaceにある日本語でfinetuneしたモデルでwhisper.cppを使えないかなと思い,試した結果を載せていきます.

結論から言うと,whisper.cpp/models にあるREADMEにhuggingfaceのモデルを使用する場合の流れが書いてあるので,それに従います.

1. モデルの用意

今回は以下のモデルを使用したいと思います.

https://huggingface.co/vumichien/whisper-medium-mix-jp-ver2

モデルによっては,git-lftが必要になるかもしれません.

pythonのライブラリ依存としては,pytorchtransformersがインストールされていれば満たしていると思います.

$ 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