Open2
node.jsで音声入力のVOSKを動かす

参考
vosk-api をcloneして、↑にも記載がある通りvosk-model-small-ja-0.22.zip
をDL、解凍して vosk-api/nodejs/vosk-model-small-ja-0.22
に配置して、とりあえず起動しようとしてみる
cd nodejs
npm i
node demo/test_microphone.js
dylibファイルが無いと怒られる
...
vosk-api/nodejs/lib/osx-universal/libvosk.dylib' (no such file)
以下のコメントで貼られているリンクからtgzをダウンロードして解凍
解凍した中の lib
ディレクトリをコピーして vosk-api/lib
に配置
再度実行するとcannot be opened because the developer cannot be verified
的なエラーのダイアログが表示されて実行できないので、以下の手順で実行できるようマークする(自己責任)
再度実行すると、冒頭の記事と同じエラーが出た
LOG (VoskAPI:ReadDataFiles():model.cc:303) Loading winfo ./vosk-model-small-ja-0.22/graph/phones/word_boundary.int
node:events:491
throw er; // Unhandled 'error' event
^
Error: spawn rec ENOENT
at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
at onErrorNT (node:internal/child_process:478:16)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
Emitted 'error' event on ChildProcess instance at:
at Process.ChildProcess._handle.onexit (node:internal/child_process:289:12)
at onErrorNT (node:internal/child_process:478:16)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
errno: -2,
code: 'ENOENT',
syscall: 'spawn rec',
path: 'rec',
spawnargs: [
'-b', '16',
'--endian', 'little',
'-c', '1',
'-r', '16000',
'-e', 'signed-integer',
'-t', 'raw',
'-'
]
}
これは記載の通り brew install sox
で解決

とりあえず認識はできる。けど実用的かと言われるとそうでもなさそう。
オプション指定とかでもう少し改善できるのかな
実用的ではない所
- 話し始め、終わりが途切れやすく感じる
- かなりハキハキ喋らないとちゃんと認識されない
- 数字はなかなか入力してくれない
- 日本語モデルだからなのかもしれない
モデルはsmallの方ではなく vosk-model-ja-0.22.zip
の方を使う & ソースコード側でsample rateを48000に上げるなどしてみて、多少は改善されるけどそれでも上記な感じ。
滑舌良く喋ろうとすると煩くなって隣の部屋の嫁にツッコまれそうなので、もう少しボソボソ目でも聞き取れる方法を使いたい