Skip to main content

Audio Toolset

CI Workflow status CD Workflow status GitHub Release PyPI - Version Python Version from PEP 621 TOML

Python library and command line interface for processing audio signals.

audio_toolset provides an intuitive and flexible way to process audio files in Python. Each Channel object handles a single mono audio file, allowing you to apply filters, EQ, dynamic processing, gain adjustments, noise reduction, and more.

[!TIP] Stereo files can be handled by first splitting them into mono channels using split_to_mono and then recombining them with join_to_stereo. see example below

Installation

pip install audio-toolset

Examples

Quickstart

from audio_toolset.channel import Channel

track = Channel("my_audio.wav")

track.lowpass(cutoff_frequency=12000)  # Remove harsh highs
track.highpass(cutoff_frequency=80)  # Remove low-end rumble
track.normalize(target_db=-1)  # Normalize

track.write("my_audio_processed.wav")

Command line interface

All methods in Channel are exposed as subcommands in the audio-toolset CLI and can be chained in any order. this command will produce an identical result to the python script above

audio-toolset --source my_audio.wav \
  lowpass --cutoff-frequency 12000 \
  highpass --cutoff-frequency 80 \
  normalize --target-db -1 \
  write --output-path my_audio_processed.wav

Process multiple files

This is very handy when you need to apply the same processing to multiple files, for example a directory with sound effects.

import pathlib

from audio_toolset.channel import Channel

input_dir = pathlib.Path("input_audio")
output_dir = pathlib.Path("cleaned_audio")
output_dir.mkdir(exist_ok=True)

for wav_file in input_dir.glob("*.wav"):
    track = Channel(wav_file)

    track.lowpass(cutoff_frequency=12000)  # Remove harsh highs
    track.highpass(cutoff_frequency=80)  # Remove low-end rumble
    track.normalize(target_db=-1)  # Normalize

    track.write(output_dir / wav_file.name)

Working with stereo files

from audio_toolset.audio_data import AudioData, join_to_stereo
from audio_toolset.channel import Channel

# Load stereo audio file
stereo_data = AudioData.read_from_file("my_audio.wav")

# Split stereo into left and right channels
left_data, right_data = stereo_data.split_to_mono()
left_channel = Channel(left_data)
right_channel = Channel(right_data)

# Process each channel
for track in [left_channel, right_channel]:
    track.lowpass(cutoff_frequency=12000)  # Remove harsh highs
    track.highpass(cutoff_frequency=80)  # Remove low-end rumble
    track.normalize(target_db=-1)  # Normalize

# Combine channels back to stereo and save
join_to_stereo(left_channel.audio_data, right_channel.audio_data).write_to_file(
    "my_audio_processed.wav"
)

Features

  • High level Channel object for simple user interface
  • Load audio from a file or AudioData
  • Gain processing
    • gain, normalize, fade
  • Filters
    • lowpass, highpass, eq_band
    • noise_reduction (spectral gating)
  • Dynamics
    • compressor, limiter, soft_clipping
  • Plotting tools (see examples)
    • plot_signal - generate signal time and frequency plot
    • Dynamic plots - compressor, limiter can generate attenuation plots
    • Bode plots - lowpass, highpass, eq_band can generate filter bode plots

Plotting

audio_toolset provides multiple plotting tools to visualize signals, filters, and dynamics. All plots are generated interactively using Plotly and can be saved as images from the interactive viewer.

Signal Plots

Use plot_signal() to visualize the time-domain and frequency-domain representation of an audio channel.

signal-plot

2. Filter (Bode) Plots

Filter plots show the frequency response (Bode plot) of filters applied using eq_band(plot_filter_bode=True), highpass(plot_filter_bode=True), or lowpass(plot_filter_bode=True).

lowpass-plot

parametric-eq-plot

3. Dynamics Plots

Dynamics plots visualize the response of compressors and limiters applied to a channel. Generated by compressor(plot_compressor_response=True) or limiter(plot_limiter_response=True)

compressor-plot

Metadata

Release files for audio-toolset 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for audio-toolset 0.2.2
File Size Uploaded
audio_toolset-0.2.2.tar.gz 41.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for audio-toolset 0.2.2
File Interpreter ABI Platform
audio_toolset-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 60.5 kB

Release files / audio_toolset-0.2.2.tar.gz

Download URL audio_toolset-0.2.2.tar.gz
Size 41.3 kB
Tags Source
SHA-256 checksum
How to use checksums
5a24209fb3b7e73f178e80fcebdfc3e06e9ddfbc3a7935d8b421e51e59151d5f
BLAKE2b-256 checksum
How to use checksums
3cc533d684852fd8e7c83c042a356f8bc6cb9bf1bddce9cb15f3b2f421be69d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.8.15

Release files / audio_toolset-0.2.2-py3-none-any.whl

Download URL audio_toolset-0.2.2-py3-none-any.whl
Size 19.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d61ea3869ea1b26b8f2f361793a28bb04cd7d955ad9c6f5d3aa6be7a63a5e8e8
BLAKE2b-256 checksum
How to use checksums
4cae4c070e617f1130b85dc7b114cb46c1ec26fac13300943ed8382c89c966a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.8.15

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.1.1

2 release files

0.1.0

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