diff --git a/Examples/Vosklet.wasm b/Examples/Vosklet.wasm index 19b6e08..b032756 100755 Binary files a/Examples/Vosklet.wasm and b/Examples/Vosklet.wasm differ diff --git a/Vosklet.wasm b/Vosklet.wasm index 19b6e08..b032756 100755 Binary files a/Vosklet.wasm and b/Vosklet.wasm differ diff --git a/src/Vosk.patch b/src/Vosk.patch index bbf3e8e..0afaccd 100644 --- a/src/Vosk.patch +++ b/src/Vosk.patch @@ -80,7 +80,7 @@ index 035ffee..18edcd3 100644 #endif diff --git a/src/recognizer.cc b/src/recognizer.cc -index 55d9991..02439d1 100644 +index 55d9991..c111038 100644 --- a/src/recognizer.cc +++ b/src/recognizer.cc @@ -17,6 +17,7 @@ @@ -91,7 +91,7 @@ index 55d9991..02439d1 100644 using namespace fst; using namespace kaldi::nnet3; -@@ -379,13 +380,21 @@ bool Recognizer::AcceptWaveform(const short *sdata, int len) +@@ -379,13 +380,20 @@ bool Recognizer::AcceptWaveform(const short *sdata, int len) wave(i) = sdata[i]; return AcceptWaveform(wave); } @@ -107,12 +107,11 @@ index 55d9991..02439d1 100644 + float* dst{wave.Data()}; + int x4Len{len >> 2 << 2}; + int i{}; -+ -+ for(;i < x4Len; i += 4, dst += 4) { -+ wasm_v128_store(dst, wasm_f32x4_mul(wasm_v128_load(fdata + i), _32768fx4)); ++ for(;i < x4Len; i += 4) { ++ wasm_v128_store(dst + i, wasm_f32x4_mul(wasm_v128_load(fdata + i), _32768fx4)); + } -+ for(i = x4Len; i < len; ++i, ++dst) { -+ *dst = fdata[i] * 32768.0f; ++ for(i = x4Len; i < len; ++i) { ++ dst[i] = fdata[i] * 32768.0f; + } return AcceptWaveform(wave); } diff --git a/test b/test index d5d578f..eb92dd2 100755 --- a/test +++ b/test @@ -36,7 +36,7 @@ OPENFST=$(realpath openfst) CLAPACK_WASM=$(realpath clapack-wasm) cd src && -MODE=0 && # 0: Debug, 1: Optimized release +MODE=1 && # 0: Debug, 1: Optimized release echo "Mode = $MODE" && if [ "$MODE" = 0 ]; then em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O0 -std=c++23 -g3 -Wall -Wextra -Wpedantic -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -fno-rtti -DMAX_WORKERS="$MAX_THREADS" -sWASMFS -sWASM_BIGINT -sMODULARIZE -sWASM_EXNREF -sTEXTDECODER=2 -sWASM_WORKERS=2 -sEVAL_CTORS=2 -sSTACK_OVERFLOW_CHECK=2 -sASSERTIONS=2 -sINITIAL_MEMORY="$INITIAL_MEMORY" -sALLOW_MEMORY_GROWTH -sRUNTIME_DEBUG -sPOLYFILL=0 -sEXIT_RUNTIME=0 -sINVOKE_RUN=0 -sDISABLE_EXCEPTION_CATCHING=0 -sINCOMING_MODULE_JS_API=wasmMemory,instantiateWasm,wasm -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sENVIRONMENT=web,worker -I. -I"$VOSK"/src -L"$KALDI"/src -l:online2/kaldi-online2.a -l:decoder/kaldi-decoder.a -l:ivector/kaldi-ivector.a -l:gmm/kaldi-gmm.a -l:tree/kaldi-tree.a -l:feat/kaldi-feat.a -l:cudamatrix/kaldi-cudamatrix.a -l:lat/kaldi-lat.a -l:lm/kaldi-lm.a -l:rnnlm/kaldi-rnnlm.a -l:hmm/kaldi-hmm.a -l:nnet3/kaldi-nnet3.a -l:transform/kaldi-transform.a -l:matrix/kaldi-matrix.a -l:fstext/kaldi-fstext.a -l:util/kaldi-util.a -l:base/kaldi-base.a -L"$OPENFST"/lib -l:libfst.a -l:libfstngram.a -L"$CLAPACK_WASM" -l:CBLAS/lib/cblas.a -l:CLAPACK-3.2.1/lapack.a -l:CLAPACK-3.2.1/libcblaswr.a -l:f2c_BLAS-3.8.0/blas.a -l:libf2c/libf2c.a -L"$VOSK"/src -l:vosk.a -lembind -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../test.js