hama-js 1.3.12 → 1.4.0

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 (35) hide show
  1. package/dist/browser/assets/{asr_waveform_fp16.onnx → asr_waveform.hama} +0 -0
  2. package/dist/{node/assets/decoder_step.onnx → browser/assets/decoder_step.hama} +0 -0
  3. package/dist/{node/assets/encoder.onnx → browser/assets/encoder.hama} +0 -0
  4. package/dist/browser/assets/hama.wasm +0 -0
  5. package/dist/browser/browser.js +49 -196
  6. package/dist/browser/browser.js.map +1 -1
  7. package/dist/browser/engine.browser.js +12 -0
  8. package/dist/browser/engine.browser.js.map +1 -0
  9. package/dist/browser/engine.js +146 -0
  10. package/dist/browser/engine.js.map +1 -0
  11. package/dist/browser/pronunciation.js +195 -8
  12. package/dist/browser/pronunciation.js.map +1 -1
  13. package/dist/node/asr.js +18 -67
  14. package/dist/node/asr.js.map +1 -1
  15. package/dist/node/assets/{asr_waveform_fp16.onnx → asr_waveform.hama} +0 -0
  16. package/dist/{browser/assets/decoder_step.onnx → node/assets/decoder_step.hama} +0 -0
  17. package/dist/{browser/assets/encoder.onnx → node/assets/encoder.hama} +0 -0
  18. package/dist/node/assets/hama.wasm +0 -0
  19. package/dist/node/engine.browser.js +12 -0
  20. package/dist/node/engine.browser.js.map +1 -0
  21. package/dist/node/engine.js +146 -0
  22. package/dist/node/engine.js.map +1 -0
  23. package/dist/node/engine.node.js +26 -0
  24. package/dist/node/engine.node.js.map +1 -0
  25. package/dist/node/index.js +35 -162
  26. package/dist/node/index.js.map +1 -1
  27. package/dist/node/pronunciation.js +195 -8
  28. package/dist/node/pronunciation.js.map +1 -1
  29. package/dist/types/asr.d.ts +2 -5
  30. package/dist/types/browser.d.ts +5 -8
  31. package/dist/types/engine.browser.d.ts +2 -0
  32. package/dist/types/engine.d.ts +40 -0
  33. package/dist/types/engine.node.d.ts +4 -0
  34. package/dist/types/index.d.ts +3 -3
  35. package/package.json +10 -10
Binary file
@@ -1,34 +1,14 @@
1
- import { InferenceSession, Tensor } from "onnxruntime-web";
2
1
  import vocabData from "./assets/g2p_vocab.json";
2
+ import { ASR_VOCAB, HamaEngine } from "./engine.js";
3
+ import { loadWasm, resolveModelBytes } from "./engine.browser.js";
3
4
  import { buildDisplayIpa, decodeIdsToResult, decoderIds, encodeText, prepareTextForPrediction, } from "./tokenizer.js";
4
5
  import { pronunciationReplaceWithModel, pronunciationScanWithModel, } from "./pronunciation.js";
5
- const DEFAULT_MODEL_URL = new URL("./assets/g2p_fp16.onnx", import.meta.url).toString();
6
- const DEFAULT_ENCODER_URL = new URL("./assets/encoder.onnx", import.meta.url).toString();
7
- const DEFAULT_DECODER_STEP_URL = new URL("./assets/decoder_step.onnx", import.meta.url).toString();
8
- const DEFAULT_ASR_MODEL_URL = new URL("./assets/asr_waveform_fp16.onnx", import.meta.url).toString();
9
6
  let defaultPronunciationBrowserModelPromise = null;
