webml-kit 0.2.1 → 0.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.
@@ -0,0 +1,462 @@
1
+ /**
2
+ * Direct ONNX Runtime Web pipeline runner.
3
+ *
4
+ * Supports standalone and custom ONNX models that do not use Hugging Face
5
+ * Transformers architecture (such as NeMo Conformer-CTC ASR models,
6
+ * standalone vision models, or raw ONNX models).
7
+ */
8
+ import * as ort from 'onnxruntime-web';
9
+ // Resolve ONNX Runtime instance: prefer globalThis.ort (e.g. from script tag in browser) or imported module
10
+ const runtimeOrt = typeof globalThis !== 'undefined' && globalThis.ort
11
+ ? globalThis.ort
12
+ : ort;
13
+ // Configure ONNX Runtime WebAssembly environment
14
+ if (runtimeOrt?.env?.wasm) {
15
+ runtimeOrt.env.wasm.simd = true;
16
+ if (typeof navigator !== 'undefined' && navigator.hardwareConcurrency) {
17
+ runtimeOrt.env.wasm.numThreads = Math.min(navigator.hardwareConcurrency, 4);
18
+ }
19
+ }
20
+ // ─── Asset Resolution Helpers ───
21
+ const HF_BASE = 'https://huggingface.co';
22
+ async function fetchRepoFiles(modelId) {
23
+ try {
24
+ const res = await fetch(`https://huggingface.co/api/models/${modelId}`);
25
+ if (!res.ok)
26
+ return [];
27
+ const data = await res.json();
28
+ return (data.siblings ?? []).map(s => s.rfilename);
29
+ }
30
+ catch {
31
+ return [];
32
+ }
33
+ }
34
+ function resolveAssetUrl(modelId, filename, revision = 'main') {
35
+ if (filename.startsWith('http://') || filename.startsWith('https://') || filename.startsWith('/') || filename.startsWith('./')) {
36
+ return filename;
37
+ }
38
+ return `${HF_BASE}/${modelId}/resolve/${revision}/${filename}`;
39
+ }
40
+ const DEFAULT_ONNX_CACHE_NAME = 'webml-kit-onnx-cache';
41
+ async function downloadAsset(url, fileName, onProgress, useCache = true, cacheName = DEFAULT_ONNX_CACHE_NAME) {
42
+ if (typeof process !== 'undefined' &&
43
+ process.versions?.node &&
44
+ !url.startsWith('http://') &&
45
+ !url.startsWith('https://')) {
46
+ const fs = await import('node:fs/promises');
47
+ const path = url.startsWith('file://') ? new URL(url) : url;
48
+ const buf = await fs.readFile(path);
49
+ onProgress?.({
50
+ status: 'downloading',
51
+ file: fileName,
52
+ loaded: buf.byteLength,
53
+ total: buf.byteLength,
54
+ percent: 100,
55
+ });
56
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
57
+ }
58
+ // Check persistent browser Cache API
59
+ let cache = null;
60
+ if (useCache && typeof caches !== 'undefined') {
61
+ try {
62
+ cache = await caches.open(cacheName);
63
+ const cached = await cache.match(url);
64
+ if (cached) {
65
+ const buf = await cached.arrayBuffer();
66
+ onProgress?.({
67
+ status: 'ready',
68
+ file: fileName,
69
+ loaded: buf.byteLength,
70
+ total: buf.byteLength,
71
+ percent: 100,
72
+ });
73
+ return buf;
74
+ }
75
+ }
76
+ catch (err) {
77
+ console.warn('Cache API lookup failed, fetching over network:', err);
78
+ }
79
+ }
80
+ const response = await fetch(url);
81
+ if (!response.ok) {
82
+ throw new Error(`Failed to fetch ${fileName} from ${url}: ${response.status} ${response.statusText}`);
83
+ }
84
+ const contentLength = response.headers.get('content-length');
85
+ const total = contentLength ? parseInt(contentLength, 10) : 0;
86
+ if (!response.body || total === 0) {
87
+ const buffer = await response.arrayBuffer();
88
+ if (cache) {
89
+ try {
90
+ await cache.put(url, new Response(buffer.slice(0), {
91
+ headers: {
92
+ 'Content-Type': 'application/octet-stream',
93
+ 'Content-Length': String(buffer.byteLength),
94
+ },
95
+ }));
96
+ }
97
+ catch (err) {
98
+ console.warn('Failed to cache asset in Cache API:', err);
99
+ }
100
+ }
101
+ onProgress?.({
102
+ status: 'downloading',
103
+ file: fileName,
104
+ loaded: buffer.byteLength,
105
+ total: buffer.byteLength,
106
+ percent: 100,
107
+ });
108
+ return buffer;
109
+ }
110
+ const reader = response.body.getReader();
111
+ const chunks = [];
112
+ let loaded = 0;
113
+ while (true) {
114
+ const { done, value } = await reader.read();
115
+ if (done)
116
+ break;
117
+ if (value) {
118
+ chunks.push(value);
119
+ loaded += value.length;
120
+ const percent = total > 0 ? Math.round((loaded / total) * 100) : 0;
121
+ onProgress?.({
122
+ status: 'downloading',
123
+ file: fileName,
124
+ loaded,
125
+ total,
126
+ percent,
127
+ });
128
+ }
129
+ }
130
+ const merged = new Uint8Array(loaded);
131
+ let offset = 0;
132
+ for (const chunk of chunks) {
133
+ merged.set(chunk, offset);
134
+ offset += chunk.length;
135
+ }
136
+ if (cache) {
137
+ try {
138
+ await cache.put(url, new Response(merged.buffer.slice(0), {
139
+ headers: {
140
+ 'Content-Type': 'application/octet-stream',
141
+ 'Content-Length': String(loaded),
142
+ },
143
+ }));
144
+ }
145
+ catch (err) {
146
+ console.warn('Failed to cache asset in Cache API:', err);
147
+ }
148
+ }
149
+ return merged.buffer;
150
+ }
151
+ // ─── Session Management with Fallback ───
152
+ async function createSession(modelBufferOrPath, preferredBackend = 'webgpu') {
153
+ const model = modelBufferOrPath instanceof ArrayBuffer
154
+ ? new Uint8Array(modelBufferOrPath)
155
+ : modelBufferOrPath;
156
+ if (preferredBackend === 'webgpu') {
157
+ try {
158
+ const session = await runtimeOrt.InferenceSession.create(model, {
159
+ executionProviders: ['webgpu'],
160
+ });
161
+ return { session, backend: 'webgpu' };
162
+ }
163
+ catch (err) {
164
+ console.warn('WebGPU session creation failed, falling back to wasm:', err);
165
+ }
166
+ }
167
+ const session = await runtimeOrt.InferenceSession.create(model, {
168
+ executionProviders: ['wasm'],
169
+ });
170
+ return { session, backend: 'wasm' };
171
+ }
172
+ // ─── Audio Helpers ───
173
+ export function decodeWavToFloat32(buffer) {
174
+ const view = new DataView(buffer);
175
+ // Check 'RIFF' and 'WAVE'
176
+ const riff = String.fromCharCode(view.getUint8(0), view.getUint8(1), view.getUint8(2), view.getUint8(3));
177
+ const wave = String.fromCharCode(view.getUint8(8), view.getUint8(9), view.getUint8(10), view.getUint8(11));
178
+ if (riff !== 'RIFF' || wave !== 'WAVE') {
179
+ // If not a valid WAV header, treat as raw Float32Array
180
+ return new Float32Array(buffer);
181
+ }
182
+ let offset = 12;
183
+ let audioFormat = 1;
184
+ let numChannels = 1;
185
+ let bitsPerSample = 16;
186
+ let dataOffset = 0;
187
+ let dataLength = 0;
188
+ while (offset < view.byteLength - 8) {
189
+ const chunkId = String.fromCharCode(view.getUint8(offset), view.getUint8(offset + 1), view.getUint8(offset + 2), view.getUint8(offset + 3));
190
+ const chunkSize = view.getUint32(offset + 4, true);
191
+ if (chunkId === 'fmt ') {
192
+ audioFormat = view.getUint16(offset + 8, true);
193
+ numChannels = view.getUint16(offset + 10, true);
194
+ bitsPerSample = view.getUint16(offset + 22, true);
195
+ }
196
+ else if (chunkId === 'data') {
197
+ dataOffset = offset + 8;
198
+ dataLength = chunkSize;
199
+ break;
200
+ }
201
+ offset += 8 + chunkSize;
202
+ }
203
+ if (dataOffset === 0) {
204
+ return new Float32Array(buffer);
205
+ }
206
+ if (audioFormat === 1 && bitsPerSample === 16) {
207
+ // 16-bit PCM
208
+ const numSamples = Math.floor(dataLength / (2 * numChannels));
209
+ const pcm = new Float32Array(numSamples);
210
+ for (let i = 0; i < numSamples; i++) {
211
+ let sum = 0;
212
+ for (let c = 0; c < numChannels; c++) {
213
+ const idx = dataOffset + (i * numChannels + c) * 2;
214
+ if (idx + 1 < view.byteLength) {
215
+ sum += view.getInt16(idx, true) / 32768.0;
216
+ }
217
+ }
218
+ pcm[i] = sum / numChannels;
219
+ }
220
+ return pcm;
221
+ }
222
+ if (audioFormat === 3 && bitsPerSample === 32) {
223
+ // 32-bit Float
224
+ const numSamples = Math.floor(dataLength / (4 * numChannels));
225
+ const pcm = new Float32Array(numSamples);
226
+ for (let i = 0; i < numSamples; i++) {
227
+ let sum = 0;
228
+ for (let c = 0; c < numChannels; c++) {
229
+ const idx = dataOffset + (i * numChannels + c) * 4;
230
+ if (idx + 3 < view.byteLength) {
231
+ sum += view.getFloat32(idx, true);
232
+ }
233
+ }
234
+ pcm[i] = sum / numChannels;
235
+ }
236
+ return pcm;
237
+ }
238
+ return new Float32Array(buffer.slice(dataOffset, dataOffset + dataLength));
239
+ }
240
+ export function toFloat32Array(input) {
241
+ if (input instanceof Float32Array)
242
+ return input;
243
+ if (Array.isArray(input))
244
+ return new Float32Array(input);
245
+ if (input instanceof ArrayBuffer)
246
+ return decodeWavToFloat32(input);
247
+ if (ArrayBuffer.isView(input))
248
+ return new Float32Array(input.buffer, input.byteOffset, input.byteLength / 4);
249
+ if (typeof input === 'object' && input !== null && 'audio' in input) {
250
+ return toFloat32Array(input.audio);
251
+ }
252
+ throw new Error(`Unsupported audio input format: ${typeof input}`);
253
+ }
254
+ // ─── CTC Greedy Decoding ───
255
+ export function decodeCTC(logprobs, timeSteps, numClasses, vocab) {
256
+ let prevClass = 0;
257
+ let text = '';
258
+ for (let t = 0; t < timeSteps; t++) {
259
+ const offset = t * numClasses;
260
+ let maxVal = -Infinity;
261
+ let argmax = 0;
262
+ for (let c = 0; c < numClasses; c++) {
263
+ const val = logprobs[offset + c];
264
+ if (val > maxVal) {
265
+ maxVal = val;
266
+ argmax = c;
267
+ }
268
+ }
269
+ if (argmax === 0) {
270
+ prevClass = 0;
271
+ continue;
272
+ }
273
+ if (argmax !== prevClass) {
274
+ const token = vocab[argmax] ?? '';
275
+ text += token;
276
+ prevClass = argmax;
277
+ }
278
+ }
279
+ // Replace SentencePiece whitespace marker ' ' (U+2581) with normal space
280
+ return text.replace(/\u2581/g, ' ').replace(/\s+/g, ' ').trim();
281
+ }
282
+ // ─── Main Pipeline Factory ───
283
+ export async function createOnnxPipeline(config, onProgress) {
284
+ const preferredDevice = config.device ?? 'webgpu';
285
+ const revision = config.revision ?? 'main';
286
+ const useCache = config.cache !== false;
287
+ const cacheName = config.cacheName || DEFAULT_ONNX_CACHE_NAME;
288
+ // 1. Discover model files
289
+ let modelFile = config.modelFile;
290
+ let preprocessorFile = config.preprocessorFile;
291
+ let vocabFile = config.vocabFile;
292
+ if (!modelFile && !config.modelId.endsWith('.onnx')) {
293
+ const repoFiles = await fetchRepoFiles(config.modelId);
294
+ if (repoFiles.length > 0) {
295
+ if (!modelFile) {
296
+ // Look for acoustic / CTC / model ONNX
297
+ modelFile = repoFiles.find(f => f.endsWith('.onnx') && !f.includes('preprocess'))
298
+ ?? repoFiles.find(f => f.endsWith('.onnx'));
299
+ }
300
+ if (!preprocessorFile) {
301
+ preprocessorFile = repoFiles.find(f => f.endsWith('.onnx') && f.includes('preprocess'));
302
+ }
303
+ if (!vocabFile) {
304
+ vocabFile = repoFiles.find(f => f.endsWith('.json') && (f.includes('vocab') || f.includes('tokens')));
305
+ }
306
+ }
307
+ }
308
+ if (!modelFile) {
309
+ modelFile = config.modelId.endsWith('.onnx') ? config.modelId : 'model.onnx';
310
+ }
311
+ const modelUrl = resolveAssetUrl(config.modelId, modelFile, revision);
312
+ const modelBuffer = await downloadAsset(modelUrl, modelFile, onProgress, useCache, cacheName);
313
+ // Preprocessor (optional companion model for ASR/audio)
314
+ let prepSession = null;
315
+ if (preprocessorFile) {
316
+ const prepUrl = resolveAssetUrl(config.modelId, preprocessorFile, revision);
317
+ const prepBuffer = await downloadAsset(prepUrl, preprocessorFile, onProgress, useCache, cacheName);
318
+ const { session } = await createSession(prepBuffer, preferredDevice);
319
+ prepSession = session;
320
+ }
321
+ // Vocab (optional mapping for CTC decoding)
322
+ let vocab = {};
323
+ if (vocabFile) {
324
+ const vocabUrl = resolveAssetUrl(config.modelId, vocabFile, revision);
325
+ try {
326
+ if (typeof process !== 'undefined' &&
327
+ process.versions?.node &&
328
+ !vocabUrl.startsWith('http://') &&
329
+ !vocabUrl.startsWith('https://')) {
330
+ const fs = await import('node:fs/promises');
331
+ const path = vocabUrl.startsWith('file://') ? new URL(vocabUrl) : vocabUrl;
332
+ const text = await fs.readFile(path, 'utf-8');
333
+ vocab = JSON.parse(text);
334
+ }
335
+ else {
336
+ let cachedRes = null;
337
+ if (useCache && typeof caches !== 'undefined') {
338
+ try {
339
+ const cache = await caches.open(cacheName);
340
+ cachedRes = (await cache.match(vocabUrl)) ?? null;
341
+ }
342
+ catch { }
343
+ }
344
+ if (cachedRes) {
345
+ vocab = await cachedRes.json();
346
+ }
347
+ else {
348
+ const res = await fetch(vocabUrl);
349
+ if (res.ok) {
350
+ if (useCache && typeof caches !== 'undefined') {
351
+ try {
352
+ const cache = await caches.open(cacheName);
353
+ await cache.put(vocabUrl, res.clone());
354
+ }
355
+ catch { }
356
+ }
357
+ vocab = await res.json();
358
+ }
359
+ }
360
+ }
361
+ }
362
+ catch {
363
+ // Non-fatal if vocab fails to load
364
+ }
365
+ }
366
+ // Create primary session with WebGPU -> WASM fallback
367
+ let { session: modelSession, backend } = await createSession(modelBuffer, preferredDevice);
368
+ // ─── ASR Pipeline Function ───
369
+ if (config.task === 'automatic-speech-recognition') {
370
+ const runner = async (input) => {
371
+ const pcm = toFloat32Array(input);
372
+ const executeInference = async (sess) => {
373
+ let acousticSignal;
374
+ let acousticLength;
375
+ if (prepSession) {
376
+ // Mel filterbank extraction
377
+ const audioTensor = new runtimeOrt.Tensor('float32', pcm, [1, pcm.length]);
378
+ const lengthTensor = new runtimeOrt.Tensor('int64', BigInt64Array.from([BigInt(pcm.length)]), [1]);
379
+ const prepOutputs = await prepSession.run({
380
+ audio_signal: audioTensor,
381
+ length: lengthTensor,
382
+ });
383
+ acousticSignal = (prepOutputs.processed_signal ?? Object.values(prepOutputs)[0]);
384
+ acousticLength = (prepOutputs.processed_length ?? Object.values(prepOutputs)[1]);
385
+ }
386
+ else {
387
+ // Pass raw audio directly
388
+ acousticSignal = new runtimeOrt.Tensor('float32', pcm, [1, pcm.length]);
389
+ acousticLength = new runtimeOrt.Tensor('int64', BigInt64Array.from([BigInt(pcm.length)]), [1]);
390
+ }
391
+ // Acoustic model inference
392
+ const feeds = {};
393
+ const inputNames = sess.inputNames;
394
+ if (inputNames.length >= 2) {
395
+ feeds[inputNames[0]] = acousticSignal;
396
+ feeds[inputNames[1]] = acousticLength;
397
+ }
398
+ else if (inputNames.length === 1) {
399
+ feeds[inputNames[0]] = acousticSignal;
400
+ }
401
+ const outputs = await sess.run(feeds);
402
+ const logprobsTensor = (outputs.logprobs ?? Object.values(outputs)[0]);
403
+ const dims = logprobsTensor.dims;
404
+ const timeSteps = dims.length === 3 ? dims[1] : (dims.length === 2 ? dims[0] : 1);
405
+ const numClasses = dims[dims.length - 1];
406
+ const data = logprobsTensor.data;
407
+ const text = decodeCTC(data, timeSteps, numClasses, vocab);
408
+ return { text };
409
+ };
410
+ try {
411
+ return await executeInference(modelSession);
412
+ }
413
+ catch (err) {
414
+ // If WebGPU failed (e.g. 1D conv kernel failure), fallback to WASM transparently
415
+ if (backend === 'webgpu') {
416
+ console.warn('WebGPU inference failed, retrying on WASM provider:', err);
417
+ const wasmResult = await createSession(modelBuffer, 'wasm');
418
+ modelSession = wasmResult.session;
419
+ backend = 'wasm';
420
+ return await executeInference(modelSession);
421
+ }
422
+ throw err;
423
+ }
424
+ };
425
+ const instance = runner;
426
+ instance.sessions = prepSession ? [prepSession, modelSession] : [modelSession];
427
+ instance.backend = backend;
428
+ instance.dispose = () => {
429
+ prepSession?.release();
430
+ modelSession.release();
431
+ };
432
+ return instance;
433
+ }
434
+ // ─── Generic / Raw ONNX Pipeline Function ───
435
+ const genericRunner = async (input) => {
436
+ const feeds = {};
437
+ if (typeof input === 'object' && input !== null) {
438
+ for (const [k, v] of Object.entries(input)) {
439
+ if (v instanceof (runtimeOrt.Tensor ?? ort.Tensor)) {
440
+ feeds[k] = v;
441
+ }
442
+ else if (v instanceof Float32Array) {
443
+ feeds[k] = new runtimeOrt.Tensor('float32', v, [1, v.length]);
444
+ }
445
+ }
446
+ }
447
+ const outputs = await modelSession.run(feeds);
448
+ const result = {};
449
+ for (const [k, v] of Object.entries(outputs)) {
450
+ result[k] = v.data;
451
+ }
452
+ return result;
453
+ };
454
+ const instance = genericRunner;
455
+ instance.sessions = [modelSession];
456
+ instance.backend = backend;
457
+ instance.dispose = () => {
458
+ modelSession.release();
459
+ };
460
+ return instance;
461
+ }
462
+ //# sourceMappingURL=onnx-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onnx-pipeline.js","sourceRoot":"","sources":["../src/onnx-pipeline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipelines/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sCAAsC;IACtC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAiGpE,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAMxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAE7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipelines/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sCAAsC;IACtC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAmHpE,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAMxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAE7D"}
@@ -37,8 +37,8 @@ export const PIPELINE_REGISTRY = {
37
37
  usesKVCache: false,
38
38
  },
