use anyhow::Result;
use whisper_rs::{WhisperVadContext, WhisperVadContextParams};
use super::to_speech::{DEFAULT_VAD_POLICY, VadPolicy, to_speech_only_with_policy};
pub struct VadProcessor {
ctx: WhisperVadContext,
policy: VadPolicy,
}
impl VadProcessor {
pub fn new(model_path: &str) -> Result<Self> {
let params = WhisperVadContextParams::default();
let ctx = WhisperVadContext::new(model_path, params)?;
Ok(Self {
ctx,
policy: DEFAULT_VAD_POLICY,
})
}
pub(crate) fn policy(&self) -> VadPolicy {
self.policy
}
pub fn apply(&mut self, samples_16k_mono: &mut [f32]) -> Result<bool> {
to_speech_only_with_policy(&mut self.ctx, 16_000, samples_16k_mono, self.policy)
}
}