@sapphi-red/speex-preprocess-wasm
Version:
WebAssembly build of SpeexDSP proprocess
1 lines • 33.6 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../node_modules/.pnpm/tsup@8.4.0_tsx@4.19.4_typescript@5.8.3/node_modules/tsup/assets/cjs_shims.js","../src/SpeexPreprocessCtlRequest.ts","../src/SpeexPreprocessor.ts","../wasm-out/speex.js"],"sourcesContent":["import './speexLicense.js'\n\nexport {\n default as SpeexPreprocessor,\n type LoadOptions\n} from './SpeexPreprocessor.js'\nexport {\n default as loadSpeexModule,\n type SpeexModule\n} from '../wasm-out/speex.js'\n","// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () =>\n typeof document === 'undefined'\n ? new URL(`file:${__filename}`).href\n : (document.currentScript && document.currentScript.src) ||\n new URL('main.js', document.baseURI).href\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","export const SpeexPreprocessCtlRequest = {\n /** Set preprocessor denoiser state */\n SET_DENOISE: 0,\n /** Get preprocessor denoiser state */\n GET_DENOISE: 1,\n\n /** Set preprocessor Automatic Gain Control state */\n SET_AGC: 2,\n /** Get preprocessor Automatic Gain Control state */\n GET_AGC: 3,\n\n /** Set preprocessor Voice Activity Detection state */\n SET_VAD: 4,\n /** Get preprocessor Voice Activity Detection state */\n GET_VAD: 5,\n\n /** Set preprocessor Automatic Gain Control level (float) */\n SET_AGC_LEVEL: 6,\n /** Get preprocessor Automatic Gain Control level (float) */\n GET_AGC_LEVEL: 7,\n\n // NOTE: de-reverberation is currently disabled\n // /** Set preprocessor dereverb state */\n // SET_DEREVERB: 8,\n // /** Get preprocessor dereverb state */\n // GET_DEREVERB: 9,\n\n // NOTE: de-reverberation is currently disabled\n // /** Set preprocessor dereverb level */\n // SET_DEREVERB_LEVEL: 10,\n // /** Get preprocessor dereverb level */\n // GET_DEREVERB_LEVEL: 11,\n\n // NOTE: de-reverberation is currently disabled\n // /** Set preprocessor dereverb decay */\n // SET_DEREVERB_DECAY: 12,\n // /** Get preprocessor dereverb decay */\n // GET_DEREVERB_DECAY: 13,\n\n /** Set probability required for the VAD to go from silence to voice */\n SET_PROB_START: 14,\n /** Get probability required for the VAD to go from silence to voice */\n GET_PROB_START: 15,\n\n /** Set probability required for the VAD to stay in the voice state (integer percent) */\n SET_PROB_CONTINUE: 16,\n /** Get probability required for the VAD to stay in the voice state (integer percent) */\n GET_PROB_CONTINUE: 17,\n\n /** Set maximum attenuation of the noise in dB (negative number) */\n SET_NOISE_SUPPRESS: 18,\n /** Get maximum attenuation of the noise in dB (negative number) */\n GET_NOISE_SUPPRESS: 19,\n\n /** Set maximum attenuation of the residual echo in dB (negative number) */\n SET_ECHO_SUPPRESS: 20,\n /** Get maximum attenuation of the residual echo in dB (negative number) */\n GET_ECHO_SUPPRESS: 21,\n\n /** Set maximum attenuation of the residual echo in dB when near end is active (negative number) */\n SET_ECHO_SUPPRESS_ACTIVE: 22,\n /** Get maximum attenuation of the residual echo in dB when near end is active (negative number) */\n GET_ECHO_SUPPRESS_ACTIVE: 23,\n\n // NOTE: needs SpeexEchoState pointer\n // /** Set the corresponding echo canceller state so that residual echo suppression can be performed (NULL for no residual echo suppression) */\n // SET_ECHO_STATE: 24,\n // /** Get the corresponding echo canceller state */\n // GET_ECHO_STATE: 25,\n\n /** Set maximal gain increase in dB/second (int32) */\n SET_AGC_INCREMENT: 26,\n\n /** Get maximal gain increase in dB/second (int32) */\n GET_AGC_INCREMENT: 27,\n\n /** Set maximal gain decrease in dB/second (int32) */\n SET_AGC_DECREMENT: 28,\n\n /** Get maximal gain decrease in dB/second (int32) */\n GET_AGC_DECREMENT: 29,\n\n /** Set maximal gain in dB (int32) */\n SET_AGC_MAX_GAIN: 30,\n\n /** Get maximal gain in dB (int32) */\n GET_AGC_MAX_GAIN: 31,\n\n /* Can't set loudness */\n /** Get loudness */\n GET_AGC_LOUDNESS: 33,\n\n /* Can't set gain */\n /** Get current gain (int32 percent) */\n GET_AGC_GAIN: 35,\n\n /* Can't set spectrum size */\n /** Get spectrum size for power spectrum (int32) */\n GET_PSD_SIZE: 37,\n\n /* Can't set power spectrum */\n /** Get power spectrum (int32[] of squared values) */\n GET_PSD: 39,\n\n /* Can't set noise size */\n /** Get spectrum size for noise estimate (int32) */\n GET_NOISE_PSD_SIZE: 41,\n\n /* Can't set noise estimate */\n /** Get noise estimate (int32[] of squared values) */\n GET_NOISE_PSD: 43,\n\n /* Can't set speech probability */\n /** Get speech probability in last frame (int32). */\n GET_PROB: 45,\n\n /** Set preprocessor Automatic Gain Control level (int32) */\n SET_AGC_TARGET: 46,\n /** Get preprocessor Automatic Gain Control level (int32) */\n GET_AGC_TARGET: 47\n} as const\n\nexport type SpeexPreprocessCtlRequest =\n (typeof SpeexPreprocessCtlRequest)[keyof typeof SpeexPreprocessCtlRequest]\n","import type {\n SpeexModule,\n SpeexPreprocessState,\n F32Ptr,\n I16Ptr,\n I32Ptr\n} from '../wasm-out/speex'\nimport { SpeexPreprocessCtlRequest } from './SpeexPreprocessCtlRequest'\n\nexport type LoadOptions = Pick<SpeexModule, 'locateFile' | 'wasmBinary'>\n\nconst I16_BYTE_SIZE = Int16Array.BYTES_PER_ELEMENT\nconst I32_BYTE_SIZE = Int32Array.BYTES_PER_ELEMENT\nconst F32_BYTE_SIZE = Float32Array.BYTES_PER_ELEMENT\n\nconst I16_MAX_NUMBER = 2 ** 16 / 2 - 1\n\nexport default class SpeexPreprocessor {\n private readonly speexModule: Readonly<SpeexModule>\n readonly frameSize: number\n readonly samplingRate: number\n\n private readonly state: SpeexPreprocessState\n private processBuffPtr: I16Ptr\n private processI16Buff: Int16Array\n\n private ctlBuffPtr?: I32Ptr | F32Ptr\n\n constructor(\n speexModule: Readonly<SpeexModule>,\n frameSize: number,\n samplingRate: number\n ) {\n this.speexModule = speexModule\n this.frameSize = frameSize\n this.samplingRate = samplingRate\n\n this.state = this.speexModule._speex_preprocess_state_init(\n this.frameSize,\n this.samplingRate\n )\n this.processBuffPtr = this.speexModule._malloc(\n this.frameSize * I16_BYTE_SIZE\n )\n this.processI16Buff = new Int16Array(this.frameSize)\n\n if (!this.processBuffPtr) {\n this.destroy()\n throw Error('Failed to allocate process buffer.')\n }\n }\n\n private mallocCtlBuffPtr() {\n if (this.ctlBuffPtr !== undefined) return\n this.ctlBuffPtr = this.speexModule._malloc(\n 4 /** I32_BYTE_SIZE && F32_BYTE_SIZE */\n )\n\n if (!this.ctlBuffPtr) {\n throw Error('Failed to allocate ctl buffer.')\n }\n }\n\n private ctl(req: SpeexPreprocessCtlRequest, output?: unknown) {\n const res = this.speexModule._speex_preprocess_ctl(this.state, req, output)\n if (res === -1) {\n throw new Error(`Unknown request: ${req}`)\n }\n }\n\n private ctlGetI32(req: SpeexPreprocessCtlRequest) {\n this.mallocCtlBuffPtr()\n\n const ctlBuffIndex = this.ctlBuffPtr! / I32_BYTE_SIZE\n\n this.ctl(req, this.ctlBuffPtr!)\n return this.speexModule.HEAP32[ctlBuffIndex]!\n }\n private ctlSetI32(req: SpeexPreprocessCtlRequest, value: number) {\n this.mallocCtlBuffPtr()\n\n const ctlBuffIndex = this.ctlBuffPtr! / I32_BYTE_SIZE\n this.speexModule.HEAP32[ctlBuffIndex] = value\n\n this.ctl(req, this.ctlBuffPtr!)\n }\n\n private ctlGetBool(req: SpeexPreprocessCtlRequest) {\n return this.ctlGetI32(req) === 1\n }\n private ctlSetBool(req: SpeexPreprocessCtlRequest, value: boolean) {\n this.ctlSetI32(req, value ? 1 : 0)\n }\n\n private ctlGetF32(req: SpeexPreprocessCtlRequest) {\n this.mallocCtlBuffPtr()\n\n const ctlBuffIndex = this.ctlBuffPtr! / F32_BYTE_SIZE\n\n this.ctl(req, this.ctlBuffPtr!)\n return this.speexModule.HEAPF32[ctlBuffIndex]!\n }\n private ctlSetF32(req: SpeexPreprocessCtlRequest, value: number) {\n this.mallocCtlBuffPtr()\n\n const ctlBuffIndex = this.ctlBuffPtr! / F32_BYTE_SIZE\n this.speexModule.HEAPF32[ctlBuffIndex] = value\n\n this.ctl(req, this.ctlBuffPtr!)\n }\n\n private ctlGetI32Array(req: SpeexPreprocessCtlRequest, size: number) {\n const buffPtr = this.speexModule._malloc(size * I32_BYTE_SIZE)\n const buffIndex = buffPtr / I32_BYTE_SIZE\n\n this.ctl(req, buffPtr)\n\n const result = new Int32Array(size)\n const res = this.speexModule.HEAP32.subarray(buffIndex, buffIndex + size)\n result.set(res)\n\n this.speexModule._free(buffPtr)\n\n return result\n }\n\n get denoise() {\n return this.ctlGetBool(SpeexPreprocessCtlRequest.GET_DENOISE)\n }\n set denoise(value: boolean) {\n this.ctlSetBool(SpeexPreprocessCtlRequest.SET_DENOISE, value)\n }\n\n get agc() {\n return this.ctlGetBool(SpeexPreprocessCtlRequest.GET_AGC)\n }\n set agc(value: boolean) {\n this.ctlSetBool(SpeexPreprocessCtlRequest.SET_AGC, value)\n }\n\n get vad() {\n return this.ctlGetBool(SpeexPreprocessCtlRequest.GET_VAD)\n }\n set vad(value: boolean) {\n this.ctlSetBool(SpeexPreprocessCtlRequest.SET_VAD, value)\n }\n\n get agcLevel() {\n return this.ctlGetF32(SpeexPreprocessCtlRequest.GET_AGC_LEVEL)\n }\n set agcLevel(value: number) {\n this.ctlSetF32(SpeexPreprocessCtlRequest.SET_AGC_LEVEL, value)\n }\n\n get probStart() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_PROB_START)\n }\n set probStart(value: number) {\n this.ctlSetI32(SpeexPreprocessCtlRequest.SET_PROB_START, value)\n }\n\n get probContinue() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_PROB_CONTINUE)\n }\n set probContinue(value: number) {\n this.ctlSetI32(SpeexPreprocessCtlRequest.SET_PROB_CONTINUE, value)\n }\n\n get noiseSuppress() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_NOISE_SUPPRESS)\n }\n set noiseSuppress(value: number) {\n this.ctlSetI32(SpeexPreprocessCtlRequest.SET_NOISE_SUPPRESS, value)\n }\n\n get echoSuppress() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_ECHO_SUPPRESS)\n }\n set echoSuppress(value: number) {\n this.ctlSetI32(SpeexPreprocessCtlRequest.SET_ECHO_SUPPRESS, value)\n }\n\n get echoSuppressActive() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_ECHO_SUPPRESS_ACTIVE)\n }\n set echoSuppressActive(value: number) {\n this.ctlSetI32(SpeexPreprocessCtlRequest.SET_ECHO_SUPPRESS_ACTIVE, value)\n }\n\n get agcIncrement() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_AGC_INCREMENT)\n }\n set agcIncrement(value: number) {\n this.ctlSetI32(SpeexPreprocessCtlRequest.SET_AGC_INCREMENT, value)\n }\n\n get agcDecrement() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_AGC_DECREMENT)\n }\n set agcDecrement(value: number) {\n this.ctlSetI32(SpeexPreprocessCtlRequest.SET_AGC_DECREMENT, value)\n }\n\n get agcMaxGain() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_AGC_MAX_GAIN)\n }\n set agcMaxGain(value: number) {\n this.ctlSetI32(SpeexPreprocessCtlRequest.SET_AGC_MAX_GAIN, value)\n }\n\n get agcLoudness() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_AGC_LOUDNESS)\n }\n\n get agcGain() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_AGC_GAIN)\n }\n\n get psdSize() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_PSD_SIZE)\n }\n\n get psd() {\n return this.ctlGetI32Array(SpeexPreprocessCtlRequest.GET_PSD, this.psdSize)\n }\n\n get noisePsdSize() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_NOISE_PSD_SIZE)\n }\n\n get noisePsd() {\n return this.ctlGetI32Array(\n SpeexPreprocessCtlRequest.GET_NOISE_PSD,\n this.noisePsdSize\n )\n }\n\n get prob() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_PROB)\n }\n\n get agcTarget() {\n return this.ctlGetI32(SpeexPreprocessCtlRequest.GET_AGC_TARGET)\n }\n set agcTarget(value: number) {\n this.ctlSetI32(SpeexPreprocessCtlRequest.SET_AGC_TARGET, value)\n }\n\n private assertFrameSize(frame: ArrayLike<number>) {\n if (frame.length !== this.frameSize) {\n throw new Error(\n `Frame size differs. Expected: ${this.frameSize}. Actual: ${frame.length}.`\n )\n }\n }\n\n processInt16(frame: Int16Array) {\n this.assertFrameSize(frame)\n\n const processBuffIndex = this.processBuffPtr / I16_BYTE_SIZE\n this.speexModule.HEAP16.set(frame, processBuffIndex)\n\n const vad = this.speexModule._speex_preprocess_run(\n this.state,\n this.processBuffPtr\n )\n const processedBuff = this.speexModule.HEAP16.subarray(\n processBuffIndex,\n processBuffIndex + this.frameSize\n )\n frame.set(processedBuff)\n\n return vad === 1\n }\n\n process(frame: Float32Array) {\n this.assertFrameSize(frame)\n\n for (let i = 0; i < frame.length; i++) {\n this.processI16Buff[i] = frame[i]! * I16_MAX_NUMBER\n }\n\n const vad = this.processInt16(this.processI16Buff)\n\n for (let i = 0; i < frame.length; i++) {\n frame[i] = this.processI16Buff[i]! / I16_MAX_NUMBER\n }\n\n return vad\n }\n\n destroy() {\n this.speexModule._free(this.processBuffPtr)\n if (this.ctlBuffPtr !== undefined) {\n this.speexModule._free(this.ctlBuffPtr)\n }\n }\n}\n","var Module = (() => {\n \n return (\nasync function(moduleArg = {}) {\n var moduleRtn;\n\nvar Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!=\"undefined\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\"&&process.type!=\"renderer\";var _scriptName=import.meta.url;var scriptDirectory=\"\";function locateFile(path){return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(\".\",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:\"same-origin\"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+\" : \"+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var wasmMemory;var ABORT=false;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);Module[\"HEAP16\"]=HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){}function initRuntime(){runtimeInitialized=true;wasmExports[\"f\"]()}function postRun(){}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++}function removeRunDependency(id){runDependencies--;if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){what=\"Aborted(\"+what+\")\";err(what);ABORT=true;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module[\"locateFile\"]){return locateFile(\"speex.wasm\")}return new URL(\"speex.wasm\",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming==\"function\"){try{var response=fetch(binaryFile,{credentials:\"same-origin\"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports[\"e\"];updateMemoryViews();removeRunDependency(\"wasm-instantiate\");return wasmExports}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){return receiveInstance(result[\"instance\"])}var info=getWasmImports();wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name=\"ExitStatus\";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var _fd_close=fd=>52;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>num<INT53_MIN||num>INT53_MAX?NaN:Number(num);function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);return 70}var printCharBuffers=[null,[],[]];var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j<len;j++){printChar(fd,HEAPU8[ptr+j])}num+=len}HEAPU32[pnum>>2]=num;return 0};{if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"]}var wasmImports={d:_emscripten_resize_heap,c:_fd_close,b:_fd_seek,a:_fd_write};var wasmExports=await createWasm();var ___wasm_call_ctors=wasmExports[\"f\"];var _speex_preprocess_state_init=Module[\"_speex_preprocess_state_init\"]=wasmExports[\"g\"];var _speex_preprocess_state_destroy=Module[\"_speex_preprocess_state_destroy\"]=wasmExports[\"h\"];var _speex_preprocess_run=Module[\"_speex_preprocess_run\"]=wasmExports[\"i\"];var _speex_preprocess_ctl=Module[\"_speex_preprocess_ctl\"]=wasmExports[\"j\"];var _free=Module[\"_free\"]=wasmExports[\"k\"];var _malloc=Module[\"_malloc\"]=wasmExports[\"l\"];function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);postRun()}{doRun()}}function preInit(){}preInit();run();moduleRtn=readyPromise;\n\n\n return moduleRtn;\n}\n);\n})();\nexport default Module;\n"],"mappings":"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","names":["Module","module","result"]}