A production-grade Python audio enhancement toolkit
Project description
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).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file audioenhancer-0.1.0.tar.gz.
File metadata
- Download URL: audioenhancer-0.1.0.tar.gz
- Upload date:
- Size: 25.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3de842a7f791c938b266fbb482a87b7b49fa4a75ab5a5224ab459ef634e030b4
|
|
| MD5 |
c860cb260917d8e3b1df16d47aafaf8e
|
|
| BLAKE2b-256 |
7be705c5c2c1cec00006dc705eaf3219fa3a3122689755e8da02403f8a615560
|
File details
Details for the file audioenhancer-0.1.0-py3-none-any.whl.
File metadata
- Download URL: audioenhancer-0.1.0-py3-none-any.whl
- Upload date:
- Size: 31.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b14bbc384a044353d11cecc63c2199bade1e6b1e8644686eb7574a86a515583
|
|
| MD5 |
f9f0a83ca51acfe45cbba8d4a3e5a48e
|
|
| BLAKE2b-256 |
bf39143ffa4bad4672d73f85125964b976806c053f21647f17a6ad9666cd48c6
|