Skip to main content

AudioEnhancer

A production-grade Python audio enhancement toolkit.

PyPI version Python versions License: MIT CI Status

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 ffmpeg or download binaries directly.

Installation

Standard Installation (from PyPI)

pip install audioenhancer

Installation from Source

  1. Clone the repository:
    git clone https://github.com/CodeWithBotinaOficial/audio_enhancer.git
    cd audio_enhancer
    
  2. 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: AudioEnhancer class provides a simple, high-level interface.
  • Strategy: Different normalization and noise reduction algorithms are implemented as strategies.
  • Builder: PipelineBuilder constructs complex processing pipelines step-by-step.
  • Singleton: The Logger and AudioEnhancer use 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)

Source distribution for audioenhancer 0.1.0
File Size Uploaded
audioenhancer-0.1.0.tar.gz 25.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for audioenhancer 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page