use std::path::PathBuf;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("failed to load Silero model from {path}: {source}")]
LoadModel {
path: PathBuf,
#[source]
source: ort::Error,
},
#[error(transparent)]
Ort(#[from] ort::Error),
#[error(
"unsupported sample rate: {rate} Hz (Silero VAD only supports 8 kHz and 16 kHz directly)"
)]
UnsupportedSampleRate {
rate: u32,
},
#[error(
"stream sample rate {actual} Hz does not match expected {expected} Hz for this operation"
)]
IncompatibleSampleRate {
expected: u32,
actual: u32,
},
#[error("batch contains mixed sample rates (expected {expected} Hz, found {actual} Hz)")]
MixedBatchSampleRate {
expected: u32,
actual: u32,
},
#[error("invalid Silero chunk length: expected {expected} samples, got {actual}")]
InvalidChunkLength {
expected: usize,
actual: usize,
},
#[error("Silero model returned unexpected shape for {tensor}: {shape:?}")]
UnexpectedOutputShape {
tensor: &'static str,
shape: Vec<i64>,
},
}
pub type Result<T> = std::result::Result<T, Error>;