AudioEnhancer
A production-grade Python audio enhancement toolkit.
Why AudioEnhancer?
AudioEnhancer is designed for developers who need robust, high-quality audio post-processing without complex configurations. By decoupling algorithms into standardized strategies, it offers a clean, extensible, and pattern-driven API for noise removal, level normalization, and seamless format conversions.
Features
- 🤫 Noise Removal: Spectral gating for stationary noise and median filtering for impulse clicks/pops.
- 🎚️ Loudness Normalization: Support for Peak, RMS, and broadcast-standard LUFS (ITU-R BS.1770) normalization.
- 🔁 Format Conversion: Convert easily between standard formats like WAV, MP3, FLAC, and more.
- 🛠️ Fluent Pipeline Builder: Build and execute custom chains using a modern builder API.
- 🖥️ Command-Line Interface (CLI): Powerful, Click-powered command-line interface for quick batch or single file processing.
Prerequisites
This project requires FFmpeg to be installed and available in your system's PATH.
- macOS:
brew install ffmpeg - Ubuntu/Debian:
sudo apt-get update && sudo apt-get install -y ffmpeg - Windows: Install via Chocolatey
choco install ffmpegor download binaries directly.
Installation
Standard Installation (from PyPI)
pip install audioenhancer
Installation from Source
- Clone the repository:
git clone https://github.com/CodeWithBotinaOficial/audio_enhancer.git cd audio_enhancer
- Create a virtual environment and install dependencies:
python -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate` pip install -r requirements.txt
Usage
Command-Line Interface (CLI)
The CLI provides a quick way to process audio files. You can run it as a module or after installing the package:
python -m audio_enhancer process-file examples/sample_audio/input.wav examples/output/output.mp3 --noise-profile spectral_gate --normalize lufs --lufs -16.0
Library Usage
The project can be used as a Python library by importing the AudioEnhancer facade:
from audio_enhancer import AudioEnhancer
from audio_enhancer.normalization.lufs import LufsNormalizer
from audio_enhancer.noise_reduction.spectral_gating import SpectralGatingNoiseReducer
def main():
# Create an enhancer instance
enhancer = AudioEnhancer.get_instance()
# Load an audio file
audio = enhancer.load_audio("examples/sample_audio/input.wav")
# Create a processing pipeline
pipeline = (
enhancer.get_builder()
.add_step(SpectralGatingNoiseReducer())
.add_step(LufsNormalizer(-16.0))
.build()
)
# Apply the pipeline
enhanced_audio = pipeline.process(audio)
# Export the result
enhancer.export_audio(enhanced_audio, "examples/output/enhanced_audio.flac", "flac")
print("Audio enhancement complete.")
if __name__ == "__main__":
main()
Design Patterns
This project serves as a practical example of various software design patterns:
- Facade:
AudioEnhancerclass provides a simple, high-level interface. - Strategy: Different normalization and noise reduction algorithms are implemented as strategies.
- Builder:
PipelineBuilderconstructs complex processing pipelines step-by-step. - Singleton: The
LoggerandAudioEnhanceruse the Singleton pattern. - Factory Method: Used to create different audio processors.
Documentation
Full documentation, including tutorials, guide, and API reference, is available at https://codewithbotinaoficial.github.io/audio_enhancer/.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2026 Diego Alejandro Botina (CodeWithBotina).
Metadata
Release files for audioenhancer 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| audioenhancer-0.1.0.tar.gz | 25.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| audioenhancer-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 56.7 kB
Release files / audioenhancer-0.1.0.tar.gz
| Download URL | audioenhancer-0.1.0.tar.gz |
|---|---|
| Size | 25.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3de842a7f791c938b266fbb482a87b7b49fa4a75ab5a5224ab459ef634e030b4
|
|
BLAKE2b-256 checksum How to use checksums |
7be705c5c2c1cec00006dc705eaf3219fa3a3122689755e8da02403f8a615560
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / audioenhancer-0.1.0-py3-none-any.whl
| Download URL | audioenhancer-0.1.0-py3-none-any.whl |
|---|---|
| Size | 31.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7b14bbc384a044353d11cecc63c2199bade1e6b1e8644686eb7574a86a515583
|
|
BLAKE2b-256 checksum How to use checksums |
bf39143ffa4bad4672d73f85125964b976806c053f21647f17a6ad9666cd48c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|