@runanywhere/web 0.1.0-beta.3 → 0.1.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/Foundation/StructOffsets.d.ts +34 -5
  2. package/dist/Foundation/StructOffsets.d.ts.map +1 -1
  3. package/dist/Foundation/StructOffsets.js +128 -93
  4. package/dist/Foundation/StructOffsets.js.map +1 -1
  5. package/dist/Infrastructure/ExtensionPoint.d.ts +78 -0
  6. package/dist/Infrastructure/ExtensionPoint.d.ts.map +1 -0
  7. package/dist/Infrastructure/ExtensionPoint.js +118 -0
  8. package/dist/Infrastructure/ExtensionPoint.js.map +1 -0
  9. package/dist/Infrastructure/LocalFileStorage.d.ts +116 -0
  10. package/dist/Infrastructure/LocalFileStorage.d.ts.map +1 -0
  11. package/dist/Infrastructure/LocalFileStorage.js +368 -0
  12. package/dist/Infrastructure/LocalFileStorage.js.map +1 -0
  13. package/dist/Infrastructure/ModelDownloader.d.ts +16 -5
  14. package/dist/Infrastructure/ModelDownloader.d.ts.map +1 -1
  15. package/dist/Infrastructure/ModelDownloader.js +54 -7
  16. package/dist/Infrastructure/ModelDownloader.js.map +1 -1
  17. package/dist/Infrastructure/ModelFileInference.d.ts +39 -0
  18. package/dist/Infrastructure/ModelFileInference.d.ts.map +1 -0
  19. package/dist/Infrastructure/ModelFileInference.js +110 -0
  20. package/dist/Infrastructure/ModelFileInference.js.map +1 -0
  21. package/dist/Infrastructure/ModelLoaderTypes.d.ts +76 -11
  22. package/dist/Infrastructure/ModelLoaderTypes.d.ts.map +1 -1
  23. package/dist/Infrastructure/ModelLoaderTypes.js +7 -1
  24. package/dist/Infrastructure/ModelLoaderTypes.js.map +1 -1
  25. package/dist/Infrastructure/ModelManager.d.ts +30 -104
  26. package/dist/Infrastructure/ModelManager.d.ts.map +1 -1
  27. package/dist/Infrastructure/ModelManager.js +209 -544
  28. package/dist/Infrastructure/ModelManager.js.map +1 -1
  29. package/dist/Infrastructure/ModelRegistry.d.ts +6 -0
  30. package/dist/Infrastructure/ModelRegistry.d.ts.map +1 -1
  31. package/dist/Infrastructure/ModelRegistry.js +11 -0
  32. package/dist/Infrastructure/ModelRegistry.js.map +1 -1
  33. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts +3 -29
  34. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts.map +1 -1
  35. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js +48 -44
  36. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js.map +1 -1
  37. package/dist/Public/Extensions/VoicePipelineTypes.d.ts +28 -37
  38. package/dist/Public/Extensions/VoicePipelineTypes.d.ts.map +1 -1
  39. package/dist/Public/Extensions/VoicePipelineTypes.js +4 -1
  40. package/dist/Public/Extensions/VoicePipelineTypes.js.map +1 -1
  41. package/dist/Public/RunAnywhere.d.ts +65 -61
  42. package/dist/Public/RunAnywhere.d.ts.map +1 -1
  43. package/dist/Public/RunAnywhere.js +193 -141
  44. package/dist/Public/RunAnywhere.js.map +1 -1
  45. package/dist/index.d.ts +23 -39
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +19 -31
  48. package/dist/index.js.map +1 -1
  49. package/dist/types/index.d.ts +0 -1
  50. package/dist/types/index.d.ts.map +1 -1
  51. package/dist/types/index.js +1 -0
  52. package/dist/types/index.js.map +1 -1
  53. package/package.json +1 -5
  54. package/wasm/racommons.js +91 -91
  55. package/wasm/racommons.wasm +0 -0
  56. package/dist/Foundation/SherpaONNXBridge.d.ts +0 -147
  57. package/dist/Foundation/SherpaONNXBridge.d.ts.map +0 -1
  58. package/dist/Foundation/SherpaONNXBridge.js +0 -345
  59. package/dist/Foundation/SherpaONNXBridge.js.map +0 -1
  60. package/dist/Infrastructure/AudioCapture.d.ts +0 -87
  61. package/dist/Infrastructure/AudioCapture.d.ts.map +0 -1
  62. package/dist/Infrastructure/AudioCapture.js +0 -231
  63. package/dist/Infrastructure/AudioCapture.js.map +0 -1
  64. package/dist/Infrastructure/AudioPlayback.d.ts +0 -53
  65. package/dist/Infrastructure/AudioPlayback.d.ts.map +0 -1
  66. package/dist/Infrastructure/AudioPlayback.js +0 -117
  67. package/dist/Infrastructure/AudioPlayback.js.map +0 -1
  68. package/dist/Infrastructure/VLMWorkerBridge.d.ts +0 -211
  69. package/dist/Infrastructure/VLMWorkerBridge.d.ts.map +0 -1
  70. package/dist/Infrastructure/VLMWorkerBridge.js +0 -264
  71. package/dist/Infrastructure/VLMWorkerBridge.js.map +0 -1
  72. package/dist/Infrastructure/VLMWorkerRuntime.d.ts +0 -38
  73. package/dist/Infrastructure/VLMWorkerRuntime.d.ts.map +0 -1
  74. package/dist/Infrastructure/VLMWorkerRuntime.js +0 -503
  75. package/dist/Infrastructure/VLMWorkerRuntime.js.map +0 -1
  76. package/dist/Infrastructure/VideoCapture.d.ts +0 -118
  77. package/dist/Infrastructure/VideoCapture.d.ts.map +0 -1
  78. package/dist/Infrastructure/VideoCapture.js +0 -207
  79. package/dist/Infrastructure/VideoCapture.js.map +0 -1
  80. package/dist/Public/Extensions/DiffusionTypes.d.ts +0 -64
  81. package/dist/Public/Extensions/DiffusionTypes.d.ts.map +0 -1
  82. package/dist/Public/Extensions/DiffusionTypes.js +0 -28
  83. package/dist/Public/Extensions/DiffusionTypes.js.map +0 -1
  84. package/dist/Public/Extensions/EmbeddingsTypes.d.ts +0 -33
  85. package/dist/Public/Extensions/EmbeddingsTypes.d.ts.map +0 -1
  86. package/dist/Public/Extensions/EmbeddingsTypes.js +0 -13
  87. package/dist/Public/Extensions/EmbeddingsTypes.js.map +0 -1
  88. package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts +0 -44
  89. package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts.map +0 -1
  90. package/dist/Public/Extensions/RunAnywhere+Diffusion.js +0 -189
  91. package/dist/Public/Extensions/RunAnywhere+Diffusion.js.map +0 -1
  92. package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts +0 -56
  93. package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts.map +0 -1
  94. package/dist/Public/Extensions/RunAnywhere+Embeddings.js +0 -240
  95. package/dist/Public/Extensions/RunAnywhere+Embeddings.js.map +0 -1
  96. package/dist/Public/Extensions/RunAnywhere+STT.d.ts +0 -95
  97. package/dist/Public/Extensions/RunAnywhere+STT.d.ts.map +0 -1
  98. package/dist/Public/Extensions/RunAnywhere+STT.js +0 -417
  99. package/dist/Public/Extensions/RunAnywhere+STT.js.map +0 -1
  100. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts +0 -69
  101. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts.map +0 -1
  102. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js +0 -196
  103. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js.map +0 -1
  104. package/dist/Public/Extensions/RunAnywhere+TTS.d.ts +0 -55
  105. package/dist/Public/Extensions/RunAnywhere+TTS.d.ts.map +0 -1
  106. package/dist/Public/Extensions/RunAnywhere+TTS.js +0 -253
  107. package/dist/Public/Extensions/RunAnywhere+TTS.js.map +0 -1
  108. package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts +0 -80
  109. package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts.map +0 -1
  110. package/dist/Public/Extensions/RunAnywhere+TextGeneration.js +0 -436
  111. package/dist/Public/Extensions/RunAnywhere+TextGeneration.js.map +0 -1
  112. package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts +0 -82
  113. package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts.map +0 -1
  114. package/dist/Public/Extensions/RunAnywhere+ToolCalling.js +0 -576
  115. package/dist/Public/Extensions/RunAnywhere+ToolCalling.js.map +0 -1
  116. package/dist/Public/Extensions/RunAnywhere+VAD.d.ts +0 -70
  117. package/dist/Public/Extensions/RunAnywhere+VAD.d.ts.map +0 -1
  118. package/dist/Public/Extensions/RunAnywhere+VAD.js +0 -231
  119. package/dist/Public/Extensions/RunAnywhere+VAD.js.map +0 -1
  120. package/dist/Public/Extensions/RunAnywhere+VLM.d.ts +0 -58
  121. package/dist/Public/Extensions/RunAnywhere+VLM.d.ts.map +0 -1
  122. package/dist/Public/Extensions/RunAnywhere+VLM.js +0 -262
  123. package/dist/Public/Extensions/RunAnywhere+VLM.js.map +0 -1
  124. package/dist/Public/Extensions/STTTypes.d.ts +0 -53
  125. package/dist/Public/Extensions/STTTypes.d.ts.map +0 -1
  126. package/dist/Public/Extensions/STTTypes.js +0 -16
  127. package/dist/Public/Extensions/STTTypes.js.map +0 -1
  128. package/dist/Public/Extensions/TTSTypes.d.ts +0 -31
  129. package/dist/Public/Extensions/TTSTypes.d.ts.map +0 -1
  130. package/dist/Public/Extensions/TTSTypes.js +0 -3
  131. package/dist/Public/Extensions/TTSTypes.js.map +0 -1
  132. package/dist/Public/Extensions/ToolCallingTypes.d.ts +0 -78
  133. package/dist/Public/Extensions/ToolCallingTypes.d.ts.map +0 -1
  134. package/dist/Public/Extensions/ToolCallingTypes.js +0 -8
  135. package/dist/Public/Extensions/ToolCallingTypes.js.map +0 -1
  136. package/dist/Public/Extensions/VADTypes.d.ts +0 -30
  137. package/dist/Public/Extensions/VADTypes.d.ts.map +0 -1
  138. package/dist/Public/Extensions/VADTypes.js +0 -8
  139. package/dist/Public/Extensions/VADTypes.js.map +0 -1
  140. package/dist/Public/Extensions/VLMTypes.d.ts +0 -56
  141. package/dist/Public/Extensions/VLMTypes.d.ts.map +0 -1
  142. package/dist/Public/Extensions/VLMTypes.js +0 -24
  143. package/dist/Public/Extensions/VLMTypes.js.map +0 -1
  144. package/dist/types/LLMTypes.d.ts +0 -48
  145. package/dist/types/LLMTypes.d.ts.map +0 -1
  146. package/dist/types/LLMTypes.js +0 -8
  147. package/dist/types/LLMTypes.js.map +0 -1
  148. package/dist/workers/vlm-worker.d.ts +0 -9
  149. package/dist/workers/vlm-worker.d.ts.map +0 -1
  150. package/dist/workers/vlm-worker.js +0 -10
  151. package/dist/workers/vlm-worker.js.map +0 -1
  152. package/wasm/racommons-webgpu.js +0 -156
  153. package/wasm/racommons-webgpu.wasm +0 -0
  154. package/wasm/sherpa/sherpa-onnx-asr.js +0 -1538
  155. package/wasm/sherpa/sherpa-onnx-glue-original.js +0 -19
  156. package/wasm/sherpa/sherpa-onnx-glue.js +0 -17
  157. package/wasm/sherpa/sherpa-onnx-tts.js +0 -657
  158. package/wasm/sherpa/sherpa-onnx-vad.js +0 -337
  159. package/wasm/sherpa/sherpa-onnx-wave.js +0 -88
  160. package/wasm/sherpa/sherpa-onnx.wasm +0 -0
