Spaces:
Running
Running
Encoder: try INT8 first, auto-fallback to INT4 if ConvInteger unsupported in browser
Browse files- mega-asr.js +18 -8
mega-asr.js
CHANGED
|
@@ -234,14 +234,24 @@ async function loadAll() {
|
|
| 234 |
setProgress(30);
|
| 235 |
|
| 236 |
// 3. ONNX sessions
|
| 237 |
-
// INT8
|
| 238 |
-
//
|
| 239 |
-
|
| 240 |
-
|
| 241 |
-
|
| 242 |
-
|
| 243 |
-
|
| 244 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 245 |
setProgress(40);
|
| 246 |
|
| 247 |
setLoaderStatus("decoder prefill (~970 MB)...");
|
|
|
|
| 234 |
setProgress(30);
|
| 235 |
|
| 236 |
// 3. ONNX sessions
|
| 237 |
+
// Try INT8 encoder first (highest quality in browser); fall back to INT4
|
| 238 |
+
// encoder if the browser ORT lacks the ConvInteger op (which it does in
|
| 239 |
+
// both WebGPU and WASM backends as of 1.20).
|
| 240 |
+
setLoaderStatus("audio encoder (INT8 → INT4 fallback) ...");
|
| 241 |
+
let encLabel = "audio_encoder INT8";
|
| 242 |
+
let encUrl = `${HF_ROOT}/onnx/audio_encoder_int8.onnx`;
|
| 243 |
+
try {
|
| 244 |
+
state.encoder = await createSessionSimple(encUrl, encLabel, p => setProgress(30 + p * 10));
|
| 245 |
+
} catch (e) {
|
| 246 |
+
log(`INT8 encoder unsupported in browser (${e.message}); falling back to INT4 + sidecar`);
|
| 247 |
+
encLabel = "audio_encoder INT4";
|
| 248 |
+
state.encoder = await createSession(
|
| 249 |
+
`${HF_ROOT}/onnx/audio_encoder_int4.onnx`,
|
| 250 |
+
`${HF_ROOT}/onnx/audio_encoder_int4.onnx.data`,
|
| 251 |
+
encLabel,
|
| 252 |
+
p => setProgress(30 + p * 10),
|
| 253 |
+
);
|
| 254 |
+
}
|
| 255 |
setProgress(40);
|
| 256 |
|
| 257 |
setLoaderStatus("decoder prefill (~970 MB)...");
|