[问题]如何改变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