Python wrapper around sox.
Switch branches/tags
Nothing to show
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs changelog for v1.3.0 May 29, 2017
sox bump version Jul 27, 2018
tests Fixes #79 Jul 27, 2018
.gitignore test audio files May 10, 2016
.travis.yml hacky workaround Jul 18, 2016
LICENSE Initial commit May 1, 2016 bump version, fix pip install Jul 13, 2016 Merge pull request #69 from mpuels/patch-1 Jul 25, 2018
setup.cfg bump version, fix pip install Jul 13, 2016 update license in (MIT -> BSD-3-Clause) Jul 25, 2018


Python wrapper around sox. Read the Docs here.

PyPI version Documentation Status GitHub license PyPI

Build Status Coverage Status


This library was presented in the following paper:

R. M. Bittner, E. J. Humphrey and J. P. Bello, "pysox: Leveraging the Audio Signal Processing Power of SoX in Python", in Proceedings of the 17th International Society for Music Information Retrieval Conference Late Breaking and Demo Papers, New York City, USA, Aug. 2016.


This requires that SoX version 14.4.2 or higher is installed.

To install SoX on Mac with Homebrew:

brew install sox

If you want support for mp3, flac, or ogg files, add the following flags:

brew install sox --with-lame --with-flac --with-libvorbis

on Linux:

apt-get install sox

or install from source.

To install the most up to date release of this module via PyPi:

pip install sox

To install the master branch:

pip install git+


git clone
cd pysox
python install


If you have a different version of SoX installed, it's recommended that you run the tests locally to make sure everything behaves as expected:

cd tests
nosetests .


import sox
# create transformer
tfm = sox.Transformer()
# trim the audio between 5 and 10.5 seconds.
tfm.trim(5, 10.5)
# apply compression
# apply a fade in and fade out
tfm.fade(fade_in_len=1.0, fade_out_len=0.5)
# create the output file.'path/to/input_audio.wav', 'path/to/output/audio.aiff')
# see the applied effects
> ['trim', 'compand', 'fade']

Concatenate 3 audio files:

import sox
# create combiner
cbn = sox.Combiner()
# pitch shift combined audio up 3 semitones
# convert output to 8000 Hz stereo
cbn.convert(samplerate=8000, channels=2)
# create the output file
    ['input1.wav', 'input2.wav', 'input3.wav'], 'output.wav', 'concatenate'