Attempt to fix MacOs #13

This commit is contained in:
msqr1
2024-09-23 22:56:25 -07:00
parent c35cd06b14
commit 14c913d44c
10 changed files with 137 additions and 126 deletions

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -7,7 +7,7 @@ index bf7eda6..5fedaf6 100644
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
-CFLAGS = -DADD_ -O3 -CFLAGS = -DADD_ -O3
+CFLAGS = -DADD_ -O3 -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals +CFLAGS = -DADD_ -O3 -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Archive programs and flags # Archive programs and flags
@@ -20,7 +20,7 @@ index 80037d0..a964b2d 100644
# if no wrapping of the blas library is needed, uncomment next line # if no wrapping of the blas library is needed, uncomment next line
CC = emcc # -DNO_BLAS_WRAP CC = emcc # -DNO_BLAS_WRAP
-CFLAGS = -I$(TOPDIR)/INCLUDE -I$(TOPDIR)/../libf2c -O3 -CFLAGS = -I$(TOPDIR)/INCLUDE -I$(TOPDIR)/../libf2c -O3
+CFLAGS = -I$(TOPDIR)/INCLUDE -I$(TOPDIR)/../libf2c -O3 -fno-rtti -fno-exceptions -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals +CFLAGS = -I$(TOPDIR)/INCLUDE -I$(TOPDIR)/../libf2c -O3 -fno-rtti -fno-exceptions -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals
LOADER = $(CC) LOADER = $(CC)
LOADOPTS = LOADOPTS =
NOOPT = -O0 -I$(TOPDIR)/INCLUDE -I$(TOPDIR)/../libf2c NOOPT = -O0 -I$(TOPDIR)/INCLUDE -I$(TOPDIR)/../libf2c
@@ -33,7 +33,7 @@ index e071614..4647c2b 100644
# #
CC = emcc CC = emcc
-CFLAGS = -I../libf2c -O3 -CFLAGS = -I../libf2c -O3
+CFLAGS = -I../libf2c -O3 -fno-rtti -fno-exceptions -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals +CFLAGS = -I../libf2c -O3 -fno-rtti -fno-exceptions -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals
DRVOPTS = $(OPTS) DRVOPTS = $(OPTS)
NOOPT = NOOPT =
LOADER = emcc LOADER = emcc
@@ -46,7 +46,7 @@ index 6221401..d93b87f 100644
CC = emcc CC = emcc
SHELL = /bin/sh SHELL = /bin/sh
-CFLAGS = -DNON_UNIX_STDIO -O3 -CFLAGS = -DNON_UNIX_STDIO -O3
+CFLAGS = -DNON_UNIX_STDIO -O3 -fno-rtti -fno-exceptions -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals +CFLAGS = -DNON_UNIX_STDIO -O3 -fno-rtti -fno-exceptions -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals
LD = wasm-ld LD = wasm-ld
RANLIB = emranlib RANLIB = emranlib

View File