@@ -1,337 +0,0 @@
1
- function freeConfig(config, Module) {
2
- if ('buffer' in config) {
3
- Module._free(config.buffer);
4
- }
5
-
6
- if ('sileroVad' in config) {
7
- freeConfig(config.sileroVad, Module)
8
- }
9
-
10
- if ('tenVad' in config) {
11
- freeConfig(config.tenVad, Module)
12
- }
13
-
14
-
15
- Module._free(config.ptr);
16
- }
17
-
18
- // The user should free the returned pointers
19
- function initSherpaOnnxSileroVadModelConfig(config, Module) {
20
- const modelLen = Module.lengthBytesUTF8(config.model || '') + 1;
21
-
22
- const n = modelLen;
23
-
24
- const buffer = Module._malloc(n);
25
-
26
- const len = 6 * 4;
27
- const ptr = Module._malloc(len);
28
-
29
- Module.stringToUTF8(config.model || '', buffer, modelLen);
30
-
31
- let offset = 0;
32
- Module.setValue(ptr, buffer, 'i8*');
33
- offset += 4;
34
-
35
- Module.setValue(ptr + offset, config.threshold || 0.5, 'float');
36
- offset += 4;
37
-
38
- Module.setValue(ptr + offset, config.minSilenceDuration || 0.5, 'float');
39
- offset += 4;
40
-
41
- Module.setValue(ptr + offset, config.minSpeechDuration || 0.25, 'float');
42
- offset += 4;
43
-
44
- Module.setValue(ptr + offset, config.windowSize || 512, 'i32');
45
- offset += 4;
46
-
47
- Module.setValue(ptr + offset, config.maxSpeechDuration || 20, 'float');
48
- offset += 4;
49
-
50
- return {
51
- buffer: buffer, ptr: ptr, len: len,
52
- }
53
- }
54
-
55
- function initSherpaOnnxTenVadModelConfig(config, Module) {
56
- const modelLen = Module.lengthBytesUTF8(config.model || '') + 1;
57
-
58
- const n = modelLen;
59
-
60
- const buffer = Module._malloc(n);
61
-
62
- const len = 6 * 4;
63
- const ptr = Module._malloc(len);
64
-
65
- Module.stringToUTF8(config.model || '', buffer, modelLen);
66
-
67
- let offset = 0;
68
- Module.setValue(ptr, buffer, 'i8*');
69
- offset += 4;
70
-
71
- Module.setValue(ptr + offset, config.threshold || 0.5, 'float');
72
- offset += 4;
73
-
74
- Module.setValue(ptr + offset, config.minSilenceDuration || 0.5, 'float');
75
- offset += 4;
76
-
77
- Module.setValue(ptr + offset, config.minSpeechDuration || 0.25, 'float');
78
- offset += 4;
79
-
80
- Module.setValue(ptr + offset, config.windowSize || 256, 'i32');
81
- offset += 4;
82
-
83
- Module.setValue(ptr + offset, config.maxSpeechDuration || 20, 'float');
84
- offset += 4;
85
-
86
- return {
87
- buffer: buffer, ptr: ptr, len: len,
88
- }
89
- }
90
-
91
- function initSherpaOnnxVadModelConfig(config, Module) {
92
- if (!('sileroVad' in config)) {
93
- config.sileroVad = {
94
- model: '',
95
- threshold: 0.50,
96
- minSilenceDuration: 0.50,
97
- minSpeechDuration: 0.25,
98
- windowSize: 512,
99
- maxSpeechDuration: 20,
100
- };
101
- }
102
-
103
- if (!('tenVad' in config)) {
104
- config.tenVad = {
105
- model: '',
106
- threshold: 0.50,
107
- minSilenceDuration: 0.50,
108
- minSpeechDuration: 0.25,
109
- windowSize: 256,
110
- maxSpeechDuration: 20,
111
- };
112
- }
113
-
114
- const sileroVad =
115
- initSherpaOnnxSileroVadModelConfig(config.sileroVad, Module);
116
-
117
- const tenVad = initSherpaOnnxTenVadModelConfig(config.tenVad, Module);
118
-
119
- const len = sileroVad.len + 4 * 4 + tenVad.len;
120
- const ptr = Module._malloc(len);
121
-
122
- const providerLen = Module.lengthBytesUTF8(config.provider || 'cpu') + 1;
123
- const buffer = Module._malloc(providerLen);
124
- Module.stringToUTF8(config.provider || 'cpu', buffer, providerLen);
125
-
126
- let offset = 0;
127
- Module._CopyHeap(sileroVad.ptr, sileroVad.len, ptr + offset);
128
- offset += sileroVad.len;
129
-
130
- Module.setValue(ptr + offset, config.sampleRate || 16000, 'i32');
131
- offset += 4;
132
-
133
- Module.setValue(ptr + offset, config.numThreads || 1, 'i32');
134
- offset += 4;
135
-
136
- Module.setValue(ptr + offset, buffer, 'i8*'); // provider
137
- offset += 4;
138
-
139
- Module.setValue(ptr + offset, config.debug || 0, 'i32');
140
- offset += 4;
141
-
142
- Module._CopyHeap(tenVad.ptr, tenVad.len, ptr + offset);
143
- offset += tenVad.len;
144
-
145
- return {
146
- buffer: buffer, ptr: ptr, len: len, sileroVad: sileroVad, tenVad: tenVad
147
- }
148
- }
149
-
150
- function createVad(Module, myConfig) {
151
- const sileroVad = {
152
- model: './silero_vad.onnx',
153
- threshold: 0.50,
154
- minSilenceDuration: 0.50,
155
- minSpeechDuration: 0.25,
156
- maxSpeechDuration: 20,
157
- windowSize: 512,
158
- };
159
-
160
- const tenVad = {
161
- model: '',
162
- threshold: 0.50,
163
- minSilenceDuration: 0.50,
164
- minSpeechDuration: 0.25,
165
- maxSpeechDuration: 20,
166
- windowSize: 256,
167
- };
168
-
169
- let config = {
170
- sileroVad: sileroVad,
171
- tenVad: tenVad,
172
- sampleRate: 16000,
173
- numThreads: 1,
174
- provider: 'cpu',
175
- debug: 1,
176
- bufferSizeInSeconds: 30,
177
- };
178
-
179
- if (myConfig) {
180
- config = myConfig;
181
- }
182
-
183
- return new Vad(config, Module);
184
- }
185
-
186
-
187
- class CircularBuffer {
188
- constructor(capacity, Module) {
189
- this.handle = Module._SherpaOnnxCreateCircularBuffer(capacity);
190
- this.Module = Module;
191
- }
192
-
193
- free() {
194
- this.Module._SherpaOnnxDestroyCircularBuffer(this.handle);
195
- this.handle = 0
196
- }
197
-
198
- /**
199
- * @param samples {Float32Array}
200
- */
201
- push(samples) {
202
- const pointer =
203
- this.Module._malloc(samples.length * samples.BYTES_PER_ELEMENT);
204
- this.Module.HEAPF32.set(samples, pointer / samples.BYTES_PER_ELEMENT);
205
- this.Module._SherpaOnnxCircularBufferPush(
206
- this.handle, pointer, samples.length);
207
- this.Module._free(pointer);
208
- }
209
-
210
- get(startIndex, n) {
211
- const p =
212
- this.Module._SherpaOnnxCircularBufferGet(this.handle, startIndex, n);
213
-
214
- const samplesPtr = p / 4;
215
- const samples = new Float32Array(n);
216
- for (let i = 0; i < n; i++) {
217
- samples[i] = this.Module.HEAPF32[samplesPtr + i];
218
- }
219
-
220
- this.Module._SherpaOnnxCircularBufferFree(p);
221
-
222
- return samples;
223
- }
224
-
225
- pop(n) {
226
- this.Module._SherpaOnnxCircularBufferPop(this.handle, n);
227
- }
228
-
229
- size() {
230
- return this.Module._SherpaOnnxCircularBufferSize(this.handle);
231
- }
232
-
233
- head() {
234
- return this.Module._SherpaOnnxCircularBufferHead(this.handle);
235
- }
236
-
237
- reset() {
238
- this.Module._SherpaOnnxCircularBufferReset(this.handle);
239
- }
240
- }
241
-
242
- class Vad {
243
- constructor(configObj, Module) {
244
- this.config = configObj;
245
- const config = initSherpaOnnxVadModelConfig(configObj, Module);
246
- const handle = Module._SherpaOnnxCreateVoiceActivityDetector(
247
- config.ptr, configObj.bufferSizeInSeconds || 30);
248
- freeConfig(config, Module);
249
-
250
- this.handle = handle;
251
- this.Module = Module;
252
- }
253
-
254
- free() {
255
- this.Module._SherpaOnnxDestroyVoiceActivityDetector(this.handle);
256
- this.handle = 0
257
- }
258
-
259
- // samples is a float32 array
260
- acceptWaveform(samples) {
261
- const pointer =
262
- this.Module._malloc(samples.length * samples.BYTES_PER_ELEMENT);
263
- this.Module.HEAPF32.set(samples, pointer / samples.BYTES_PER_ELEMENT);
264
- this.Module._SherpaOnnxVoiceActivityDetectorAcceptWaveform(
265
- this.handle, pointer, samples.length);
266
- this.Module._free(pointer);
267
- }
268
-
269
- isEmpty() {
270
- return this.Module._SherpaOnnxVoiceActivityDetectorEmpty(this.handle) == 1;
271
- }
272
-
273
- isDetected() {
274
- return this.Module._SherpaOnnxVoiceActivityDetectorDetected(this.handle) ==
275
- 1;
276
- }
277
-
278
- pop() {
279
- this.Module._SherpaOnnxVoiceActivityDetectorPop(this.handle);
280
- }
281
-
282
- clear() {
283
- this.Module._SherpaOnnxVoiceActivityDetectorClear(this.handle);
284
- }
285
-
286
- /*
287
- {
288
- samples: a 1-d float32 array,
289
- start: an int32
290
- }
291
- */
292
- front() {
293
- const h = this.Module._SherpaOnnxVoiceActivityDetectorFront(this.handle);
294
-
295
- const start = this.Module.HEAP32[h / 4];
296
- const samplesPtr = this.Module.HEAP32[h / 4 + 1] / 4;
297
- const numSamples = this.Module.HEAP32[h / 4 + 2];
298
-
299
- const samples = new Float32Array(numSamples);
300
- for (let i = 0; i < numSamples; i++) {
301
- samples[i] = this.Module.HEAPF32[samplesPtr + i];
302
- }
303
-
304
- this.Module._SherpaOnnxDestroySpeechSegment(h);
305
- return {samples: samples, start: start};
306
- }
307
-
308
- reset() {
309
- this.Module._SherpaOnnxVoiceActivityDetectorReset(this.handle);
310
- }
311
-
312
- flush() {
313
- this.Module._SherpaOnnxVoiceActivityDetectorFlush(this.handle);
314
- }
315
- };
316
-
317
- if (typeof process == 'object' && typeof process.versions == 'object' &&
318
- typeof process.versions.node == 'string') {
319
- module.exports = {
320
- createVad,
321
- CircularBuffer,
322
- initSherpaOnnxVadModelConfig,
323
- freeConfig,
324
- };
325
- } else {
326
- // Browser / bundler environment — named exports for ESM import
327
- if (typeof globalThis !== 'undefined') {
328
- globalThis.__sherpaOnnxVad = {
329
- createVad,
330
- CircularBuffer,
331
- initSherpaOnnxVadModelConfig,
332
- freeConfig,
333
- };
334
- }
335
- }
336
-
337
- export { createVad, CircularBuffer, initSherpaOnnxVadModelConfig, freeConfig };
@@ -1,88 +0,0 @@
1
- // return an object
2
- // {
3
- // samples: a float32 array
4
- // sampleRate: an integer
5
- // }
6
- function readWave(filename, Module) {
7
- const filenameLen = Module.lengthBytesUTF8(filename) + 1;
8
- const pFilename = Module._malloc(filenameLen);
9
- Module.stringToUTF8(filename, pFilename, filenameLen);
10
-
11
- const w = Module._SherpaOnnxReadWave(pFilename);
12
- Module._free(pFilename);
13
-
14
-
15
- const samplesPtr = Module.HEAP32[w / 4] / 4;
16
- const sampleRate = Module.HEAP32[w / 4 + 1];
17
- const numSamples = Module.HEAP32[w / 4 + 2];
18
-
19
- const samples = new Float32Array(numSamples);
20
- for (let i = 0; i < numSamples; i++) {
21
- samples[i] = Module.HEAPF32[samplesPtr + i];
22
- }
23
-
24
- Module._SherpaOnnxFreeWave(w);
25
-
26
- return {samples: samples, sampleRate: sampleRate};
27
- }
28
-
29
- function readWaveFromBinaryData(uint8Array, Module) {
30
- const numBytes = uint8Array.length * uint8Array.BYTES_PER_ELEMENT;
31
- const pointer = Module._malloc(numBytes);
32
-
33
- const dataOnHeap = new Uint8Array(Module.HEAPU8.buffer, pointer, numBytes);
34
- dataOnHeap.set(uint8Array);
35
-
36
- const w =
37
- Module._SherpaOnnxReadWaveFromBinaryData(dataOnHeap.byteOffset, numBytes);
38
- if (w == 0) {
39
- console.log('Failed to read wave from binary data');
40
- return null;
41
- }
42
-
43
- Module._free(pointer);
44
-
45
- const samplesPtr = Module.HEAP32[w / 4] / 4;
46
- const sampleRate = Module.HEAP32[w / 4 + 1];
47
- const numSamples = Module.HEAP32[w / 4 + 2];
48
-
49
- const samples = new Float32Array(numSamples);
50
- for (let i = 0; i < numSamples; i++) {
51
- samples[i] = Module.HEAPF32[samplesPtr + i];
52
- }
53
-
54
- Module._SherpaOnnxFreeWave(w);
55
-
56
-
57
- return {samples: samples, sampleRate: sampleRate};
58
- }
59
-
60
- // data is an object
61
- // {
62
- // samples: a float32 array
63
- // sampleRate: an integer
64
- // }
65
- function writeWave(filename, data, Module) {
66
- const pSamples =
67
- Module._malloc(data.samples.length * data.samples.BYTES_PER_ELEMENT);
68
- Module.HEAPF32.set(data.samples, pSamples / data.samples.BYTES_PER_ELEMENT);
69
-
70
- const filenameLen = Module.lengthBytesUTF8(filename) + 1;
71
- const pFilename = Module._malloc(filenameLen);
72
- Module.stringToUTF8(filename, pFilename, filenameLen);
73
-
74
- Module._SherpaOnnxWriteWave(
75
- pSamples, data.samples.length, data.sampleRate, pFilename);
76
-
77
- Module._free(pFilename);
78
- Module._free(pSamples);
79
- }
80
-
81
- if (typeof process == 'object' && typeof process.versions == 'object' &&
82
- typeof process.versions.node == 'string') {
83
- module.exports = {
84
- readWave,
85
- writeWave,
86
- readWaveFromBinaryData,
87
- };
88
- }
Binary file