svod-model 0.1.0-alpha.3

Pretrained models inference abstraction.
Documentation
use svod_model::silero_vad::{SileroVad, VadInference};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("Loading Silero VAD...");
    let vad = SileroVad::from_hub()?;
    println!("Loaded. Creating inference engine...");
    let mut inf = VadInference::new(vad)?;
    println!("Engine ready.");

    let mut reader = hound::WavReader::open("/home/mrpink/projects/svod/audio_1.wav")?;
    let waveform: Vec<f32> = reader.samples::<i16>().map(|s| s.unwrap() as f32 / 32768.0).collect();
    println!("Audio: {} samples ({:.1}s)", waveform.len(), waveform.len() as f32 / 16000.0);

    let segments = inf.segment(&waveform, 0.5);
    println!("\nSegments (threshold=0.5):");
    for (i, (start, end)) in segments.iter().enumerate() {
        let start_s = *start as f32 / 16000.0;
        let end_s = *end as f32 / 16000.0;
        println!("  {}: {:.1}s - {:.1}s ({:.1}s)", i, start_s, end_s, end_s - start_s);
    }

    Ok(())
}