The PSOLA Algorithm

After researching a few different approaches to pitch correction, I decided to use the pitch synchronous overlap and add (PSOLA) method for attenuating the audio signals for my device.

 

PSOLA works by lengthening or shortening the input waveform on a very small scale. First, the original signal is analyzed using a pitch detection algorithm. The signal is then broken down by marks separated in intervals equal to the period length.  New markers are then created based on the desired pitch shift. To increase the pitch, the segments are moved closer together. To decrease the pitch, they are moved further apart. A more in depth description of the approach is below.

Step by Step Approach:

1. First, we analyze the input audio signal to find the time indices of each pitch. This is found at the maximum peak amplitude. The distance between each time indices is called the pitch period.

Pitch Markings

2. Next, we use the overlap and add method by taking segments equal to 2 pitch periods and centered at each pitch mark.

Pitch Segments

3. Then, we over and add the segments, either expanding or contracting the length of the signal depending on whether we are increasing or decreasing the pitch. We will also need to create new pitch marks or remove superfluous.

PSOLA

4. Now all that is left to do is scale the new signal so that it is the same length as the original. This will effectively create an output that is the same length as the original, but has a different pitch.

New v Old

The Autotuner: A Real-Time Pitch Correction Device

Welcome to my senior project page. My name is Michael Krakower and I am a computer engineering student at The College of New Jersey. I am currently working solo on an autotuner, a piece of hardware which will take a human voice as audio input and return a pitch corrected version of the vocal signal. The device will be built using a Raspberry Pi on Raspbian. The overall goals of this product include building a device to professional standards with the ability to return a pitch corrected signal in real-time, which I have specified as less than 100 ms total processing time. My next update will go into the algorithm I will be using, the Pitch Synchronous OverLap and Add method, or PSOLA.