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:
- Install
uv - Clone the repository
- Install development dependencies:
uv sync --dev
- Run tests:
uv run pytest
To-Do
- Add cross-fading when concatenating
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 soundpython-0.1.7.tar.gz.
File metadata
- Download URL: soundpython-0.1.7.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.28
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7748eaf51f6a67951f597149e9318c55c55a58cd0951317f06ced7c8dda53e3
|
|
| MD5 |
be1f63775288634fde8d412d7ab9980b
|
|
| BLAKE2b-256 |
ae79aa85f5bb9989e8454f4a5e8445510c215a49abdf033b21417f47323449b4
|
File details
Details for the file soundpython-0.1.7-py3-none-any.whl.
File metadata
- Download URL: soundpython-0.1.7-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.28
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd3d42f0cb55d8a878fee5869d4aff1513d07c6ab3f26595f31621020c3715af
|
|
| MD5 |
95b65272c631f347f5caa52b90c24eb3
|
|
| BLAKE2b-256 |
e37c89aaa2918ffd1e778642e317e15b955ecd79eb750ba57be86e8ce36e48ba
|