@@ -1,166 +1,177 @@
let objs = [] let objs = [];
let events = ["status", "partialResult", "result"] let events = ["status", "partialResult", "result"];
let storageWorkerURL = URL.createObjectURL(new Blob(['(', (() => {
let txtDecoder = new TextDecoder();
let txtEncoder = new TextEncoder();
onmessage = async msg => {
msg = msg.data;
let components = msg.storepath.split("/");
let prevDir = await navigator.storage.getDirectory();
for(let component of components) prevDir = await prevDir.getDirectoryHandle(component, { create: true });
let idHandle = await prevDir.getFileHandle("id", { create: true });
let mdlHandle = await prevDir.getFileHandle("model.tgz", { create: true });
let idFile = await idHandle.createSyncAccessHandle();
let mdlFile = await mdlHandle.createSyncAccessHandle();
let oldIdBuf = new ArrayBuffer(idFile.getSize());
idFile.read(oldIdBuf);
let tar, tgz;
if(txtDecoder.decode(oldIdBuf) == msg.id) {
tgz = new ArrayBuffer(mdlFile.getSize());
mdlFile.read(tgz);
tar = await new Response(new Response(tgz).body.pipeThrough(new DecompressionStream("gzip"))).arrayBuffer();
}
else {
let res = await fetch(msg.url);
if(!res.ok) {
postMessage("Unable to download model");
return;
}
let teed = res.body.tee();
tgz = await new Response(teed[0].pipeThrough(new CompressionStream("gzip"))).arrayBuffer();
mdlFile.write(tgz, { at: 0 });
mdlFile.truncate(tgz.byteLength);
let newId = txtEncoder.encode(msg.id);
idFile.write(newId, { at: 0 });
idFile.truncate(newId.length);
tar = await new Response(teed[1]).arrayBuffer();
}
idFile.close();
mdlFile.close();
self.postMessage(tar, [tar]);
}
}).toString(), ')()'], { type: "text/javascript" }))
let storageWorker = new Worker(storageWorkerURL);
let processorURL = URL.createObjectURL(new Blob(['(', (() => { let processorURL = URL.createObjectURL(new Blob(['(', (() => {
registerProcessor("VoskletTransferer", class extends AudioWorkletProcessor { registerProcessor("VoskletTransferer", class extends AudioWorkletProcessor {
constructor(opts) { constructor(opts) {
super() super();
this.count = 0 this.count = 0;
this.maxCount = opts.processorOptions.maxCount this.maxCount = opts.processorOptions.maxCount;
this.buffer = new Float32Array(this.maxCount * 128) this.buffer = new Float32Array(this.maxCount * 128);
} }
process(inputs) { process(inputs) {
if(!inputs[0][0]) return true if(!inputs[0][0]) return true;
this.buffer.set(inputs[0][0], this.count * 128) this.buffer.set(inputs[0][0], this.count++ * 128);
this.count++
if(this.count >= this.maxCount) { if(this.count >= this.maxCount) {
this.count = 0 this.count = 0;
this.port.postMessage(this.buffer, [this.buffer.buffer]) this.port.postMessage(this.buffer, [this.buffer.buffer]);
this.buffer = new Float32Array(this.maxCount * 128) this.buffer = new Float32Array(this.maxCount * 128);
} }
return true return true;
} }
}) })
}).toString(), ')()'], { type : "text/javascript" })) }).toString(), ')()'], { type: "text/javascript" }));
Module.cleanUp = async () => { Module.cleanUp = async () => {
for(let obj of objs) await obj.delete() for(let obj of objs) await obj.delete();
URL.revokeObjectURL(processorURL) URL.revokeObjectURL(processorURL);
URL.revokeObjectURL(storageWorkerURL);
storageWorker.terminate();
} }
Module.createTransferer = async (ctx, bufferSize) => { Module.createTransferer = async (ctx, bufferSize) => {
await ctx.audioWorklet.addModule(processorURL) await ctx.audioWorklet.addModule(processorURL);
return new AudioWorkletNode(ctx, "VoskletTransferer", { return new AudioWorkletNode(ctx, "VoskletTransferer", {
channelCountMode: "explicit", channelCountMode: "explicit",
numberOfInputs: 1, numberOfInputs: 1,
numberOfOutputs: 0, numberOfOutputs: 0,
channelCount: 1, channelCount: 1,
processorOptions: { maxCount: bufferSize / 128 } processorOptions: { maxCount: bufferSize / 128 }
}) });
}
getFileHandle = async (path, create = false) => {
let components = path.split("/")
let prevDir = await navigator.storage.getDirectory()
for(let component of components.slice(0, -1)) prevDir = await prevDir.getDirectoryHandle(component, { create : create })
return prevDir.getFileHandle(components[components.length - 1], { create : create })
} }
class CommonModel extends EventTarget { class CommonModel extends EventTarget {
constructor() { constructor() {
super() super();
objs.push(this) objs.push(this);
} }
delete() { delete() {
this.obj.delete() this.obj.delete();
} }
static async create(url, storepath, id, normalMdl) { static async mk(url, storepath, id, normalMdl) {
let mdl = new CommonModel() let mdl = new CommonModel();
let result = new Promise((resolve, reject) => { let result = new Promise((resolve, reject) => {
mdl.addEventListener("status", ev => { mdl.addEventListener("status", ev => {
if(!ev.detail) { if(!ev.detail) {
if(normalMdl) mdl.findWord = (word) => mdl.obj.findWord(word) if(normalMdl) mdl.findWord = word => mdl.obj.findWord(word)
resolve(mdl) resolve(mdl)
} }
else reject(ev.detail) else reject(ev.detail)
}, { once : true }) }, { once : true })
}) });
let tar storageWorker.addEventListener("message", tar => {
try { tar = tar.data;
let dataFile = await (await getFileHandle(storepath + "/model.tgz")).getFile() let tarStart = _malloc(tar.byteLength);
let idFile = await (await getFileHandle(storepath + "/id")).getFile() HEAPU8.set(new Uint8Array(tar), tarStart);
if(await idFile.text() != id) throw "" mdl.obj = new Module.CommonModel(objs.length - 1, normalMdl, "/" + storepath, id, tarStart, tar.byteLength);
tar = await new Response(dataFile.stream().pipeThrough(new DecompressionStream("gzip"))).arrayBuffer() }, { once: true });
} storageWorker.postMessage({
catch { url: url,
try { storepath: storepath,
let res = await fetch(url) id: id
if (!res.ok) throw "Unable to download model" });
let teedBody = res.body.tee() return result;
let newDataFile = await (await getFileHandle(storepath + "/model.tgz", true)).createWritable()
await newDataFile.write(await new Response(teedBody[0].pipeThrough(new CompressionStream("gzip"))).arrayBuffer())
await newDataFile.close()
let newIDFile = await (await getFileHandle(storepath + "/id", true)).createWritable()
await newIDFile.write(id)
await newIDFile.close()
tar = await new Response(teedBody[1]).arrayBuffer()
}
catch(e) {
mdl.delete()
throw e
}
}
let tarStart = _malloc(tar.byteLength)
HEAPU8.set(new Uint8Array(tar), tarStart)
mdl.obj = new Module.CommonModel(objs.length - 1, normalMdl, "/" + storepath, id, tarStart, tar.byteLength)
return result
} }
} }
Module.createModel = async (url, storepath, id) => { Module.createModel = async (url, storepath, id) =>
return CommonModel.create(url, storepath, id, true) CommonModel.mk(url, storepath, id, true);
}
Module.createSpkModel = async (url, storepath, id) => { Module.createSpkModel = async (url, storepath, id) =>
return CommonModel.create(url, storepath, id, false) CommonModel.mk(url, storepath, id, false);
}
class Recognizer extends EventTarget { class Recognizer extends EventTarget {
constructor() { constructor() {
super() super();
objs.push(this) objs.push(this);
return new Proxy(this, { return new Proxy(this, {
get(self, prop, _) { get(self, prop, _) {
if(self[prop] == undefined && self.obj[prop] == undefined) return undefined if(self[prop] == undefined && self.obj[prop] == undefined) return;
let p = self[prop] let p = self[prop];
if(p) return p.bind ? p.bind(self) : p if(p) return p.bind ? p.bind(self) : p;
p = self.obj[prop] p = self.obj[prop];
return p.bind ? p.bind(self.obj) : p return p.bind ? p.bind(self.obj) : p;
} }
}) })
} }
acceptWaveform(audioData) { acceptWaveform(audioData) {
let start = _malloc(audioData.length * 4) let start = _malloc(audioData.length * 4);
HEAPF32.set(audioData, start / 4) HEAPF32.set(audioData, start / 4);
this.obj.acceptWaveform(start, audioData.length) this.obj.acceptWaveform(start, audioData.length);
} }
async delete(processCurrent = false) { async delete(processCurrent = false) {
let result = new Promise((resolve, _) => this.addEventListener("status", _ => { let result = new Promise((resolve, _) => this.addEventListener("status", _ => {
this.obj.delete() this.obj.delete();
resolve() resolve();
}, { once : true })) }, { once: true }));
this.obj.safeDelete(processCurrent) this.obj.safeDelete(processCurrent);
return result return result;
} }
static async create(model, sampleRate, mode, grammar, spkModel) { static async mk(model, sampleRate, mode, grammar, spkModel) {
let rec = new Recognizer() let rec = new Recognizer();
let result = new Promise((resolve, reject) => { let result = new Promise((resolve, reject) => {
rec.addEventListener("status", ev => { rec.addEventListener("status", ev => {
if(!ev.detail) resolve(rec) if(!ev.detail) resolve(rec);
else reject(ev.detail) else reject(ev.detail);
}, { once : true }) }, { once: true });
}) })
switch(mode) { switch(mode) {
case 1: case 1:
rec.obj = new Module.Recognizer(objs.length - 1, sampleRate, model) rec.obj = new Module.Recognizer(objs.length - 1, sampleRate, model);
break break;
case 2: case 2:
rec.obj = new Module.Recognizer(objs.length -1, sampleRate, model, spkModel) rec.obj = new Module.Recognizer(objs.length -1, sampleRate, model, spkModel);
break break;
default: default:
rec.obj = new Module.Recognizer(objs.length - 1, sampleRate, model, grammar, 0) rec.obj = new Module.Recognizer(objs.length - 1, sampleRate, model, grammar, 0);
} }
return result return result;
} }
} }
Module.createRecognizer = (model, sampleRate) =>
Recognizer.mk(model.obj, sampleRate, 1);
Module.createRecognizer = (model, sampleRate) => { Module.createRecognizerWithSpkModel = (model, sampleRate, spkModel) =>
return Recognizer.create(model.obj, sampleRate, 1) Recognizer.mk(model.obj, sampleRate, 2, null, spkModel.obj);
}
Module.createRecognizerWithSpkModel = (model, sampleRate, spkModel) => { Module.createRecognizerWithGrm = (model, sampleRate, grammar) =>
return Recognizer.create(model.obj, sampleRate, 2, null, spkModel.obj) Recognizer.mk(model.obj, sampleRate, 3, grammar, null);
}
Module.createRecognizerWithGrm = (model, sampleRate, grammar) => {
return Recognizer.create(model.obj, sampleRate, 3, grammar, null)
}

