Files
ai-spel-frontend/piper-onnx-config.mjs
T
Ein Anderssono c9b14e0726
Build and publish frontend / publish (push) Successful in 49s
Fix Piper memory pressure on iOS
2026-10-17 16:38:16 +02:00

32 lines
1.2 KiB
JavaScript

const assetRoot = '/static/piper-wasm-v1/onnx/';
export function createOnnxWasmPaths(origin) {
const absoluteAssetRoot = new URL(assetRoot, origin).href;
return absoluteAssetRoot;
}
export function configureOnnxRuntime(onnxRuntime) {
if (!onnxRuntime?.env?.wasm) throw new TypeError('ONNX Runtime WebAssembly settings are unavailable.');
// Piper 1.0.3 overwrites this value in TtsSession.init() with
// navigator.hardwareConcurrency. Override that source as well, otherwise an
// iPad may start a large WASM worker pool despite this setting.
const navigatorObject = globalThis.navigator;
if (navigatorObject && navigatorObject.hardwareConcurrency !== 1) {
try {
Object.defineProperty(navigatorObject, 'hardwareConcurrency', {
configurable: true,
value: 1,
});
} catch (_) {
// The check below converts an unsupported override into a clear error.
}
}
if (navigatorObject && navigatorObject.hardwareConcurrency !== 1) {
throw new Error('Piper could not be restricted to one processor thread.');
}
// Piper already runs in a worker. Avoid a second worker pool on mobile Safari.
onnxRuntime.env.wasm.numThreads = 1;
onnxRuntime.env.wasm.initTimeout = 60000;
}