use anyhow::Result;
use std::path::Path;
use super::embedded;
use crate::SampleRate;
#[derive(Clone)]
pub struct SileroWeights {
pub stft_conv: Vec<f32>,
pub conv1_w: Vec<f32>,
pub conv1_b: Vec<f32>,
pub conv2_w: Vec<f32>,
pub conv2_b: Vec<f32>,
pub conv3_w: Vec<f32>,
pub conv3_b: Vec<f32>,
pub conv4_w: Vec<f32>,
pub conv4_b: Vec<f32>,
pub lstm_w_ih: Vec<f32>,
pub lstm_w_hh: Vec<f32>,
pub lstm_b_ih: Vec<f32>,
pub lstm_b_hh: Vec<f32>,
pub final_w: Vec<f32>,
pub final_b: Vec<f32>,
}
impl SileroWeights {
pub fn embedded() -> Self {
embedded::embedded().clone()
}
pub fn load(path: &Path) -> Result<Self> {
embedded::load_file(path)
}
}
pub fn frame_samples(sr: SampleRate) -> usize {
match sr {
SampleRate::Hz8000 => super::FRAME_SAMPLES_8K,
SampleRate::Hz16000 => super::FRAME_SAMPLES_16K,
}
}
pub fn context_samples(sr: SampleRate) -> usize {
match sr {
SampleRate::Hz8000 => super::CONTEXT_8K,
SampleRate::Hz16000 => super::CONTEXT_16K,
}
}