Skip to main content

PipecatSmartTurn

Struct PipecatSmartTurn 

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

Pipecat Smart Turn v3 detector.

Wraps the Smart Turn v3 architecture (Whisper-Tiny encoder + binary classification head). Use new for the embedded upstream weights, or with_variant to pick a WaveKat fine-tune at runtime.

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 upstream Pipecat Smart Turn v3.2 model embedded at compile time.

Equivalent to with_variant(SmartTurnVariant::PipecatV3).

Source

pub fn with_variant(variant: SmartTurnVariant) -> Result<Self, TurnError>

Load a specific variant of the Smart Turn model.

  • SmartTurnVariant::PipecatV3 uses the embedded ONNX bytes — no network required.
  • SmartTurnVariant::Wavekat (when the wavekat-smart-turn feature is enabled) downloads the corresponding language file from the wavekat/smart-turn-ONNX HuggingFace repo and caches it under $HF_HOME/hub/. Set WAVEKAT_TURN_MODEL_DIR to point at a pre-populated directory (offline / CI use).
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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