目录第一章Matlab课程设计方案的提出........................................................................1第一节设计的主要内容及基本要求.................................................................1一主要内容.................................................................................................1二基本要求.................................................................................................1第二节设计方案.................................................................................................1第二章语音信号及其加噪........................................................................................2第一节语音信号.................................................................................................2一语音信号的采集.....................................................................................2二语音信号的时域及频谱分析.................................................................2第二节语音信号的加噪和分析.........................................................................4一语音信号的加噪.....................................................................................4第三章滤波器的选择................................................................................................9第一节滤波器的基本概念.................................................................................9一滤波器的功能.........................................................................................9二四种基本的滤波器..................................................错误!未定义书签。第二节数字滤波器的基本知识.......................................................................10一FIR数字滤波器...................................................................................10二IIR数字滤波器....................................................................................10第三节数字滤波器的选取...............................................................................11心得体会........................................................................................................................12参考文献........................................................................................................................13附录................................................................................................................................141第一章Matlab课程设计方案的提出第一节设计的主要内容及基本要求一主要内容要求录制一段自己的语音信号后,在MATLAB软件中采集语音信号,回放语音信号并画出语音信号的时域波形和频谱图;对所采集的语音信号加入干扰噪声,对加入噪声后的信号进行播放,并画出时域和频谱分析;对比加噪声前后的时域图和频谱图,分析讨论采用什么样的滤波器进行滤除噪声。二基本要求学会使用MATLAB,掌握MATLAB的程序设计方法;掌握在Windows环境下语音信号的录制方法;掌握在MATLAB环境下语音信号的采集方法;用randn函数给原始信号加入高斯随机噪声;并会用MATLAB对信号进行分析和处理。第二节设计方案录制一段语音信号;然后,利用MATLAB中的wavread命令来读入语音信号,将它赋值给某一向量。再将该向量看做一个普通的信号,对其进行FFT变换实现频谱分析;随后,利用随机函数randn产生噪声加入其中,对其进行频谱分析。并用sound函数回放加噪声前后的语音。最后,分析比较加噪声前后的语音信号的波形及频谱。2第二章语音信号及其加噪第一节语音信号一语音信号的采集首先,打开电脑;在计算机中WindowsXP的操作系统中,点击开始→附件→录音机,就会启动计算机中录音机。这时按下开始录音按钮,就会开始录音,此时对着电脑说“你好”,说完后按下停止录音按钮,录音结束。到此,完成了自己的语音信号的录制。录制的语音信号的后缀名为.wav。然后将已录制好的语音信号命名为“你好”,再将其以该文件名保存在C:\USER\Lenovo\DOCUMENTS\MATLAB中,此时本次课程设计的第一步录制一段自己的语音信号完成。二语音信号的时域及频谱分析在MATLAB软件平台下,利用wavread函数对语音信号进行采样,得到了声音数据变量y,同时把y的采样频率Fs=8000Hz和数据位Nbits=8Bit放进了MATLAB的工作空间。用sound函数对语音信号进行播放,并可对语音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。函数FFT的调用格式为:fft(x,n);其中,x为所要进行快速傅里叶变换的语音信号,n为所要进行的傅里叶3变换的点数,在本次的课程设计中我所使用的n的点数为原语音信号的长度,但也可使用1024、512等。wavread函数的调用格式为:[y,fs,nbits]=wavread('语音信号文件名');sound函数的调用格式为:sound(y,fs,nbits);求信号的长度的函数为length(),其调用格式为:length(y);其中,y为所要求长度的信号。对原语音信号的采集及回放和时域、频域的波形的程序如下:[y,fs,nbits]=wavread('你好');%把语音信号加载入Matlab仿真软件平台sound(y,fs,nbits);%回放语音信号subplot(2,1,1);plot(y);title('原语音信号的时域波形');gridon;%加网格legend('Waveform');xlabel('Time(s)');%标横坐标ylabel('Amplitude');%标纵坐标n=length(y);%求出语音信号的长度Y=fft(y,n);%傅里叶变换Y1=fftshift(Y);%对频谱图进行平移subplot(2,1,2);plot(abs(Y1));title('原语音信号的频谱图');gridon;%加网格上述的程序是在MATLAB软件中采集并回放出原语音信号并画出其时域波形及频谱图。在MATLAB软件中运行上述程序可得到原语音信4号的时域波形和其频谱图如图2.1所示。图2.1由频谱图可看出,原语音信号的频率大约集中在500Hz以内,由采样定理可得sf2f=2×500=1000Hz,故重放语音后仍可较清晰地听出原语音信号,不存在声音混叠现象。第二节语音信号的加噪和分析一语音信号的加噪(一)噪声的构建在MATLAB中人为设计一噪声,在本次课程设计中利用MATLAB中的随机函数randn产生噪声。randn函数的基本调用格式有两种:randn5(n)和randn(m,n),前者产生n×n服从标准高斯分布的随机函数矩阵,后者产生m×n的随机数矩阵。在这里,我们选用randn(m,n)函数,应注意的是:randn(m,n)的行和列即m、n应与原语音信号的行和列的长度保持一致。在这里构造的随机高斯噪声为noise=0.005*randn(n,1);即产生一列n行的随机高斯噪声,n为原语音信号的长度。构造的随机高斯噪声的程序如下所示:[y,fs,nbits]=wavread('你好');%把语音信号加载入Matlab仿真软件平台中n=length(y);%求出语音信号的长度noise=0.005*randn(n,1);%randn函数产生随机的高斯噪声sound(noise);%回放噪声信号subplot(2,1,1);plot(noise);title('干扰噪声的时域波形');gridon;%加网格legend('Waveform');xlabel('Time(s)');%标横坐标ylabel('Amplitude');%标纵坐标N=fft(noise,n);%傅里叶变换N1=fftshift(N);subplot(2,1,2);plot(abs(N1));title('干扰噪声的频谱图');gridon;%加网格上述程序可在MATLAB软件中回放出所构造的随机高斯噪声并画出它的时域波形及频谱图,在MATLAB软件中运行该程序可得所加的随机高斯噪声的时域波形如图2.2上所示及其频谱图如图2.2下所示。由图2.2中的频谱图我们可以看出,所加的随机高斯噪声为高频噪声,从频谱图可知,其频率主要集中在7kHz以内。从回放的语音中,6我们也可以清楚的听到所加的随机高斯噪声。图2.2(二)噪声与原语音信号的叠加及叠加后时域、频谱分析在MATLAB中把语音信号与噪声信号进行叠加,并对其进行播放,然后对加入噪声后的语音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。将原语音信号与noise叠加,调用的形式为:s=y+noise;其中,y为原语音信号,noise为所构造的随机高斯噪声,s即为两者的叠加后的语音信号。程序如下:[y,fs,nbits]=wavread('你好');%把语音信号加载入Matlab仿真软件平台n=length(y);%求出语音信号的长度7noise=0.005*randn(n,1);%randn函数产生随机的高斯噪声s=y+noise;%把噪声加入语音信号sound(s,fs,nbits);%回放加入噪声后的语音信号subplot(2,1,1);plot(s);title('加入干扰噪声后的信号时域波形');