@runanywhere/web 0.1.0-beta.4 → 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.
- package/dist/Foundation/StructOffsets.d.ts +33 -5
- package/dist/Foundation/StructOffsets.d.ts.map +1 -1
- package/dist/Foundation/StructOffsets.js +128 -94
- package/dist/Foundation/StructOffsets.js.map +1 -1
- package/dist/Infrastructure/ExtensionPoint.d.ts +78 -0
- package/dist/Infrastructure/ExtensionPoint.d.ts.map +1 -0
- package/dist/Infrastructure/ExtensionPoint.js +118 -0
- package/dist/Infrastructure/ExtensionPoint.js.map +1 -0
- package/dist/Infrastructure/LocalFileStorage.d.ts +116 -0
- package/dist/Infrastructure/LocalFileStorage.d.ts.map +1 -0
- package/dist/Infrastructure/LocalFileStorage.js +368 -0
- package/dist/Infrastructure/LocalFileStorage.js.map +1 -0
- package/dist/Infrastructure/ModelDownloader.d.ts +16 -5
- package/dist/Infrastructure/ModelDownloader.d.ts.map +1 -1
- package/dist/Infrastructure/ModelDownloader.js +54 -7
- package/dist/Infrastructure/ModelDownloader.js.map +1 -1
- package/dist/Infrastructure/ModelFileInference.d.ts +39 -0
- package/dist/Infrastructure/ModelFileInference.d.ts.map +1 -0
- package/dist/Infrastructure/ModelFileInference.js +110 -0
- package/dist/Infrastructure/ModelFileInference.js.map +1 -0
- package/dist/Infrastructure/ModelLoaderTypes.d.ts +76 -11
- package/dist/Infrastructure/ModelLoaderTypes.d.ts.map +1 -1
- package/dist/Infrastructure/ModelLoaderTypes.js +7 -1
- package/dist/Infrastructure/ModelLoaderTypes.js.map +1 -1
- package/dist/Infrastructure/ModelManager.d.ts +30 -104
- package/dist/Infrastructure/ModelManager.d.ts.map +1 -1
- package/dist/Infrastructure/ModelManager.js +209 -544
- package/dist/Infrastructure/ModelManager.js.map +1 -1
- package/dist/Infrastructure/ModelRegistry.d.ts +6 -0
- package/dist/Infrastructure/ModelRegistry.d.ts.map +1 -1
- package/dist/Infrastructure/ModelRegistry.js +11 -0
- package/dist/Infrastructure/ModelRegistry.js.map +1 -1
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts +3 -29
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts.map +1 -1
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js +46 -42
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js.map +1 -1
- package/dist/Public/Extensions/VoicePipelineTypes.d.ts +28 -37
- package/dist/Public/Extensions/VoicePipelineTypes.d.ts.map +1 -1
- package/dist/Public/Extensions/VoicePipelineTypes.js +4 -1
- package/dist/Public/Extensions/VoicePipelineTypes.js.map +1 -1
- package/dist/Public/RunAnywhere.d.ts +65 -61
- package/dist/Public/RunAnywhere.d.ts.map +1 -1
- package/dist/Public/RunAnywhere.js +193 -141
- package/dist/Public/RunAnywhere.js.map +1 -1
- package/dist/index.d.ts +23 -39
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -31
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -5
- package/wasm/racommons.js +91 -91
- package/wasm/racommons.wasm +0 -0
- package/dist/Foundation/SherpaONNXBridge.d.ts +0 -147
- package/dist/Foundation/SherpaONNXBridge.d.ts.map +0 -1
- package/dist/Foundation/SherpaONNXBridge.js +0 -345
- package/dist/Foundation/SherpaONNXBridge.js.map +0 -1
- package/dist/Infrastructure/AudioCapture.d.ts +0 -87
- package/dist/Infrastructure/AudioCapture.d.ts.map +0 -1
- package/dist/Infrastructure/AudioCapture.js +0 -231
- package/dist/Infrastructure/AudioCapture.js.map +0 -1
- package/dist/Infrastructure/AudioPlayback.d.ts +0 -53
- package/dist/Infrastructure/AudioPlayback.d.ts.map +0 -1
- package/dist/Infrastructure/AudioPlayback.js +0 -117
- package/dist/Infrastructure/AudioPlayback.js.map +0 -1
- package/dist/Infrastructure/VLMWorkerBridge.d.ts +0 -211
- package/dist/Infrastructure/VLMWorkerBridge.d.ts.map +0 -1
- package/dist/Infrastructure/VLMWorkerBridge.js +0 -264
- package/dist/Infrastructure/VLMWorkerBridge.js.map +0 -1
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts +0 -38
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts.map +0 -1
- package/dist/Infrastructure/VLMWorkerRuntime.js +0 -503
- package/dist/Infrastructure/VLMWorkerRuntime.js.map +0 -1
- package/dist/Infrastructure/VideoCapture.d.ts +0 -118
- package/dist/Infrastructure/VideoCapture.d.ts.map +0 -1
- package/dist/Infrastructure/VideoCapture.js +0 -207
- package/dist/Infrastructure/VideoCapture.js.map +0 -1
- package/dist/Public/Extensions/DiffusionTypes.d.ts +0 -64
- package/dist/Public/Extensions/DiffusionTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/DiffusionTypes.js +0 -28
- package/dist/Public/Extensions/DiffusionTypes.js.map +0 -1
- package/dist/Public/Extensions/EmbeddingsTypes.d.ts +0 -33
- package/dist/Public/Extensions/EmbeddingsTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/EmbeddingsTypes.js +0 -13
- package/dist/Public/Extensions/EmbeddingsTypes.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts +0 -44
- package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+Diffusion.js +0 -189
- package/dist/Public/Extensions/RunAnywhere+Diffusion.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts +0 -56
- package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+Embeddings.js +0 -240
- package/dist/Public/Extensions/RunAnywhere+Embeddings.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+STT.d.ts +0 -95
- package/dist/Public/Extensions/RunAnywhere+STT.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+STT.js +0 -417
- package/dist/Public/Extensions/RunAnywhere+STT.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts +0 -69
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js +0 -196
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+TTS.d.ts +0 -55
- package/dist/Public/Extensions/RunAnywhere+TTS.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+TTS.js +0 -253
- package/dist/Public/Extensions/RunAnywhere+TTS.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts +0 -80
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.js +0 -470
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts +0 -82
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.js +0 -576
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+VAD.d.ts +0 -70
- package/dist/Public/Extensions/RunAnywhere+VAD.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+VAD.js +0 -231
- package/dist/Public/Extensions/RunAnywhere+VAD.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+VLM.d.ts +0 -58
- package/dist/Public/Extensions/RunAnywhere+VLM.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+VLM.js +0 -262
- package/dist/Public/Extensions/RunAnywhere+VLM.js.map +0 -1
- package/dist/Public/Extensions/STTTypes.d.ts +0 -53
- package/dist/Public/Extensions/STTTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/STTTypes.js +0 -16
- package/dist/Public/Extensions/STTTypes.js.map +0 -1
- package/dist/Public/Extensions/TTSTypes.d.ts +0 -31
- package/dist/Public/Extensions/TTSTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/TTSTypes.js +0 -3
- package/dist/Public/Extensions/TTSTypes.js.map +0 -1
- package/dist/Public/Extensions/ToolCallingTypes.d.ts +0 -78
- package/dist/Public/Extensions/ToolCallingTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/ToolCallingTypes.js +0 -8
- package/dist/Public/Extensions/ToolCallingTypes.js.map +0 -1
- package/dist/Public/Extensions/VADTypes.d.ts +0 -30
- package/dist/Public/Extensions/VADTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/VADTypes.js +0 -8
- package/dist/Public/Extensions/VADTypes.js.map +0 -1
- package/dist/Public/Extensions/VLMTypes.d.ts +0 -56
- package/dist/Public/Extensions/VLMTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/VLMTypes.js +0 -24
- package/dist/Public/Extensions/VLMTypes.js.map +0 -1
- package/dist/types/LLMTypes.d.ts +0 -48
- package/dist/types/LLMTypes.d.ts.map +0 -1
- package/dist/types/LLMTypes.js +0 -8
- package/dist/types/LLMTypes.js.map +0 -1
- package/dist/workers/vlm-worker.d.ts +0 -9
- package/dist/workers/vlm-worker.d.ts.map +0 -1
- package/dist/workers/vlm-worker.js +0 -10
- package/dist/workers/vlm-worker.js.map +0 -1
- package/wasm/racommons-webgpu.js +0 -156
- package/wasm/racommons-webgpu.wasm +0 -0
- package/wasm/sherpa/sherpa-onnx-asr.js +0 -1538
- package/wasm/sherpa/sherpa-onnx-glue-original.js +0 -19
- package/wasm/sherpa/sherpa-onnx-glue.js +0 -17
- package/wasm/sherpa/sherpa-onnx-tts.js +0 -657
- package/wasm/sherpa/sherpa-onnx-vad.js +0 -337
- package/wasm/sherpa/sherpa-onnx-wave.js +0 -88
- package/wasm/sherpa/sherpa-onnx.wasm +0 -0
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RunAnywhere Web SDK - Sherpa-ONNX WASM Bridge
|
|
3
|
-
*
|
|
4
|
-
* Loads the sherpa-onnx WASM module (separate from RACommons) and provides
|
|
5
|
-
* typed access to the sherpa-onnx C API for:
|
|
6
|
-
* - STT (Speech-to-Text) via Whisper, Zipformer, Paraformer
|
|
7
|
-
* - TTS (Text-to-Speech) via Piper/VITS
|
|
8
|
-
* - VAD (Voice Activity Detection) via Silero
|
|
9
|
-
*
|
|
10
|
-
* Architecture:
|
|
11
|
-
* RACommons WASM handles LLM, VLM, Embeddings (llama.cpp)
|
|
12
|
-
* Sherpa-ONNX WASM handles STT, TTS, VAD (onnxruntime)
|
|
13
|
-
*
|
|
14
|
-
* The sherpa-onnx module is lazy-loaded on first use of STT/TTS/VAD.
|
|
15
|
-
*/
|
|
16
|
-
/**
|
|
17
|
-
* Emscripten module interface for sherpa-onnx WASM.
|
|
18
|
-
* Based on sherpa-onnx's wasm/nodejs C API exports.
|
|
19
|
-
*/
|
|
20
|
-
export interface SherpaONNXModule {
|
|
21
|
-
ccall: (ident: string, returnType: string | null, argTypes: string[], args: unknown[]) => unknown;
|
|
22
|
-
cwrap: (ident: string, returnType: string | null, argTypes: string[]) => (...args: unknown[]) => unknown;
|
|
23
|
-
_malloc: (size: number) => number;
|
|
24
|
-
_free: (ptr: number) => void;
|
|
25
|
-
setValue: (ptr: number, value: number, type: string) => void;
|
|
26
|
-
getValue: (ptr: number, type: string) => number;
|
|
27
|
-
UTF8ToString: (ptr: number) => string;
|
|
28
|
-
stringToUTF8: (str: string, ptr: number, maxLen: number) => void;
|
|
29
|
-
lengthBytesUTF8: (str: string) => number;
|
|
30
|
-
HEAPU8: Uint8Array;
|
|
31
|
-
HEAP16: Int16Array;
|
|
32
|
-
HEAP32: Int32Array;
|
|
33
|
-
HEAPF32: Float32Array;
|
|
34
|
-
HEAPF64: Float64Array;
|
|
35
|
-
FS: SherpaFS;
|
|
36
|
-
_SherpaOnnxCreateOfflineRecognizer: (configPtr: number) => number;
|
|
37
|
-
_SherpaOnnxDestroyOfflineRecognizer: (handle: number) => void;
|
|
38
|
-
_SherpaOnnxCreateOfflineStream: (handle: number) => number;
|
|
39
|
-
_SherpaOnnxDestroyOfflineStream: (stream: number) => void;
|
|
40
|
-
_SherpaOnnxAcceptWaveformOffline: (stream: number, sampleRate: number, samplesPtr: number, numSamples: number) => void;
|
|
41
|
-
_SherpaOnnxDecodeOfflineStream: (handle: number, stream: number) => void;
|
|
42
|
-
_SherpaOnnxGetOfflineStreamResultAsJson: (stream: number) => number;
|
|
43
|
-
_SherpaOnnxDestroyOfflineStreamResultJson: (ptr: number) => void;
|
|
44
|
-
_SherpaOnnxCreateOnlineRecognizer: (configPtr: number) => number;
|
|
45
|
-
_SherpaOnnxDestroyOnlineRecognizer: (handle: number) => void;
|
|
46
|
-
_SherpaOnnxCreateOnlineStream: (handle: number) => number;
|
|
47
|
-
_SherpaOnnxDestroyOnlineStream: (stream: number) => void;
|
|
48
|
-
_SherpaOnnxOnlineStreamAcceptWaveform: (stream: number, sampleRate: number, samplesPtr: number, numSamples: number) => void;
|
|
49
|
-
_SherpaOnnxIsOnlineStreamReady: (handle: number, stream: number) => number;
|
|
50
|
-
_SherpaOnnxDecodeOnlineStream: (handle: number, stream: number) => void;
|
|
51
|
-
_SherpaOnnxGetOnlineStreamResultAsJson: (handle: number, stream: number) => number;
|
|
52
|
-
_SherpaOnnxDestroyOnlineStreamResultJson: (ptr: number) => void;
|
|
53
|
-
_SherpaOnnxOnlineStreamInputFinished: (stream: number) => void;
|
|
54
|
-
_SherpaOnnxOnlineStreamIsEndpoint: (handle: number, stream: number) => number;
|
|
55
|
-
_SherpaOnnxOnlineStreamReset: (handle: number, stream: number) => void;
|
|
56
|
-
_SherpaOnnxCreateOfflineTts: (configPtr: number) => number;
|
|
57
|
-
_SherpaOnnxDestroyOfflineTts: (handle: number) => void;
|
|
58
|
-
_SherpaOnnxOfflineTtsGenerate: (handle: number, textPtr: number, sid: number, speed: number) => number;
|
|
59
|
-
_SherpaOnnxDestroyOfflineTtsGeneratedAudio: (audio: number) => void;
|
|
60
|
-
_SherpaOnnxOfflineTtsSampleRate: (handle: number) => number;
|
|
61
|
-
_SherpaOnnxOfflineTtsNumSpeakers: (handle: number) => number;
|
|
62
|
-
_SherpaOnnxCreateVoiceActivityDetector: (configPtr: number, bufferSizeInSeconds: number) => number;
|
|
63
|
-
_SherpaOnnxDestroyVoiceActivityDetector: (handle: number) => void;
|
|
64
|
-
_SherpaOnnxVoiceActivityDetectorAcceptWaveform: (handle: number, samplesPtr: number, numSamples: number) => void;
|
|
65
|
-
_SherpaOnnxVoiceActivityDetectorEmpty: (handle: number) => number;
|
|
66
|
-
_SherpaOnnxVoiceActivityDetectorDetected: (handle: number) => number;
|
|
67
|
-
_SherpaOnnxVoiceActivityDetectorPop: (handle: number) => void;
|
|
68
|
-
_SherpaOnnxVoiceActivityDetectorFront: (handle: number) => number;
|
|
69
|
-
_SherpaOnnxDestroySpeechSegment: (segment: number) => void;
|
|
70
|
-
_SherpaOnnxVoiceActivityDetectorReset: (handle: number) => void;
|
|
71
|
-
_SherpaOnnxVoiceActivityDetectorFlush: (handle: number) => void;
|
|
72
|
-
_CopyHeap?: (srcPtr: number, numBytes: number, dstPtr: number) => void;
|
|
73
|
-
}
|
|
74
|
-
interface SherpaFS {
|
|
75
|
-
mkdir: (path: string) => void;
|
|
76
|
-
writeFile: (path: string, data: Uint8Array | string) => void;
|
|
77
|
-
readFile: (path: string) => Uint8Array;
|
|
78
|
-
unlink: (path: string) => void;
|
|
79
|
-
analyzePath: (path: string) => {
|
|
80
|
-
exists: boolean;
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* SherpaONNXBridge - Loads and manages the sherpa-onnx WASM module.
|
|
85
|
-
*
|
|
86
|
-
* Singleton that provides access to sherpa-onnx C API functions.
|
|
87
|
-
* Lazy-loaded: only initializes when STT/TTS/VAD is first used.
|
|
88
|
-
*/
|
|
89
|
-
export declare class SherpaONNXBridge {
|
|
90
|
-
private static _instance;
|
|
91
|
-
private _module;
|
|
92
|
-
private _loaded;
|
|
93
|
-
private _loading;
|
|
94
|
-
/**
|
|
95
|
-
* Override the default URL to the sherpa-onnx-glue.js file.
|
|
96
|
-
* Set this before any STT/TTS/VAD model is loaded.
|
|
97
|
-
*
|
|
98
|
-
* In a Vite app, resolve it like:
|
|
99
|
-
* ```typescript
|
|
100
|
-
* SherpaONNXBridge.shared.wasmUrl = new URL(
|
|
101
|
-
* '@runanywhere/web/wasm/sherpa/sherpa-onnx-glue.js',
|
|
102
|
-
* import.meta.url,
|
|
103
|
-
* ).href;
|
|
104
|
-
* ```
|
|
105
|
-
*/
|
|
106
|
-
wasmUrl: string | null;
|
|
107
|
-
static get shared(): SherpaONNXBridge;
|
|
108
|
-
get isLoaded(): boolean;
|
|
109
|
-
get module(): SherpaONNXModule;
|
|
110
|
-
/**
|
|
111
|
-
* Ensure the sherpa-onnx WASM module is loaded.
|
|
112
|
-
* Safe to call multiple times -- will only load once.
|
|
113
|
-
*
|
|
114
|
-
* @param wasmUrl - URL/path to the sherpa-onnx glue JS file.
|
|
115
|
-
* Defaults to wasm/sherpa/sherpa-onnx-glue.js
|
|
116
|
-
*/
|
|
117
|
-
ensureLoaded(wasmUrl?: string): Promise<void>;
|
|
118
|
-
private _doLoad;
|
|
119
|
-
/**
|
|
120
|
-
* Get the Emscripten FS object from the module.
|
|
121
|
-
* Handles both direct FS property and module-level helper functions.
|
|
122
|
-
*/
|
|
123
|
-
private getFS;
|
|
124
|
-
/**
|
|
125
|
-
* Ensure a directory exists in the sherpa-onnx Emscripten virtual FS.
|
|
126
|
-
*/
|
|
127
|
-
ensureDir(path: string): void;
|
|
128
|
-
/**
|
|
129
|
-
* Write a file into the sherpa-onnx Emscripten virtual FS.
|
|
130
|
-
* Used to stage model files before loading.
|
|
131
|
-
*
|
|
132
|
-
* Prefers FS_createDataFile over FS.writeFile for reliability —
|
|
133
|
-
* the module was compiled with NODERAWFS which can leave FS.writeFile
|
|
134
|
-
* in a broken state even after our browser patches.
|
|
135
|
-
*/
|
|
136
|
-
writeFile(path: string, data: Uint8Array): void;
|
|
137
|
-
/**
|
|
138
|
-
* Download a file from a URL and write it to the sherpa-onnx FS.
|
|
139
|
-
*/
|
|
140
|
-
downloadAndWrite(url: string, fsPath: string, onProgress?: (loaded: number, total: number) => void): Promise<void>;
|
|
141
|
-
allocString(str: string): number;
|
|
142
|
-
readString(ptr: number): string;
|
|
143
|
-
free(ptr: number): void;
|
|
144
|
-
shutdown(): void;
|
|
145
|
-
}
|
|
146
|
-
export {};
|
|
147
|
-
//# sourceMappingURL=SherpaONNXBridge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SherpaONNXBridge.d.ts","sourceRoot":"","sources":["../../src/Foundation/SherpaONNXBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RunAnywhere Web SDK - Sherpa-ONNX WASM Bridge
|
|
3
|
-
*
|
|
4
|
-
* Loads the sherpa-onnx WASM module (separate from RACommons) and provides
|
|
5
|
-
* typed access to the sherpa-onnx C API for:
|
|
6
|
-
* - STT (Speech-to-Text) via Whisper, Zipformer, Paraformer
|
|
7
|
-
* - TTS (Text-to-Speech) via Piper/VITS
|
|
8
|
-
* - VAD (Voice Activity Detection) via Silero
|
|
9
|
-
*
|
|
10
|
-
* Architecture:
|
|
11
|
-
* RACommons WASM handles LLM, VLM, Embeddings (llama.cpp)
|
|
12
|
-
* Sherpa-ONNX WASM handles STT, TTS, VAD (onnxruntime)
|
|
13
|
-
*
|
|
14
|
-
* The sherpa-onnx module is lazy-loaded on first use of STT/TTS/VAD.
|
|
15
|
-
*/
|
|
16
|
-
import { SDKError, SDKErrorCode } from './ErrorTypes';
|
|
17
|
-
import { SDKLogger } from './SDKLogger';
|
|
18
|
-
const logger = new SDKLogger('SherpaONNX');
|
|
19
|
-
// ---------------------------------------------------------------------------
|
|
20
|
-
// SherpaONNXBridge
|
|
21
|
-
// ---------------------------------------------------------------------------
|
|
22
|
-
/**
|
|
23
|
-
* SherpaONNXBridge - Loads and manages the sherpa-onnx WASM module.
|
|
24
|
-
*
|
|
25
|
-
* Singleton that provides access to sherpa-onnx C API functions.
|
|
26
|
-
* Lazy-loaded: only initializes when STT/TTS/VAD is first used.
|
|
27
|
-
*/
|
|
28
|
-
export class SherpaONNXBridge {
|
|
29
|
-
static _instance = null;
|
|
30
|
-
_module = null;
|
|
31
|
-
_loaded = false;
|
|
32
|
-
_loading = null;
|
|
33
|
-
/**
|
|
34
|
-
* Override the default URL to the sherpa-onnx-glue.js file.
|
|
35
|
-
* Set this before any STT/TTS/VAD model is loaded.
|
|
36
|
-
*
|
|
37
|
-
* In a Vite app, resolve it like:
|
|
38
|
-
* ```typescript
|
|
39
|
-
* SherpaONNXBridge.shared.wasmUrl = new URL(
|
|
40
|
-
* '@runanywhere/web/wasm/sherpa/sherpa-onnx-glue.js',
|
|
41
|
-
* import.meta.url,
|
|
42
|
-
* ).href;
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
wasmUrl = null;
|
|
46
|
-
static get shared() {
|
|
47
|
-
if (!SherpaONNXBridge._instance) {
|
|
48
|
-
SherpaONNXBridge._instance = new SherpaONNXBridge();
|
|
49
|
-
}
|
|
50
|
-
return SherpaONNXBridge._instance;
|
|
51
|
-
}
|
|
52
|
-
get isLoaded() {
|
|
53
|
-
return this._loaded && this._module !== null;
|
|
54
|
-
}
|
|
55
|
-
get module() {
|
|
56
|
-
if (!this._module) {
|
|
57
|
-
throw new SDKError(SDKErrorCode.WASMNotLoaded, 'Sherpa-ONNX WASM not loaded. Call ensureLoaded() first.');
|
|
58
|
-
}
|
|
59
|
-
return this._module;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Ensure the sherpa-onnx WASM module is loaded.
|
|
63
|
-
* Safe to call multiple times -- will only load once.
|
|
64
|
-
*
|
|
65
|
-
* @param wasmUrl - URL/path to the sherpa-onnx glue JS file.
|
|
66
|
-
* Defaults to wasm/sherpa/sherpa-onnx-glue.js
|
|
67
|
-
*/
|
|
68
|
-
async ensureLoaded(wasmUrl) {
|
|
69
|
-
if (this._loaded)
|
|
70
|
-
return;
|
|
71
|
-
// Prevent duplicate loading
|
|
72
|
-
if (this._loading) {
|
|
73
|
-
await this._loading;
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
this._loading = this._doLoad(wasmUrl);
|
|
77
|
-
await this._loading;
|
|
78
|
-
this._loading = null;
|
|
79
|
-
}
|
|
80
|
-
async _doLoad(wasmUrl) {
|
|
81
|
-
logger.info('Loading Sherpa-ONNX WASM module...');
|
|
82
|
-
try {
|
|
83
|
-
const moduleUrl = wasmUrl ?? this.wasmUrl ?? new URL('../../wasm/sherpa/sherpa-onnx-glue.js', import.meta.url).href;
|
|
84
|
-
const { default: createModule } = await import(/* @vite-ignore */ moduleUrl);
|
|
85
|
-
// Derive the base URL for the .wasm binary
|
|
86
|
-
const baseUrl = moduleUrl.substring(0, moduleUrl.lastIndexOf('/') + 1);
|
|
87
|
-
const wasmBinaryUrl = baseUrl + 'sherpa-onnx.wasm';
|
|
88
|
-
// Pre-fetch the WASM binary to avoid Emscripten's sync XHR
|
|
89
|
-
// (the Node.js-targeted build uses sync fetch which fails in browsers)
|
|
90
|
-
logger.info(`Fetching sherpa-onnx WASM binary from ${wasmBinaryUrl}`);
|
|
91
|
-
const wasmResponse = await fetch(wasmBinaryUrl);
|
|
92
|
-
if (!wasmResponse.ok) {
|
|
93
|
-
throw new Error(`Failed to fetch sherpa-onnx.wasm: ${wasmResponse.status} ${wasmResponse.statusText}`);
|
|
94
|
-
}
|
|
95
|
-
const wasmBinary = await wasmResponse.arrayBuffer();
|
|
96
|
-
logger.info(`Sherpa-ONNX WASM binary fetched: ${(wasmBinary.byteLength / 1_000_000).toFixed(1)} MB`);
|
|
97
|
-
// Use instantiateWasm for async compilation (Chrome blocks sync compile for >8MB).
|
|
98
|
-
//
|
|
99
|
-
// The sherpa-onnx glue JS was compiled with NODERAWFS but we patched it:
|
|
100
|
-
// 1. ENVIRONMENT_IS_NODE = false → forces browser code paths
|
|
101
|
-
// 2. NODERAWFS mounting skipped → FS uses MEMFS
|
|
102
|
-
// 3. receiveInstance patched → re-assigns Module exports after wasmExports is set
|
|
103
|
-
//
|
|
104
|
-
// We pass noFSInit: true to skip FS.init() (which creates /dev/stdin etc.).
|
|
105
|
-
// We don't need standard streams — only file operations for staging model files.
|
|
106
|
-
// This ensures initRuntime() succeeds and the ready promise resolves.
|
|
107
|
-
//
|
|
108
|
-
// We track a separate wasmReady promise so that if WebAssembly.instantiate
|
|
109
|
-
// itself fails, we get the actual error instead of a generic timeout.
|
|
110
|
-
let resolveWasm;
|
|
111
|
-
let rejectWasm;
|
|
112
|
-
const wasmReady = new Promise((resolve, reject) => {
|
|
113
|
-
resolveWasm = resolve;
|
|
114
|
-
rejectWasm = reject;
|
|
115
|
-
});
|
|
116
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
117
|
-
const mod = createModule({
|
|
118
|
-
noFSInit: true,
|
|
119
|
-
print: (text) => logger.debug(text),
|
|
120
|
-
printErr: (text) => logger.warning(text),
|
|
121
|
-
wasmBinary,
|
|
122
|
-
locateFile: (path) => baseUrl + path,
|
|
123
|
-
instantiateWasm: (imports, receiveInstance) => {
|
|
124
|
-
WebAssembly.instantiate(wasmBinary, imports)
|
|
125
|
-
.then((result) => {
|
|
126
|
-
try {
|
|
127
|
-
receiveInstance(result.instance, result.module);
|
|
128
|
-
resolveWasm();
|
|
129
|
-
}
|
|
130
|
-
catch (err) {
|
|
131
|
-
// receiveInstance may throw if initRuntime fails (e.g. FS errors).
|
|
132
|
-
// The WASM exports are already set by our patch at this point.
|
|
133
|
-
logger.warning(`receiveInstance completed with error (exports should still be set): ${err}`);
|
|
134
|
-
resolveWasm(); // Still resolve — exports are set before the throw point
|
|
135
|
-
}
|
|
136
|
-
})
|
|
137
|
-
.catch((err) => {
|
|
138
|
-
const error = err instanceof Error ? err : new Error(String(err));
|
|
139
|
-
logger.error(`WASM instantiation failed: ${error.message}`);
|
|
140
|
-
rejectWasm(error);
|
|
141
|
-
});
|
|
142
|
-
return {}; // Indicates async instantiation
|
|
143
|
-
},
|
|
144
|
-
});
|
|
145
|
-
// Wait for WASM instantiation + receiveInstance to complete.
|
|
146
|
-
// Also race with the module.ready promise (which resolves after full init).
|
|
147
|
-
const timeoutPromise = new Promise((_, reject) => {
|
|
148
|
-
setTimeout(() => reject(new Error('Sherpa-ONNX WASM module timed out after 30s')), 30_000);
|
|
149
|
-
});
|
|
150
|
-
await Promise.race([wasmReady, timeoutPromise]);
|
|
151
|
-
this._module = mod;
|
|
152
|
-
// Verify critical exports are available (set by our patched receiveInstance)
|
|
153
|
-
if (typeof mod._malloc !== 'function') {
|
|
154
|
-
const available = ['_malloc', '_free', '_SherpaOnnxCreateOfflineRecognizer']
|
|
155
|
-
.map(fn => `${fn}: ${typeof mod[fn]}`)
|
|
156
|
-
.join(', ');
|
|
157
|
-
throw new Error(`WASM exports not available after initialization. Available: ${available}`);
|
|
158
|
-
}
|
|
159
|
-
this._loaded = true;
|
|
160
|
-
logger.info('Sherpa-ONNX WASM module loaded successfully');
|
|
161
|
-
}
|
|
162
|
-
catch (error) {
|
|
163
|
-
this._module = null;
|
|
164
|
-
this._loaded = false;
|
|
165
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
166
|
-
logger.error(`Failed to load Sherpa-ONNX WASM: ${message}`);
|
|
167
|
-
throw new SDKError(SDKErrorCode.WASMLoadFailed, `Failed to load Sherpa-ONNX WASM module: ${message}. ` +
|
|
168
|
-
'Build with: ./wasm/scripts/build-sherpa-onnx.sh');
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
// -----------------------------------------------------------------------
|
|
172
|
-
// Filesystem Helpers
|
|
173
|
-
// -----------------------------------------------------------------------
|
|
174
|
-
/**
|
|
175
|
-
* Get the Emscripten FS object from the module.
|
|
176
|
-
* Handles both direct FS property and module-level helper functions.
|
|
177
|
-
*/
|
|
178
|
-
getFS() {
|
|
179
|
-
const m = this.module;
|
|
180
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
181
|
-
const mod = m;
|
|
182
|
-
// First try direct FS property
|
|
183
|
-
if (m.FS && typeof m.FS.mkdir === 'function') {
|
|
184
|
-
return m.FS;
|
|
185
|
-
}
|
|
186
|
-
// Fallback: construct FS-like interface from Emscripten module-level helpers
|
|
187
|
-
if (typeof mod.FS_createPath === 'function') {
|
|
188
|
-
return {
|
|
189
|
-
mkdir: (p) => {
|
|
190
|
-
const parent = p.substring(0, p.lastIndexOf('/')) || '/';
|
|
191
|
-
const name = p.substring(p.lastIndexOf('/') + 1);
|
|
192
|
-
mod.FS_createPath(parent, name, true, true);
|
|
193
|
-
},
|
|
194
|
-
writeFile: (p, data) => {
|
|
195
|
-
const dir = p.substring(0, p.lastIndexOf('/')) || '/';
|
|
196
|
-
const name = p.substring(p.lastIndexOf('/') + 1);
|
|
197
|
-
try {
|
|
198
|
-
mod.FS_unlink(p);
|
|
199
|
-
}
|
|
200
|
-
catch { /* file may not exist */ }
|
|
201
|
-
mod.FS_createDataFile(dir, name, data, true, true, true);
|
|
202
|
-
},
|
|
203
|
-
readFile: (p) => mod.FS_readFile(p),
|
|
204
|
-
unlink: (p) => mod.FS_unlink(p),
|
|
205
|
-
analyzePath: (p) => {
|
|
206
|
-
try {
|
|
207
|
-
mod.FS_readFile(p);
|
|
208
|
-
return { exists: true };
|
|
209
|
-
}
|
|
210
|
-
catch {
|
|
211
|
-
return { exists: false };
|
|
212
|
-
}
|
|
213
|
-
},
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
throw new SDKError(SDKErrorCode.WASMNotLoaded, 'Sherpa-ONNX FS not available');
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Ensure a directory exists in the sherpa-onnx Emscripten virtual FS.
|
|
220
|
-
*/
|
|
221
|
-
ensureDir(path) {
|
|
222
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
223
|
-
const mod = this.module;
|
|
224
|
-
if (typeof mod.FS_createPath === 'function') {
|
|
225
|
-
// Use FS_createPath which creates all intermediate directories
|
|
226
|
-
mod.FS_createPath('/', path.replace(/^\//, ''), true, true);
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
// Fallback to FS.mkdir
|
|
230
|
-
const fs = this.getFS();
|
|
231
|
-
const parts = path.split('/').filter(Boolean);
|
|
232
|
-
let current = '';
|
|
233
|
-
for (const part of parts) {
|
|
234
|
-
current += '/' + part;
|
|
235
|
-
if (!fs.analyzePath(current).exists) {
|
|
236
|
-
fs.mkdir(current);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Write a file into the sherpa-onnx Emscripten virtual FS.
|
|
242
|
-
* Used to stage model files before loading.
|
|
243
|
-
*
|
|
244
|
-
* Prefers FS_createDataFile over FS.writeFile for reliability —
|
|
245
|
-
* the module was compiled with NODERAWFS which can leave FS.writeFile
|
|
246
|
-
* in a broken state even after our browser patches.
|
|
247
|
-
*/
|
|
248
|
-
writeFile(path, data) {
|
|
249
|
-
const dir = path.substring(0, path.lastIndexOf('/'));
|
|
250
|
-
if (dir)
|
|
251
|
-
this.ensureDir(dir);
|
|
252
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
253
|
-
const mod = this.module;
|
|
254
|
-
// Prefer FS_createDataFile — it creates the file node and writes data
|
|
255
|
-
// in one shot, avoiding potential issues with FS.open / FS.write on
|
|
256
|
-
// NODERAWFS-patched modules.
|
|
257
|
-
if (typeof mod.FS_createDataFile === 'function') {
|
|
258
|
-
const parentDir = dir || '/';
|
|
259
|
-
const filename = path.substring(path.lastIndexOf('/') + 1);
|
|
260
|
-
// Remove existing file first (FS_createDataFile throws if it exists)
|
|
261
|
-
try {
|
|
262
|
-
if (typeof mod.FS_unlink === 'function') {
|
|
263
|
-
mod.FS_unlink(path);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
catch {
|
|
267
|
-
// File doesn't exist — that's fine
|
|
268
|
-
}
|
|
269
|
-
mod.FS_createDataFile(parentDir, filename, data, true, true, false);
|
|
270
|
-
logger.debug(`Wrote ${data.length} bytes to sherpa FS: ${path}`);
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
// Fallback to FS.writeFile
|
|
274
|
-
const fs = this.getFS();
|
|
275
|
-
fs.writeFile(path, data);
|
|
276
|
-
logger.debug(`Wrote ${data.length} bytes to sherpa FS: ${path}`);
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Download a file from a URL and write it to the sherpa-onnx FS.
|
|
280
|
-
*/
|
|
281
|
-
async downloadAndWrite(url, fsPath, onProgress) {
|
|
282
|
-
logger.info(`Downloading ${url} -> ${fsPath}`);
|
|
283
|
-
const response = await fetch(url);
|
|
284
|
-
if (!response.ok) {
|
|
285
|
-
throw new SDKError(SDKErrorCode.NetworkError, `Failed to download ${url}: ${response.status} ${response.statusText}`);
|
|
286
|
-
}
|
|
287
|
-
const contentLength = Number(response.headers.get('content-length') ?? 0);
|
|
288
|
-
const reader = response.body?.getReader();
|
|
289
|
-
if (!reader) {
|
|
290
|
-
// Fallback: read all at once
|
|
291
|
-
const buffer = await response.arrayBuffer();
|
|
292
|
-
this.writeFile(fsPath, new Uint8Array(buffer));
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
// Stream download with progress
|
|
296
|
-
const chunks = [];
|
|
297
|
-
let loaded = 0;
|
|
298
|
-
while (true) {
|
|
299
|
-
const { done, value } = await reader.read();
|
|
300
|
-
if (done)
|
|
301
|
-
break;
|
|
302
|
-
chunks.push(value);
|
|
303
|
-
loaded += value.length;
|
|
304
|
-
onProgress?.(loaded, contentLength);
|
|
305
|
-
}
|
|
306
|
-
// Combine chunks
|
|
307
|
-
const combined = new Uint8Array(loaded);
|
|
308
|
-
let offset = 0;
|
|
309
|
-
for (const chunk of chunks) {
|
|
310
|
-
combined.set(chunk, offset);
|
|
311
|
-
offset += chunk.length;
|
|
312
|
-
}
|
|
313
|
-
this.writeFile(fsPath, combined);
|
|
314
|
-
}
|
|
315
|
-
// -----------------------------------------------------------------------
|
|
316
|
-
// String Helpers
|
|
317
|
-
// -----------------------------------------------------------------------
|
|
318
|
-
allocString(str) {
|
|
319
|
-
const m = this.module;
|
|
320
|
-
const len = m.lengthBytesUTF8(str) + 1;
|
|
321
|
-
const ptr = m._malloc(len);
|
|
322
|
-
m.stringToUTF8(str, ptr, len);
|
|
323
|
-
return ptr;
|
|
324
|
-
}
|
|
325
|
-
readString(ptr) {
|
|
326
|
-
if (ptr === 0)
|
|
327
|
-
return '';
|
|
328
|
-
return this.module.UTF8ToString(ptr);
|
|
329
|
-
}
|
|
330
|
-
free(ptr) {
|
|
331
|
-
if (ptr !== 0)
|
|
332
|
-
this.module._free(ptr);
|
|
333
|
-
}
|
|
334
|
-
// -----------------------------------------------------------------------
|
|
335
|
-
// Cleanup
|
|
336
|
-
// -----------------------------------------------------------------------
|
|
337
|
-
shutdown() {
|
|
338
|
-
this._module = null;
|
|
339
|
-
this._loaded = false;
|
|
340
|
-
this._loading = null;
|
|
341
|
-
SherpaONNXBridge._instance = null;
|
|
342
|
-
logger.info('Sherpa-ONNX bridge shut down');
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
//# sourceMappingURL=SherpaONNXBridge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SherpaONNXBridge.js","sourceRoot":"","sources":["../../src/Foundation/SherpaONNXBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RunAnywhere Web SDK - Audio Capture
|
|
3
|
-
*
|
|
4
|
-
* Captures microphone audio using Web Audio API and provides
|
|
5
|
-
* Float32Array PCM samples suitable for STT and VAD processing.
|
|
6
|
-
*
|
|
7
|
-
* Supports:
|
|
8
|
-
* - Real-time microphone capture via getUserMedia
|
|
9
|
-
* - Configurable sample rate (resampling via AudioContext)
|
|
10
|
-
* - Chunk-based callbacks for streaming STT/VAD
|
|
11
|
-
* - Buffer accumulation (getAudioBuffer, drainBuffer, clearBuffer)
|
|
12
|
-
* - Audio level monitoring via AnalyserNode (currentLevel getter)
|
|
13
|
-
*/
|
|
14
|
-
export type AudioChunkCallback = (samples: Float32Array) => void;
|
|
15
|
-
export type AudioLevelCallback = (level: number) => void;
|
|
16
|
-
export interface AudioCaptureConfig {
|
|
17
|
-
/** Target sample rate (default: 16000 for STT) */
|
|
18
|
-
sampleRate?: number;
|
|
19
|
-
/** Chunk size in samples (default: 1600 = 100ms at 16kHz) */
|
|
20
|
-
chunkSize?: number;
|
|
21
|
-
/** Number of audio channels (default: 1, mono) */
|
|
22
|
-
channels?: number;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* AudioCapture - Captures microphone audio for STT/VAD processing.
|
|
26
|
-
*
|
|
27
|
-
* Uses Web Audio API (AudioContext + ScriptProcessorNode) to capture
|
|
28
|
-
* microphone audio, resample to target rate, and deliver Float32Array
|
|
29
|
-
* PCM chunks to the consumer.
|
|
30
|
-
*
|
|
31
|
-
* Includes buffer accumulation for batch STT and an AnalyserNode for
|
|
32
|
-
* real-time audio level metering (0-1 range).
|
|
33
|
-
*/
|
|
34
|
-
export declare class AudioCapture {
|
|
35
|
-
private audioContext;
|
|
36
|
-
private mediaStream;
|
|
37
|
-
private sourceNode;
|
|
38
|
-
private processorNode;
|
|
39
|
-
private _analyser;
|
|
40
|
-
private _animFrameId;
|
|
41
|
-
private _isCapturing;
|
|
42
|
-
private _currentLevel;
|
|
43
|
-
private _pcmChunks;
|
|
44
|
-
private readonly config;
|
|
45
|
-
private chunkCallback;
|
|
46
|
-
private levelCallback;
|
|
47
|
-
constructor(config?: AudioCaptureConfig);
|
|
48
|
-
get isCapturing(): boolean;
|
|
49
|
-
/** Current normalized audio level (0..1), updated per animation frame. */
|
|
50
|
-
get currentLevel(): number;
|
|
51
|
-
/**
|
|
52
|
-
* Get the actual sample rate of the audio context.
|
|
53
|
-
* May differ from requested rate if browser doesn't support it.
|
|
54
|
-
*/
|
|
55
|
-
get actualSampleRate(): number;
|
|
56
|
-
/** Duration of collected audio in seconds based on configured sample rate. */
|
|
57
|
-
get bufferDurationSeconds(): number;
|
|
58
|
-
/**
|
|
59
|
-
* Start capturing microphone audio.
|
|
60
|
-
*
|
|
61
|
-
* @param onChunk - Optional callback receiving Float32Array chunks of PCM audio (streaming)
|
|
62
|
-
* @param onLevel - Optional callback invoked per animation frame with audio level 0..1
|
|
63
|
-
* @throws If microphone permission is denied
|
|
64
|
-
*/
|
|
65
|
-
start(onChunk?: AudioChunkCallback, onLevel?: AudioLevelCallback): Promise<void>;
|
|
66
|
-
/**
|
|
67
|
-
* Stop capturing audio and release resources.
|
|
68
|
-
*/
|
|
69
|
-
stop(): void;
|
|
70
|
-
/**
|
|
71
|
-
* Get all collected PCM audio as a single Float32Array.
|
|
72
|
-
* Does NOT clear the buffer — call `clearBuffer()` separately.
|
|
73
|
-
*/
|
|
74
|
-
getAudioBuffer(): Float32Array;
|
|
75
|
-
/**
|
|
76
|
-
* Drain: return the current buffer and clear it for the next segment.
|
|
77
|
-
* Useful for live mode where we transcribe segments incrementally.
|
|
78
|
-
*/
|
|
79
|
-
drainBuffer(): Float32Array;
|
|
80
|
-
/** Clear collected PCM data without stopping capture. */
|
|
81
|
-
clearBuffer(): void;
|
|
82
|
-
/** Start the requestAnimationFrame loop that reads the AnalyserNode. */
|
|
83
|
-
private startLevelMonitoring;
|
|
84
|
-
private cleanupResources;
|
|
85
|
-
private nearestPowerOf2;
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=AudioCapture.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AudioCapture.d.ts","sourceRoot":"","sources":["../../src/Infrastructure/AudioCapture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;AACjE,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,UAAU,CAAsB;IAExC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,aAAa,CAAmC;gBAE5C,MAAM,GAAE,kBAAuB;IAQ3C,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,0EAA0E;IAC1E,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,8EAA8E;IAC9E,IAAI,qBAAqB,IAAI,MAAM,CAGlC;IAED;;;;;;OAMG;IACG,KAAK,CAAC,OAAO,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8EtF;;OAEG;IACH,IAAI,IAAI,IAAI;IAYZ;;;OAGG;IACH,cAAc,IAAI,YAAY;IAY9B;;;OAGG;IACH,WAAW,IAAI,YAAY;IAM3B,yDAAyD;IACzD,WAAW,IAAI,IAAI;IAInB,wEAAwE;IACxE,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,eAAe;CAOxB"}
|