Skip to main content

Platform independent reading of audio files as well as recording and playing of audio data.

Project description

Build Status codecov

audioio

Platform independent interfacing of numpy arrays of floats with audio files and devices.

Documentation

Git Repository

The audioio modules try to use whatever available audio module to achieve their tasks. The audioio package does not provide own code for decoding files and accessing audio hardware.

Installation

After cloning from github change into the audioio/ base directory and run as superuser

python setup.py install

Then you can use the provided modules for reading and writing audio files and for playing audio data immediately. However, the support provided by the python standard library is limited to very basic wav files. If you need support for other audio file formats or for better sound output you need to install additional packages:

In the audioio/ base directory you may run

python audiomodules.py

to see which audio modules you have already installed on your system, which ones are recommended to install, and how to install them. By calling the script with the name of an audio module as an argument you get specific installation instructions for this module.

In particular, you might need to install the sndfile library for accessing various audio file formats

sudo apt-get install -y libsndfile1 libsndfile1-dev libffi-dev

and one of the many python wrappers for the sndfile library, e.g. pysoundfile, wavefile, or scikits.audiolab:

sudo pip install pysoundfile
sudo pip install wavefile
sudo pip install scikits.audiolab

For playing sounds, the portaudio library is the gold standard

sudo apt-get install libportaudio2 portaudio19-dev

that is interfaced by the python packages pyaudio or sounddevice:

sudo apt-get install python-pyaudio
sudo pip install sounddevice

Usage

import audioio as aio

Loading audio data

Load an audio file into a numpy array:

data, samplingrate = aio.load_audio('audio/file.wav')

The data are numpy arrays of floats ranging between -1 and 1. The arrays are either 1-D arrays for single channel data, or 2-day arrays with first axis time and second axis channel.

You can also randomly access chunks of data of an audio file, without loading the entire file into memory. This is really handy for analysing very long sound recordings:

with aio.open_audio_loader('audio/file.wav', 60.0) as data:
     block = 1000
     rate = data.samplerate
     for i in range(len(data)/block):
     	 x = data[i*block:(i+1)*block]
     	 # ... do something with x and rate

Writing audio data

Write a numpy array into an audio file:

aio.write_audio('audio/file.wav', data, samplerate)

Converting audio files

audioio provides a simple command line script to convert audio files:

> audioconverter -o test.wav test.mp3

Playing sounds

Play a numpy array as a sound:

aio.play(data, samplingrate)

Just beep for half a second and 440 Hz:

aio.beep(0.5, 440.0)
aio.beep(0.5, 'a4')

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

audioio-0.9.1.tar.gz (25.3 kB view hashes)

Uploaded Source

Built Distribution

audioio-0.9.1-py3-none-any.whl (39.5 kB view hashes)

Uploaded Python 3

Supported by

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