feat(voice): add iOS VAD runtime support

This commit is contained in:
Edison Jwa
2026-05-21 20:51:45 +09:00
parent 171baf6e41
commit 6af4ecab0f
73 changed files with 11529 additions and 1249 deletions
+31
View File
@@ -0,0 +1,31 @@
//! Realtime-safe audio processors for platform and software voice paths.
pub mod dsp;
pub mod noop;
pub mod platform;
pub mod sonora;
pub use noop::NoopProcessor;
pub use platform::PlatformVoiceProcessor;
pub use sonora::SonoraProcessor;
/// 10 ms mono f32 processing frame at 48 kHz (480 samples).
pub const FRAME_SAMPLES: usize = 480;
/// Realtime-safe audio processor backend.
///
/// Implementations MUST be `Send` and MUST NOT allocate, block, or
/// perform I/O inside `process_capture` or `process_render`.
pub trait AudioProcessor: Send {
/// Process one 10 ms capture frame in-place.
fn process_capture(&mut self, frame: &mut [f32; FRAME_SAMPLES]);
/// Feed one 10 ms render-reference frame (decoded remote PCM
/// before playout). Required by software AEC backends; no-op
/// for platform and noop backends.
fn process_render(&mut self, frame: &[f32; FRAME_SAMPLES]);
/// Return true if this backend performs acoustic echo cancellation
/// so the engine can enforce INV_009 / INV_010.
fn has_aec(&self) -> bool;
}