csukuangfj commited on
Commit
195d248
1 Parent(s): 6a99347

update model

Browse files
app-asr.js CHANGED
@@ -108,8 +108,18 @@ if (navigator.mediaDevices.getUserMedia) {
108
  }
109
 
110
  let isEndpoint = recognizer.isEndpoint(recognizer_stream);
 
111
  let result = recognizer.getResult(recognizer_stream).text;
112
 
 
 
 
 
 
 
 
 
 
113
 
114
  if (result.length > 0 && lastResult != result) {
115
  lastResult = result;
 
108
  }
109
 
110
  let isEndpoint = recognizer.isEndpoint(recognizer_stream);
111
+
112
  let result = recognizer.getResult(recognizer_stream).text;
113
 
114
+ if (recognizer.config.modelConfig.paraformer.encoder != '') {
115
+ let tailPaddings = new Float32Array(expectedSampleRate);
116
+ recognizer_stream.acceptWaveform(expectedSampleRate, tailPaddings);
117
+ while (recognizer.isReady(recognizer_stream)) {
118
+ recognizer.decode(recognizer_stream);
119
+ }
120
+ result = recognizer.getResult(recognizer_stream).text;
121
+ }
122
+
123
 
124
  if (result.length > 0 && lastResult != result) {
125
  lastResult = result;
sherpa-onnx-asr.js CHANGED
@@ -155,6 +155,14 @@ function initSherpaOnnxOnlineModelConfig(config, Module) {
155
  };
156
  }
157
 
 
 
 
 
 
 
 
 
158
  const transducer =
159
  initSherpaOnnxOnlineTransducerModelConfig(config.transducer, Module);
160
 
