AudioSamples Python Documentation

Fast, simple, and expressive audio processing for Python

AudioSamples Python provides high-performance audio processing capabilities through Rust-powered Python bindings. It eliminates the manual metadata coordination burden that plagues existing audio processing libraries by treating audio as a first-class data type with intrinsically embedded properties.

Note

AudioSamples consistently outperforms other Python audio libraries, delivering 2-4x faster I/O operations compared to established libraries like scipy, soundfile, and torchaudio.

Quick Start

Install AudioSamples:

pip install audio_samples

Generate and process audio:

import audio_samples as aus
import numpy as np

# Generate audio signals
sine = aus.generation.sine_wave(440.0, 1.0, 44100)
cosine = aus.generation.cosine_wave(880.0, 1.0, 44100)

# Mix signals with operator overloading
mixed = sine + cosine * 0.3

# Audio analysis (built-in, no external libraries needed)
print(f"RMS level: {mixed.rms():.4f}")
print(f"Spectral centroid: {mixed.spectral_centroid():.2f} Hz")

Key Features

  • High Performance: Rust-powered audio processing with minimal Python overhead

  • Type Safety: Audio semantics encoded in the data structure, not external metadata

  • Rich Audio Operations: Built-in signal generation, analysis, and processing

  • NumPy Integration: Seamless interoperability with the NumPy ecosystem

  • Multi-channel Support: First-class support for mono, stereo, and multi-channel audio

  • Real-time Analysis: Spectral analysis, statistics, and audio metrics

  • Audio Effects: Fading, normalization, filtering, and more

  • Fast I/O: High-performance audio file reading and writing

Why AudioSamples?

The Problem with Existing Libraries

Current Python audio libraries force manual metadata coordination:

# Traditional approach - error-prone manual coordination
data, sr = soundfile.read('audio.wav')
stft = librosa.stft(data, sr=sr)  # Must pass sr manually
freqs = librosa.fft_frequencies(sr=sr, n_fft=2048)  # Must pass sr again

The AudioSamples Solution

Audio objects carry properties intrinsically:

# AudioSamples approach - automatic coordination
audio = aus.io.read('audio.wav')
stft_matrix = audio.stft(window_size=2048, hop_size=512)
# Time/frequency coordinates computed automatically

Table of Contents

Development

Indices and tables