I'm looking to implement a time-domain pitch modification algorithm such as PSOLA (Pitch Synchronous Overlap and Add) or WSOLA (Waveform Similarity Overlap and Add).

At the moment I'm using PSOLA, but it seems to me that WSOLA would be more robust to polyphonic signals with complex waveforms, whereas PSOLA works better with monophonic signals such as vocals. I feel it could be better to future-proof by using WSOLA, even though I'm only interested in monophonic signals for now.

I'm wondering if there is any disadvantage to using WSOLA as opposed to PSOLA.

It seems both techniques work in a similar fashion, both identifying repetition within the waveform, although WSOLA does not necessarily lock to the fundamental. Does fundamental locking make PSOLA superior for vocals?

To be more precise, I'm trying to work out the advantages and disadvantages of WSOLA vs PSOLA for the following tasks:

  1. Pitch correction
  2. Time correction
  3. Formant correction

3 Answers 3


To be more precise, I'm trying to work out the advantages and disadvantages of WSOLA vs PSOLA for the following tasks:

Pitch correction:

  • PSOLA - Advantages you can change the pitch directly based in the rate space between grains, keep formants intacts... to change the pitch you not need time scale and resample after.
  • PSOLA - Disadvantage do you need a super power pitch detector
  • WSOLA - Disadvantage WSOLA is not one Pitch Shift algorithm, WSOLA is one Time Scale algorithm, to change the pitch do will need time scale and them resample, the formants will be lost, so you just maybe need one kind of autocorrelation to find nice places to slice, so it is not the same as Pitch information, if are you building an Automatic Pitch Correction one basic autocorrelation will not give to you the correct Pitch Information.
  • WSOLA - one advantages here is that it is not Pitch dependent to slice, just slice in the best match similarity, remember it is just one time scale algorithm, you will need resample to change the pitch

Time correction:

For time scale I think the WSOLA have best advantage here or some TDHS based algortihm, yeahh you can use PSOLA to time scale and apply pitch shift together, just pitch shift or just time scale , but if are you just time scaling, WSOLA is one smart choice, no need build an Ultra Pitch Detector in WSOLA, just one wave form similariry will solve your problem (AutoCorrelation can solve ...)

Formant correction:

  • PSOLA - by default formants will be untouchable, but you can warp the formants too, it is amazing in PSOLA ...
  • WSOLA - after Time scale and resample your formants will be lost and to get the original formants you will need get the formants in the spectral envelope from original signal and apply it in the Pitch Shifted signal, you can do it using an low pass filter in the spectral, use a peak picking and interpolate or use a cepstrum to get the envelope ...

I know that PSOLA is infinitely more complex, but I consider this algorithm really great, if you have a decent PitchTrack it will give you great versatility

  • $\begingroup$ Thank you for this information, this is a lot of help to me! $\endgroup$ Aug 17, 2020 at 5:38

I think that you're correct that WSOLA is better for polyphonic, but there are still glitches in that method. The reason why it's a little better is because the pitch detection algorithm is only looking for good splice displacements. If it's a octave off, that doesn't hurt you so bad because the splice is still good. However, if pitch shifting a non-harmonic chord of notes (say a diminished chord), then there will be no good splice displacements, so you end up picking the one that is least bad.

Now PSOLA requires knowing exactly the pitch and octave errors will sound like octave errors. But that is the pitch shifting method you want for vocals and the paper I am pointing to explains why.

But time scaling is not exactly pitch shifting. When time scaling anything, including vocals, don't use PSOLA. Use either WSOLA or a frequency-domain method like a phase vocoder.

  • $\begingroup$ Yes, I was trying out an STFT for time scaling and pitch stretching, although it can be tricky to keep the formants sounding realistic. Thank you for this information! $\endgroup$ Aug 17, 2020 at 5:39
  • $\begingroup$ I was wondering what you mean by this: "When time scaling anything...don't use PSOLA. Use either WSOLA..." The similar parts of a speech waveform are the repeated vocal impulses, which are detected by PSOLA because they determine the pitch. How would WSOLA give different results to PSOLA? $\endgroup$ Jul 20, 2021 at 10:29
  • $\begingroup$ Hay @MysteryPancake , for some reason I hadn't noticed these two comment/questions from you before. Sorry. it's 2 or 3 years later. Still want me to discuss this? $\endgroup$ Mar 10, 2023 at 16:07
  • $\begingroup$ Hi, I would be interested to know what you think about it $\endgroup$ Mar 31 at 4:11
  • 1
    $\begingroup$ The PSOLA I mean is for formant-preserving pitch shifting. So the little grains or wavelets that are windowed off of the original input are neither stretched nor scrunched. They are just overlapped and repeated at the new fundamental frequency. But for time-scaling, you don't want to take this kind of pitch-shifted output and resample it to get back to the original pitch, because that will shift the formants. $\endgroup$ Mar 31 at 4:25

I took a first look at PSOLA algorithm and I understood that it only changed fundamental frequency by displacing whole periods of the signal. Am I missing something?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.