cross-library (GStreamer + Core Audio + MAD + FFmpeg) audio decoding for Python

Decode audio files using whichever backend is available. The library currently supports:

  • Gstreamer via PyGObject.
  • Core Audio on Mac OS X via ctypes. (PyObjC not required.)
  • MAD via the pymad bindings.
  • FFmpeg or Libav via its command-line interface.
  • The standard library wave, aifc, and sunau modules (for uncompressed audio formats).

Use the library like so::

with audioread.audio_open(filename) as f:
    print(f.channels, f.samplerate, f.duration)
    for buf in f:

Buffers in the file can be accessed by iterating over the object returned from
audio_open. Each buffer is a bytes-like object (buffer, bytes, or
bytearray) containing raw 16-bit little-endian signed integer PCM
. (Currently, these PCM format parameters are not configurable, but this
could be added to most of the backends.)

Additional values are available as fields on the audio file object:

  • channels is the number of audio channels (an integer).
  • samplerate is given in Hz (an integer).
  • duration is the length of the audio in seconds (a float).

The audio_open function transparently selects a backend that can read the
file. (Each backend is implemented in a module inside the audioread
package.) If no backends succeed in opening the file, a DecodeError
exception is raised. This exception is only used when the file type is
unsupported by the backends; if the file doesn't exist, a standard IOError
will be raised.

Audioread is "universal" and supports both Python 2 (2.6+) and Python 3