Skip to main content

Audio reader and writer using sox for bob and python

Project description

This package is a simple Python wrapper to read and write functionalities in Sox <http://sox.sourceforge.net>. The github version can be found here: https://github.com/bioidiap/xbob.sox

Installation

You can just add a dependence for xbob.sox on your setup.py to automatically download and have this package available at your satellite package. This works well if Bob is installed centrally at your machine. If not done, you need also to install bob-dev.

On ubuntu, you need something like:

$ sudo apt-get install bob bob-dev sox libsox-dev

On Mac OSX, you need something like:

$ sudo port install bob bob-dev sox libsox-dev

Otherwise, you will need to tell buildout how to build the package locally and how to find Bob. For that, just add a recipe to your buildout that will fetch the package and compile it locally, setting the buildout variable prefixes to where Bob is installed (a build directory will also work). For example:

[buildout]
parts = xbob.sox <other parts here...>
prefixes = /Users/elie/work/bob/build/debug
...

[xbob.sox]
recipe = xbob.buildout:develop

...

Development

To develop these bindings, you will need the open-source libraries Bob and Sox installed somewhere. This satellite package was tested with Bob version 1.2.x, and Sox version 14.3.x and 14.4.x, and on OSX and UBUNTU 10.x and 12.x. If you have compiled Bob and Sox yourself and installed it on a non-standard location, you will need to note down the path leading to the root of that installation.

Just type:

$ python bootstrap.py
$ ./bin/buildout

If Bob is installed in a non-standard location, edit the file buildout.cfg to set the root to Bob’s local installation path. Remember to use the same python interpreter that was used to compile Bob, then execute the same steps as above.

Usage

To read, just do something like:

import xbob.sox
infilename='xbob/sox/data/sample1.sph'
audio = xbob.sox.reader(infilename)
(rate, data) = audio.load()
print rate
print data

This allows to read more wave formats than scipy.io.wavfile module. The output data are the same as for the MATLAB wavread function, and comparable with scipy.io.wavfile module (just multiplied by 2^15). Unit-tests to compare the 3 implementations are available. Just run:

$ bin/nosetests -vs

To write, do something like:

outfilename='out.wav'
writer=xbob.sox.writer(outfilename, rate)
writer.save(data)

The xbob.sox.writer method accepts more parameters to optionally select the codec and the number of bits per sample (if the codec allows). Please refer to its built-in. By default, it uses the default codec and bits per sample that are associated with the extension of the file.

Supported Encoding and Extensions

Encodings:

SIGN2, UNSIGNED, FLOAT, FLOAT_TEXT, FLAC, HCOM, WAVPACK, WAVPACKF, ULAW, ALAW, G721, G723, CL_ADPCM, CL_ADPCM16, MS_ADPCM, IMA_ADPCM, OKI_ADPCM, DPCM, DWVW, DWVWN, GSM, MP3, VORBIS, AMR_WB, AMR_NB, CVSD, LPC10.

Extensions:

.voc, .smp, .wve, .gsrt, .amr-wb, .prc, .sph, .amr-nb, .txw, .sndt, .vorbis, .speex, .hcom, .wav, .aiff, .aifc, .8svx, .maud, .xa, .au, .flac, .avr, .caf, .wv, .paf, .sf, .sox.

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

xbob.sox-1.1.0.zip (450.4 kB view hashes)

Uploaded Source

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