45fb61000a
- useVAD.ts: MicVAD (neuronale Sprach- statt Pegel-Erkennung), redemptionMs 450, preSpeechPad 320 ms, WAV direkt aus Float32 (kein webm/Opus-Umweg mehr zur Box) - boxStt.ts: Dateiname passend zum Blob-Typ (rec.wav | rec.webm) - Assets self-hosted unter /vad/ via scripts/copy-vad-assets.mjs (npm postinstall), offlinefaehig - Verifiziert: tsc + Build sauber, App startet, Assets werden ausgeliefert (Mikro-Test: User) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
24 lines
1.0 KiB
JavaScript
24 lines
1.0 KiB
JavaScript
// Kopiert die Silero-VAD-Assets (Worklet + ONNX-Modell + onnxruntime-WASM) nach public/vad/,
|
|
// damit die App sie self-hosted lädt (offlinefähig, kein CDN). Läuft via npm postinstall.
|
|
// public/ wird von Vite in Dev UND Build verbatim ausgeliefert -> ein Pfad für beide Welten.
|
|
import { copyFileSync, mkdirSync, readdirSync } from "node:fs"
|
|
import { dirname, join } from "node:path"
|
|
import { fileURLToPath } from "node:url"
|
|
|
|
const root = join(dirname(fileURLToPath(import.meta.url)), "..")
|
|
const dest = join(root, "src", "renderer", "public", "vad")
|
|
mkdirSync(dest, { recursive: true })
|
|
|
|
const jobs = [
|
|
[join(root, "node_modules", "@ricky0123", "vad-web", "dist"), (f) => f === "vad.worklet.bundle.min.js" || f.endsWith(".onnx")],
|
|
[join(root, "node_modules", "onnxruntime-web", "dist"), (f) => f.endsWith(".wasm") || f.endsWith(".mjs")],
|
|
]
|
|
|
|
let n = 0
|
|
for (const [src, match] of jobs) {
|
|
for (const f of readdirSync(src)) {
|
|
if (match(f)) { copyFileSync(join(src, f), join(dest, f)); n++ }
|
|
}
|
|
}
|
|
console.log(`[vad-assets] ${n} Dateien nach ${dest} kopiert.`)
|