Introduction
In this project, we investigated the possibility of using signal processing to correct the pitch of the human voice. For instance, if a karaoke singer went out of tune, could we correct the error while still retaining the fundamental sound of the voice?
Background
Correcting pitch is an extremely complex problem. First, the input signal must be analyzed to accurately determine the fundamental frequency of the voice, this frequency must be compared with allowable notes, and then an algorithm must shift the original frequency by some amount such that the resulting frequency is a recognized note on some musical scale. All of this must happen without corrupting the quality of the voice that makes it specific to that singer, without changing its the timbre. We must also be careful not to introduce phase errors in the output, as this would add a "distance" or "reverberation" effect that is usually undesirable. We would also like the output to be as smooth as possible, in the sense that transitions between notes sound natural as opposed to "forced" by the computer.
Approach
Our approach to this problem consisted of several tactics. First, we divided the algorithms into two sets, those that detect pitch and those that correct it. Next, we researched known methods to perform each of these, and attempted to implement them using MATLAB. Last, we connected the two halves our system with a "note chooser" which takes a set of detected pitches and decides which note the singer was trying to hit, and sends this as input into the correction system. A description of these methods can be found in the related modules, as well as a tabulation of our results.







Examples

"assafdf"