数字信号处理课程设计---------------------------基于matlab的语音信号滤波处理学院:班号:姓名:学号:目录:一.设计内容......................................................3二.设计原理......................................................31.运用快速傅里叶变换..................................................................32.采用矩形窗设计滤波器..............................................................3三.设计过程........................................................11.语音信号的采集........................................................................42.语音信号的频谱分析................................................................43.用滤波器对语音信号进行滤波................................................54.回放语音信号..........................................................................11四.总结..........................................................11五.参考文献....................................................12摘要语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。信号处理是Matlab重要应用的领域之一。本设计针对现在大部分语音处理软件内容繁多、操作不便等问题,采用MATLAB7.0各种函数调用等来实现语音信号的变频、变幅、傅里叶变换及滤波,程序界面简练,操作简便,具有一定的实际应用意义。一.设计内容首先采集一段语音信号(.wav格式),时间在几十秒内,运用MATLAB软件,调用函数功能画出它的时域波形和频谱特性。然后设计滤波器对语音信号进行滤波,比较滤波前后的波形和特性。最后,调用sound函数回放信号,感觉滤波前后的声音变化。二.设计原理1.运用快速傅里叶变换(FFT)对信号进行傅里叶变换,得到频谱特性。2.采用矩形窗设计滤波器。矩形窗的定义:一个N点的矩形窗函数定义为如下1010()[()]()1()[()]()NkNnNknNkXkDFTxnxnWxnIDFTxnXkWNn1,00,()nNwn其他矩形窗的主瓣宽度小(4*pi/N),具有较高的频率分辨率,旁瓣峰值-13dB,过渡带宽为1.8*pi/N,阻带最小衰减-21dB。三.设计过程1.语音信号的采集在Matlab软件平台下,利用函数wavread对语音信号《刘若英原来你也在这里.wav》进行采样,并记住采样频率和采样点数。运用函数[y,fs,bits]=wavread(‘D:\信号处理\tada.wav’);可以得到:采样频率:fs=44100Hzbits=16Ts=26s采样点数N=Ts*fsN=26*44100=11.5*1052.语音信号的频谱分析首先画出语音信号的时域波形,然后对语音信号进行频谱分析。在Matlab中,可以利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性。程序如下:[x1,Fs,bits]=wavread('d:\tada.wav');sound(y,Fs,bits);figure(1);plot(x1);%做原始语音信号的时域图形title('原始语音信号');xlabel('timen');ylabel('volicen');figure(2);y1=fft(x1);%做length(x1)点的FFTy1=fftshift(y1);%平移,是频率中心为0derta_Fs=Fs/length(x1);%设置频谱的间隔,分辨率plot([-Fs/2:derta_Fs:Fs/2-derta_Fs],abs(y1));%画出原始语音信号的频谱图title('原始语音信号的频谱');gridon;3.用滤波器对语音信号进行滤波设计滤波器对采集的信号进行滤波,比较滤波前后语音信号的波形及频谱。要求自己确定滤波器的性能指标,用冲激响应不变法、双线性变换法或窗函数法设计3种滤波器:低通、高通和带通滤波器。A.运用矩形窗设计的低通滤波器程序:性能指标:wc1是滤波器截止频率;wp1是通带边界频率;ws1是阻带边界频率fs=44100;fs=44100;fc1=1100;wc1=2*pi*fc1/fs;%归一化频率wp1=2*pi*1000/fs;ws1=2*pi*1200/fs;N1=ceil(200*2*pi/(ws1-wp1));%滤波器的长度Window=boxcar(N1+1);%长度为N1的矩形窗Windowb1=fir1(N1,wc1/pi,Window);figure(3);freqz(b1,1,512);title('低通滤波器的频率响应');x1_low=filter(b1,1,x1);%对信号进行低通滤波figure(4);plot(x1_low);title('信号经过低通滤波器(时域)');figure(5);plot([-Fs/2:derta_Fs:Fs/2-derta_Fs],abs(fftshift(fft(x1_low))));title('信号经过低通滤波器(频域)');B.高通滤波器的设计:性能指标:wc2是滤波器截止频率;wp2是通带边界频率;ws2是阻带边界频率fs=44100;fc2=4900;wc2=2*pi*fc2/fs;wp2=2*pi*5000/fs;ws2=2*pi*4800/fs;N2=ceil(4*pi/(wp2-ws2));%滤波器的长度Window=boxcar(N2+1);b2=fir1(N2,wc2/pi,'high');figure(6);freqz(b2,1,512);%数字滤波器频率响应title('高通滤波器的频率响应');x1_high=filter(b2,1,x1);%对信号进行高通滤波figure(7);plot(x1_high);title('信号经过高通滤波器(时域)');figure(8);plot([-Fs/2:derta_Fs:Fs/2-derta_Fs],abs(fftshift(fft(x1_high))));title('信号经过高通滤波器(频域)');C.带通滤波器的设计:性能指标:w1.w2是滤波器带通范围fs=44100f1=1100;f2=3100;%带通滤波器的通带范围w1=2*pi*f1/fs;%0.1567=0.0499piw2=2*pi*f2/fs;%0.4417=0.1407piw=[w1,w2];N3=ceil(4*pi/(2*pi*200/fs));%滤波器的长度b3=fir1(N3,w/pi,'bandpass');%带通滤波器figure(9);freqz(b3,1,512);%数字滤波器频率响应title('带通滤波器的频率响应');x1_daitong=filter(b3,1,x1);%对信号进行高通滤波figure(10);plot(x1_daitong);title('信号经过带通滤波器(时域)');figure(11);plot([-Fs/2:derta_Fs:Fs/2-derta_Fs],abs(fftshift(fft(x1_daitong))));title('信号经过带通滤波器(频域)');4.回放语音信号在Matlab中,函数sound可以对声音进行回放,其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音变化。sound(x1_low,Fs);sound(x1_high,Fs);sound(x1_daitong,Fs);分析:由于原始语音信号大部分集中在频率较高的区域,使用低通滤波器滤波后声音不是很清晰,高通滤波后声音较清晰,带通滤波后声音有些混浊。四.总结MATLAB7.0功能十分强大且操作起来比较简单,可以在短时间内掌握其操作要领,同时加深了数字信号处理理论联系实际的学习和运用,对语音信号的处理有了初步的认识。在编程过程中,MATLAB7.0对格式要求非常严格,不能识别中文标点符号,在使用时容易出现错误,导致整个程序不能运行,希望MATLAB能够改进,推出中文版,方便中国用户使用。五.参考文献《数字信号处理》钱同慧机械工业出版社