View File

@@ -42,7 +42,7 @@ if [ ! -d "$OPENFST" ]; then
git clone --depth=1 https://github.com/alphacep/openfst /tmp/openfst && git clone --depth=1 https://github.com/alphacep/openfst /tmp/openfst &&
cd /tmp/openfst && cd /tmp/openfst &&
autoreconf -is && autoreconf -is &&
CXXFLAGS="-r -O3 -fno-rtti -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -flto" emconfigure ./configure --prefix="$OPENFST" --enable-static --disable-shared --enable-lookahead-fsts --enable-ngram-fsts --disable-bin && CXXFLAGS="-r -O3 -fno-rtti -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -flto" emconfigure ./configure --prefix="$OPENFST" --enable-static --disable-shared --enable-lookahead-fsts --enable-ngram-fsts --disable-bin &&
emmake make -j"$JOBS" install && emmake make -j"$JOBS" install &&
echo "PACKAGE_VERSION = 1.8.0" >> "$OPENFST"/Makefile echo "PACKAGE_VERSION = 1.8.0" >> "$OPENFST"/Makefile
fi fi
@@ -58,7 +58,7 @@ if [ ! -d "$KALDI" ]; then
git clone -b vosk --depth=1 https://github.com/alphacep/kaldi "$KALDI" && git clone -b vosk --depth=1 https://github.com/alphacep/kaldi "$KALDI" &&
cd "$KALDI"/src && cd "$KALDI"/src &&
git apply "$SRC"/Kaldi.patch && git apply "$SRC"/Kaldi.patch &&
CXXFLAGS="-O3 -UHAVE_EXECINFO_H -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -Wno-unused-variable -Wno-unused-but-set-variable -g0" LDFLAGS="-lembind" emconfigure ./configure --use-cuda=no --with-cudadecoder=no --static --static-math=yes --static-fst=yes --debug-level=0 --fst-root="$OPENFST" --clapack-root="$CLAPACK_WASM" --host=WASM && CXXFLAGS="-O3 -UHAVE_EXECINFO_H -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -Wno-unused-variable -Wno-unused-but-set-variable -g0" LDFLAGS="-lembind" emconfigure ./configure --use-cuda=no --with-cudadecoder=no --static --static-math=yes --static-fst=yes --debug-level=0 --fst-root="$OPENFST" --clapack-root="$CLAPACK_WASM" --host=WASM &&
emmake make -j"$JOBS" online2 rnnlm emmake make -j"$JOBS" online2 rnnlm
fi fi
@@ -67,12 +67,12 @@ if [ ! -d "$VOSK" ]; then
cd "$VOSK"/src && cd "$VOSK"/src &&
git apply "$SRC"/Vosk.patch && git apply "$SRC"/Vosk.patch &&
VOSK_FILES="recognizer.cc language_model.cc model.cc spk_model.cc vosk_api.cc" && VOSK_FILES="recognizer.cc language_model.cc model.cc spk_model.cc vosk_api.cc" &&
em++ -O3 -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -Wno-deprecated -I. -I"$KALDI"/src -I"$OPENFST"/include $VOSK_FILES -c && em++ -O3 -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -Wno-deprecated -I. -I"$KALDI"/src -I"$OPENFST"/include $VOSK_FILES -c &&
emar -rcs vosk.a ${VOSK_FILES//.cc/.o} emar -rcs vosk.a ${VOSK_FILES//.cc/.o}
fi fi
cd "$SRC" && cd "$SRC" &&
em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O3 -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 -sINITIAL_MEMORY="$INITIAL_MEMORY" -sALLOW_MEMORY_GROWTH -sPOLYFILL=0 -sEXIT_RUNTIME=0 -sINVOKE_RUN=0 -sSUPPORT_LONGJMP=0 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -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 -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../Vosklet.js em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O3 -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 -sINITIAL_MEMORY="$INITIAL_MEMORY" -sALLOW_MEMORY_GROWTH -sPOLYFILL=0 -sEXIT_RUNTIME=0 -sINVOKE_RUN=0 -sSUPPORT_LONGJMP=0 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -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 -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../Vosklet.js
cd .. && cd .. &&
rm -f Vosklet.worker.js rm -f Vosklet.worker.js
@@ -80,6 +80,6 @@ cp Vosklet.js Examples/Vosklet.js &&
cp Vosklet.wasm Examples/Vosklet.wasm && cp Vosklet.wasm Examples/Vosklet.wasm &&
# Can't serve files from raw.githubusercontent with Content-Encoding: gzip header so the browser won't decompress automatically. Manually decompressing instead. # Can't serve files from raw.githubusercontent with Content-Encoding: gzip header so the browser won't decompress automatically. Manually decompressing instead.
sed -i 's/res.body/new Response(res.body.pipeThrough(new DecompressionStream("gzip"))).body/' Examples/Vosklet.js && sed -i 's/.pipeThrough(new CompressionStream("gzip"))//;s/teed\[1\]/teed[1].pipeThrough(new DecompressionStream("gzip"))/' Examples/Vosklet.js &&
rm -rf /tmp/openfst rm -rf /tmp/openfst

8
test
View File

@@ -36,13 +36,13 @@ OPENFST=$(realpath openfst)
CLAPACK_WASM=$(realpath clapack-wasm) CLAPACK_WASM=$(realpath clapack-wasm)
cd src && cd src &&
MODE=1 && # 0: Debug, 1: Optimized release, else custom MODE=0 && # 0: Debug, 1: Optimized release, else custom
echo "Mode = $MODE" && echo "Mode = $MODE" &&
if [ "$MODE" = 0 ]; then if [ "$MODE" = 0 ]; then
em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O0 -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 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -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 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../test.js em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O0 -g3 -Wall -Werror -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 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -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
elif [ "$MODE" = 1 ]; then elif [ "$MODE" = 1 ]; then
em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O3 -Wall -Werror -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 -sINITIAL_MEMORY="$INITIAL_MEMORY" -sALLOW_MEMORY_GROWTH -sPOLYFILL=0 -sEXIT_RUNTIME=0 -sINVOKE_RUN=0 -sSUPPORT_LONGJMP=0 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -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 -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../test.js em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O3 -Wall -Werror -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 -sINITIAL_MEMORY="$INITIAL_MEMORY" -sALLOW_MEMORY_GROWTH -sPOLYFILL=0 -sEXIT_RUNTIME=0 -sINVOKE_RUN=0 -sSUPPORT_LONGJMP=0 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -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 -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../test.js
fi fi
cd .. && cd .. &&
sed -i 's/res.body/new Response(res.body.pipeThrough(new DecompressionStream("gzip"))).body/' test.js && sed -i 's/.pipeThrough(new CompressionStream("gzip"))//;s/teed\[1\]/teed[1].pipeThrough(new DecompressionStream("gzip"))/' test.js &&
rm -f test.worker.js rm -f test.worker.js