~ Audio Time Stretching - Implementation in Pure Java Using WSOLA
» By Joren on Monday 06 February 2012The DSP library for Taros, aptly named TarsosDSP, now includes an implementation of a time stretching algorithm. The goal of time stretching is to change the duration of a piece of audio without affecting the pitch. The algorithm implemented is described in An Overlap-add Technique Based On Waveform Similarity (WSOLA) for High Quality Time-Scale Modification of Speech.
To test the application, download and execute the WSOLA jar file and load an audio file. For the moment only 44.1kHz mono wav is allowed. To get started you can try this piece of audio.
There is also a command line interface, the following command doubles the speed of in.wav
:
java -jar TimeStretch.jar in.wav out.wav 2.0
_______ _____ _____ _____ |__ __| | __ \ / ____| __ \ | | __ _ _ __ ___ ___ ___| | | | (___ | |__) | | |/ _` | '__/ __|/ _ \/ __| | | |\___ \| ___/ | | (_| | | \__ \ (_) \__ \ |__| |____) | | |_|\__,_|_| |___/\___/|___/_____/|_____/|_| ---------------------------------------------------- Name: TarsosDSP Time stretch utility. ---------------------------------------------------- Synopsis: java -jar TimeStretch.jar source.wav target.wav factor ---------------------------------------------------- Description: Change the play back speed of audio without changing the pitch. source.wav A readable, mono wav file. target.wav Target location for the time stretched file. factor Time stretching factor: 2.0 means double the length, 0.5 half. 1.0 is no change.
The source code of the Java implementation of WSOLA can be found on the TarsosDSP github page.