Skip to main content

speech_prep/
lib.rs

1//! # speech-prep
2//!
3//! Speech-focused audio preprocessing for Rust.
4//!
5//! - Voice activity detection (dual-metric: energy + spectral flux)
6//! - Audio format detection plus WAV decoding to 16kHz mono PCM
7//! - Preprocessing (DC removal, high-pass filter, noise reduction, normalization)
8//! - Speech-aligned chunking with overlap handling
9//! - Quality assessment metrics
10//!
11//! ## Usage
12//!
13//! ```rust
14//! use speech_prep::VadConfig;
15//!
16//! let config = VadConfig::default();
17//! assert!(config.base_threshold > 0.0);
18//! ```
19
20#![cfg_attr(test, allow(clippy::unwrap_used))]
21#![cfg_attr(test, allow(clippy::expect_used))]
22#![cfg_attr(test, allow(clippy::panic))]
23#![cfg_attr(test, allow(clippy::indexing_slicing))]
24#![cfg_attr(test, allow(clippy::print_stdout))]
25#![cfg_attr(test, allow(clippy::float_cmp))]
26
27pub mod buffer;
28pub mod chunker;
29pub mod converter;
30mod decoder;
31pub mod error;
32#[cfg(any(test, feature = "fixtures"))]
33pub mod fixtures;
34pub mod format;
35mod monitoring;
36pub mod pipeline;
37pub mod preprocessing;
38pub mod time;
39pub mod types;
40pub mod vad;
41
42pub use buffer::{AudioBuffer, AudioBufferMetadata};
43pub use chunker::{ChunkBoundary, Chunker, ChunkerConfig, ProcessedChunk};
44pub use error::{Error, Result};
45pub use monitoring::VADStats;
46pub use pipeline::{AudioPipelineCoordinator, ProcessingResult, StageLatencies};
47pub use preprocessing::{
48    DcHighPassFilter, HighpassOrder, NoiseReducer, NoiseReductionConfig, PreprocessingConfig,
49    VadContext,
50};
51pub use time::{AudioDuration, AudioTimestamp};
52pub use types::AudioChunk;
53pub use vad::{NoopVadMetricsCollector, SpeechChunk, VadConfig, VadDetector, VadMetricsCollector};