Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Native Silero VAD model on Lstm with weights from the upstream ONNX file

Aperta
#1,278 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
30/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
android, kotlin

Direzione di ricerca

Start by reading the existing Lstm state-step API from #823 and the ONNX weight reader in skainet-io-onnx; the issue does not name specific files. Implement the Silero graph with ctx.ops.*, load weights from the pinned upstream ONNX initializers, and add the streaming adapter. Done means parity within 1e-4 over at least 1,000 frames, Android performance under 1 ms per frame, and a Python-side ground-truth entry.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement model skill:numerics

Context

Silero VAD (v6.x, MIT) is the de-facto on-device voice activity detector. A SKaiNET consumer currently has to ship ONNX Runtime only for it, next to whatever runs the ASR model, which costs a second native runtime, an extra ~2.3 MB model on a separate loader, and a minSdk floor set by ORT rather than by SKaiNET.

The model is small: an STFT front end baked into the graph as conv weights, a conv encoder, one LSTM cell with a carried [2,1,128] state, and a dense sigmoid head. Input per call is a 64-sample context prepended to a 512-sample frame at 16 kHz. Lstm with LstmState(h, c) and an explicit step already exists in skainet-lang-core (#823), which was added with exactly this kind of streaming use in mind.

Scope

  • SileroVad module (skainet-models or a new skainet-model-vad): the graph expressed with ctx.ops.* only, so it runs eagerly and lowers through the tape path like every other SKaiNET model. Reuse Lstm.
  • Weights loaded from the initializers of the pinned upstream silero_vad.onnx through skainet-io-onnx's weight reader (no new file format; upstream stays the source of truth). Load the STFT basis as weights rather than re-deriving it so the model matches bit for bit.
  • Streaming API: process(frame: FloatArray): Float returning speech probability, reset(), and the state carried across calls; a VoiceActivityDetector-shaped adapter for the audio-side libraries.
  • Parity test: probabilities within 1e-4 of ONNX Runtime over ≥ 1000 consecutive frames from three clips including state carry-over, checked against a committed golden (ORT is a test-time dependency only).
  • Android measurement: < 1 ms per frame on one thread with the JNI tier.
  • Ground-truth entry so the Python-side suite (#985) covers the op set.

Non-goals

  • Importing the Silero graph through the ONNX graph importer. That needs LSTM/Gather/Unsqueeze/Where/If converters and is tracked separately as the verification path; the hand-written module is the shipping path.

Related

  • #823 — Lstm layer with explicit state step API
  • #230 — ONNX I/O module MVP
Lingua principale
Kotlin
Stelle
52
Fork
15
Merge medio
1g 15h
PR unite (30g)
36

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di SKaiNET-developers/SKaiNET

Tutte le issue di SKaiNET-developers/SKaiNET

Issue simili

Altre issue su Kotlin

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.