[問題]如何改變fft後的頻譜圖再做ifft

作者: Kanamehomura (ほむら)   2018-06-18 11:55:36
各位高手大家好,第一次發文,如果有需要修正的地方請指教。
小弟目前在做一個實驗,是先讀進一個聲音檔,然後我想要改變它的聲音,
於是我的想法是這樣,先將聲音做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);
拜託各位了!
作者: Kanamehomura (ほむら)   2018-06-18 11:59:00
不好意思 !我可能晚上才能回各位
作者: bennyhuang97 (巴克爺爺)   2018-06-19 07:39:00
做完fft還要fftshift才能夠得到對稱的頻譜吧(?
作者: Kanamehomura (ほむら)   2018-06-19 12:02:00
fftshift不是左右交換而已嗎?還是要換完再改?
作者: superemery (大太陽)   2018-06-22 23:47:00
實數fft是共軛對稱,對稱的位置是floor(L/2)+1應該判斷奇偶數先找到對稱位置後再做共軛對稱,雖然不知道你想做什麼處理,但總覺得拿一整段語音訊號做fft好像怪怪的......
作者: Kanamehomura (ほむら)   2018-06-26 01:40:00
聲音做fft是得到頻譜

Links booklink

Contact Us: admin [ a t ] ucptt.com