130 likes | 353 Views
Phase Vocoder Implementation and Applications. Gerald Leung. Topics of Discussion. Implementation Goal of Phase Vocoder Spectral Analysis and Manipulation Matlab Implementation Result Discussion and Conclusion. Spectral Manipulation. Time Stretch
E N D
Phase VocoderImplementation and Applications Gerald Leung
Topics of Discussion • Implementation Goal of Phase Vocoder • Spectral Analysis and Manipulation • Matlab Implementation • Result Discussion and Conclusion
Spectral Manipulation • Time Stretch • Unwrap phase and calculate the Magnitude and Phase increment per sample in analysis grid • Interpolate the synthesis phase response using phase increments calculated from analysis grid in previous step • Re-construct the audio signal using a weighted sum of cosine functions using the interpolated synthesized magnitude and phase as cosine parameters • *** IFFT Operation ***
Signal Reconstruction • FFT of a window function is represented as a series of Sine and Cosine Functions http://zone.ni.com/devzone/cda/tut/p/id/3342
Signal Reconstruction • Given the interpolated phase and magnitude, we can re-construct the signal from frequency domain for each window segment • Overlap add the interpolated window segment using the same hope size window in the analysis grid
Pitch Shift • Similar Concept as Time Stretching • Take FFT of each window segment and calculate the magnitude and phase increment per sample (FFT bin) • Multiply the phase increment by a transposition factor • Interpolate the synthesis signal using transposed phase increments from previous step • Re-construct the signal from the frequency domain using weighted sum of cosine functions with interpolated phase and magnitude as parameters
Robotization • Zero-phase every FFT bin • Take the IFFT of the magnitude of FFT bin for signal re-construction
Whisperization • Same concept as Robotization • Randomize the phase instead
Denoise • Maintain loud parts of the signal • Attenuate low parts of the signal • Modify the magnitude, maintain the phase grain = in_signal(pin+1:pin+WLen).*w1; f = fft(grain); r = abs(f); ft = f.*r.^2./(r+coef);
Discussion on Results • Not Completely free of artifact free • Mathematically impossible to express the exact spectrum • Phasiness, reverbation etc
Discussion of Results • Large windows causes “smearing” effect • Smaller windows • Less frequency resolution • Minimum frequency is more restricted • Less bass