Matlab中Filter Builder的使用(以濾除音樂中的人聲爲例)

Matlab中Filter Builder的使用(以濾除音樂中的人聲爲例)

以matlab2017a爲例
先設計一個帶通濾波器,修改如下參數爲

Input sample rate 爲信號採樣率,可以通過右上角按鈕看濾波器通帶
確定之後就會生成一個Hbs濾波函數

這樣既可以調用該函數
代碼如下
[y,Fs] = audioread('01_1.wav');    %[y,Fs] = audioread(filename) y爲音頻數據,Fs爲採樣率
t=0:1/Fs:(size(y)-1)/Fs;           
f=Fs*(0:4095)/4096;
y1=fft(y,4096);
fz=abs(y1(1:4096));     %取y1前2048個構成一維數組
figure(1);
plot(f,fz);
title('濾波前的頻譜')
xlabel('Hz');
ylabel('fuzhi');
axis([0,5000,0,90]);
pks=findpeaks(fz);       
[b,c]=sort(pks,'descend');%對fz值進行排列 
wz1=find(fz==b(1));
wz2=find(fz==b(2));
wz3=find(fz==b(3));
F1=wz1/4096*Fs; %找出幅度最大時對應的頻率的值,濾除該值
F2=wz2/4096*Fs;
F3=wz3/4096*Fs;
fil_1=filter(Hbs,y);%Hbs濾波函數 y爲濾波輸入
y2=fft(fil_1,4096);
fz_2=abs(y2(1:4096));
figure(2);
plot(f,fz_2);
axis([0,5000,0,90]);
audiowrite('300_1k.wav',fil_1,Fs)
如果對你有用就表揚一下我哦~害羞


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章