Our Solution
back

For our project we decided to implement the phase vocoder algorithm.  This algorithm times-scales a signal to r times faster by:
  1. Windowing the signal
  2. Performing Short-Time Fourier Transform (STFT)
  3. Time-scaling in the frequency domain
  4. Inverse STFT

Then the signal is resampled at r times the original sample rate.

Reference:
http://www.ee.columbia.edu/~dpwe/resources/matlab/pvoc/

The Matlab code from this page was used to create the phase vocoder.
 

Example:

Below is a figure showing the speech signal of the vowel 'eee'.  The blue signal is the original speech.  The red signal is pitch shifted up 50% and the green signal is pitch shifted down 50%.  This figure shows that the duration of the original signal is maintained after pitch shifting.
 
Shifted Up 50%
Original Signal
Shifted Down 50%


Zooming in on the above picture over a time period shows the fundamental frequencies of the above signals.  It can be seen that the signal shifted up 50% has a fundamental frequency twice that of the original signal while the signal shifted down 50% has a fundamental frequency half that of the original signal.

Shifted Up 50%
Original Signal
Shifted Down 50%

 

Matlab GUI

Here is a screen shot of our Matlab GUI.  Our program allows the user to record or load a speech signal and pitch shift it within a range of 50-150% of the original signal.  The user can then playback the pitch shifted signal.

[INSERT IMAGE]

The interactivity of our solution differs from other programs.  Our program allows the user to pitch shift the signal up to three different scale factors and playback up to three different scale factors plus the original signal.  Additionally the user can record a new speech signal and pitch shift it, or load a previously recorded sound file.

Files:
Click here to download a zip file containing our Matlab code and GUI for Matlab 2006.

Click here to download a zip file containing our Matlab code and a different version of our GUI for Matlab 6.5.  This GUI does not allow the loading of pre-recorded speech files.

Reference:
http://www.ee.columbia.edu/~dpwe/resources/matlab/pvoc/

The Matlab code from this page was used to create the phase vocoder.