My Awesome Phase Vocoder

I've been spending a good amount of time lately working on a phase vocoder. A phase vocoder can be used to stretch or compress the time length of audio without changing the pitch. It's a common technique used in music production.

STM32F411 Discovery Board

I have an early working demo version that I've created in C++ that I think sounds quite good. The following short snippets of audio demonstrate the quality. Each sound has three different audio samples: The original sound, followed with an example of the sound stretched and an example of the sound compressed, both created with my phase vocoder.

00:00
00:00
Back
Play
Forward


The stretch and compress values applied to the above sounds vary. For example, the cello is stretched to 150% of the original audio and compressed to 50%, the trumpet to 140%/40%, and the synth to 200%/50% respectively.

The basic process consists of taking a short duration of audio, converting it to the frequency domain and calculating new "stretched" or "compressed" phase values. Once the new phases are calculated, the frequency information is converted back to the time domain resulting in a new output signal. An in depth explanation of how my phase vocoder works can be found on github here.

If you're interested in the code or using my phase vocoder, it can be found on github here. It's a command line tool that can be easily built for Windows, MacOS or Linux.

Author: Terence Darwen
Date: February 14th, 2017