import { vlog, verror } from './debug' /** * openWakeWord pipeline в браузере. * * Цепочка: 1280-семпловый audio chunk @ 16kHz * → melspectrogram.onnx → ~8 новых mel-фреймов * → embedding_model.onnx (sliding 76-frame window, stride 8) → 96-D embedding * → cosmo.onnx (классификатор по последним 16 embedding'ам) → score 0..1 * → score > threshold ⇒ onWake() * * Audio capture через AudioWorklet (`/wake/wake-capture-worklet.js`). * ONNX inference на main thread через onnxruntime-web (WASM, single-thread). */ // onnxruntime-web .mjs builds используют top-level import.meta.url, что // не парсится next-swc. Загружаем CJS-сборку через