Struct LocalVadDetector

Source
pub struct LocalVadDetector { /* private fields */ }
Expand description

Local voice activity detector.

Provides voice activity detection using local processing without external API calls. Uses the voice_activity_detector_silero_v5 crate for speech detection and analysis.

Implementations§

Source§

impl LocalVadDetector

Source

pub fn new(config: VadConfig) -> Result<Self>

Create a new local VAD detector.

§Arguments
  • config - VAD configuration parameters
§Returns

A new LocalVadDetector instance

§Errors

Returns an error if the audio processor cannot be initialized

Source

pub async fn detect_speech_from_data( &self, audio_data: ProcessedAudioData, ) -> Result<VadResult>

Detect speech activity in a ProcessedAudioData (for partial audio analysis).

§Arguments
  • audio_data - Pre-processed audio data (can be cropped)
§Returns

VAD analysis results including speech segments and metadata

Source

pub fn calculate_chunk_size(&self, sample_rate: u32) -> usize

Dynamically calculates the optimal VAD chunk size for a given audio sample rate using the Silero VAD V5 model.

This function selects a chunk size (in samples) compatible with the Silero VAD V5 model’s strict requirements. For 8 kHz audio, only a 256-sample window is supported. For 16 kHz audio, only a 512-sample window is supported. For sample rates that are a multiple of 16 kHz (e.g., 32 kHz, 48 kHz), a 512-sample window is also used, as required by the model.

§Arguments
  • sample_rate: The audio sample rate in Hz (e.g., 8000, 16000)
§Returns

The chunk size in number of samples, as required by the Silero VAD V5 model.

§Model Reference

This logic follows the requirements of the Silero VAD V5 model.

§Panics

This function will panic if the sample rate is not supported by the model.

§Examples
use subx_cli::services::vad::LocalVadDetector;
let detector = LocalVadDetector::new(Default::default()).unwrap();
assert_eq!(detector.calculate_chunk_size(8000), 256);
assert_eq!(detector.calculate_chunk_size(16000), 512);
Source

pub fn audio_processor(&self) -> &VadAudioProcessor

Get the internal VadAudioProcessor instance (for advanced use, e.g. partial audio cropping)

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,