Skip to main content

Simple audio processing library.

Project description

soundpython

soundpython is a Python library for audio file processing that provides a simple, intuitive interface for working with audio data. It supports various audio formats and offers functionality for both mono and stereo audio manipulation.

Features

  • Load and save audio in multiple formats (MP3, WAV, OGG, FLAC)
  • Convert between mono and stereo audio
  • Manipulate individual audio channels
  • Extract portions of audio by time
  • Concatenate audio files with optional crossfade
  • Create smooth audio transitions with crossfading overlay
  • Automatic audio normalization
  • Comprehensive metadata handling

Requirements

  • Python 3.10 or higher
  • NumPy 2.2.1 or higher
  • FFmpeg (must be installed and available in system PATH)

Installation

Install the package using pip:

pip install soundpython

Usage

Here are some common usage examples:

from soundpython import Audio

# Load an audio file
audio = Audio.from_file("song.mp3")

# Convert stereo to mono
mono_audio = audio.to_mono()

# Extract left channel from stereo audio
left_channel = audio.get_channel(0)

# Extract portions of audio by time
intro = audio.slice(end_seconds=30.0)  # First 30 seconds
chorus = audio.slice(60.0, 90.0)       # 30-second clip from 1:00 to 1:30
outro = audio.slice(180.0)             # Everything after 3:00

# Simple concatenation of audio segments
combined = intro.concat(chorus)

# Crossfade between two audio segments
# The end of intro will fade out while the start of outro fades in
crossfaded = intro.overlay(outro, fade_duration=2.0)  # 2-second crossfade

# Create silent tracks
stereo_silence = Audio.create_silent(duration_seconds=5.0)  # 5 seconds of stereo silence
mono_silence = Audio.create_silent(duration_seconds=3.0, stereo=False)  # 3 seconds of mono silence

# Save in different formats
audio.save("output.wav")
audio.save("output.mp3")

Audio Metadata

The library provides detailed metadata about audio files through the AudioMetadata class:

# Access audio metadata
print(f"Sample rate: {audio.metadata.sample_rate}Hz")
print(f"Channels: {audio.metadata.channels}")
print(f"Duration: {audio.metadata.duration_seconds:.2f}s")
print(f"Bit depth: {audio.metadata.bits_per_sample} bits")

Development

To set up the development environment:

  1. Install uv
  2. Clone the repository
  3. Install development dependencies:
uv sync --dev
  1. Run tests:
uv run pytest

To-Do

  • Add cross-fading when concatenating

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

soundpython-0.1.6.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

soundpython-0.1.6-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file soundpython-0.1.6.tar.gz.

File metadata

  • Download URL: soundpython-0.1.6.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.4.28

File hashes

Hashes for soundpython-0.1.6.tar.gz
Algorithm Hash digest
SHA256 a0f4d3c9e149e60349190c22a72007de8b719a2e7ae0a55b5b5296db13f216fb
MD5 85d2876b4a6f561a760fae9c5ee11df6
BLAKE2b-256 eb560febd4ec20e75be37839b5f8620cbe1ead76f1df0dcbfe85bb582b0ad09e

See more details on using hashes here.

File details

Details for the file soundpython-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for soundpython-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 daad7c8a941562c295384eb3bdcc64ccd8eaf120129b8e9c5712b2888adb7959
MD5 4503e749a2b93e1884c51c0d4d945de8
BLAKE2b-256 745539fb0c3b21c77f8ee49f15247ca69fd46e607e1475e1eca8adbc22d30b1c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page