vosk-api icon indicating copy to clipboard operation
vosk-api copied to clipboard

nodejs api dynamic linking error - looking for dylib in wrong place

Open himat opened this issue 4 years ago • 7 comments

I downloaded this vosk-api repo, and after installing vosk with pip3 install vosk, I then tried out the nodejs bindings. But the sample code failed to run:

❯ node demo/test_simple.js
/Users/hima/Downloads/vosk-api/nodejs/node_modules/ffi-napi/lib/dynamic_library.js:75
    throw new Error('Dynamic Linking Error: ' + err);
    ^

Error: Dynamic Linking Error: dlopen(/Users/hima/Downloads/vosk-api/nodejs/lib/osx-x86_64/libvosk.dylib, 2): image not found
    at new DynamicLibrary (/Users/hima/Downloads/vosk-api/nodejs/node_modules/ffi-napi/lib/dynamic_library.js:75:11)
    at Object.Library (/Users/hima/Downloads/vosk-api/nodejs/node_modules/ffi-napi/lib/library.js:47:10)
    at Object.<anonymous> (/Users/hima/Downloads/vosk-api/nodejs/index.js:84:21)
    at Module._compile (internal/modules/cjs/loader.js:1068:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Module.require (internal/modules/cjs/loader.js:957:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/Users/hima/Downloads/vosk-api/nodejs/demo/test_simple.js:1:12)

Specifically, it's strange that it's looking for the .dylib file within this vosk-api directory /Users/hima/Downloads/vosk-api/nodejs/lib/osx-x86_64/libvosk.dylib. There is no such lib/ folder in this repo. Shouldn't it be looking for the dylib somewhere in my root system (such as where the pip installed package is)?

I did find where where pip installed package is by the way, but there is no .dylib file there either. There is a .dyld file though.

❯ ls /Users/hima/anaconda/lib/python3.6/site-packages/vosk
__init__.py  __pycache__/  libvosk.dyld*  vosk_cffi.py

How do I fix this?

himat avatar Jun 20 '21 15:06 himat

Hi

before running demo/test_simple.js, did you run a npm install on the node base directory? The error could suggest the lack of the ffi-napi module.

Also, download a model.

solyarisoftware avatar Jun 20 '21 15:06 solyarisoftware

Yes, I already did a yarn install in the vosk-api/nodejs directory. And I do have the vosk-model-small-en-us-0.15 model in the same folder at vosk-api/nodejs/model and also in ``vosk-api/nodejs/model/demo`

The error shows that it's look for the dll in the wrong folder.

himat avatar Jun 20 '21 21:06 himat

Ok I tried the same test_simple.js file but in a separate directory where I installed vosk from npm and that worked properly. So I think probably your demo code needs to be updated when it's being run from within the folder.

himat avatar Jun 20 '21 21:06 himat

A valid issue.

nshmyrev avatar Jun 20 '21 21:06 nshmyrev

I don't see a real problem here to be honest.

Ok I tried the same test_simple.js file but in a separate directory where I installed vosk from npm and that worked properly. So I think probably your demo code needs to be updated when it's being run from within the folder.

Yes. IMMO there are two way to use/test vosk:

A. you git clone this repo, so you have to:

  1. do npm install in the nodejs home directory (where the package.json is)
  2. do cd demo && node .... run demo program FROM the demo directory. Because the vosk package is here included from the parent duirectory include ('..')

B. you create your application (separate) directory and here you do a npm install vosk

solyarisoftware avatar Jun 21 '21 10:06 solyarisoftware

A. you git clone this repo, so you have to:

  1. do npm install in the nodejs home directory (where the package.json is)
  2. do cd demo && node .... run demo program FROM the demo directory. Because the vosk package is here included from the parent duirectory include ('..')

this doesn't work now, because it expects precompiled libs in lib folder. I shall try to fix it.

nshmyrev avatar Jun 21 '21 10:06 nshmyrev

Is this still the case or has this been resolved? I'm still getting the dynamic linking error.

charlesjuliandev avatar Jul 11 '22 17:07 charlesjuliandev