資源簡(jiǎn)介
利用matlab數(shù)學(xué)工具,實(shí)現(xiàn)對(duì)音頻信號(hào)的升、降采樣,并加入高斯噪聲,濾波后分析性能
代碼片段和文件信息
%?wavread(filename)?讀取一個(gè)WAV文件,并返回采樣數(shù)據(jù)到向量y中,F(xiàn)s表示采樣頻率?bits表示采樣位數(shù)??
Fs=44100;bits=16;
[y?Fs?bits]?=?wavread(‘yinpin.wav‘);????
%假設(shè)聲音文件有兩個(gè)聲道,我們只分析第一個(gè)聲道,如果要分析第二個(gè)聲道可以改為:ft=y(:2);??
ft?=?y(:1);??
sigLengthy?=?length(ft);?%獲取聲音長(zhǎng)度??
sigLengthy;
x=ft(1:7938000);
sigLengthx=length(x);%??截取三分鐘的音頻點(diǎn)數(shù),180*44100=7938000
%可以使用sound函數(shù)來播放聲音??
%sound(x?Fs?bits)????
%定義一個(gè)FFT點(diǎn)數(shù)
MM=8388608;%2的23次方
%sound(x?Fs?bits)?
%繪制波形圖
?t=(0:sigLengthx-1)/Fs;???
??figure(1);???
??plot(t?x);??
??title(‘波形圖‘)
??xlabel(‘時(shí)間(s)‘);??
??ylabel(‘幅度‘);?
?%幅頻曲線
?xFFT=fft(xMM);
?XFFT=abs(xFFT);%取模長(zhǎng)
??figure(2);
?n=0:MM-1;
?f=n*Fs/MM;
??plot(fXFFT);
??xlim([0?22050]);?
??title(‘音頻頻譜‘)
??xlabel(‘頻率(Hz)‘);??
??ylabel(‘幅度‘);?
%兩種方法產(chǎn)生高斯白噪聲
%?m=0:?sigLengthx-1;
%?sigma=mean(x.*x);%噪聲方差
%?noise?=?sqrt(sigma)*randn([sigLengthx1]);%噪聲生成
%?AWGNx?=?x+noise;%受寬帶噪聲干擾的音頻信號(hào)
??
?%加入?高斯白噪聲
??AWGNx=awgn(x15);
%???sound(AWGNx?Fs?bits)?
??AWGNxFFT=fft(AWGNxMM);
?AWGNXFFT=abs(AWGNxFFT);
?figure(3);???
?plot(t?AWGNx);??
?title(‘加入高斯白噪聲之后波形圖‘)
?xlabel(‘時(shí)間(s)‘);??
?ylabel(‘幅度‘);??
?figure(4);
?plot(fAWGNXFFT);
?xlim([0?22050]);?
?title(‘加入高斯白噪聲之后音頻頻譜‘)
?xlabel(‘頻率(Hz)‘);???
?ylabel(‘幅度‘);
%加入高頻噪聲
%設(shè)置余弦10000Hz?噪聲函數(shù)
?fn=10000;
?noise=0.05*sin(2*pi*fn/Fs.*(1:sigLengthx)‘);
?highnoise=noise+x;
?highnoiseFFT=fft(highnoiseMM);
?HighnoiseFFT=abs(highnoiseFFT);
%??
?figure(5);???
?plot(t?highnoise);??
?title(‘加入高頻噪聲之后波形圖‘)
?xlabel(‘時(shí)間(s)‘);??
?ylabel(‘幅度‘);
??
?figure(6);
?plot(fHighnoiseFFT);
?xlim([0?22050]);?
?title(‘加入高頻噪聲之后音頻頻譜‘)
?xlabel(‘頻率(Hz)‘);??
?ylabel(‘幅度‘);
%??sound(?highnoise?Fs?bits)?
%設(shè)置低通濾波器
%設(shè)置濾波器的性能參數(shù)?通帶邊界為4000Hz??阻帶邊界4500Hz???
%通帶波紋0.01?阻帶波紋0.01
c=firpmord([4000?4500][10][0.01?0.001]Fs‘cell‘);
b=firpm(c{:})‘;
Bfft=fft(bMM);
len
評(píng)論
共有 條評(píng)論