@timur00kh/whisper.wasm 0.0.1

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,19 @@
1
+ export type LoggerLevelsType = (typeof Logger.levels)[keyof typeof Logger.levels];
2
+ export declare class Logger {
3
+ static levels: {
4
+ DEBUG: number;
5
+ INFO: number;
6
+ WARN: number;
7
+ ERROR: number;
8
+ };
9
+ private level;
10
+ private prefix;
11
+ constructor(level?: number, prefix?: string);
12
+ debug(...args: any[]): void;
13
+ info(...args: any[]): void;
14
+ warn(...args: any[]): void;
15
+ error(...args: any[]): void;
16
+ setLevel(level: LoggerLevelsType): void;
17
+ getLevel(): number;
18
+ }
19
+ //# sourceMappingURL=Logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AAElF,qBAAa,MAAM;IACjB,MAAM,CAAC,MAAM;;;;;MAKX;IAEF,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,MAAM,CAAS;gBAEX,KAAK,SAAqB,EAAE,MAAM,SAAK;IAKnD,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAMpB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAMnB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAMnB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAMb,QAAQ,CAAC,KAAK,EAAE,gBAAgB;IAIhC,QAAQ;CAGhB"}
@@ -0,0 +1,2 @@
1
+ export declare function sleep(ms: number): Promise<unknown>;
2
+ //# sourceMappingURL=sleep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../src/utils/sleep.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAE/B"}
@@ -0,0 +1,18 @@
1
+ export type ModelID = 'tiny.en' | 'tiny' | 'base.en' | 'base' | 'small.en' | 'small' | 'tiny.en-q5_1' | 'tiny-q5_1' | 'base.en-q5_1' | 'base-q5_1' | 'small.en-q5_1' | 'small-q5_1' | 'medium.en-q5_0' | 'medium-q5_0' | 'large-q5_0';
2
+ export interface WhisperModel {
3
+ id: ModelID;
4
+ name: string;
5
+ size: number;
6
+ language: 'en' | 'multilingual';
7
+ quantized: boolean;
8
+ cached?: boolean;
9
+ }
10
+ export declare const MODEL_CONFIG: Record<ModelID, WhisperModel & {
11
+ url: string;
12
+ }>;
13
+ export declare function getModelInfo(modelId: ModelID): WhisperModel | null;
14
+ export declare function getAllModels(): WhisperModel[];
15
+ export declare function getModelConfig(modelId: ModelID): WhisperModel & {
16
+ url: string;
17
+ };
18
+ //# sourceMappingURL=ModelConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelConfig.d.ts","sourceRoot":"","sources":["../../src/whisper/ModelConfig.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GACf,SAAS,GACT,MAAM,GACN,SAAS,GACT,MAAM,GACN,UAAU,GACV,OAAO,GACP,cAAc,GACd,WAAW,GACX,cAAc,GACd,WAAW,GACX,eAAe,GACf,YAAY,GACZ,gBAAgB,GAChB,aAAa,GACb,YAAY,CAAC;AAEjB,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,IAAI,GAAG,cAAc,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAGD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAyHxE,CAAC;AAGF,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAOlE;AAED,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAM7C;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO;SA7IkB,MAAM;EA+ItE"}
@@ -0,0 +1,76 @@
1
+ import { ModelID, WhisperModel } from './ModelConfig';
2
+ import { LoggerLevelsType } from '../utils/Logger';
3
+
4
+ export interface ModelListConfig {
5
+ models: WhisperModel[];
6
+ cacheEnabled?: boolean;
7
+ maxCacheSize?: number;
8
+ }
9
+ export interface ProgressCallback {
10
+ (progress: number): void;
11
+ }
12
+ export interface ModelManagerOptions {
13
+ logLevel: LoggerLevelsType;
14
+ }
15
+ export declare class ModelManager {
16
+ private cacheEnabled;
17
+ private models;
18
+ private logger;
19
+ constructor(options?: ModelManagerOptions);
20
+ /**
21
+ * Loads model by name
22
+ */
23
+ loadModel(modelId: ModelID, saveToIndexedDB?: boolean, progressCallback?: ProgressCallback): Promise<Uint8Array>;
24
+ /**
25
+ * Loads WASM model by URL and saves it to IndexedDB using the URL itself as key.
26
+ */
27
+ loadModelByUrl(modelUrl: string, progressCallback?: ProgressCallback): Promise<Uint8Array>;
28
+ /**
29
+ * Get model from IndexedDB by URL (key is the URL itself)
30
+ */
31
+ private getCachedModelByUrl;
32
+ /**
33
+ * Saves model to IndexedDB by URL (key is the URL itself)
34
+ */
35
+ private saveModelToCacheByUrl;
36
+ /**
37
+ * Gets list of available models with cache information
38
+ */
39
+ getAvailableModels(): Promise<WhisperModel[]>;
40
+ /**
41
+ * Gets list of available models without cache check (synchronously)
42
+ */
43
+ getAvailableModelsSync(): WhisperModel[];
44
+ /**
45
+ * Gets model by name from config
46
+ */
47
+ getModelConfig(modelName: ModelID): WhisperModel | undefined;
48
+ /**
49
+ * Saves model to IndexedDB
50
+ */
51
+ private saveModelToCache;
52
+ /**
53
+ * Gets model from IndexedDB cache
54
+ */
55
+ private getCachedModel;
56
+ /**
57
+ * Gets list of model names loaded in cache
58
+ */
59
+ private getCachedModelNames;
60
+ /**
61
+ * Opens IndexedDB for model caching
62
+ */
63
+ private openIndexedDB;
64
+ /**
65
+ * Clears model cache
66
+ */
67
+ clearCache(): Promise<void>;
68
+ /**
69
+ * Gets cache information
70
+ */
71
+ getCacheInfo(): Promise<{
72
+ count: number;
73
+ totalSize: number;
74
+ }>;
75
+ }
76
+ //# sourceMappingURL=ModelManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelManager.d.ts","sourceRoot":"","sources":["../../src/whisper/ModelManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAU,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,GAAE,mBAAuD;IAI5E;;OAEG;IACG,SAAS,CACb,OAAO,EAAE,OAAO,EAChB,eAAe,GAAE,OAAc,EAC/B,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,UAAU,CAAC;IAwEtB;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwEhG;;OAEG;YACW,mBAAmB;IA0BjC;;OAEG;YACW,qBAAqB;IAwBnC;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAsBnD;;OAEG;IACH,sBAAsB,IAAI,YAAY,EAAE;IAIxC;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS;IAI5D;;OAEG;YACW,gBAAgB;IAwB9B;;OAEG;YACW,cAAc;IA0B5B;;OAEG;YACW,mBAAmB;IAsBjC;;OAEG;YACW,aAAa;IA2B3B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BjC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAsBpE"}
@@ -0,0 +1,17 @@
1
+ import { LoggerLevelsType } from '../utils/Logger';
2
+ import { WhisperWasmTranscriptionOptions, WhisperWasmServiceCallbackParams } from './types';
3
+ import { WhisperWasmService } from './WhisperWasmService';
4
+
5
+ interface ITranscriptionSessionOptions extends WhisperWasmTranscriptionOptions {
6
+ sleepMsBetweenChunks?: number;
7
+ }
8
+ export declare class TranscriptionSession {
9
+ private whisperService;
10
+ private logger;
11
+ constructor(whisperService: WhisperWasmService, options?: {
12
+ logLevel: LoggerLevelsType;
13
+ });
14
+ streamimg(audioData: Float32Array, options?: ITranscriptionSessionOptions): AsyncIterableIterator<WhisperWasmServiceCallbackParams>;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=TranscriptionSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TranscriptionSession.d.ts","sourceRoot":"","sources":["../../src/whisper/TranscriptionSession.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EACtC,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAY1D,UAAU,4BAA6B,SAAQ,+BAA+B;IAC5E,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,oBAAoB;IAI7B,OAAO,CAAC,cAAc;IAHxB,OAAO,CAAC,MAAM,CAAS;gBAGb,cAAc,EAAE,kBAAkB,EAC1C,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAA;KAAE;IAKnC,SAAS,CACd,SAAS,EAAE,YAAY,EACvB,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CAAC,gCAAgC,CAAC;CAkD3D"}
@@ -0,0 +1,34 @@
1
+ import { LoggerLevelsType } from '../utils/Logger';
2
+ import { WhisperWasmModule, WhisperWasmServiceCallback, WhisperWasmServiceCallbackParams, WhisperWasmTranscriptionOptions } from './types';
3
+ import { TranscriptionSession } from './TranscriptionSession';
4
+
5
+ declare global {
6
+ interface Window {
7
+ Module: WhisperWasmModule;
8
+ WhisperWasmService: WhisperWasmService;
9
+ }
10
+ }
11
+ interface WhisperWasmServiceOptions {
12
+ logLevel?: LoggerLevelsType;
13
+ init?: boolean;
14
+ }
15
+ export declare class WhisperWasmService {
16
+ private wasmModule;
17
+ private instance;
18
+ private modelFileName;
19
+ private isTranscribing;
20
+ private bus;
21
+ private logger;
22
+ constructor(options?: WhisperWasmServiceOptions);
23
+ checkWasmSupport(): Promise<boolean>;
24
+ loadWasmScript(): Promise<void>;
25
+ loadWasmModule(model: Uint8Array): Promise<void>;
26
+ storeFS(fname: string, buf: Uint8Array): void;
27
+ transcribe(audioData: Float32Array, callback?: WhisperWasmServiceCallback, options?: WhisperWasmTranscriptionOptions): Promise<{
28
+ segments: WhisperWasmServiceCallbackParams[];
29
+ transcribeDurationMs: number;
30
+ }>;
31
+ createSession(): TranscriptionSession;
32
+ }
33
+ export {};
34
+ //# sourceMappingURL=WhisperWasmService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhisperWasmService.d.ts","sourceRoot":"","sources":["../../src/whisper/WhisperWasmService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAU,MAAM,iBAAiB,CAAC;AAE3D,OAAO,KAAK,EACV,iBAAiB,EACjB,0BAA0B,EAC1B,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE,iBAAiB,CAAC;QAC1B,kBAAkB,EAAE,kBAAkB,CAAC;KACxC;CACF;AAkBD,UAAU,yBAAyB;IACjC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,GAAG,CAA+B;IAC1C,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,CAAC,EAAE,yBAAyB;IAOzC,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB/B,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU;IAehC,UAAU,CACd,SAAS,EAAE,YAAY,EACvB,QAAQ,CAAC,EAAE,0BAA0B,EACrC,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CAAC;QAAE,QAAQ,EAAE,gCAAgC,EAAE,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE,CAAC;IAkE1F,aAAa,IAAI,oBAAoB;CAGtC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Парсит одну строку вида:
3
+ * "[00:00:07.900 --> 00:00:10.900] текст"
4
+ * Возвращает объект с миллисекундами и исходными строками времени.
5
+ */
6
+ export declare function parseCueLine(line: string): {
7
+ startMs: number;
8
+ endMs: number;
9
+ start: string;
10
+ end: string;
11
+ text: string;
12
+ };
13
+ //# sourceMappingURL=parseCueLine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseCueLine.d.ts","sourceRoot":"","sources":["../../src/whisper/parseCueLine.ts"],"names":[],"mappings":"AAyBA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM;;;;;;EA0BxC"}
@@ -0,0 +1,31 @@
1
+ type WithPrefix<T, P extends string> = {
2
+ [K in keyof T as K extends string ? `${P}${K}` : never]: T[K];
3
+ };
4
+ export interface WhisperWasmModule extends WithPrefix<typeof FS, 'FS_'> {
5
+ init: (modelPath: string) => number;
6
+ full_default: (instance: number, audio: Float32Array, language: string, threads: number, translate: boolean) => string;
7
+ print: (e: string) => void;
8
+ printErr: (e: string) => void;
9
+ free: () => void;
10
+ }
11
+ export interface WasmModuleStatus {
12
+ wasmLoaded: boolean;
13
+ modelLoaded: boolean;
14
+ instance: number | null;
15
+ currentModel: string | null;
16
+ }
17
+ export interface WhisperWasmServiceCallbackParams {
18
+ timeStart: number;
19
+ timeEnd: number;
20
+ text: string;
21
+ raw: string;
22
+ }
23
+ export type WhisperWasmServiceCallback = (p: WhisperWasmServiceCallbackParams) => void;
24
+ export declare const whisperWasmTranscriptionDefaultOptions: {
25
+ readonly language: "auto";
26
+ readonly threads: 4;
27
+ readonly translate: false;
28
+ };
29
+ export type WhisperWasmTranscriptionOptions = Partial<typeof whisperWasmTranscriptionDefaultOptions>;
30
+ export {};
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/whisper/types.ts"],"names":[],"mappings":"AAAA,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI;KACpC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;CAC9D,CAAC;AAGF,MAAM,WAAW,iBAAkB,SAAQ,UAAU,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;IACrE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAEpC,YAAY,EAAE,CACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,OAAO,KACf,MAAM,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,IAAI,EAAE,MAAM,IAAI,CAAC;CAElB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,EAAE,gCAAgC,KAAK,IAAI,CAAC;AAEvF,eAAO,MAAM,sCAAsC;;;;CAIzC,CAAC;AAEX,MAAM,MAAM,+BAA+B,GAAG,OAAO,CACnD,OAAO,sCAAsC,CAC9C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,99 @@
1
+ {
2
+ "name": "@timur00kh/whisper.wasm",
3
+ "version": "0.0.1",
4
+ "description": "WebAssembly bindings for OpenAI Whisper speech recognition",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.es.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.es.js",
11
+ "require": "./dist/index.cjs.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./package.json": "./package.json"
15
+ },
16
+ "sideEffects": false,
17
+ "files": [
18
+ "dist",
19
+ "README.md",
20
+ "LICENSE"
21
+ ],
22
+ "scripts": {
23
+ "build": "npm run build:lib",
24
+ "build:lib": "vite build --mode library",
25
+ "build:demo": "vite build --mode demo",
26
+ "build:demo:github": "DEMO_BASE_PATH=/whisper.wasm/ vite build --mode demo",
27
+ "dev": "vite --mode library",
28
+ "dev:demo": "vite --mode demo --port 7008",
29
+ "preview": "vite preview",
30
+ "test": "jest",
31
+ "test:watch": "jest --watch",
32
+ "lint": "eslint src/**/*.ts",
33
+ "lint:fix": "eslint src/**/*.ts --fix",
34
+ "format": "prettier --write .",
35
+ "format:check": "prettier --check .",
36
+ "format:fix": "prettier --write . && npm run lint:fix",
37
+ "prepare": "npm run build:lib",
38
+ "prepublishOnly": "npm run format:check && npm run lint && npm run build:lib"
39
+ },
40
+ "keywords": [
41
+ "whisper",
42
+ "speech-recognition",
43
+ "webassembly",
44
+ "wasm",
45
+ "openai",
46
+ "audio",
47
+ "transcription",
48
+ "whisper.cpp",
49
+ "voice-to-text",
50
+ "ai",
51
+ "machine-learning"
52
+ ],
53
+ "author": {
54
+ "name": "Timur Kh",
55
+ "email": "info@mithk.ru",
56
+ "url": "https://github.com/timur00kh"
57
+ },
58
+ "license": "MIT",
59
+ "engines": {
60
+ "node": ">=18.0.0"
61
+ },
62
+ "browser": {
63
+ "fs": false,
64
+ "path": false,
65
+ "os": false
66
+ },
67
+ "devDependencies": {
68
+ "@types/emscripten": "^1.40.1",
69
+ "@types/jest": "^29.5.8",
70
+ "@types/node": "^20.9.0",
71
+ "@typescript-eslint/eslint-plugin": "^6.12.0",
72
+ "@typescript-eslint/parser": "^6.12.0",
73
+ "eslint": "^8.54.0",
74
+ "eslint-config-prettier": "^10.1.8",
75
+ "htm": "^3.1.1",
76
+ "jest": "^29.7.0",
77
+ "preact": "^10.22.0",
78
+ "prettier": "^3.6.2",
79
+ "ts-jest": "^29.1.1",
80
+ "typescript": "^5.2.2",
81
+ "vite": "^5.0.0",
82
+ "vite-plugin-dts": "^3.7.0"
83
+ },
84
+ "dependencies": {
85
+ "comlink": "^4.4.1",
86
+ "wasm-feature-detect": "^1.8.0"
87
+ },
88
+ "repository": {
89
+ "type": "git",
90
+ "url": "https://github.com/timur00kh/whisper.wasm.git"
91
+ },
92
+ "bugs": {
93
+ "url": "https://github.com/timur00kh/whisper.wasm/issues"
94
+ },
95
+ "homepage": "https://github.com/timur00kh/whisper.wasm#readme",
96
+ "publishConfig": {
97
+ "access": "public"
98
+ }
99
+ }