[問題]如何改變fft後的頻譜圖再做ifft
各位高手大家好,第一次發文,如果有需要修正的地方請指教。
小弟目前在做一個實驗,是先讀進一個聲音檔,然後我想要改變它的聲音,
於是我的想法是這樣,先將聲音做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);
拜託各位了!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.236.252.35
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1529294157.A.CD1.html
→
06/18 11:59,
6年前
, 1F
06/18 11:59, 1F
推
06/19 07:39,
6年前
, 2F
06/19 07:39, 2F
→
06/19 12:02,
6年前
, 3F
06/19 12:02, 3F
推
06/22 23:47,
6年前
, 4F
06/22 23:47, 4F
推
06/23 00:00,
6年前
, 5F
06/23 00:00, 5F
→
06/23 00:00,
6年前
, 6F
06/23 00:00, 6F
→
06/23 00:00,
6年前
, 7F
06/23 00:00, 7F
→
06/26 01:40,
6年前
, 8F
06/26 01:40, 8F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章