Skip to main content

Fast reading of all kind of audio files

Project description

Test status code coverage audiofile's documentation audiofile's supported Python versions audiofile's MIT license

The Python package audiofile handles all kind of audio files with a focus on reading speed.

It can read and request information on channels, duration, number of samples and sampling rate for all files that are supported by ffmpeg, sox, and mediainfo. In addition, it can write WAV, FLAC, and OGG files.

Have a look at the installation and usage instructions as a starting point.

Code example for reading a file:

import audiofile

signal, sampling_rate = audiofile.read('signal.wav')

Under the hood it uses soundfile to read the audio files, converting non-supported formats first to WAV files. The same approach is applied when requesting duration for formats that need to be decoded to ensure that duration and number of samples match.

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Version 1.2.1 (2023-02-13)

  • Fixed: missing pytest requirement in docs/requirements.txt

Version 1.2.0 (2023-02-13)

  • Added: normalize argument to audiofile.convert_to_wav()

  • Added: bit_depth argument to audiofile.convert_to_wav()

  • Added: overwrite argument to audiofile.convert_to_wav()

  • Added: examples to the API documentation

  • Added: example how to use audresample.resample() and audresample.remix() in the API documentation of audiofile.read()

  • Added: the arguments duration and offset of audiofile.read() and audiofile.convert_to_wav() can be specified in different units or samples and most other formats supported by audmath.duration_in_seconds()

  • Added: the arguments duration and offset of audiofile.read() and audiofile.convert_to_wav() support negative values

  • Changed: if no output path is provided to audiofile.convert_to_wav(), it is derived from the input path by replacing the file extension with 'wav'

  • Fixed: ensure audiofile.convert_to_wav() creates identical result as calling audiofile.read() followed by audiofile.write()

  • Fixed: support for non WAV, FLAC, OGG files like MKA or MP4 on Windows network shares

Version 1.1.1 (2022-12-22)

  • Added: support for Python 3.11

  • Added: support for Python 3.10

  • Changed: split API documentation into sub-pages for each function

  • Removed: dependency on pysox

Version 1.1.0 (2022-04-14)

  • Changed: use ffmpeg or mediainfo if sox binary is missing instead of raising an error

  • Changed: improve FileNotFoundError message when ffmpeg or mediainfo are required, but not installed

  • Fixed: always raise RuntimeError for broken files or missing files

  • Fixed: mention expected FileNotFoundError when ffmpeg or mediainfo are required, but not installed

  • Fixed: use soundfile for converting WAV, FLAC, OGG files with audiofile.convert_to_wav()

Version 1.0.3 (2022-01-03)

  • Removed: Python 3.6 support

Version 1.0.2 (2021-12-06)

  • Fixed: raise RuntimeError for broken or empty non SND files

Version 1.0.1 (2021-10-28)

  • Fixed: audiofile.duration() returns now 0.0 for an empty WAV file with wrong file extension instead of None

Version 1.0.0 (2021-08-05)

  • Added: support for Python 3.9

  • Added: tests for Windows

  • Added: tests for macOS

  • Added: sloppy argument to audiofile.duration() for faster processing of non SND formats

  • Changed: audiofile.write() raises RuntimeError instead of SystemExit

  • Changed: added sloppy=True results when accessing metadata of MP3 and MP4 files in the benchmarks

  • Removed: deprecated precision argument from audiofile.write()

Version 0.4.3 (2021-07-30)

  • Fixed: make dtype keyword argument available in audiofile.read()

Version 0.4.2 (2021-04-26)

  • Fixed: allow for duration=0.0 in audiofile.read()

Version 0.4.1 (2020-12-17)

  • Added: bit_depth to usage section of documentation

  • Fixed: handling of file names that include ~ or .. by using audeer.safe_path

Version 0.4.0 (2020-11-26)

  • Added audiofile.bit_depth() which returns bit depth of WAV and FLAC files

  • Added: bit_depth argument to audiofile.write()

  • Deprecated: precision argument of audiofile.write(), use bit_depth instead

Version 0.3.4 (2020-10-29)

  • Fixed: several typos in the documentation

Version 0.3.3 (2020-10-29)

  • Added: more tests to increase code coverage to 100%

  • Added: link to benchmark page in README

  • Changed: tests now require 100% code coverage

Version 0.3.2 (2020-10-29)

  • Added: benchmark results page in docs

  • Fixed: multi-line release changelogs on Github

  • Fixed: copy-button for bash examples

Version 0.3.1 (2020-10-27)

  • Fixed: missing dependencies for publishing documentation

Version 0.3.0 (2020-10-27)

  • Changed: use audiofile.core structure under the hood

  • Changed: use Github Actions for tests

  • Changed: use Github Actions for automatic publishing

  • Changed: host documentation as Github pages

  • Removed: support for Python 2.7

Version 0.2.4 (2020-08-31)

  • Fixed: CHANGELOG format for PyPI server

Version 0.2.3 (2020-08-31)

  • Fixed: catch SoxiError in audiofile.read()

  • Fixed: test for more advanced audio files like OPUS, AMR, …

Version 0.2.2 (2019-10-04)

  • Changed: switch to keep a changelog format

  • Changed: define package in setup.cfg

Version 0.2.1 (2019-05-02)

  • Fixed: module only package

Version 0.2.0 (2019-05-02)

  • Changed: improve documentation

  • Changed: switch to single audiofile.py module

  • Fixed: skip tests if download fails

Version 0.1.3 (2019-03-27)

  • Fixed: metadata samples and duration for MP3 files

Version 0.1.2 (2019-03-25)

  • Fixed: metadata for pypi.org

Version 0.1.1 (2019-03-25)

  • Fixed: license statement in PyPI package

Version 0.1.0 (2019-03-25)

  • Added: First public release

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

audiofile-1.2.1.tar.gz (1.1 MB view hashes)

Uploaded Source

Built Distribution

audiofile-1.2.1-py3-none-any.whl (14.4 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