Whisperを除けば、無料でここまでできる音声認識は他に無いのでは、と思えるほど素晴らしい特長を備えた音声認識Vosk。日本語ビッグモデルでサクッと試せる記事が見当たらなかったので、まとめてみました。
Voskの特長
日本語モデルの種類
こちらに対応モデル一覧があり、日本語だと48MByteの軽量モデル、1GByteのビッグモデルの2種類が提供されています。
動作確認環境
ミニPC: TRIGKEY Green G5
OS: Ubuntu 22.04.3
Dockerがインストール済み
全体の流れ
日本語ビッグモデルをなるべく手軽に動かしたかったので、次の方法で試しました。
①音声認識サーバーを立ち上げる。
②クライアントアプリでマイクからの音声を取得し、①で起動したサーバーで音声認識する。
音声認識サーバーの起動
Dockerが使える環境であれば、下記コマンドだけで日本語ビッグモデルを使った音声認識サーバーが起動できます。
$ docker run -p 2700:2700 alphacep/kaldi-ja:latest
クライアントアプリの起動
必要なパッケージのインストール
$ pip install vosk websocket-client
適当なフォルダでソースコードを取得
サーバーのソースコードに「マイクを使ったクライアントサンプルアプリ」が含まれている。なので、サーバーのソースコードを取得。
$ git clone https://github.com/alphacep/vosk-server.git
マイクを使ったクライアントアプリの起動、動作確認
まずはマイクデバイスが認識できているか確認。
このサンプルアプリは「-l」オプションを付けて起動するとデバイス一覧を表示してくれる。
$ cd ./vosk-server/websocket $ python test_microphone.py -l 0 HDA Intel PCH: ALC897 Analog (hw:0,0), ALSA (2 in, 2 out) 1 HDA Intel PCH: ALC897 Alt Analog (hw:0,2), ALSA (2 in, 0 out) 2 USB Microphone: Audio (hw:1,0), ALSA (1 in, 0 out) 省略 * 18 default, ALSA (32 in, 32 out)
先頭に「*」が付いているのがデフォルトデバイス。なんだけど、ALSAとなっており具体的にどのマイクが使われているのかわからない。
No.2のUSB Microphoneをマイクデバイスとして使いたいので、「-d」オプションでデバイスを指定してクライアントを起動。
$ python test_microphone.py -d 2
あとはマイクに向かって話せば、音声認識結果が表示される。
"partial"はリアルタイムで表示される音声認識の途中結果。
"text"は確定した音声認識結果。
{ "partial" : "ハロー ワールド" } { "partial" : "ハロー ワールド と" } 省略 { "partial" : "ハロー ワールド と 言っ て み" } 省略 { "partial" : "ハロー ワールド と 言っ て み た" } { "result" : [{ "conf" : 0.888021, "end" : 7.860000, "start" : 7.500000, "word" : "ハロー" }, { 省略 }, { "conf" : 0.994479, "end" : 9.150000, "start" : 9.060000, "word" : "た" }], "text" : "ハロー ワールド と 言っ て み た" }