Skip to main content

PipecatSmartTurn

Struct PipecatSmartTurn 

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

Pipecat Smart Turn v3 detector.

Buffers up to 8 seconds of audio internally. Call push_audio with every incoming 16 kHz frame, then call predict when the VAD fires end-of-speech to get a TurnPrediction.

§Usage with VAD

use wavekat_turn::audio::PipecatSmartTurn;
use wavekat_turn::AudioTurnDetector;

let mut detector = PipecatSmartTurn::new().unwrap();
// ... feed frames via push_audio ...
let prediction = detector.predict().unwrap();
println!("{:?} ({:.2})", prediction.state, prediction.confidence);

Implementations§

Source§

impl PipecatSmartTurn

Source

pub fn new() -> Result<Self, TurnError>

Load the Smart Turn v3.2 model embedded at compile time.

Source

pub fn from_file(path: impl AsRef<Path>) -> Result<Self, TurnError>

Load a model from a custom path on disk.

Useful for CI environments that supply the model file separately, or for evaluating fine-tuned variants without recompiling.

Trait Implementations§

Source§

impl AudioTurnDetector for PipecatSmartTurn

Source§

fn push_audio(&mut self, frame: &AudioFrame<'_>)

Append audio to the internal ring buffer.

Frames with a sample rate other than 16 kHz are silently dropped. The ring buffer holds at most 8 s; older samples are evicted.

Source§

fn predict(&mut self) -> Result<TurnPrediction, TurnError>

Run inference on the buffered audio.

Takes a snapshot of the ring buffer, pads/truncates to 8 s, extracts Whisper log-mel features, and runs ONNX inference.

Source§

fn reset(&mut self)

Clear the ring buffer. Call at the start of each new speech turn.

Source§

impl Send for PipecatSmartTurn

Source§

impl Sync for PipecatSmartTurn

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<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