10
- const resolveName = (available, primary, ...fallbacks) => {
11
- if (available.includes(primary))
12
- return primary;
13
- for (const fallback of fallbacks) {
14
- if (available.includes(fallback))
15
- return fallback;
16
- }
17
- const matches = available.filter((name) => name.startsWith(`${primary}.`) || name.startsWith(primary));
18
- if (matches.length === 1)
19
- return matches[0];
20
- if (matches.length > 1) {
21
- const numeric = matches.filter((name) => name.startsWith(`${primary}.`));
22
- if (numeric.length === 1)
23
- return numeric[0];
24
- return matches[0];
25
- }
26
- throw new Error(`Could not resolve ONNX tensor name for '${primary}'. Available: ${available.join(", ")}`);
27
- };
28
- const scalarInt = (tensor) => {
29
- const data = tensor.data;
30
- const raw = data[0];
31
- return typeof raw === "bigint" ? Number(raw) : Math.trunc(Number(raw));
7
+ let browserEnginePromise = null;
8
+ const getBrowserEngine = () => {
9
+ if (browserEnginePromise == null)
10
+ browserEnginePromise = loadWasm().then((w) => HamaEngine.fromBytes(w));
11
+ return browserEnginePromise;
32
12
  };
33
13
  export const decodeCtcTokens = (frameTokenIds, decoderTokens, options) => {
34
14
  const collapseRepeats = options.collapseRepeats ?? true;
@@ -81,7 +61,10 @@ const loadDecoderTokens = async (vocabUrl) => {
81
61
  return [...vocab.decoder, "<wb>", "<blank>"];
82
62
  };
83
63
  export class G2PBrowserModel {
84
- constructor(options) {
64
+ constructor(engine, encHandle, decHandle, options) {
65
+ this.engine = engine;
66
+ this.encHandle = encHandle;
67
+ this.decHandle = decHandle;
85
68
  this.options = options;
86
69
  }
87
70
  static async create(options = {}) {
@@ -89,38 +72,18 @@ export class G2PBrowserModel {
89
72
  throw new Error("encoderUrl and decoderStepUrl must be provided together");
90
73
  }
91
74
  const opts = {
92
- modelUrl: options.modelUrl ?? DEFAULT_MODEL_URL,
93
- encoderUrl: options.encoderUrl ?? DEFAULT_ENCODER_URL,
94
- decoderStepUrl: options.decoderStepUrl ?? DEFAULT_DECODER_STEP_URL,
75
+ modelUrl: options.modelUrl ?? "",
76
+ encoderUrl: options.encoderUrl ?? "",
77
+ decoderStepUrl: options.decoderStepUrl ?? "",
95
78
  maxInputLen: options.maxInputLen ?? 128,
96
- // Retained for API compatibility; autoregressive ONNX sets output length in-graph.
97
79
  maxOutputLen: options.maxOutputLen ?? 32,
98
80
  };
99
- const model = new G2PBrowserModel(opts);
100
- const useExplicitSplit = options.encoderUrl !== undefined && options.decoderStepUrl !== undefined;
101
- if (useExplicitSplit) {
102
- const [encoderSession, decoderStepSession] = await Promise.all([
103
- InferenceSession.create(opts.encoderUrl, { executionProviders: ["wasm"] }),
104
- InferenceSession.create(opts.decoderStepUrl, { executionProviders: ["wasm"] }),
105
- ]);
106
- model.encoderSession = encoderSession;
107
- model.decoderStepSession = decoderStepSession;
108
- return model;
109
- }
110
- try {
111
- const [encoderSession, decoderStepSession] = await Promise.all([
112
- InferenceSession.create(opts.encoderUrl, { executionProviders: ["wasm"] }),
113
- InferenceSession.create(opts.decoderStepUrl, { executionProviders: ["wasm"] }),
114
- ]);
115
- model.encoderSession = encoderSession;
116
- model.decoderStepSession = decoderStepSession;
117
- }
118
- catch {
119
- model.session = await InferenceSession.create(opts.modelUrl, {
120
- executionProviders: ["wasm"],
121
- });
122
- }
123
- return model;
81
+ const engine = await getBrowserEngine();
82
+ const [encBytes, decBytes] = await Promise.all([
83
+ resolveModelBytes(options.encoderUrl, "encoder.hama"),
84
+ resolveModelBytes(options.decoderStepUrl, "decoder_step.hama"),
85
+ ]);
86
+ return new G2PBrowserModel(engine, engine.loadEncoder(encBytes), engine.loadDecoder(decBytes), opts);
124
87
  }
125
88
  async predict(text, options = {}) {
126
89
  const splitDelimiter = options.splitDelimiter ?? /\s+/u;
@@ -169,116 +132,29 @@ export class G2PBrowserModel {
169
132
  alignments: [],
170
133
  };
171
134
  }
172
- if (this.encoderSession && this.decoderStepSession) {
173
- return this.predictSingleSplit(prepared.modelText, text, prepared.charIndexMap, baseCharIndex, preserveLiterals);
174
- }
175
- if (!this.session) {
176
- throw new Error("No ONNX session initialized");
177
- }
178
- const encoded = encodeText(prepared.modelText, this.options.maxInputLen);
179
- const inputIds = BigInt64Array.from(encoded.ids);
180
- const inputLengths = new BigInt64Array([BigInt(encoded.length || 1)]);
181
- const feeds = {
182
- input_ids: new Tensor("int64", inputIds, [1, this.options.maxInputLen]),
183
- input_lengths: new Tensor("int64", inputLengths, [1]),
184
- };
185
- const outputs = await this.session.run(feeds);
186
- const decoded = outputs.decoded_ids.data;
187
- const attn = outputs.attn_indices.data;
188
- const rawResult = decodeIdsToResult(decoded, attn, encoded.positionMap);
189
- const relativeAlignments = rawResult.alignments.map((alignment, idx) => ({
190
- phoneme: alignment.phoneme,
191
- phonemeIndex: idx,
192
- charIndex: alignment.charIndex >= 0 && alignment.charIndex < prepared.charIndexMap.length
193
- ? prepared.charIndexMap[alignment.charIndex]
194
- : -1,
195
- }));
196
- return {
197
- ipa: rawResult.ipa,
198
- displayIpa: preserveLiterals === "punct"
199
- ? buildDisplayIpa(rawResult.ipa, relativeAlignments, text)
200
- : rawResult.ipa,
201
- alignments: relativeAlignments.map((alignment, idx) => ({
202
- phoneme: alignment.phoneme,
203
- phonemeIndex: idx,
204
- charIndex: alignment.charIndex < 0 ? alignment.charIndex : alignment.charIndex + baseCharIndex,
205
- })),
206
- };
135
+ return this.predictSingleSplit(prepared.modelText, text, prepared.charIndexMap, baseCharIndex, preserveLiterals);
207
136
  }
208
- async predictSingleSplit(text, originalText, charIndexMap, baseCharIndex, preserveLiterals) {
209
- if (!this.encoderSession || !this.decoderStepSession) {
210
- throw new Error("Split ONNX sessions are not initialized");
211
- }
137
+ predictSingleSplit(text, originalText, charIndexMap, baseCharIndex, preserveLiterals) {
212
138
  const encoded = encodeText(text, this.options.maxInputLen);
213
139
  const inputIds = BigInt64Array.from(encoded.ids);
214
- const inputLengths = new BigInt64Array([BigInt(encoded.length || 1)]);
215
- const encoderFeeds = {
216
- input_ids: new Tensor("int64", inputIds, [1, this.options.maxInputLen]),
217
- input_lengths: new Tensor("int64", inputLengths, [1]),
218
- };
219
- const encoderOutputs = await this.encoderSession.run(encoderFeeds);
220
- const encoderOutputNames = this.encoderSession.outputNames;
221
- const decoderInputNames = this.decoderStepSession.inputNames;
222
- const decoderOutputNames = this.decoderStepSession.outputNames;
223
- const encNames = {
224
- encoder_outputs: resolveName(encoderOutputNames, "encoder_outputs"),
225
- projected_keys: resolveName(encoderOutputNames, "projected_keys"),
226
- encoder_mask: resolveName(encoderOutputNames, "encoder_mask"),
227
- hidden: resolveName(encoderOutputNames, "hidden"),
228
- prev_attn: resolveName(encoderOutputNames, "prev_attn"),
229
- };
230
- const decIn = {
231
- decoder_input_ids: resolveName(decoderInputNames, "decoder_input_ids"),
232
- encoder_outputs: resolveName(decoderInputNames, "encoder_outputs"),
233
- projected_keys: resolveName(decoderInputNames, "projected_keys"),
234
- encoder_mask: resolveName(decoderInputNames, "encoder_mask"),
235
- prev_attn: resolveName(decoderInputNames, "prev_attn", "prev_attn_in"),
236
- hidden: resolveName(decoderInputNames, "hidden", "hidden_in"),
237
- positions: resolveName(decoderInputNames, "positions"),
238
- };
239
- const decOut = {
240
- next_token_ids: resolveName(decoderOutputNames, "next_token_ids"),
241
- hidden: resolveName(decoderOutputNames, "hidden_out", "hidden"),
242
- prev_attn: resolveName(decoderOutputNames, "prev_attn_out", "prev_attn"),
243
- attn_argmax: resolveName(decoderOutputNames, "attn_argmax"),
244
- };
245
- const encoderStates = {
246
- encoder_outputs: encoderOutputs[encNames.encoder_outputs],
247
- projected_keys: encoderOutputs[encNames.projected_keys],
248
- encoder_mask: encoderOutputs[encNames.encoder_mask],
249
- hidden: encoderOutputs[encNames.hidden],
250
- prev_attn: encoderOutputs[encNames.prev_attn],
251
- };
252
- const srcLen = Number(encoderStates.encoder_outputs.dims[1] ?? 0);
253
- const positions = new Float32Array(srcLen);
254
- for (let i = 0; i < srcLen; i++)
140
+ const enc = this.engine.encoderRun(this.encHandle, inputIds, encoded.length || 1);
141
+ const positions = new Float32Array(enc.T);
142
+ for (let i = 0; i < enc.T; i++)
255
143
  positions[i] = i;
256
- const positionsTensor = new Tensor("float32", positions, [1, srcLen]);
257
- let decoderInput = new Tensor("int64", new BigInt64Array([BigInt(decoderIds.sos)]), [1, 1]);
258
- let hidden = encoderStates.hidden;
259
- let prevAttn = encoderStates.prev_attn;
144
+ let hidden = enc.hidden;
145
+ let prevAttn = enc.prevAttn;
146
+ let token = decoderIds.sos;
260
147
  const decoded = [];
261
148
  const attnIndices = [];
262
149
  for (let step = 0; step < this.options.maxOutputLen; step++) {
263
- const stepOutputs = await this.decoderStepSession.run({
264
- [decIn.decoder_input_ids]: decoderInput,
265
- [decIn.encoder_outputs]: encoderStates.encoder_outputs,
266
- [decIn.projected_keys]: encoderStates.projected_keys,
267
- [decIn.encoder_mask]: encoderStates.encoder_mask,
268
- [decIn.prev_attn]: prevAttn,
269
- [decIn.hidden]: hidden,
270
- [decIn.positions]: positionsTensor,
271
- });
272
- const nextToken = firstInt64(stepOutputs[decOut.next_token_ids]);
273
- const attnIdx = firstInt64(stepOutputs[decOut.attn_argmax]);
274
- decoded.push(nextToken);
275
- attnIndices.push(attnIdx);
276
- hidden = stepOutputs[decOut.hidden];
277
- prevAttn = stepOutputs[decOut.prev_attn];
278
- decoderInput = new Tensor("int64", new BigInt64Array([nextToken]), [1, 1]);
279
- if (nextToken === BigInt(decoderIds.eos)) {
150
+ const out = this.engine.decoderStep(this.decHandle, token, enc.encoderOutputs, enc.projectedKeys, enc.mask, prevAttn, hidden, positions);
151
+ decoded.push(out.nextToken);
152
+ attnIndices.push(out.attnArgmax);
153
+ hidden = out.hiddenOut;
154
+ prevAttn = out.prevOut;
155
+ token = out.nextToken;
156
+ if (token === decoderIds.eos)
280
157
  break;
281
- }
282
158
  }
283
159
  const rawResult = decodeIdsToResult(decoded, attnIndices, encoded.positionMap);
284
160
  const relativeAlignments = rawResult.alignments.map((alignment, idx) => ({
@@ -302,8 +178,9 @@ export class G2PBrowserModel {
302
178
  }
303
179
  }
304
180
  export class ASRBrowserModel {
305
- constructor(session, decoderTokens, options) {
306
- this.session = session;
181
+ constructor(engine, handle, decoderTokens, options) {
182
+ this.engine = engine;
183
+ this.handle = handle;
307
184
  this.sampleRate = options.sampleRate;
308
185
  this.wordBoundaryToken = options.wordBoundaryToken;
309
186
  this.temperature = options.temperature;
@@ -317,22 +194,15 @@ export class ASRBrowserModel {
317
194
  }
318
195
  const unk = this.decoderTokens.indexOf(options.unkToken);
319
196
  this.unkId = unk >= 0 ? unk : null;
320
- const inputNames = this.session.inputNames;
321
- const hasWaveform = inputNames.includes("waveform")
322
- || inputNames.some((name) => name.startsWith("waveform."));
323
- if (!hasWaveform) {
324
- throw new Error(`Unsupported ASR ONNX inputs: ${inputNames.join(", ")}. `
325
- + "hama browser ASR requires a waveform-input model with waveform/waveform_lengths.");
326
- }
327
- this.waveformInputName = resolveName(inputNames, "waveform");
328
- this.waveformLengthsInputName = resolveName(inputNames, "waveform_lengths", "waveform_length");
329
- this.logProbsOutputName = resolveName(this.session.outputNames, "log_probs");
330
- this.outLengthsOutputName = resolveName(this.session.outputNames, "out_lengths");
331
197
  }
332
198
  static async create(options = {}) {
333
- const decoderTokens = await loadDecoderTokens(options.vocabUrl);
334
- const session = await InferenceSession.create(options.modelUrl ?? DEFAULT_ASR_MODEL_URL, { executionProviders: ["wasm"] });
335
- return new ASRBrowserModel(session, decoderTokens, {
199
+ const engine = await getBrowserEngine();
200
+ const [decoderTokens, modelBytes] = await Promise.all([
201
+ loadDecoderTokens(options.vocabUrl),
202
+ resolveModelBytes(options.modelUrl, "asr_waveform.hama"),
203
+ ]);
204
+ const handle = engine.loadAsr(modelBytes);
205
+ return new ASRBrowserModel(engine, handle, decoderTokens, {
336
206
  sampleRate: options.sampleRate ?? 16000,
337
207
  blankToken: options.blankToken ?? "<blank>",
338
208
  unkToken: options.unkToken ?? "<unk>",
@@ -351,15 +221,8 @@ export class ASRBrowserModel {
351
221
  const resampled = sampleRate === this.sampleRate
352
222
  ? mono
353
223
  : resampleLinear(mono, sampleRate, this.sampleRate);
354
- const waveformTensor = new Tensor("float32", resampled, [1, resampled.length]);
355
- const lengthTensor = new Tensor("int64", BigInt64Array.from([BigInt(resampled.length)]), [1]);
356
- const outputs = await this.session.run({
357
- [this.waveformInputName]: waveformTensor,
358
- [this.waveformLengthsInputName]: lengthTensor,
359
- });
360
- const logProbs = outputs[this.logProbsOutputName];
361
- const outLengths = outputs[this.outLengthsOutputName];
362
- const numFrames = Math.max(0, Math.min(scalarInt(outLengths), Number(logProbs.dims[1] ?? 0)));
224
+ const { logProbs, T, outLength } = this.engine.asrRun(this.handle, resampled);
225
+ const numFrames = Math.max(0, Math.min(outLength, T));
363
226
  const frameTokenIds = this.argmaxFrames(logProbs, numFrames);
364
227
  const decoded = decodeCtcTokens(frameTokenIds, this.decoderTokens, {
365
228
  blankId: this.blankId,
@@ -376,19 +239,14 @@ export class ASRBrowserModel {
376
239
  };
377
240
  }
378
241
  argmaxFrames(logProbs, numFrames) {
379
- const dims = logProbs.dims.map(Number);
380
- if (dims.length !== 3 || dims[0] !== 1) {
381
- throw new Error(`Expected log_probs shape [1, T, C], got [${dims.join(", ")}]`);
382
- }
383
- const classes = dims[2];
384
- const data = logProbs.data;
242
+ const classes = ASR_VOCAB;
385
243
  const out = [];
386
244
  for (let t = 0; t < numFrames; t++) {
387
245
  let bestIdx = 0;
388
246
  let bestScore = -Infinity;
389
247
  const base = t * classes;
390
248
  for (let c = 0; c < classes; c++) {
391
- const raw = Number(data[base + c]);
249
+ const raw = logProbs[base + c];
392
250
  const score = (this.temperature > 0 && Math.abs(this.temperature - 1.0) > 1e-8 ? raw / this.temperature : raw)
393
251
  + (c === this.blankId ? this.blankBias : 0.0)
394
252
  + (this.unkId !== null && c === this.unkId ? this.unkBias : 0.0);
@@ -402,11 +260,6 @@ export class ASRBrowserModel {
402
260
  return out;
403
261
  }
404
262
  }
405
- const firstInt64 = (tensor) => {
406
- const data = tensor.data;
407
- const value = data[0];
408
- return typeof value === "bigint" ? value : BigInt(Math.trunc(Number(value)));
409
- };
410
263
  const escapeRegex = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
411
264
  const toGlobalRegex = (delimiter) => {
412
265
  if (typeof delimiter === "string") {
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ // Browser asset loader for the WASM engine. Fetches `hama.wasm` and `.hama`
2
+ // weight packages relative to the built module (override via explicit URLs).
3
+ const assetUrl = (asset) => new URL(`./assets/${asset}`, import.meta.url).toString();
4
+ export async function loadWasm() {
5
+ const res = await fetch(assetUrl("hama.wasm"));
6
+ return new Uint8Array(await res.arrayBuffer());
7
+ }
8
+ export async function resolveModelBytes(url, asset) {
9
+ const res = await fetch(url ?? assetUrl(asset));
10
+ return new Uint8Array(await res.arrayBuffer());
11
+ }
12
+ //# sourceMappingURL=engine.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.browser.js","sourceRoot":"","sources":["../../src/engine.browser.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAE7E,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,GAAG,CAAC,YAAY,KAAK,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AAErG,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/C,OAAO,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAuB,EAAE,KAAa;IAC5E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,OAAO,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,146 @@
1
+ // WASM-backed inference engine (the compiled Zig `hama.wasm`). Marshals inputs
2
+ // into the module's linear memory, calls the exported model functions, and reads
3
+ // outputs back. Used identically by the Node/Bun and browser entry points.
4
+ //
5
+ // NOTE: the linear memory may grow (and its ArrayBuffer detach) on any alloc or
6
+ // run call, so typed-array views are always created from the *current*
7
+ // `memory.buffer` immediately before use.
8
+ export const ENC_FEAT = 192;
9
+ export const ENC_HID = 96;
10
+ export const DEC_HID = 96;
11
+ export const ASR_VOCAB = 191;
12
+ export class HamaEngine {
13
+ constructor(ex) {
14
+ this.ex = ex;
15
+ }
16
+ static async fromBytes(wasm) {
17
+ const { instance } = await WebAssembly.instantiate(wasm, {});
18
+ return new HamaEngine(instance.exports);
19
+ }
20
+ writeBytes(ptr, src) {
21
+ new Uint8Array(this.ex.memory.buffer, ptr, src.length).set(src);
22
+ }
23
+ writeF32(ptr, src) {
24
+ new Float32Array(this.ex.memory.buffer, ptr, src.length).set(src);
25
+ }
26
+ writeI64(ptr, src) {
27
+ new BigInt64Array(this.ex.memory.buffer, ptr, src.length).set(src);
28
+ }
29
+ readF32(ptr, len) {
30
+ return new Float32Array(this.ex.memory.buffer, ptr, len).slice();
31
+ }
32
+ readU8(ptr, len) {
33
+ return new Uint8Array(this.ex.memory.buffer, ptr, len).slice();
34
+ }
35
+ readI64(ptr, len) {
36
+ return new BigInt64Array(this.ex.memory.buffer, ptr, len).slice();
37
+ }
38
+ loadModel(kind, bytes) {
39
+ const ptr = this.ex.hama_alloc(bytes.length);
40
+ if (ptr === 0)
41
+ throw new Error("hama_alloc failed");
42
+ this.writeBytes(ptr, bytes);
43
+ const fn = kind === "encoder" ? this.ex.hama_encoder_load
44
+ : kind === "decoder" ? this.ex.hama_decoder_load
45
+ : this.ex.hama_asr_load;
46
+ const h = fn(ptr, bytes.length);
47
+ this.ex.hama_free(ptr, bytes.length);
48
+ if (h === 0)
49
+ throw new Error(`hama_${kind}_load failed`);
50
+ return h;
51
+ }
52
+ loadEncoder(bytes) {
53
+ return this.loadModel("encoder", bytes);
54
+ }
55
+ loadDecoder(bytes) {
56
+ return this.loadModel("decoder", bytes);
57
+ }
58
+ loadAsr(bytes) {
59
+ return this.loadModel("asr", bytes);
60
+ }
61
+ encoderRun(h, ids, length) {
62
+ const T = ids.length;
63
+ const idsPtr = this.ex.hama_alloc(T * 8);
64
+ const eoPtr = this.ex.hama_alloc(T * ENC_FEAT * 4);
65
+ const pkPtr = this.ex.hama_alloc(T * ENC_HID * 4);
66
+ const hidPtr = this.ex.hama_alloc(2 * ENC_HID * 4);
67
+ const maskPtr = this.ex.hama_alloc(T);
68
+ const prevPtr = this.ex.hama_alloc(T * 4);
69
+ this.writeI64(idsPtr, ids);
70
+ const rc = this.ex.hama_encoder_run(h, idsPtr, T, length, eoPtr, pkPtr, hidPtr, maskPtr, prevPtr);
71
+ if (rc !== 0)
72
+ throw new Error("hama_encoder_run failed");
73
+ const out = {
74
+ encoderOutputs: this.readF32(eoPtr, T * ENC_FEAT),
75
+ projectedKeys: this.readF32(pkPtr, T * ENC_HID),
76
+ hidden: this.readF32(hidPtr, 2 * ENC_HID),
77
+ mask: this.readU8(maskPtr, T),
78
+ prevAttn: this.readF32(prevPtr, T),
79
+ T,
80
+ };
81
+ this.ex.hama_free(idsPtr, T * 8);
82
+ this.ex.hama_free(eoPtr, T * ENC_FEAT * 4);
83
+ this.ex.hama_free(pkPtr, T * ENC_HID * 4);
84
+ this.ex.hama_free(hidPtr, 2 * ENC_HID * 4);
85
+ this.ex.hama_free(maskPtr, T);
86
+ this.ex.hama_free(prevPtr, T * 4);
87
+ return out;
88
+ }
89
+ decoderStep(h, token, eo, pk, mask, prev, hidden, positions) {
90
+ const T = prev.length;
91
+ const eoPtr = this.ex.hama_alloc(eo.length * 4);
92
+ const pkPtr = this.ex.hama_alloc(pk.length * 4);
93
+ const maskPtr = this.ex.hama_alloc(T);
94
+ const prevPtr = this.ex.hama_alloc(T * 4);
95
+ const hidPtr = this.ex.hama_alloc(hidden.length * 4);
96
+ const posPtr = this.ex.hama_alloc(T * 4);
97
+ const nextPtr = this.ex.hama_alloc(8);
98
+ const attnPtr = this.ex.hama_alloc(8);
99
+ const hidOutPtr = this.ex.hama_alloc(2 * DEC_HID * 4);
100
+ const prevOutPtr = this.ex.hama_alloc(T * 4);
101
+ this.writeF32(eoPtr, eo);
102
+ this.writeF32(pkPtr, pk);
103
+ this.writeBytes(maskPtr, mask);
104
+ this.writeF32(prevPtr, prev);
105
+ this.writeF32(hidPtr, hidden);
106
+ this.writeF32(posPtr, positions);
107
+ const rc = this.ex.hama_decoder_step(h, BigInt(token), eoPtr, pkPtr, maskPtr, prevPtr, hidPtr, posPtr, T, nextPtr, attnPtr, hidOutPtr, prevOutPtr);
108
+ if (rc !== 0)
109
+ throw new Error("hama_decoder_step failed");
110
+ const out = {
111
+ nextToken: Number(this.readI64(nextPtr, 1)[0]),
112
+ attnArgmax: Number(this.readI64(attnPtr, 1)[0]),
113
+ hiddenOut: this.readF32(hidOutPtr, 2 * DEC_HID),
114
+ prevOut: this.readF32(prevOutPtr, T),
115
+ };
116
+ this.ex.hama_free(eoPtr, eo.length * 4);
117
+ this.ex.hama_free(pkPtr, pk.length * 4);
118
+ this.ex.hama_free(maskPtr, T);
119
+ this.ex.hama_free(prevPtr, T * 4);
120
+ this.ex.hama_free(hidPtr, hidden.length * 4);
121
+ this.ex.hama_free(posPtr, T * 4);
122
+ this.ex.hama_free(nextPtr, 8);
123
+ this.ex.hama_free(attnPtr, 8);
124
+ this.ex.hama_free(hidOutPtr, 2 * DEC_HID * 4);
125
+ this.ex.hama_free(prevOutPtr, T * 4);
126
+ return out;
127
+ }
128
+ asrRun(h, wav) {
129
+ const N = wav.length;
130
+ const T = this.ex.hama_asr_num_frames(N);
131
+ const wavPtr = this.ex.hama_alloc(N * 4);
132
+ const lpPtr = this.ex.hama_alloc(T * ASR_VOCAB * 4);
133
+ const olPtr = this.ex.hama_alloc(8);
134
+ this.writeF32(wavPtr, wav);
135
+ const rc = this.ex.hama_asr_run(h, wavPtr, N, lpPtr, olPtr);
136
+ if (rc < 0)
137
+ throw new Error("hama_asr_run failed");
138
+ const logProbs = this.readF32(lpPtr, T * ASR_VOCAB);
139
+ const outLength = Number(this.readI64(olPtr, 1)[0]);
140
+ this.ex.hama_free(wavPtr, N * 4);
141
+ this.ex.hama_free(lpPtr, T * ASR_VOCAB * 4);
142
+ this.ex.hama_free(olPtr, 8);
143
+ return { logProbs, T, outLength };
144
+ }
145
+ }
146
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"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"}