🎙️
【Whisper】GPUが無くてもオフラインで簡単音声認識
OpenAIの高性能な音声認識モデルであるWhisperを、オフラインでかつGPUが無くても簡単に試せるようにしてくれたリポジトリを知ったのでご紹介。
私の環境
- Mac mini (M1, 2020)
- Chip Apple M1
- Memory 16 GB
- macOS Monterey Version 12.6
試してみる
音声データから文字起こし
リポジトリをクローン
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
モデルをダウンロード
tiny, base, small, medium, large とあり、左から順に精度が上がるがサイズと使用するメモリの量が上がる。詳細はこちらへ https://github.com/ggerganov/whisper.cpp#memory-usage
bash ./models/download-ggml-model.sh base
ビルド
make
実行する
./main -l ja -f ~/Music/output.wav -m models/ggml-base.bin
オプション | 説明 |
---|---|
l | 認識する言語 |
f | 読み込むファイル |
m | 使用するモデル |
これだけで認識できちゃいます。
ちなみに、-tr
というオプションもあり、これを入れると英語に翻訳してくれます(すごい)
出力
whisper_model_load: loading model from 'models/ggml-base.bin'
whisper_model_load: n_vocab = 51865
whisper_model_load: n_audio_ctx = 1500
whisper_model_load: n_audio_state = 512
whisper_model_load: n_audio_head = 8
whisper_model_load: n_audio_layer = 6
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 512
whisper_model_load: n_text_head = 8
whisper_model_load: n_text_layer = 6
whisper_model_load: n_mels = 80
whisper_model_load: f16 = 1
whisper_model_load: type = 2
whisper_model_load: adding 1608 extra tokens
whisper_model_load: mem_required = 506.00 MB
whisper_model_load: ggml ctx size = 140.60 MB
whisper_model_load: memory size = 22.83 MB
whisper_model_load: model size = 140.54 MB
system_info: n_threads = 4 / 8 | AVX = 0 | AVX2 = 0 | AVX512 = 0 | NEON = 1 | FP16_VA = 1 | WASM_SIMD = 0 | BLAS = 1 |
main: processing '/Users/kaisei/Music/output.wav' (96597 samples, 6.0 sec), 4 threads, 1 processors, lang = ja, task = transcribe, timestamps = 1 ...
[00:00:00.000 --> 00:00:05.740] 音声認識テスト中
whisper_print_timings: load time = 121.41 ms
whisper_print_timings: mel time = 13.86 ms
whisper_print_timings: sample time = 1.96 ms
whisper_print_timings: encode time = 371.95 ms / 61.99 ms per layer
whisper_print_timings: decode time = 35.89 ms / 5.98 ms per layer
whisper_print_timings: total time = 545.44 ms
リアルタイム音声認識
リアルタイムでの音声認識も簡単にできました。
必要なもの
sdlというものが必要らしいので、パッケージマネージャで入れる。
brew install sdl2
ビルド
make stream
実行する
./stream -l ja -m models/ggml-base.bin
出力
audio_sdl_init: found 1 capture devices:
audio_sdl_init: - Capture device #0: 'AT2020USB+'
audio_sdl_init: attempt to open default capture device ...
audio_sdl_init: obtained spec for input device (SDL Id = 2):
audio_sdl_init: - sample rate: 16000
audio_sdl_init: - format: 33056 (required: 33056)
audio_sdl_init: - channels: 1 (required: 1)
audio_sdl_init: - samples per frame: 1024
whisper_model_load: loading model from 'models/ggml-base.bin'
whisper_model_load: n_vocab = 51865
whisper_model_load: n_audio_ctx = 1500
whisper_model_load: n_audio_state = 512
whisper_model_load: n_audio_head = 8
whisper_model_load: n_audio_layer = 6
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 512
whisper_model_load: n_text_head = 8
whisper_model_load: n_text_layer = 6
whisper_model_load: n_mels = 80
whisper_model_load: f16 = 1
whisper_model_load: type = 2
whisper_model_load: adding 1608 extra tokens
whisper_model_load: mem_required = 506.00 MB
whisper_model_load: ggml ctx size = 140.60 MB
whisper_model_load: memory size = 22.83 MB
whisper_model_load: model size = 140.54 MB
main: processing 48000 samples (step = 3.0 sec / len = 10.0 sec), 4 threads, lang = ja, task = transcribe, timestamps = 0 ...
main: n_new_line = 2
日本語の音声にしき
サクランボ
こんにちは
コンバンは
GPUがなくてもオフラインで
簡単音声認識
とっても簡単に出来ちゃうのでぜひ試してみて下さい!
Discussion