--- /dev/null
+name: Examples Tests
+on:
+ push:
+ paths:
+ - examples/addon.node/**
+ - whisper.h
+ pull_request:
+ paths:
+ - examples/addon.node/**
+ - whisper.h
+
+jobs:
+ addon_node-ubuntu-latest:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ node-version: [ 16.x, 18.x ]
+ steps:
+ - name: Clone
+ uses: actions/checkout@v1
+
+ - name: Dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install build-essential
+ sudo apt-get install cmake
+ sudo apt-get install libsdl2-dev
+
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v1
+ with:
+ node-version: ${{ matrix.node-version }}
+ cache: 'npm'
+
+ - name: Install package.json dependencies
+ working-directory: ./examples/addon.node
+ run: npm install
+
+ - name: Compile addon.node
+ run: npx cmake-js compile -T whisper-addon -B Release
+
+ - name: Download test model
+ run: |
+ bash ./models/download-ggml-model.sh base.en
+ - name: Test
+ run: |
+ cd examples/addon.node
+ npm run test
# programs, examples and tests
#
-if (WHISPER_BUILD_TESTS)
+if (WHISPER_BUILD_TESTS AND NOT CMAKE_JS_VERSION)
enable_testing()
add_subdirectory(tests)
endif ()
#==================================================================
target_link_libraries(${TARGET} ${CMAKE_JS_LIB} whisper ${CMAKE_THREAD_LIBS_INIT})
+
+if(MSVC AND CMAKE_JS_NODELIB_DEF AND CMAKE_JS_NODELIB_TARGET)
+ # Generate node.lib
+ execute_process(COMMAND ${CMAKE_AR} /def:${CMAKE_JS_NODELIB_DEF} /out:${CMAKE_JS_NODELIB_TARGET} ${CMAKE_STATIC_LINKER_FLAGS})
+endif()
Make sure it is in the project root directory and compiled with make-js.
```shell
-npx cmake-js compile -T whisper-addon
+npx cmake-js compile -T whisper-addon -B Release
```
For Electron addon and cmake-js options, you can see [cmake-js](https://github.com/cmake-js/cmake-js) and make very few configuration changes.
> Such as appointing special cmake path:
> ```shell
-> npx cmake-js compile -c 'xxx/cmake' -T whisper-addon
+> npx cmake-js compile -c 'xxx/cmake' -T whisper-addon -B Release
> ```
## Run
--- /dev/null
+const path = require('path');
+const { whisper } = require(path.join(__dirname, '../../../build/Release/whisper-addon'));
+
+const whisperParamsMock = {
+ language: 'en',
+ model: path.join(__dirname, '../../../models/ggml-base.en.bin'),
+ fname_inp: path.join(__dirname, '../../../samples/jfk.wav'),
+};
+
+describe("Run whisper.node", () => {
+
+ test("it should receive a non-empty value", () => {
+ expect(whisper(whisperParamsMock).length).toBeGreaterThan(0);
+ });
+});
+#include <cstdint>
#include <string>
#include <thread>
#include <vector>
}
Napi::Object res = Napi::Array::New(env, result.size());
- for (u_int32_t i = 0; i < result.size(); ++i) {
+ for (uint64_t i = 0; i < result.size(); ++i) {
Napi::Object tmp = Napi::Array::New(env, 3);
- for (u_int32_t j = 0; j < 3; ++j) {
+ for (uint64_t j = 0; j < 3; ++j) {
tmp[j] = Napi::String::New(env, result[i][j]);
}
res[i] = tmp;
"main": "index.js",
"author": "Qanhe Chen",
"license": "MIT",
+ "scripts": {
+ "test": "jest"
+ },
"devDependencies": {
"cmake-js": "^7.1.1",
+ "jest": "^29.4.0",
"node-addon-api": "^5.0.0"
}
}