@@ -164,7 +172,7 @@ function initSherpaOnnxOnlineModelConfig(config, Module) {
164
  const ctc = initSherpaOnnxOnlineZipformer2CtcModelConfig(
165
  config.zipformer2Ctc, Module);
166
 
167
- const len = transducer.len + paraformer.len + ctc.len + 7 * 4;
168
  const ptr = Module._malloc(len);
169
 
170
  let offset = 0;
@@ -182,9 +190,10 @@ function initSherpaOnnxOnlineModelConfig(config, Module) {
182
  const modelTypeLen = Module.lengthBytesUTF8(config.modelType || '') + 1;
183
  const modelingUnitLen = Module.lengthBytesUTF8(config.modelingUnit || '') + 1;
184
  const bpeVocabLen = Module.lengthBytesUTF8(config.bpeVocab || '') + 1;
 
185
 
186
- const bufferLen =
187
- tokensLen + providerLen + modelTypeLen + modelingUnitLen + bpeVocabLen;
188
  const buffer = Module._malloc(bufferLen);
189
 
190
  offset = 0;
@@ -204,6 +213,9 @@ function initSherpaOnnxOnlineModelConfig(config, Module) {
204
  Module.stringToUTF8(config.bpeVocab || '', buffer + offset, bpeVocabLen);
205
  offset += bpeVocabLen;
206
 
 
 
 
207
  offset = transducer.len + paraformer.len + ctc.len;
208
  Module.setValue(ptr + offset, buffer, 'i8*'); // tokens
209
  offset += 4;
@@ -232,6 +244,16 @@ function initSherpaOnnxOnlineModelConfig(config, Module) {
232
  'i8*'); // bpeVocab
233
  offset += 4;
234
 
 
 
 
 
 
 
 
 
 
 
235
  return {
236
  buffer: buffer, ptr: ptr, len: len, transducer: transducer,
237
  paraformer: paraformer, ctc: ctc
@@ -275,12 +297,20 @@ function initSherpaOnnxOnlineRecognizerConfig(config, Module) {
275
  };
276
  }
277
 
 
 
 
 
 
 
 
 
278
  const feat = initSherpaOnnxFeatureConfig(config.featConfig, Module);
279
  const model = initSherpaOnnxOnlineModelConfig(config.modelConfig, Module);
280
  const ctcFstDecoder = initSherpaOnnxOnlineCtcFstDecoderConfig(
281
  config.ctcFstDecoderConfig, Module)
282
 
283
- const len = feat.len + model.len + 8 * 4 + ctcFstDecoder.len + 3 * 4;
284
  const ptr = Module._malloc(len);
285
 
286
  let offset = 0;
@@ -295,8 +325,9 @@ function initSherpaOnnxOnlineRecognizerConfig(config, Module) {
295
  const hotwordsFileLen = Module.lengthBytesUTF8(config.hotwordsFile || '') + 1;
296
  const ruleFstsFileLen = Module.lengthBytesUTF8(config.ruleFsts || '') + 1;
297
  const ruleFarsFileLen = Module.lengthBytesUTF8(config.ruleFars || '') + 1;
298
- const bufferLen =
299
- decodingMethodLen + hotwordsFileLen + ruleFstsFileLen + ruleFarsFileLen;
 
300
  const buffer = Module._malloc(bufferLen);
301
 
302
  offset = 0;
@@ -314,6 +345,10 @@ function initSherpaOnnxOnlineRecognizerConfig(config, Module) {
314
  Module.stringToUTF8(config.ruleFars || '', buffer + offset, ruleFarsFileLen);
315
  offset += ruleFarsFileLen;
316
 
 
 
 
 
317
  offset = feat.len + model.len;
318
  Module.setValue(ptr + offset, buffer, 'i8*'); // decoding method
319
  offset += 4;
@@ -354,6 +389,16 @@ function initSherpaOnnxOnlineRecognizerConfig(config, Module) {
354
  Module.setValue(ptr + offset, config.blankPenalty || 0, 'float');
355
  offset += 4;
356
 
 
 
 
 
 
 
 
 
 
 
357
  return {
358
  buffer: buffer, ptr: ptr, len: len, feat: feat, model: model,
359
  ctcFstDecoder: ctcFstDecoder
 
155
  };
156
  }
157
 
158
+ if (!('tokensBuf' in config)) {
159
+ config.tokensBuf = '';
160
+ }
161
+
162
+ if (!('tokensBufSize' in config)) {
163
+ config.tokensBufSize = 0;
164
+ }
165
+
166
  const transducer =
167
  initSherpaOnnxOnlineTransducerModelConfig(config.transducer, Module);
168
 
 
172
  const ctc = initSherpaOnnxOnlineZipformer2CtcModelConfig(
173
  config.zipformer2Ctc, Module);
174
 
175
+ const len = transducer.len + paraformer.len + ctc.len + 9 * 4;
176
  const ptr = Module._malloc(len);
177
 
178
  let offset = 0;
 
190
  const modelTypeLen = Module.lengthBytesUTF8(config.modelType || '') + 1;
191
  const modelingUnitLen = Module.lengthBytesUTF8(config.modelingUnit || '') + 1;
192
  const bpeVocabLen = Module.lengthBytesUTF8(config.bpeVocab || '') + 1;
193
+ const tokensBufLen = Module.lengthBytesUTF8(config.tokensBuf || '') + 1;
194
 
195
+ const bufferLen = tokensLen + providerLen + modelTypeLen + modelingUnitLen +
196
+ bpeVocabLen + tokensBufLen;
197
  const buffer = Module._malloc(bufferLen);
198
 
199
  offset = 0;
 
213
  Module.stringToUTF8(config.bpeVocab || '', buffer + offset, bpeVocabLen);
214
  offset += bpeVocabLen;
215
 
216
+ Module.stringToUTF8(config.tokensBuf || '', buffer + offset, tokensBufLen);
217
+ offset += tokensBufLen;
218
+
219
  offset = transducer.len + paraformer.len + ctc.len;
220
  Module.setValue(ptr + offset, buffer, 'i8*'); // tokens
221
  offset += 4;
 
244
  'i8*'); // bpeVocab
245
  offset += 4;
246
 
247
+ Module.setValue(
248
+ ptr + offset,
249
+ buffer + tokensLen + providerLen + modelTypeLen + modelingUnitLen +
250
+ bpeVocabLen,
251
+ 'i8*'); // tokens_buf
252
+ offset += 4;
253
+
254
+ Module.setValue(ptr + offset, config.tokensBufSize || 0, 'i32');
255
+ offset += 4;
256
+
257
  return {
258
  buffer: buffer, ptr: ptr, len: len, transducer: transducer,
259
  paraformer: paraformer, ctc: ctc
 
297
  };
298
  }
299
 
300
+ if (!('hotwordsBuf' in config)) {
301
+ config.hotwordsBuf = '';
302
+ }
303
+
304
+ if (!('hotwordsBufSize' in config)) {
305
+ config.hotwordsBufSize = 0;
306
+ }
307
+
308
  const feat = initSherpaOnnxFeatureConfig(config.featConfig, Module);
309
  const model = initSherpaOnnxOnlineModelConfig(config.modelConfig, Module);
310
  const ctcFstDecoder = initSherpaOnnxOnlineCtcFstDecoderConfig(
311
  config.ctcFstDecoderConfig, Module)
312
 
313
+ const len = feat.len + model.len + 8 * 4 + ctcFstDecoder.len + 5 * 4;
314
  const ptr = Module._malloc(len);
315
 
316
  let offset = 0;
 
325
  const hotwordsFileLen = Module.lengthBytesUTF8(config.hotwordsFile || '') + 1;
326
  const ruleFstsFileLen = Module.lengthBytesUTF8(config.ruleFsts || '') + 1;
327
  const ruleFarsFileLen = Module.lengthBytesUTF8(config.ruleFars || '') + 1;
328
+ const hotwordsBufLen = Module.lengthBytesUTF8(config.hotwordsBuf || '') + 1;
329
+ const bufferLen = decodingMethodLen + hotwordsFileLen + ruleFstsFileLen +
330
+ ruleFarsFileLen + hotwordsBufLen;
331
  const buffer = Module._malloc(bufferLen);
332
 
333
  offset = 0;
 
345
  Module.stringToUTF8(config.ruleFars || '', buffer + offset, ruleFarsFileLen);
346
  offset += ruleFarsFileLen;
347
 
348
+ Module.stringToUTF8(
349
+ config.hotwordsBuf || '', buffer + offset, hotwordsBufLen);
350
+ offset += hotwordsBufLen;
351
+
352
  offset = feat.len + model.len;
353
  Module.setValue(ptr + offset, buffer, 'i8*'); // decoding method
354
  offset += 4;
 
389
  Module.setValue(ptr + offset, config.blankPenalty || 0, 'float');
390
  offset += 4;
391
 
392
+ Module.setValue(
393
+ ptr + offset,
394
+ buffer + decodingMethodLen + hotwordsFileLen + ruleFstsFileLen +
395
+ ruleFarsFileLen,
396
+ 'i8*');
397
+ offset += 4;
398
+
399
+ Module.setValue(ptr + offset, config.hotwordsBufSize || 0, 'i32');
400
+ offset += 4;
401
+
402
  return {
403
  buffer: buffer, ptr: ptr, len: len, feat: feat, model: model,
404
  ctcFstDecoder: ctcFstDecoder
sherpa-onnx-wasm-main-asr.js CHANGED
The diff for this file is too large to render. See raw diff
 
sherpa-onnx-wasm-main-asr.wasm CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a8659d28b9aa5f44e2aeb6363499f639159f2ac197998855919b6cbfa133394f
3
- size 11428806
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:758d3a3094e143da820ec82f4b5859bfb3c851457debfa950aa794339d1461fb
3
+ size 11435272