39
39
  'text-to-speech': {
40
- defaultModel: 'Xenova/speecht5_tts',
41
- defaultDtype: 'fp32',
40
+ defaultModel: 'onnx-community/Kokoro-82M-v1.0-ONNX',
41
+ defaultDtype: 'q8',
42
42
  supportsStreaming: false,
43
43
  usesKVCache: false,
44
44
  },
@@ -102,6 +102,24 @@ export const PIPELINE_REGISTRY = {
102
102
  supportsStreaming: false,
103
103
  usesKVCache: false,
104
104
  },
105
+ 'raw-onnx': {
106
+ defaultModel: '',
107
+ defaultDtype: 'fp32',
108
+ supportsStreaming: false,
109
+ usesKVCache: false,
110
+ },
111
+ 'decision': {
112
+ defaultModel: 'qwen3-0.6b',
113
+ defaultDtype: 'q4',
114
+ supportsStreaming: false,
115
+ usesKVCache: false,
116
+ },
117
+ 'custom': {
118
+ defaultModel: '',
119
+ defaultDtype: 'fp32',
120
+ supportsStreaming: false,
121
+ usesKVCache: false,
122
+ },
105
123
  };
106
124
  /**
107
125
  * Get the pipeline defaults for a task.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipelines/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipelines/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ declare const ortProxy: any;
2
+ export default ortProxy;
3
+ export declare const InferenceSession: {};
4
+ export declare const Tensor: any;
5
+ export declare const env: any;
6
+ //# sourceMappingURL=shim-ort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shim-ort.d.ts","sourceRoot":"","sources":["../src/shim-ort.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,QAAQ,EAAE,GAQf,CAAC;AAEF,eAAe,QAAQ,CAAC;AACxB,eAAO,MAAM,gBAAgB,IAO5B,CAAC;AACF,eAAO,MAAM,MAAM,EAAE,GAGpB,CAAC;AACF,eAAO,MAAM,GAAG,EAAE,GAcjB,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Browser shim for onnxruntime-web when loaded via CDN <script> tag (window.ort).
3
+ */
4
+ const getOrt = () => {
5
+ if (typeof globalThis !== 'undefined' && globalThis.ort) {
6
+ return globalThis.ort;
7
+ }
8
+ return {};
9
+ };
10
+ const ortProxy = new Proxy({}, {
11
+ get(_target, prop) {
12
+ const ort = getOrt();
13
+ return ort[prop];
14
+ },
15
+ });
16
+ export default ortProxy;
17
+ export const InferenceSession = new Proxy({}, {
18
+ get(_target, prop) {
19
+ return getOrt().InferenceSession?.[prop];
20
+ },
21
+ });
22
+ export const Tensor = function (...args) {
23
+ const OrtTensor = getOrt().Tensor;
24
+ return new OrtTensor(...args);
25
+ };
26
+ export const env = new Proxy({}, {
27
+ get(_target, prop) {
28
+ return getOrt().env?.[prop];
29
+ },
30
+ set(_target, prop, value) {
31
+ const ort = getOrt();
32
+ if (ort.env) {
33
+ ort.env[prop] = value;
34
+ }
35
+ return true;
36
+ },
37
+ });
38
+ //# sourceMappingURL=shim-ort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shim-ort.js","sourceRoot":"","sources":["../src/shim-ort.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,GAAG,GAAQ,EAAE;IACvB,IAAI,OAAO,UAAU,KAAK,WAAW,IAAK,UAAkB,CAAC,GAAG,EAAE,CAAC;QACjE,OAAQ,UAAkB,CAAC,GAAG,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAQ,IAAI,KAAK,CAC7B,EAAE,EACF;IACE,GAAG,CAAC,OAAO,EAAE,IAAI;QACf,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;CACF,CACF,CAAC;AAEF,eAAe,QAAQ,CAAC;AACxB,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,KAAK,CACvC,EAAE,EACF;IACE,GAAG,CAAC,OAAO,EAAE,IAAI;QACf,OAAO,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF,CACF,CAAC;AACF,MAAM,CAAC,MAAM,MAAM,GAAQ,UAAqB,GAAG,IAAW;IAC5D,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC;IAClC,OAAO,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,GAAG,GAAQ,IAAI,KAAK,CAC/B,EAAE,EACF;IACE,GAAG,CAAC,OAAO,EAAE,IAAI;QACf,OAAO,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK;QACtB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CACF,CAAC"}
package/dist/types.d.ts CHANGED
@@ -15,7 +15,7 @@ export interface DeviceInfo {
15
15
  recommendedDtype: QuantizationType;
16
16
  }
