mod agc;
mod analysis;
mod basic_filters;
mod cleanup;
mod compressor;
mod deesser;
mod doubling_delay;
mod dynamics_simple;
mod finisher;
mod mid_resonance;
mod spectral_cleanup;
mod support;
mod tail_suppression;
mod tone_shaping;
mod vad;
pub use agc::AgcProcessor;
pub(crate) use analysis::{analyze_frame, band_weight_for_voice, classify_frame, FrameClass};
pub use basic_filters::{HighPassProcessor, LimiterProcessor, LowPassProcessor};
pub use cleanup::HighBandCleanupProcessor;
pub use compressor::CompressorProcessor;
pub use deesser::DeEsserProcessor;
#[allow(unused_imports)]
pub use doubling_delay::DoublingDelayProcessor;
pub use dynamics_simple::{AdaptiveGainProcessor, ExpanderProcessor, NoiseSuppressionProcessor};
pub use finisher::VoiceFinisherProcessor;
pub use mid_resonance::MidResonanceSuppressorProcessor;
pub use spectral_cleanup::{
AirBandNoiseReducerProcessor, DehissProcessor, SpectralDenoiseProcessor,
};
pub use tail_suppression::TailSuppressionProcessor;
pub use tone_shaping::{AdaptiveToneShaperProcessor, LowShelfCutProcessor, PresenceBoostProcessor};
pub(crate) use vad::{VadState, VoiceActivityDetector};
#[cfg(test)]
mod tests {
use crate::profiles::profile_tuning;
use crate::AudioProfile;
#[test]
fn voice_hvac_profile_is_more_aggressive_on_noise_bands() {
let hvac = profile_tuning(AudioProfile::VoiceHvac);
let room = profile_tuning(AudioProfile::VoiceNoisyRoom);
assert!(hvac.low_pass_hz > room.low_pass_hz);
assert!(hvac.presence_gain_db > room.presence_gain_db);
assert!(hvac.low_shelf_gain_db < room.low_shelf_gain_db);
}
}