Phase Vocoder w/Transient Handling (Audio Examples and Free Software Download)

I've improved my transient detection algorithm (original version described here) and have now included it in my Phase Vocoder application (original version of my Phase Vocoder described here). I'm pretty happy with the quality. Here's an audio example:


As mentioned in my previous blog post, phase vocoders are frequently used in popular audio production software and various other audio apps. For example, audio mixing software will use them for beatmatching tracks, and I'm aware of some phone apps using them to allow for speeding up podcasts so they can be listened to faster.

Wikipedia has a pretty good description of how a phase vocoder generally works (here). As mentioned in my earlier blog post about detecting audio transients, it's key to properly handle audio transients to get good results. Here's an example comparing audio that properly handles transients to audio which ignores transients:


Unfortunately, transient detection algorithms have their shortcomings. It's not always clear what is (and what is not) a transient when analyzing audio. It can frequently be debatable between listeners what qualifies as a transient.

Because of this, I've added a feature to my Phase Vocoder allowing the user to specify sample positions in the input audio where transients exist. The details of this are included in the usage of the program (download links below).

Here are some additional audio samples that were processed with my Phase Vocoder. You'll first hear the original audio sample unaltered, and then you'll hear the same audio processed with my Phase Vocoder increasing or decreasing the original tempo.


Download Link to the Software

If you're interested in giving it a try on your own audio, I have a command line executable that should work for all Intel 64 bit Windows, OS X and Debian-based Linux systems. Download links:

Note that these are just zipped executables (not an installer). The command line usage is quite simple:

 CommandLinePhaseVocoder -input inputfile.wav -output outputfile.wav -stretch stretchfactor

For extended help on how to see transient positions and use a transient config file please use '-longhelp'.

Also, please note there are currently a few limitations to be aware of:
  • Currently supports mono (single channel) 16 bit uncompressed wave files only.
  • Currently designed for "short" wave files (as in, under ~30 seconds).
Date: April 19th, 2017 at 4:42pm
Author: Terence Darwen
Tags: Audio Software, Cross-Platform Development, Phase Vocoder, Transient Detection, Digital Signal Processing, DSP, C++, Sabbatical

Previous Next