17
17
  export type QuantizationType = 'fp32' | 'fp16' | 'q8' | 'q4' | 'q4f16' | 'q1' | 'int8' | 'uint8';
18
- export type PipelineTask = 'text-generation' | 'text-classification' | 'image-classification' | 'object-detection' | 'automatic-speech-recognition' | 'text-to-speech' | 'translation' | 'summarization' | 'feature-extraction' | 'image-to-text' | 'zero-shot-classification' | 'fill-mask' | 'question-answering' | 'token-classification' | 'depth-estimation' | 'image-segmentation';
18
+ export type PipelineTask = 'text-generation' | 'text-classification' | 'image-classification' | 'object-detection' | 'automatic-speech-recognition' | 'text-to-speech' | 'translation' | 'summarization' | 'feature-extraction' | 'image-to-text' | 'zero-shot-classification' | 'fill-mask' | 'question-answering' | 'token-classification' | 'depth-estimation' | 'image-segmentation' | 'raw-onnx' | 'decision' | 'custom';
19
19
  export interface ModelConfig {
20
20
  task: PipelineTask;
21
21
  modelId: string;
@@ -25,9 +25,23 @@ export interface ModelConfig {
25
25
  device?: DeviceBackend;
26
26
  /** Revision / branch on HuggingFace Hub */
27
27
  revision?: string;
28
+ /** Pipeline runner type: 'transformers' (HF pipeline), 'onnx' (raw/custom ONNX), or 'auto' (smart fallback) */
29
+ modelType?: 'transformers' | 'onnx' | 'auto';
30
+ /** Custom model filename or URL (e.g. 'sushrota_sanskrit_ctc_int8.onnx' or './model.onnx') */
31
+ modelFile?: string;
32
+ /** Companion audio preprocessor model filename or URL (e.g. 'preprocessor.onnx') */
33
+ preprocessorFile?: string;
34
+ /** Vocabulary mapping JSON filename or URL (e.g. 'sanskrit_vocab.json') */
35
+ vocabFile?: string;
36
+ /** Custom execution providers override, e.g. ['wasm'] or ['webgpu', 'wasm'] */
37
+ executionProviders?: string[];
38
+ /** Enable persistent browser Cache API storage for downloaded ONNX models (defaults to true) */
39
+ cache?: boolean;
40
+ /** Custom cache name (defaults to 'webml-kit-onnx-cache') */
41
+ cacheName?: string;
28
42
  }
29
43
  export interface ProgressEvent {
30
- status: 'downloading' | 'loading' | 'compiling' | 'warming';
44
+ status: 'downloading' | 'loading' | 'compiling' | 'warming' | 'ready';
31
45
  /** File being downloaded */
32
46
  file?: string;
33
47
  /** Bytes loaded so far */