zk-audio 0.1.0

Audio processing library for voice recording and enhancement
Documentation
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);
    }
}