Skip to main content

Module preprocessing

Module preprocessing 

Source
Expand description

Audio preprocessing module for clean, analysis-ready audio.

This module provides the preprocessing and quality foundation for the crate.

§Components

  • DC Offset Removal: Removes DC bias using exponential moving average (EMA)
  • High-Pass Filtering: Attenuates low-frequency rumble (<80 Hz) using Butterworth biquad filters
  • Noise Reduction: Spectral subtraction with adaptive noise profiling (≥6 dB SNR improvement)
  • Chunk Continuity: Maintains filter state across streaming boundaries

§Performance

  • DC/High-Pass: <2ms per 500ms chunk (achieved: 0.014-0.127ms)
  • Noise Reduction: <15ms per 500ms chunk (expected: ~7ms)
  • Optimization: Precomputed coefficients, zero-allocation inner loops

§Example Pipeline

use speech_prep::preprocessing::{
    DcHighPassFilter,
    NoiseReducer,
    NoiseReductionConfig,
    PreprocessingConfig,
    VadContext,
};

// Step 1: DC removal + high-pass
let dc_config = PreprocessingConfig::default();
let mut dc_filter = DcHighPassFilter::new(dc_config)?;
let raw_samples = vec![0.0; 8000];
let dc_clean = dc_filter.process(&raw_samples, None)?;

// Step 2: Noise reduction
let noise_config = NoiseReductionConfig::default();
let mut noise_reducer = NoiseReducer::new(noise_config)?;
let vad_ctx = VadContext { is_silence: false };
let denoised = noise_reducer.reduce(&dc_clean, Some(vad_ctx))?;

Re-exports§

pub use dc_highpass::DcHighPassFilter;
pub use dc_highpass::HighpassOrder;
pub use dc_highpass::PreprocessingConfig;
pub use dc_highpass::VadContext;
pub use noise_reduction::NoiseReducer;
pub use noise_reduction::NoiseReductionConfig;
pub use normalization::Normalizer;
pub use quality::QualityAssessor;
pub use quality::QualityMetrics;

Modules§

dc_highpass
DC offset removal and high-pass filtering.
noise_reduction
Noise reduction via spectral subtraction.
normalization
Audio normalization with RMS targeting and peak limiting.
quality
Audio quality assessment with SNR estimation and spectral analysis.