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.