How to change the pitch of a signal?

1 visualizzazione (ultimi 30 giorni)
i Venky
i Venky il 11 Ott 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?

Risposte (3)

Walter Roberson
Walter Roberson il 11 Ott 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 il 12 Ott 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 il 12 Ott 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');

Categorie

Scopri di più su Simulation, Tuning, and Visualization in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by