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 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 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.

The Software (Updated)

If you're interested in giving it a try on your own audio, a command line executable can be easily built for Windows, MacOS or Linux using the instructions on github here.

The command line usage is quite simple. For example, to stretch the audio to twice as long use the following options:

 PhaseVocoder --input inputfile.wav --output outputfile.wav --stretch 2.0

For command line usage please use the '--help' option. For extended help and additional usage examples please use '--longhelp'.

Also, please note that the Phase Vocoder currently only accepts mono (single channel) 16 bit uncompressed wave files as input.

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++

Previous Next