pub struct FdafAec { /* private fields */ }Expand description
Implements an Acoustic Echo Canceller using the Frequency Domain Adaptive Filter (FDAF) algorithm with the Overlap-Save method.
This struct holds the state for the AEC and processes audio in frames.
Implementations§
Source§impl FdafAec
impl FdafAec
Sourcepub fn new(fft_size: usize, step_size: f32) -> Self
pub fn new(fft_size: usize, step_size: f32) -> Self
Creates a new FdafAec instance.
§Arguments
fft_size: The size of the FFT. This determines the filter length and the trade-off between computational complexity and filter performance. A largerfft_sizeprovides a longer filter, which can cancel more delayed echoes, but increases latency and computational cost. Must be a power of two.step_size: The learning rate (mu) for the adaptive filter. It controls how fast the filter adapts. A larger value leads to faster convergence but can be less stable. A typical value is between 0.1 and 1.0.
Sourcepub fn process(&mut self, far_end_frame: &[f32], mic_frame: &[f32]) -> Vec<f32>
pub fn process(&mut self, far_end_frame: &[f32], mic_frame: &[f32]) -> Vec<f32>
Processes a frame of audio data to remove echo.
§Arguments
far_end_frame: A slice representing the audio frame from the far-end (the reference signal, e.g., loudspeaker). Its length must befft_size / 2.mic_frame: A slice representing the audio frame from the near-end microphone, containing both the near-end speaker’s voice and the echo from the far-end. Its length must befft_size / 2.
§Returns
A Vec<f32> containing the echo-cancelled audio frame. The length of the vector is fft_size / 2.
Auto Trait Implementations§
impl Freeze for FdafAec
impl !RefUnwindSafe for FdafAec
impl Send for FdafAec
impl Sync for FdafAec
impl Unpin for FdafAec
impl !UnwindSafe for FdafAec
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<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.