How to change the pitch of a signal?

12 views (last 30 days)
i Venky
i Venky on 11 Oct 2011
I think you might have seen Tom Cat apps of Iphone. In that it will speak what you speak but in a different pitch. How to change the pitch of the signal using matlab?

Answers (3)

Walter Roberson
Walter Roberson on 11 Oct 2011
fft(). Skip the first point (the DC offset), extract the values from there to the first quarter of the plot, and interweave before each one of them and write that back over the first half of the plot (so each each frequency that was in slot #N is now in slot #2N. Do the same thing but backwards working from the right-most part of the fft. Now fft() the result back.
In theory everything in the first half of the frequencies will have doubled in frequency (gone up an octave) and the second half of the frequencies will have been doubled out of existence. Que sera.

i Venky
i Venky on 12 Oct 2011
I tried it but there doesn't seem to be any change in the pitch. Instead it was very fast and it played two times instead of one.
Is it possible for me to upload the .au file in this forum? If so I could show you.

i Venky
i Venky on 12 Oct 2011
If possible provide me the code. Here's my code
load handel.mat
k=ifft(y);
k1=k(1:length(k)/4);
k2=k(3*length(k)/4:length(k));
k3=0;
for i=1:length(k1)
k3(2*i)=k1(i);
end
for i=1:length(k2)
k4(length(k3)+1+2*i-2)=k2(i);
end
k3(length(k3)+1:length(k4))=0;
k5=k3+k4;
k5(2)=0; %Made the dc component to be equal to zero.
y2=ifft(k5);
auwrite(y2,'newfile');

Categories

Find more on MATLAB Mobile in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!