Add JavaScript API (wasm) for speech enhancement GTCRN models (#2007)
This commit is contained in:
@@ -49,6 +49,7 @@ set(exported_functions
|
||||
SherpaOnnxDestroyKeywordSpotter
|
||||
SherpaOnnxGetKeywordResult
|
||||
SherpaOnnxIsKeywordStreamReady
|
||||
SherpaOnnxResetKeywordStream
|
||||
# VAD
|
||||
SherpaOnnxCreateCircularBuffer
|
||||
SherpaOnnxDestroyCircularBuffer
|
||||
@@ -87,6 +88,12 @@ set(exported_functions
|
||||
SherpaOnnxReadWaveFromBinaryData
|
||||
SherpaOnnxFreeWave
|
||||
SherpaOnnxWriteWave
|
||||
# speech enhancement
|
||||
SherpaOnnxCreateOfflineSpeechDenoiser
|
||||
SherpaOnnxDestroyDenoisedAudio
|
||||
SherpaOnnxDestroyOfflineSpeechDenoiser
|
||||
SherpaOnnxOfflineSpeechDenoiserGetSampleRate
|
||||
SherpaOnnxOfflineSpeechDenoiserRun
|
||||
)
|
||||
|
||||
|
||||
@@ -122,6 +129,7 @@ install(
|
||||
${CMAKE_SOURCE_DIR}/wasm/kws/sherpa-onnx-kws.js
|
||||
${CMAKE_SOURCE_DIR}/wasm/vad/sherpa-onnx-vad.js
|
||||
${CMAKE_SOURCE_DIR}/wasm/speaker-diarization/sherpa-onnx-speaker-diarization.js
|
||||
${CMAKE_SOURCE_DIR}/wasm/speech-enhancement/sherpa-onnx-speech-enhancement.js
|
||||
${CMAKE_SOURCE_DIR}/wasm/nodejs/sherpa-onnx-wave.js
|
||||
"$<TARGET_FILE_DIR:sherpa-onnx-wasm-nodejs>/sherpa-onnx-wasm-nodejs.js"
|
||||
"$<TARGET_FILE_DIR:sherpa-onnx-wasm-nodejs>/sherpa-onnx-wasm-nodejs.wasm"
|
||||
|
||||
@@ -26,21 +26,21 @@ function readWave(filename, Module) {
|
||||
return {samples: samples, sampleRate: sampleRate};
|
||||
}
|
||||
|
||||
function readWaveFromBinaryData(uint8Array) {
|
||||
function readWaveFromBinaryData(uint8Array, Module) {
|
||||
const numBytes = uint8Array.length * uint8Array.BYTES_PER_ELEMENT;
|
||||
const pointer = this.Module._malloc(numBytes);
|
||||
const pointer = Module._malloc(numBytes);
|
||||
|
||||
const dataOnHeap = new Uint8Array(Module.HEAPU8.buffer, pointer, numBytes);
|
||||
dataOnHeap.set(uint8Array);
|
||||
|
||||
const w = this.Module._SherpaOnnxReadWaveFromBinaryData(
|
||||
dataOnHeap.byteOffset, numBytes);
|
||||
const w =
|
||||
Module._SherpaOnnxReadWaveFromBinaryData(dataOnHeap.byteOffset, numBytes);
|
||||
if (w == 0) {
|
||||
console.log('Failed to read wave from binary data');
|
||||
return null;
|
||||
}
|
||||
|
||||
this.Module._free(pointer);
|
||||
Module._free(pointer);
|
||||
|
||||
const samplesPtr = Module.HEAP32[w / 4] / 4;
|
||||
const sampleRate = Module.HEAP32[w / 4 + 1];
|
||||
|
||||
Reference in New Issue
Block a user