zk_audio/lib.rs
1//! # zk-audio
2//!
3//! A Rust library for real-time audio capture, voice enhancement, and microphone simulation.
4//!
5//! ## Features
6//!
7//! - **Native Audio Capture** - CPAL-based cross-platform audio input
8//! - **Voice Enhancement Pipeline** - 19 DSP processor stages for professional voice quality
9//! - **Microphone Simulation** - Emulate classic microphones (Neumann U87, Shure SM7B, etc.)
10//! - **Profile-Based Processing** - Pre-configured profiles for different environments
11//! - **WAV Output** - Built-in WAV encoding
12//!
13//! ## Quick Start
14//!
15//! ```rust,no_run
16//! use zk_audio::{AudioProfile, NativeCaptureBackend, CaptureBackend};
17//! use std::path::PathBuf;
18//!
19//! let config = zk_audio::NativeCaptureConfig::new(
20//! PathBuf::from("recording.wav"),
21//! AudioProfile::VoiceClean,
22//! );
23//!
24//! let backend = NativeCaptureBackend::new();
25//! let mut recording = backend.start(config).unwrap();
26//! // ... recording happens here ...
27//! let diagnostics = recording.stop().unwrap();
28//! ```
29//!
30//! ## Audio Profiles
31//!
32//! - [`AudioProfile::Raw`] - No processing, for reference recordings
33//! - [`AudioProfile::VoiceClean`] - Light processing for quiet environments
34//! - [`AudioProfile::VoiceNoisyRoom`] - Moderate noise reduction
35//! - [`AudioProfile::VoiceHvac`] - Aggressive HVAC noise suppression
36//!
37//! ## Platform Support
38//!
39//! Currently supports Linux via PipeWire/PulseAudio. macOS and Windows are planned.
40//!
41//! ## Feature Flags
42//!
43//! - `native-capture` (default) - Enables CPAL-based native audio capture
44
45pub mod builder;
46pub mod contracts;
47pub mod core;
48pub mod factory;
49pub mod metrics;
50pub mod mic_sim;
51pub mod native;
52pub mod pipeline;
53pub mod processors;
54pub mod profiles;
55pub mod runtime_stats;
56pub mod types;
57
58#[allow(unused_imports)]
59pub use builder::{NativePipelineBuilder, PipelineBuildRequest};
60#[allow(unused_imports)]
61pub use contracts::{
62 AudioProcessor, AudioSink, CaptureBackend, DeviceEnumerator, MetricsCollector,
63 ProcessorBuildRequest, ProcessorFactory,
64};
65pub use core::{
66 ActiveListening, ActiveRecording, AudioProfile, CaptureDiagnostics, DelayEffectConfig,
67 DelayEffectPreset, NativeCaptureConfig, ProcessorOverrideMode, SUPPORTED_AUDIO_PROFILES,
68 SUPPORTED_DELAY_EFFECT_PRESETS,
69};
70#[allow(unused_imports)]
71pub use factory::ProfileProcessorFactory;
72#[allow(unused_imports)]
73pub use mic_sim::{
74 MicrophoneSimConfig, MicrophoneSimModel, MicrophoneSimulatorFactory,
75 SUPPORTED_MICROPHONE_SIM_MODELS,
76};
77pub use native::NativeCaptureBackend;
78pub use native::{list_input_devices, set_default_input_device};
79pub use profiles::{ProcessorStage, SUPPORTED_PROCESSOR_STAGES};
80#[allow(unused_imports)]
81pub use types::{AudioBlock, ProcessContext, ProcessorInfo, SinkReport};