The test_microphone.js example does not work due to an issue in mic@2.1.1 package it uses. This package is a JS binding for SoX audio tool. On Windows, it calls sox.exe with the parameter -p that is a shortcut for -t sox -, i.e. sets the data format equal to sox. The sox format is always 32-bit, while vosk.Recognizer expects 16-bit data captured from a microphone. Configuring the data value size with -b parameter set to 16 (bitwidth: '16' when creating mic instance in the test_microphone.js) does not help, it is simply ignored.
The issue can be solved by modifying mic.js file from the mic package on line 50 and replacing '-p' with '-t', 'raw', '-'. A solution could be forking this package (as the author does not maintain it anymore) and correcting the set of parameters passed to sox.exe. Similar package, node-microphone, is providing same -p parameter when launching sox.exe on Windows, thus same issue could be expected.
The test_microphone.js example does not work due to an issue in mic@2.1.1 package it uses. This package is a JS binding for SoX audio tool. On Windows, it calls
sox.exewith the parameter-pthat is a shortcut for-t sox -, i.e. sets the data format equal tosox. Thesoxformat is always 32-bit, whilevosk.Recognizerexpects 16-bit data captured from a microphone. Configuring the data value size with-bparameter set to16(bitwidth: '16'when creatingmicinstance in thetest_microphone.js) does not help, it is simply ignored.The issue can be solved by modifying mic.js file from the
micpackage on line 50 and replacing'-p'with'-t', 'raw', '-'. A solution could be forking this package (as the author does not maintain it anymore) and correcting the set of parameters passed tosox.exe. Similar package, node-microphone, is providing same-pparameter when launchingsox.exeon Windows, thus same issue could be expected.