資源簡介
語音信號處理
對加噪的語言信號進行頻譜分析,找出噪聲所在頻段,設計濾波器濾除噪聲。具體步驟如下:
1、 每位同學用Windows系統錄下一段聲音,用Matlab將其讀出,并顯示其時域波形
2、 對所錄聲音做傅立葉分析,觀看其頻譜
3、 變換朗讀聲音的大小,再次用windows系統錄下一段音,做傅立葉分析,觀看其頻譜有無變化
4、 再次錄音,并加上噪聲,分析頻譜,并設計合理的濾波器將噪聲去掉,并將去噪前后的語音信號回放,觀察噪聲效果
本題目要求:(1) 熟悉有關頻譜分析的有關指示,對語音信號做頻譜分析
(2) 熟悉有關濾波器設計理論知識,選擇合適的濾波器技術指標和類型,設計濾波器,得到濾波器參數
(3) 實現信號頻譜分析和濾波等有關Matlab函數
(4) 寫好總結報告,寫出基本原理,有關程序,得到的圖表,結果分析,總結。

代碼片段和文件信息
%?ch5example9prog1.m
[wavfs]=wavread(‘GDGvoice8000.wav‘);
t_end=1/fs?*length(wav);??%?計算聲音的時間長度
Fs=50000;?????????????????%?仿真系統采樣率
t=1/Fs:1/Fs:t_end;????????%?仿真系統采樣時間點
%?設計300Hz~3400Hz的帶通預濾波器H(z)?
[fenzifenmu]=butter(3[300?3400]/(fs/2));
%?對音頻信號進行預濾波?
wav=filter(fenzifenmuwav);
%?利用插值函數將音頻信號的采樣率提升為Fs=50KHz?
wav=interp1([1/fs:1/fs:t_end]wavt‘spline‘);
wav_hilbert=imag(hilbert(wav));?%?音頻信號的希爾伯特變換
fc=10000;???????????????????????%?載波頻率Hz
SSB_OUT=wav.*cos(2*pi*fc*t)-wav_hilbert.*sin(2*pi*fc*t);?%?單邊帶調制?
figure(1);??????????????????????%?觀察調制前后頻譜?
subplot(221);?plot(wav(53550:53750));?????axis([0?200?-0.3?0.3]);
%subplot(222);?psd(wav?10000?Fs);????????axis([0?25000?-20?10]);
subplot(223);?plot(SSB_OUT(53550:53750));?axis([0?200?-0.3?0.3]);
%subplot(224);?psd(SSB_OUT?10000?Fs);????axis([0?25000?-20?10]);
wavwrite(0.5*SSB_OUTFs‘SSB_OUT.wav‘);??????%?將SSB調制輸出存盤備用?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1013??2009-04-21?22:29??MATLAB基于語音處理\ch5example9prog1.m
?????文件????????668??2009-04-21?22:47??MATLAB基于語音處理\ch5example9prog2.m
?????文件????????581??2009-04-21?22:49??MATLAB基于語音處理\ch5example9prog3.m
?????文件?????185544??2007-07-03?08:44??MATLAB基于語音處理\GDGvoice8000.wav
?????目錄??????????0??2009-04-22?17:47??MATLAB基于語音處理
-----------?---------??----------?-----??----
???????????????187806????????????????????5
評論
共有 條評論