@runanywhere/web 0.1.0-beta.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.
- package/README.md +795 -0
- package/dist/Foundation/ErrorTypes.d.ts +61 -0
- package/dist/Foundation/ErrorTypes.d.ts.map +1 -0
- package/dist/Foundation/ErrorTypes.js +90 -0
- package/dist/Foundation/ErrorTypes.js.map +1 -0
- package/dist/Foundation/EventBus.d.ts +171 -0
- package/dist/Foundation/EventBus.d.ts.map +1 -0
- package/dist/Foundation/EventBus.js +113 -0
- package/dist/Foundation/EventBus.js.map +1 -0
- package/dist/Foundation/PlatformAdapter.d.ts +101 -0
- package/dist/Foundation/PlatformAdapter.d.ts.map +1 -0
- package/dist/Foundation/PlatformAdapter.js +417 -0
- package/dist/Foundation/PlatformAdapter.js.map +1 -0
- package/dist/Foundation/SDKLogger.d.ts +33 -0
- package/dist/Foundation/SDKLogger.d.ts.map +1 -0
- package/dist/Foundation/SDKLogger.js +82 -0
- package/dist/Foundation/SDKLogger.js.map +1 -0
- package/dist/Foundation/SherpaONNXBridge.d.ts +134 -0
- package/dist/Foundation/SherpaONNXBridge.d.ts.map +1 -0
- package/dist/Foundation/SherpaONNXBridge.js +332 -0
- package/dist/Foundation/SherpaONNXBridge.js.map +1 -0
- package/dist/Foundation/StructOffsets.d.ts +147 -0
- package/dist/Foundation/StructOffsets.d.ts.map +1 -0
- package/dist/Foundation/StructOffsets.js +161 -0
- package/dist/Foundation/StructOffsets.js.map +1 -0
- package/dist/Foundation/WASMBridge.d.ts +241 -0
- package/dist/Foundation/WASMBridge.d.ts.map +1 -0
- package/dist/Foundation/WASMBridge.js +393 -0
- package/dist/Foundation/WASMBridge.js.map +1 -0
- package/dist/Infrastructure/ArchiveUtility.d.ts +25 -0
- package/dist/Infrastructure/ArchiveUtility.d.ts.map +1 -0
- package/dist/Infrastructure/ArchiveUtility.js +139 -0
- package/dist/Infrastructure/ArchiveUtility.js.map +1 -0
- package/dist/Infrastructure/AudioCapture.d.ts +87 -0
- package/dist/Infrastructure/AudioCapture.d.ts.map +1 -0
- package/dist/Infrastructure/AudioCapture.js +231 -0
- package/dist/Infrastructure/AudioCapture.js.map +1 -0
- package/dist/Infrastructure/AudioPlayback.d.ts +53 -0
- package/dist/Infrastructure/AudioPlayback.d.ts.map +1 -0
- package/dist/Infrastructure/AudioPlayback.js +117 -0
- package/dist/Infrastructure/AudioPlayback.js.map +1 -0
- package/dist/Infrastructure/DeviceCapabilities.d.ts +39 -0
- package/dist/Infrastructure/DeviceCapabilities.d.ts.map +1 -0
- package/dist/Infrastructure/DeviceCapabilities.js +111 -0
- package/dist/Infrastructure/DeviceCapabilities.js.map +1 -0
- package/dist/Infrastructure/ExtensionRegistry.d.ts +30 -0
- package/dist/Infrastructure/ExtensionRegistry.d.ts.map +1 -0
- package/dist/Infrastructure/ExtensionRegistry.js +41 -0
- package/dist/Infrastructure/ExtensionRegistry.js.map +1 -0
- package/dist/Infrastructure/ModelDownloader.d.ts +98 -0
- package/dist/Infrastructure/ModelDownloader.d.ts.map +1 -0
- package/dist/Infrastructure/ModelDownloader.js +431 -0
- package/dist/Infrastructure/ModelDownloader.js.map +1 -0
- package/dist/Infrastructure/ModelLoaderTypes.d.ts +34 -0
- package/dist/Infrastructure/ModelLoaderTypes.d.ts.map +1 -0
- package/dist/Infrastructure/ModelLoaderTypes.js +12 -0
- package/dist/Infrastructure/ModelLoaderTypes.js.map +1 -0
- package/dist/Infrastructure/ModelManager.d.ts +219 -0
- package/dist/Infrastructure/ModelManager.d.ts.map +1 -0
- package/dist/Infrastructure/ModelManager.js +885 -0
- package/dist/Infrastructure/ModelManager.js.map +1 -0
- package/dist/Infrastructure/ModelRegistry.d.ts +131 -0
- package/dist/Infrastructure/ModelRegistry.d.ts.map +1 -0
- package/dist/Infrastructure/ModelRegistry.js +122 -0
- package/dist/Infrastructure/ModelRegistry.js.map +1 -0
- package/dist/Infrastructure/OPFSStorage.d.ts +143 -0
- package/dist/Infrastructure/OPFSStorage.d.ts.map +1 -0
- package/dist/Infrastructure/OPFSStorage.js +330 -0
- package/dist/Infrastructure/OPFSStorage.js.map +1 -0
- package/dist/Infrastructure/VLMWorkerBridge.d.ts +211 -0
- package/dist/Infrastructure/VLMWorkerBridge.d.ts.map +1 -0
- package/dist/Infrastructure/VLMWorkerBridge.js +264 -0
- package/dist/Infrastructure/VLMWorkerBridge.js.map +1 -0
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts +38 -0
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts.map +1 -0
- package/dist/Infrastructure/VLMWorkerRuntime.js +503 -0
- package/dist/Infrastructure/VLMWorkerRuntime.js.map +1 -0
- package/dist/Infrastructure/VideoCapture.d.ts +118 -0
- package/dist/Infrastructure/VideoCapture.d.ts.map +1 -0
- package/dist/Infrastructure/VideoCapture.js +207 -0
- package/dist/Infrastructure/VideoCapture.js.map +1 -0
- package/dist/Public/Extensions/DiffusionTypes.d.ts +64 -0
- package/dist/Public/Extensions/DiffusionTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/DiffusionTypes.js +28 -0
- package/dist/Public/Extensions/DiffusionTypes.js.map +1 -0
- package/dist/Public/Extensions/EmbeddingsTypes.d.ts +33 -0
- package/dist/Public/Extensions/EmbeddingsTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/EmbeddingsTypes.js +13 -0
- package/dist/Public/Extensions/EmbeddingsTypes.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts +44 -0
- package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+Diffusion.js +189 -0
- package/dist/Public/Extensions/RunAnywhere+Diffusion.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts +56 -0
- package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+Embeddings.js +240 -0
- package/dist/Public/Extensions/RunAnywhere+Embeddings.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+ModelManagement.d.ts +53 -0
- package/dist/Public/Extensions/RunAnywhere+ModelManagement.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+ModelManagement.js +153 -0
- package/dist/Public/Extensions/RunAnywhere+ModelManagement.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+STT.d.ts +95 -0
- package/dist/Public/Extensions/RunAnywhere+STT.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+STT.js +417 -0
- package/dist/Public/Extensions/RunAnywhere+STT.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts +69 -0
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js +196 -0
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+TTS.d.ts +55 -0
- package/dist/Public/Extensions/RunAnywhere+TTS.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+TTS.js +253 -0
- package/dist/Public/Extensions/RunAnywhere+TTS.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts +80 -0
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.js +436 -0
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts +82 -0
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.js +576 -0
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VAD.d.ts +70 -0
- package/dist/Public/Extensions/RunAnywhere+VAD.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VAD.js +231 -0
- package/dist/Public/Extensions/RunAnywhere+VAD.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VLM.d.ts +58 -0
- package/dist/Public/Extensions/RunAnywhere+VLM.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VLM.js +262 -0
- package/dist/Public/Extensions/RunAnywhere+VLM.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VoiceAgent.d.ts +49 -0
- package/dist/Public/Extensions/RunAnywhere+VoiceAgent.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VoiceAgent.js +222 -0
- package/dist/Public/Extensions/RunAnywhere+VoiceAgent.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts +63 -0
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js +168 -0
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js.map +1 -0
- package/dist/Public/Extensions/STTTypes.d.ts +53 -0
- package/dist/Public/Extensions/STTTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/STTTypes.js +16 -0
- package/dist/Public/Extensions/STTTypes.js.map +1 -0
- package/dist/Public/Extensions/TTSTypes.d.ts +31 -0
- package/dist/Public/Extensions/TTSTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/TTSTypes.js +3 -0
- package/dist/Public/Extensions/TTSTypes.js.map +1 -0
- package/dist/Public/Extensions/ToolCallingTypes.d.ts +78 -0
- package/dist/Public/Extensions/ToolCallingTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/ToolCallingTypes.js +8 -0
- package/dist/Public/Extensions/ToolCallingTypes.js.map +1 -0
- package/dist/Public/Extensions/VADTypes.d.ts +30 -0
- package/dist/Public/Extensions/VADTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/VADTypes.js +8 -0
- package/dist/Public/Extensions/VADTypes.js.map +1 -0
- package/dist/Public/Extensions/VLMTypes.d.ts +56 -0
- package/dist/Public/Extensions/VLMTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/VLMTypes.js +24 -0
- package/dist/Public/Extensions/VLMTypes.js.map +1 -0
- package/dist/Public/Extensions/VoiceAgentTypes.d.ts +42 -0
- package/dist/Public/Extensions/VoiceAgentTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/VoiceAgentTypes.js +12 -0
- package/dist/Public/Extensions/VoiceAgentTypes.js.map +1 -0
- package/dist/Public/Extensions/VoicePipelineTypes.d.ts +69 -0
- package/dist/Public/Extensions/VoicePipelineTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/VoicePipelineTypes.js +9 -0
- package/dist/Public/Extensions/VoicePipelineTypes.js.map +1 -0
- package/dist/Public/RunAnywhere.d.ts +121 -0
- package/dist/Public/RunAnywhere.d.ts.map +1 -0
- package/dist/Public/RunAnywhere.js +332 -0
- package/dist/Public/RunAnywhere.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/types/LLMTypes.d.ts +48 -0
- package/dist/types/LLMTypes.d.ts.map +1 -0
- package/dist/types/LLMTypes.js +8 -0
- package/dist/types/LLMTypes.js.map +1 -0
- package/dist/types/enums.d.ts +144 -0
- package/dist/types/enums.d.ts.map +1 -0
- package/dist/types/enums.js +159 -0
- package/dist/types/enums.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/models.d.ts +154 -0
- package/dist/types/models.d.ts.map +1 -0
- package/dist/types/models.js +8 -0
- package/dist/types/models.js.map +1 -0
- package/dist/workers/vlm-worker.d.ts +9 -0
- package/dist/workers/vlm-worker.d.ts.map +1 -0
- package/dist/workers/vlm-worker.js +10 -0
- package/dist/workers/vlm-worker.js.map +1 -0
- package/package.json +62 -0
- package/wasm/racommons-webgpu.js +156 -0
- package/wasm/racommons-webgpu.wasm +0 -0
- package/wasm/racommons.js +126 -0
- package/wasm/racommons.wasm +0 -0
- package/wasm/sherpa/sherpa-onnx-asr.js +1538 -0
- package/wasm/sherpa/sherpa-onnx-glue-original.js +19 -0
- package/wasm/sherpa/sherpa-onnx-glue.js +17 -0
- package/wasm/sherpa/sherpa-onnx-tts.js +657 -0
- package/wasm/sherpa/sherpa-onnx-vad.js +337 -0
- package/wasm/sherpa/sherpa-onnx-wave.js +88 -0
- package/wasm/sherpa/sherpa-onnx.wasm +0 -0
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RunAnywhere Web SDK - Speech-to-Text Extension
|
|
3
|
+
*
|
|
4
|
+
* Adds STT (speech recognition) capabilities via sherpa-onnx WASM.
|
|
5
|
+
* Supports both offline (Whisper) and online (streaming Zipformer) models.
|
|
6
|
+
*
|
|
7
|
+
* Uses the sherpa-onnx C struct packing helpers from sherpa-onnx-asr.js
|
|
8
|
+
* to properly allocate config structs in WASM memory (NOT JSON strings).
|
|
9
|
+
*
|
|
10
|
+
* Mirrors: sdk/runanywhere-swift/Sources/RunAnywhere/Public/Extensions/STT/
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* import { STT } from '@runanywhere/web';
|
|
14
|
+
*
|
|
15
|
+
* // Load model files (downloaded separately)
|
|
16
|
+
* await STT.loadModel({
|
|
17
|
+
* modelId: 'whisper-tiny-en',
|
|
18
|
+
* type: 'whisper',
|
|
19
|
+
* modelFiles: {
|
|
20
|
+
* encoder: '/models/whisper-tiny-en/encoder.onnx',
|
|
21
|
+
* decoder: '/models/whisper-tiny-en/decoder.onnx',
|
|
22
|
+
* tokens: '/models/whisper-tiny-en/tokens.txt',
|
|
23
|
+
* },
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* const result = await STT.transcribe(audioFloat32Array);
|
|
27
|
+
* console.log(result.text);
|
|
28
|
+
*/
|
|
29
|
+
import { RunAnywhere } from '../RunAnywhere';
|
|
30
|
+
import { SherpaONNXBridge } from '../../Foundation/SherpaONNXBridge';
|
|
31
|
+
import { SDKError, SDKErrorCode } from '../../Foundation/ErrorTypes';
|
|
32
|
+
import { SDKLogger } from '../../Foundation/SDKLogger';
|
|
33
|
+
import { EventBus } from '../../Foundation/EventBus';
|
|
34
|
+
import { SDKEventType } from '../../types/enums';
|
|
35
|
+
import { STTModelType } from './STTTypes';
|
|
36
|
+
// Import sherpa-onnx C struct packing helpers.
|
|
37
|
+
// These functions properly allocate and fill C structs in WASM memory
|
|
38
|
+
// for passing to the sherpa-onnx C API.
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
40
|
+
// @ts-ignore — JS helper file, no .d.ts available
|
|
41
|
+
import { initSherpaOnnxOfflineRecognizerConfig, initSherpaOnnxOnlineRecognizerConfig, freeConfig } from '../../../wasm/sherpa/sherpa-onnx-asr.js';
|
|
42
|
+
const logger = new SDKLogger('STT');
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// STT Types (re-exported from STTTypes.ts)
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
export { STTModelType } from './STTTypes';
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// Config Builders (stateless helpers)
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
function requireSherpa() {
|
|
51
|
+
if (!RunAnywhere.isInitialized)
|
|
52
|
+
throw SDKError.notInitialized();
|
|
53
|
+
return SherpaONNXBridge.shared;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Build a sherpa-onnx offline recognizer config object suitable for
|
|
57
|
+
* `initSherpaOnnxOfflineRecognizerConfig()` from sherpa-onnx-asr.js.
|
|
58
|
+
*
|
|
59
|
+
* This returns a plain JS config object that the helper function will
|
|
60
|
+
* pack into a C struct in WASM memory.
|
|
61
|
+
*/
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
|
+
function buildOfflineRecognizerConfig(config) {
|
|
64
|
+
const sampleRate = config.sampleRate ?? 16000;
|
|
65
|
+
const files = config.modelFiles;
|
|
66
|
+
// Base config with all model types empty (required for struct layout)
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
68
|
+
const modelConfig = {
|
|
69
|
+
transducer: { encoder: '', decoder: '', joiner: '' },
|
|
70
|
+
paraformer: { model: '' },
|
|
71
|
+
nemoCtc: { model: '' },
|
|
72
|
+
whisper: { encoder: '', decoder: '', language: '', task: '', tailPaddings: -1 },
|
|
73
|
+
tdnn: { model: '' },
|
|
74
|
+
senseVoice: { model: '', language: '', useInverseTextNormalization: 0 },
|
|
75
|
+
moonshine: { preprocessor: '', encoder: '', uncachedDecoder: '', cachedDecoder: '' },
|
|
76
|
+
fireRedAsr: { encoder: '', decoder: '' },
|
|
77
|
+
dolphin: { model: '' },
|
|
78
|
+
zipformerCtc: { model: '' },
|
|
79
|
+
canary: { encoder: '', decoder: '', srcLang: '', tgtLang: '', usePnc: 1 },
|
|
80
|
+
wenetCtc: { model: '' },
|
|
81
|
+
omnilingual: { model: '' },
|
|
82
|
+
tokens: '',
|
|
83
|
+
numThreads: 1,
|
|
84
|
+
provider: 'cpu',
|
|
85
|
+
debug: 0,
|
|
86
|
+
modelType: '',
|
|
87
|
+
modelingUnit: '',
|
|
88
|
+
bpeVocab: '',
|
|
89
|
+
teleSpeechCtc: '',
|
|
90
|
+
};
|
|
91
|
+
if (config.type === STTModelType.Whisper) {
|
|
92
|
+
const f = files;
|
|
93
|
+
modelConfig.whisper = {
|
|
94
|
+
encoder: f.encoder,
|
|
95
|
+
decoder: f.decoder,
|
|
96
|
+
language: config.language ?? 'en',
|
|
97
|
+
task: 'transcribe',
|
|
98
|
+
tailPaddings: -1,
|
|
99
|
+
};
|
|
100
|
+
modelConfig.tokens = f.tokens;
|
|
101
|
+
}
|
|
102
|
+
else if (config.type === STTModelType.Paraformer) {
|
|
103
|
+
const f = files;
|
|
104
|
+
modelConfig.paraformer = { model: f.model };
|
|
105
|
+
modelConfig.tokens = f.tokens;
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
featConfig: { sampleRate, featureDim: 80 },
|
|
109
|
+
modelConfig,
|
|
110
|
+
lmConfig: { model: '', scale: 1.0 },
|
|
111
|
+
decodingMethod: 'greedy_search',
|
|
112
|
+
maxActivePaths: 4,
|
|
113
|
+
hotwordsFile: '',
|
|
114
|
+
hotwordsScore: 1.5,
|
|
115
|
+
ruleFsts: '',
|
|
116
|
+
ruleFars: '',
|
|
117
|
+
blankPenalty: 0,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Build a sherpa-onnx online recognizer config object suitable for
|
|
122
|
+
* `initSherpaOnnxOnlineRecognizerConfig()` from sherpa-onnx-asr.js.
|
|
123
|
+
*/
|
|
124
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
125
|
+
function buildOnlineRecognizerConfig(config) {
|
|
126
|
+
const sampleRate = config.sampleRate ?? 16000;
|
|
127
|
+
const files = config.modelFiles;
|
|
128
|
+
return {
|
|
129
|
+
featConfig: { sampleRate, featureDim: 80 },
|
|
130
|
+
modelConfig: {
|
|
131
|
+
transducer: {
|
|
132
|
+
encoder: files.encoder,
|
|
133
|
+
decoder: files.decoder,
|
|
134
|
+
joiner: files.joiner,
|
|
135
|
+
},
|
|
136
|
+
paraformer: { encoder: '', decoder: '' },
|
|
137
|
+
zipformer2Ctc: { model: '' },
|
|
138
|
+
nemoCtc: { model: '' },
|
|
139
|
+
toneCtc: { model: '' },
|
|
140
|
+
tokens: files.tokens,
|
|
141
|
+
numThreads: 1,
|
|
142
|
+
provider: 'cpu',
|
|
143
|
+
debug: 0,
|
|
144
|
+
modelType: '',
|
|
145
|
+
modelingUnit: '',
|
|
146
|
+
bpeVocab: '',
|
|
147
|
+
},
|
|
148
|
+
decodingMethod: 'greedy_search',
|
|
149
|
+
maxActivePaths: 4,
|
|
150
|
+
enableEndpoint: 1,
|
|
151
|
+
rule1MinTrailingSilence: 2.4,
|
|
152
|
+
rule2MinTrailingSilence: 1.2,
|
|
153
|
+
rule3MinUtteranceLength: 20,
|
|
154
|
+
hotwordsFile: '',
|
|
155
|
+
hotwordsScore: 1.5,
|
|
156
|
+
ctcFstDecoderConfig: { graph: '', maxActive: 3000 },
|
|
157
|
+
ruleFsts: '',
|
|
158
|
+
ruleFars: '',
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// ---------------------------------------------------------------------------
|
|
162
|
+
// STT Extension
|
|
163
|
+
// ---------------------------------------------------------------------------
|
|
164
|
+
class STTImpl {
|
|
165
|
+
extensionName = 'STT';
|
|
166
|
+
_offlineRecognizerHandle = 0;
|
|
167
|
+
_onlineRecognizerHandle = 0;
|
|
168
|
+
_currentModelType = STTModelType.Whisper;
|
|
169
|
+
_currentModelId = '';
|
|
170
|
+
/** Returns the currently loaded STT model type. */
|
|
171
|
+
get currentModelType() {
|
|
172
|
+
return this._currentModelType;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Load an STT model via sherpa-onnx.
|
|
176
|
+
* Model files must already be written to sherpa-onnx virtual FS
|
|
177
|
+
* (use SherpaONNXBridge.shared.downloadAndWrite() or .writeFile()).
|
|
178
|
+
*/
|
|
179
|
+
async loadModel(config) {
|
|
180
|
+
const sherpa = requireSherpa();
|
|
181
|
+
await sherpa.ensureLoaded();
|
|
182
|
+
const m = sherpa.module;
|
|
183
|
+
// Clean up previous model
|
|
184
|
+
this.cleanup();
|
|
185
|
+
logger.info(`Loading STT model: ${config.modelId} (${config.type})`);
|
|
186
|
+
EventBus.shared.emit('model.loadStarted', SDKEventType.Model, {
|
|
187
|
+
modelId: config.modelId, component: 'stt',
|
|
188
|
+
});
|
|
189
|
+
const startMs = performance.now();
|
|
190
|
+
try {
|
|
191
|
+
if (config.type === STTModelType.Zipformer) {
|
|
192
|
+
// Streaming model: use online recognizer
|
|
193
|
+
const configObj = buildOnlineRecognizerConfig(config);
|
|
194
|
+
const configStruct = initSherpaOnnxOnlineRecognizerConfig(configObj, m);
|
|
195
|
+
this._onlineRecognizerHandle = m._SherpaOnnxCreateOnlineRecognizer(configStruct.ptr);
|
|
196
|
+
freeConfig(configStruct, m);
|
|
197
|
+
if (this._onlineRecognizerHandle === 0) {
|
|
198
|
+
throw new SDKError(SDKErrorCode.ModelLoadFailed, `Failed to create online recognizer for ${config.modelId}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
// Non-streaming model (Whisper, Paraformer): use offline recognizer
|
|
203
|
+
const configObj = buildOfflineRecognizerConfig(config);
|
|
204
|
+
logger.debug(`Offline config: ${JSON.stringify(configObj.modelConfig.whisper)}`);
|
|
205
|
+
const configStruct = initSherpaOnnxOfflineRecognizerConfig(configObj, m);
|
|
206
|
+
this._offlineRecognizerHandle = m._SherpaOnnxCreateOfflineRecognizer(configStruct.ptr);
|
|
207
|
+
freeConfig(configStruct, m);
|
|
208
|
+
if (this._offlineRecognizerHandle === 0) {
|
|
209
|
+
throw new SDKError(SDKErrorCode.ModelLoadFailed, `Failed to create offline recognizer for ${config.modelId}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
this._currentModelType = config.type;
|
|
213
|
+
this._currentModelId = config.modelId;
|
|
214
|
+
const loadTimeMs = Math.round(performance.now() - startMs);
|
|
215
|
+
logger.info(`STT model loaded: ${config.modelId} in ${loadTimeMs}ms`);
|
|
216
|
+
EventBus.shared.emit('model.loadCompleted', SDKEventType.Model, {
|
|
217
|
+
modelId: config.modelId, component: 'stt', loadTimeMs,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
this.cleanup();
|
|
222
|
+
throw error;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/** Unload the STT model. */
|
|
226
|
+
async unloadModel() {
|
|
227
|
+
this.cleanup();
|
|
228
|
+
logger.info('STT model unloaded');
|
|
229
|
+
}
|
|
230
|
+
/** Check if an STT model is loaded. */
|
|
231
|
+
get isModelLoaded() {
|
|
232
|
+
return this._offlineRecognizerHandle !== 0 || this._onlineRecognizerHandle !== 0;
|
|
233
|
+
}
|
|
234
|
+
/** Get the current model ID. */
|
|
235
|
+
get modelId() {
|
|
236
|
+
return this._currentModelId;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Transcribe audio data (offline / non-streaming).
|
|
240
|
+
*
|
|
241
|
+
* @param audioSamples - Float32Array of PCM audio samples (mono, 16kHz)
|
|
242
|
+
* @param options - Transcription options
|
|
243
|
+
* @returns Transcription result
|
|
244
|
+
*/
|
|
245
|
+
async transcribe(audioSamples, options = {}) {
|
|
246
|
+
const sherpa = requireSherpa();
|
|
247
|
+
const m = sherpa.module;
|
|
248
|
+
if (this._offlineRecognizerHandle === 0) {
|
|
249
|
+
if (this._onlineRecognizerHandle !== 0) {
|
|
250
|
+
// Streaming model: process all at once via online recognizer
|
|
251
|
+
return this._transcribeViaOnline(audioSamples, options);
|
|
252
|
+
}
|
|
253
|
+
throw new SDKError(SDKErrorCode.ModelNotLoaded, 'No STT model loaded. Call loadModel() first.');
|
|
254
|
+
}
|
|
255
|
+
const startMs = performance.now();
|
|
256
|
+
const sampleRate = options.sampleRate ?? 16000;
|
|
257
|
+
logger.debug(`Transcribing ${audioSamples.length} samples (${(audioSamples.length / sampleRate).toFixed(1)}s)`);
|
|
258
|
+
// Create stream
|
|
259
|
+
const stream = m._SherpaOnnxCreateOfflineStream(this._offlineRecognizerHandle);
|
|
260
|
+
if (stream === 0) {
|
|
261
|
+
throw new SDKError(SDKErrorCode.GenerationFailed, 'Failed to create offline stream');
|
|
262
|
+
}
|
|
263
|
+
// Copy audio to WASM memory
|
|
264
|
+
const audioPtr = m._malloc(audioSamples.length * 4);
|
|
265
|
+
m.HEAPF32.set(audioSamples, audioPtr / 4);
|
|
266
|
+
try {
|
|
267
|
+
// Feed audio
|
|
268
|
+
m._SherpaOnnxAcceptWaveformOffline(stream, sampleRate, audioPtr, audioSamples.length);
|
|
269
|
+
// Decode
|
|
270
|
+
m._SherpaOnnxDecodeOfflineStream(this._offlineRecognizerHandle, stream);
|
|
271
|
+
// Get result as JSON
|
|
272
|
+
const jsonPtr = m._SherpaOnnxGetOfflineStreamResultAsJson(stream);
|
|
273
|
+
const jsonStr = sherpa.readString(jsonPtr);
|
|
274
|
+
m._SherpaOnnxDestroyOfflineStreamResultJson(jsonPtr);
|
|
275
|
+
const result = JSON.parse(jsonStr || '{}');
|
|
276
|
+
const processingTimeMs = Math.round(performance.now() - startMs);
|
|
277
|
+
const transcription = {
|
|
278
|
+
text: (result.text ?? '').trim(),
|
|
279
|
+
confidence: result.confidence ?? 0,
|
|
280
|
+
detectedLanguage: result.lang,
|
|
281
|
+
processingTimeMs,
|
|
282
|
+
};
|
|
283
|
+
EventBus.shared.emit('stt.transcribed', SDKEventType.Voice, {
|
|
284
|
+
text: transcription.text,
|
|
285
|
+
confidence: transcription.confidence,
|
|
286
|
+
});
|
|
287
|
+
return transcription;
|
|
288
|
+
}
|
|
289
|
+
finally {
|
|
290
|
+
m._free(audioPtr);
|
|
291
|
+
m._SherpaOnnxDestroyOfflineStream(stream);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/** Internal: Transcribe via online recognizer (for streaming models used non-streaming) */
|
|
295
|
+
async _transcribeViaOnline(audioSamples, options = {}) {
|
|
296
|
+
const m = SherpaONNXBridge.shared.module;
|
|
297
|
+
const startMs = performance.now();
|
|
298
|
+
const sampleRate = options.sampleRate ?? 16000;
|
|
299
|
+
const stream = m._SherpaOnnxCreateOnlineStream(this._onlineRecognizerHandle);
|
|
300
|
+
if (stream === 0) {
|
|
301
|
+
throw new SDKError(SDKErrorCode.GenerationFailed, 'Failed to create online stream');
|
|
302
|
+
}
|
|
303
|
+
const audioPtr = m._malloc(audioSamples.length * 4);
|
|
304
|
+
m.HEAPF32.set(audioSamples, audioPtr / 4);
|
|
305
|
+
try {
|
|
306
|
+
m._SherpaOnnxOnlineStreamAcceptWaveform(stream, sampleRate, audioPtr, audioSamples.length);
|
|
307
|
+
m._SherpaOnnxOnlineStreamInputFinished(stream);
|
|
308
|
+
while (m._SherpaOnnxIsOnlineStreamReady(this._onlineRecognizerHandle, stream)) {
|
|
309
|
+
m._SherpaOnnxDecodeOnlineStream(this._onlineRecognizerHandle, stream);
|
|
310
|
+
}
|
|
311
|
+
const jsonPtr = m._SherpaOnnxGetOnlineStreamResultAsJson(this._onlineRecognizerHandle, stream);
|
|
312
|
+
const jsonStr = SherpaONNXBridge.shared.readString(jsonPtr);
|
|
313
|
+
m._SherpaOnnxDestroyOnlineStreamResultJson(jsonPtr);
|
|
314
|
+
const result = JSON.parse(jsonStr || '{}');
|
|
315
|
+
const processingTimeMs = Math.round(performance.now() - startMs);
|
|
316
|
+
return {
|
|
317
|
+
text: (result.text ?? '').trim(),
|
|
318
|
+
confidence: result.confidence ?? 0,
|
|
319
|
+
processingTimeMs,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
finally {
|
|
323
|
+
m._free(audioPtr);
|
|
324
|
+
m._SherpaOnnxDestroyOnlineStream(stream);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Create a streaming transcription session.
|
|
329
|
+
* Returns an object to feed audio chunks and get results.
|
|
330
|
+
*/
|
|
331
|
+
createStreamingSession(options = {}) {
|
|
332
|
+
if (this._onlineRecognizerHandle === 0) {
|
|
333
|
+
throw new SDKError(SDKErrorCode.ModelNotLoaded, 'No streaming STT model loaded. Use a zipformer model.');
|
|
334
|
+
}
|
|
335
|
+
return new STTStreamingSessionImpl(this._onlineRecognizerHandle, options);
|
|
336
|
+
}
|
|
337
|
+
/** Clean up the STT resources. */
|
|
338
|
+
cleanup() {
|
|
339
|
+
const sherpa = SherpaONNXBridge.shared;
|
|
340
|
+
if (!sherpa.isLoaded)
|
|
341
|
+
return;
|
|
342
|
+
const m = sherpa.module;
|
|
343
|
+
if (this._offlineRecognizerHandle !== 0) {
|
|
344
|
+
try {
|
|
345
|
+
m._SherpaOnnxDestroyOfflineRecognizer(this._offlineRecognizerHandle);
|
|
346
|
+
}
|
|
347
|
+
catch { /* ignore */ }
|
|
348
|
+
this._offlineRecognizerHandle = 0;
|
|
349
|
+
}
|
|
350
|
+
if (this._onlineRecognizerHandle !== 0) {
|
|
351
|
+
try {
|
|
352
|
+
m._SherpaOnnxDestroyOnlineRecognizer(this._onlineRecognizerHandle);
|
|
353
|
+
}
|
|
354
|
+
catch { /* ignore */ }
|
|
355
|
+
this._onlineRecognizerHandle = 0;
|
|
356
|
+
}
|
|
357
|
+
this._currentModelId = '';
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
export const STT = new STTImpl();
|
|
361
|
+
/** Returns the currently loaded STT model type. */
|
|
362
|
+
export function getCurrentSTTModelType() {
|
|
363
|
+
return STT.currentModelType;
|
|
364
|
+
}
|
|
365
|
+
class STTStreamingSessionImpl {
|
|
366
|
+
_stream;
|
|
367
|
+
_recognizer;
|
|
368
|
+
_sampleRate;
|
|
369
|
+
constructor(recognizer, options) {
|
|
370
|
+
this._recognizer = recognizer;
|
|
371
|
+
this._sampleRate = options.sampleRate ?? 16000;
|
|
372
|
+
const m = SherpaONNXBridge.shared.module;
|
|
373
|
+
this._stream = m._SherpaOnnxCreateOnlineStream(recognizer);
|
|
374
|
+
if (this._stream === 0) {
|
|
375
|
+
throw new SDKError(SDKErrorCode.GenerationFailed, 'Failed to create streaming session');
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
acceptWaveform(samples, sampleRate) {
|
|
379
|
+
const m = SherpaONNXBridge.shared.module;
|
|
380
|
+
const audioPtr = m._malloc(samples.length * 4);
|
|
381
|
+
m.HEAPF32.set(samples, audioPtr / 4);
|
|
382
|
+
m._SherpaOnnxOnlineStreamAcceptWaveform(this._stream, sampleRate ?? this._sampleRate, audioPtr, samples.length);
|
|
383
|
+
m._free(audioPtr);
|
|
384
|
+
// Decode available frames
|
|
385
|
+
while (m._SherpaOnnxIsOnlineStreamReady(this._recognizer, this._stream)) {
|
|
386
|
+
m._SherpaOnnxDecodeOnlineStream(this._recognizer, this._stream);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
inputFinished() {
|
|
390
|
+
SherpaONNXBridge.shared.module._SherpaOnnxOnlineStreamInputFinished(this._stream);
|
|
391
|
+
}
|
|
392
|
+
getResult() {
|
|
393
|
+
const m = SherpaONNXBridge.shared.module;
|
|
394
|
+
const jsonPtr = m._SherpaOnnxGetOnlineStreamResultAsJson(this._recognizer, this._stream);
|
|
395
|
+
const jsonStr = SherpaONNXBridge.shared.readString(jsonPtr);
|
|
396
|
+
m._SherpaOnnxDestroyOnlineStreamResultJson(jsonPtr);
|
|
397
|
+
const result = JSON.parse(jsonStr || '{}');
|
|
398
|
+
const isEndpoint = m._SherpaOnnxOnlineStreamIsEndpoint(this._recognizer, this._stream) !== 0;
|
|
399
|
+
return {
|
|
400
|
+
text: (result.text ?? '').trim(),
|
|
401
|
+
isEndpoint,
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
reset() {
|
|
405
|
+
SherpaONNXBridge.shared.module._SherpaOnnxOnlineStreamReset(this._recognizer, this._stream);
|
|
406
|
+
}
|
|
407
|
+
destroy() {
|
|
408
|
+
if (this._stream !== 0) {
|
|
409
|
+
try {
|
|
410
|
+
SherpaONNXBridge.shared.module._SherpaOnnxDestroyOnlineStream(this._stream);
|
|
411
|
+
}
|
|
412
|
+
catch { /* ignore */ }
|
|
413
|
+
this._stream = 0;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
//# sourceMappingURL=RunAnywhere+STT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunAnywhere+STT.js","sourceRoot":"","sources":["../../../src/Public/Extensions/RunAnywhere+STT.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RunAnywhere Web SDK - Structured Output Extension
|
|
3
|
+
*
|
|
4
|
+
* Adds JSON-structured output capabilities for LLM generation.
|
|
5
|
+
* Uses the RACommons rac_structured_output_* C API for schema-guided
|
|
6
|
+
* generation and JSON extraction/validation.
|
|
7
|
+
*
|
|
8
|
+
* Mirrors: sdk/runanywhere-swift/Sources/RunAnywhere/Public/Extensions/StructuredOutput/
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* import { StructuredOutput, TextGeneration } from '@runanywhere/web';
|
|
12
|
+
*
|
|
13
|
+
* const schema = JSON.stringify({ type: 'object', properties: { name: { type: 'string' } } });
|
|
14
|
+
* const prompt = await StructuredOutput.preparePrompt('List 3 colors', schema);
|
|
15
|
+
* const result = await TextGeneration.generate(prompt);
|
|
16
|
+
* const validated = StructuredOutput.validate(result.text, schema);
|
|
17
|
+
* console.log(validated.extractedJson); // parsed JSON
|
|
18
|
+
*/
|
|
19
|
+
export interface StructuredOutputConfig {
|
|
20
|
+
/** JSON Schema string */
|
|
21
|
+
jsonSchema: string;
|
|
22
|
+
/** Whether to include the schema in the prompt (default: true) */
|
|
23
|
+
includeSchemaInPrompt?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface StructuredOutputValidation {
|
|
26
|
+
isValid: boolean;
|
|
27
|
+
errorMessage?: string;
|
|
28
|
+
extractedJson?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare const StructuredOutput: {
|
|
31
|
+
/**
|
|
32
|
+
* Extract JSON from a text response (finds first complete JSON object/array).
|
|
33
|
+
*
|
|
34
|
+
* @param text - Raw LLM output text
|
|
35
|
+
* @returns Extracted JSON string, or null if none found
|
|
36
|
+
*/
|
|
37
|
+
extractJson(text: string): string | null;
|
|
38
|
+
/**
|
|
39
|
+
* Prepare a prompt with schema instructions for structured output.
|
|
40
|
+
*
|
|
41
|
+
* @param originalPrompt - The user's original prompt
|
|
42
|
+
* @param config - Schema configuration
|
|
43
|
+
* @returns Enhanced prompt with schema instructions
|
|
44
|
+
*/
|
|
45
|
+
preparePrompt(originalPrompt: string, config: StructuredOutputConfig): string;
|
|
46
|
+
/**
|
|
47
|
+
* Get a system prompt that instructs the LLM to produce JSON matching a schema.
|
|
48
|
+
*
|
|
49
|
+
* @param jsonSchema - JSON Schema string
|
|
50
|
+
* @returns System prompt string
|
|
51
|
+
*/
|
|
52
|
+
getSystemPrompt(jsonSchema: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Validate LLM output against a JSON schema.
|
|
55
|
+
*
|
|
56
|
+
* @param text - Raw LLM output
|
|
57
|
+
* @param config - Schema configuration
|
|
58
|
+
* @returns Validation result with extracted JSON if valid
|
|
59
|
+
*/
|
|
60
|
+
validate(text: string, config: StructuredOutputConfig): StructuredOutputValidation;
|
|
61
|
+
/**
|
|
62
|
+
* Check if text contains a complete JSON object or array.
|
|
63
|
+
*
|
|
64
|
+
* @param text - Text to check
|
|
65
|
+
* @returns True if a complete JSON block was found
|
|
66
|
+
*/
|
|
67
|
+
hasCompleteJson(text: string): boolean;
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=RunAnywhere+StructuredOutput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunAnywhere+StructuredOutput.d.ts","sourceRoot":"","sources":["../../../src/Public/Extensions/RunAnywhere+StructuredOutput.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAmBH,MAAM,WAAW,sBAAsB;IACrC,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,eAAO,MAAM,gBAAgB;IAC3B;;;;;OAKG;sBACe,MAAM,GAAG,MAAM,GAAG,IAAI;IA8BxC;;;;;;OAMG;kCAC2B,MAAM,UAAU,sBAAsB,GAAG,MAAM;IA0C7E;;;;;OAKG;gCACyB,MAAM,GAAG,MAAM;IA4B3C;;;;;;OAMG;mBACY,MAAM,UAAU,sBAAsB,GAAG,0BAA0B;IAkDlF;;;;;OAKG;0BACmB,MAAM,GAAG,OAAO;CAqBvC,CAAC"}
|