pub struct SmartAudioBuffer { /* private fields */ }Available on crate feature
realtime only.Expand description
Buffers audio samples until a target duration is reached.
Smart buffering (e.g., 40-80ms) is essential for AI voice services to:
- Reduce Network Overhead: Aggregating small frames into larger chunks drastically reduces packet rate, lowering CPU usage and bandwidth overhead.
- Improve Model Performance: Provides sufficient context for Voice Activity Detection (VAD) to distinguish speech from noise.
- Resist Jitter: Smooths out network jitter common in mobile networks.
- Latency Trade-off: Maintains a real-time feel while gaining stability.
Implementations§
Source§impl SmartAudioBuffer
impl SmartAudioBuffer
Sourcepub fn new(sample_rate: u32, target_duration_ms: u32) -> SmartAudioBuffer
pub fn new(sample_rate: u32, target_duration_ms: u32) -> SmartAudioBuffer
Create a new smart audio buffer.
Sourcepub fn flush(&mut self) -> Option<Vec<i16>>
pub fn flush(&mut self) -> Option<Vec<i16>>
Flush the buffer if the target duration has been reached.
Sourcepub fn flush_remaining(&mut self) -> Option<Vec<i16>>
pub fn flush_remaining(&mut self) -> Option<Vec<i16>>
Flush any remaining samples in the buffer.
Trait Implementations§
Source§impl Clone for SmartAudioBuffer
impl Clone for SmartAudioBuffer
Source§fn clone(&self) -> SmartAudioBuffer
fn clone(&self) -> SmartAudioBuffer
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for SmartAudioBuffer
impl RefUnwindSafe for SmartAudioBuffer
impl Send for SmartAudioBuffer
impl Sync for SmartAudioBuffer
impl Unpin for SmartAudioBuffer
impl UnsafeUnpin for SmartAudioBuffer
impl UnwindSafe for SmartAudioBuffer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestCreates a shared type from an unshared type.