pysox
Python wrapper around sox. Read the Docs here.
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.
Install
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+https://github.com/rabitt/pysox.git
or
git clone https://github.com/rabitt/pysox.git
cd pysox
python setup.py install
Tests
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 .
Examples
import sox
# create transformer
tfm = sox.Transformer()
# trim the audio between 5 and 10.5 seconds.
tfm.trim(5, 10.5)
# apply compression
tfm.compand()
# apply a fade in and fade out
tfm.fade(fade_in_len=1.0, fade_out_len=0.5)
# create the output file.
tfm.build('path/to/input_audio.wav', 'path/to/output/audio.aiff')
# see the applied effects
tfm.effects_log
> ['trim', 'compand', 'fade']
Concatenate 3 audio files:
import sox
# create combiner
cbn = sox.Combiner()
# pitch shift combined audio up 3 semitones
cbn.pitch(3.0)
# convert output to 8000 Hz stereo
cbn.convert(samplerate=8000, n_channels=2)
# create the output file
cbn.build(
['input1.wav', 'input2.wav', 'input3.wav'], 'output.wav', 'concatenate'
)