Introduction to the ELEC 301 Project on pitch detection and correction for the solo human voice.
Introduction
Team Members: Danielle Eveslage, Brian Johnston, Ann Lu, Gareth Middleton, Xiaoming Yin
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.
Division of labor
It should be noted that because this was a group project, we all contributed to multiple parts of the overall development, without confining ourselves to just one section. In this way, we were able to help each other (tackle problems with"fresh eyes") and also learn more about the overall project. As such, the classifications below are meant only as a guide and do not fully represent the contributions of each of us. We were all equally involved in developing the project as it went forward, since each part is closely related to the others. When it came time to produce our poster and website, we again worked together. It is difficult to classify our contributions, so this is only a guide:
Danielle eveslage
Researched&implemented the PSOLA pitch correction algorithm, wrote a description of this algorithm for the website, summarized the algorithm for the poster, generated graphs explaining its operation for both poster and website, created demonstrations of the final system.
Brian johnston
Generated project idea and performed introductory research; Researched&implemented the Modified Phase Vocoder pitch correction algorithm, wrote a description of this algorithm for the website and provided accompanying graphs, summarized the method for the poster presentation, created demonstrations of the final pitch correction system.
Ann lu
Researched&implemented the HPS pitch detection algorithm, created poster design for the presentation, wrote a description of the HPS for the website, created graphs explaining the method, itemized the key points of HPS for the poster, created demonstrations of the final system.
Gareth middleton
Researched&implemented the FAST-Autocorrelation pitch detection algorithm, created the "pitch rounding" algorithm, wrote a description of the FAST-Autocorrelation for the website, created points and graphs explaining the procedure for the poster, created the project website on Connexions.
Xiaoming yin
Researched&implemented Time Shifting algorithm, created overall poster content for the presentation, wrote a description of the Time Shifting algorithm for the website, itemized key points of Time Shifting for the poster, generated graphs of Time Shifting, tested and verified the overall operation of the Time Shift algorithm.