各位高手大家好,第一次發文,如果有需要修正的地方請指教。
小弟目前在做一個實驗,是先讀進一個聲音檔,然後我想要改變它的聲音,
於是我的想法是這樣,先將聲音做fft然後移動它的頻率,在ifft回來。譬如把比較高的
頻率移到低一點,這樣聲音就能降低。
因為我不是要做單純的聲音頻率調高低,希望透過傅立葉轉換找到聲音的特徵
來改變聲音。
目前沒有成功,我改變完後聲音沒有變,覺得是我程式寫錯,或是觀念錯了,
希望大家可以幫忙。
附上我的程式碼:
[y hz ] = wavread('female_b.wav');%路徑我就沒附了
y = y(1 : 1 : length(y));
L = length(y) ;
S=fft(y,L);
for i=1:L/2 %將大於800強度的頻率移到-250頻率的地方,因為頻譜是對稱的,做兩邊
if(abs(S(i))>800)
S(i-250)=S(i);
S(L-i+250)=S(i);
S(L-i)=0.001;
S(i)=0.001;
end
end
y2=ifft(S);
filename='output.wav';%不能夠直接播放y2,所以寫了一個新檔
audiowrite(filename,y2,hz);
[y3 hz ] = wavread('output.wav');%一樣沒附路徑
sound(y3,hz);
拜託各位了!