Skip to main content

Endpointer

Struct Endpointer 

Source
pub struct Endpointer<V> { /* private fields */ }
Available on non-target_family=wasm only.
Expand description

Finds utterances in a stream. Speech opens on a frame scored at or above SPEECH_THRESHOLD and closes once silence has lasted trailing_silence. After an End it keeps listening, so the next Start opens the next utterance. An utterance still open when input ends gets no End.

Positions count from the first push. To land them on a RecordingReader that did not start at zero, add its held_from() at that push. Start has no lead-in: open an utterance LEAD_IN_FRAMES frames earlier to cut as the microphone does.

fn utterances<V: VoiceActivityDetector>(
    vad: &mut V,
    batches: &[Vec<i16>],
) -> Result<(), VoiceActivityError> {
    // `&mut V` leaves the loaded detector with the caller for the next run.
    let mut endpointer = Endpointer::new(vad, SilenceDuration::default());
    for batch in batches {
        for boundary in endpointer.push(batch)? {
            match boundary {
                Boundary::Start(at) => println!("speech from sample {at}"),
                Boundary::End(at) => println!("utterance ends at sample {at}"),
            }
        }
    }
    Ok(())
}

Implementations§

Source§

impl<V: VoiceActivityDetector> Endpointer<V>

Source

pub fn new(vad: V, trailing_silence: SilenceDuration) -> Self

Resets vad, so state from earlier audio does not leak in.

Source

pub fn push( &mut self, samples: &[i16], ) -> Result<Vec<Boundary>, VoiceActivityError>

A partial frame waits for the next push.

Auto Trait Implementations§

§

impl<V> Freeze for Endpointer<V>
where V: Freeze,

§

impl<V> RefUnwindSafe for Endpointer<V>
where V: RefUnwindSafe,

§

impl<V> Send for Endpointer<V>
where V: Send,

§

impl<V> Sync for Endpointer<V>
where V: Sync,

§

impl<V> Unpin for Endpointer<V>
where V: Unpin,

§

impl<V> UnsafeUnpin for Endpointer<V>
where V: UnsafeUnpin,

§

impl<V> UnwindSafe for Endpointer<V>
where V: UnwindSafe,

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<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

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<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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