各位高手大家好,第一次发文,如果有需要修正的地方请指教。
小弟目前在做一个实验,是先读进一个声音档,然后我想要改变它的声音,
于是我的想法是这样,先将声音做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);
拜托各位了!