广西工学院数字信号处理课程设计题目:语音信号的处理与滤波(难度系数:0.8)系别:计算机工程学院专业:通信工程班级:通信091学号:200900402037姓名:郑志军指导教师:周坚和日期:2012.01.01目录摘要:...................................错误!未定义书签。一.设计内容.............................................5二.设计目的.............................................5三.基本步骤.............................................5四、相关原理知识.........................................6五、实现过程............................................121.录制声音..........................................122.分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因.........................153.滤波器的设计......................................174.对声音进行滤波....................................185.把处理后的所有数据存储为声音文件,与原始声音进行比较.....................................................19六、心得体会............................................20七、参考文献............................................21摘要信号处理是现代信息处理的基本内容,数字信号的处理更是重中之重。数字信号处理的研究内容主要是语音信号和图像信号,而研究语音信号对于现代语音通信有着积极的意义。研究语音信号又分为时域和频域两个方面。(1)语音信号的时域分析处理:一类是进行语音信号分析,另一类是生成和变换各种调制信号,对信号平均累加器的动态范围进行压缩扩张,用门限方法进行噪声的抑制等等。前一类是属于时域中信号平均累加器的线性处理,主要通过信号的加减、时移、倍乘、卷积、求相关函数等来实现。而后一类,则属于非线性的变换和处理。(2)语音信号的频谱分析处理:信号的时域频谱分析通常是要结合在一起进行的。在数字设计系统中,任何信号处理器件都可以看成是一个滤波器,滤波器设计是数字信号处理的重要内容。滤波器就是在对信号进行分析的基础上,设计适当的系统,提取有用的信号,抑制噪声信号干扰。滤波器的设计通常是在频率域进行的[1]。本设计是用MATLAB仿真软件设计滤波器对受干扰的语音信号进行滤波处理,并对各部分进行频谱分析。MATLAB工具介绍:MATLAB是MathWorks公司开发的一种跨平台的用于多种仿真的简单高效的数学语言。MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。特别是MATLAB还具有信号分析工具箱,不需具备很强的编程能力就可以很方便地进行信号分析、处理和设计。与其它计算机高级语言相比,其语言编程要简洁得多,编程语句更加接近数学描述,可读性好,其强大的图形功能和可视化数据处理能力也是其它高级语言不可比拟的。与其它高级语言相比较,MATLAB具有独特的优势[2]:(1)MATLAB是一种跨平台的数学语言。采用MATLAB编写的程序可在目前所有的操作系统上运行(只要这些系统上安装了MATLAB软件仿真平台)。MATLAB程序不依赖于计算机类型和操作系统类型。(2)MATLAB是一种超高级语言。MATLAB平台本身是用C语言写成的,其中汇集了当前最新的数学库,是许多专业数学家和工程师学者多年的劳动结晶。使用MATLAB在编程效率、程序的可读性、可靠性和可移植上远远超过了常规的高级语言。(3)MATLAB具有强大的绘图功能。利用MATLAB的绘图功能,可以轻易的获得高质量的曲线图。具有多种形式来表达二维、三维图形。(4)MATLAB具有串口操作、声音输入输出等逻辑硬件操控能力。本次设计主要是利用MATLAB工具对自己的语音进行录制,然后设计IIR滤波器,并通过所设计的滤波器进行语音信号滤波以及分析等,对以前所学的知识进行一个系统的归纳和进一步理解,并且在实际应用操作当中体会我们《数字信号处理》这门课程的相关知识点。一、设计内容1.设计题目一:语音信号的处理与滤波(难度系数:0.8)1.熟悉并掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数。2.在MATLAB环境中,使用声音相关函数录制2秒左右自己的声音,抽样率是8000Hz/s。(考虑如何解决一个实际问题:录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象,如何排除对这些无效点的采样?)3.分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因。4.针对电话信道(最高3500Hz),设计一个FIR或IIR滤波器进行滤波,把抽样率转变为7000Hz/s,并进行频谱分析,得到幅度和相位谱。5.把处理后的所有数据储存为声音文件,与原始声音进行比较。二、设计目的综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。三、基本步骤1.语音信号的采集熟悉并掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数,在MATLAB环境中,使用声音相关函数录制3秒左右自己的声音。(考虑如何解决一个实际问题:录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象,如何排除对这些无效点的采样?)2.语音信号的频谱分析要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。3.设计数字滤波器并画出其频率响应4.用滤波器对信号进行滤波要求用自己设计的各种滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。5.比较滤波前后语音信号的波形及频谱要求在一个窗口同时画出滤波前后的波形及频谱。6.回放语音信号在Matlab中,使用相关声音函数对声音进行回放。辨别滤波前后的声音有何变化。四、相关原理知识1.录音原理Matlab中有两个函数可以用于实现录音功能,一个是waverecord函数调用windows音频设备进行录音,主要用于实时语音采集。如下图所示:第二个是使用Matlab中的wavread函数也可以进行语音采集。在MATLAB里面,用函数wavrecord录制一段时间自定的声音,用函数wavwrite存储原始语音信号。其调用格式如下:X=wavrecord(n,fs,ch,dtype);式中n为抽样点数,决定了录音长度;fs为抽样频率,默认值为11025Hz,还可根据要求自己选择合适的抽样率;ch为声道数,默认值为1,表示单声道,如果指定为2,则抽样为双声道立体声数据;dtype为抽样数据的存储格式,用字符串指定,可以是‘double’、‘single’、‘int16’、‘int8’,指定存储格式的同时也就规定了每个抽样值量化的精度,int8对应8位精度抽样,其它都是16位抽样精度。语音信号的存储可用函数wavwrite实现,其调用格式如下:wavwrite(X,Fs,'E:\数字信号处理课程设计\sound.wav');式中X为所录制的语音信号,Fs为抽样频率,引号内表示存储路径不过在本设计中主要是对已有的信号进行处理,所以选用wavread录放。同时,由于信号的时域描述只能反映信号的幅值随时间的变化情况,除只有一个频率分量的简谐波外一般很难明确揭示信号的频率组成和各频率分量的大小,因此,我们要把它转换成频域来分析,它能够提供比时域信号波形更直观,丰富的信息。(2)语音信号的频谱分析对语音信号进行频谱分析,是认识语音信号和处理语音信号的重要方法。下面将采用频谱来分析语音信号。对一个语音时域离散信号{x(n)},其频谱函数)(jX是x(n)的傅里叶变换。傅里叶变换定义为:nnjenxjX)()(,其中j为虚数单位,称为数字频率。由于处理的信号是有限长的,即n,故实际采用的是离散傅里叶变换DFT。长度为N的序列x(n),其DFT定义为:1010)/2()()()(NnknNNnknNjWnxenxkX,其中)/2(NjNeW如果x(n)为一个周期序列,得到的X(k)为x(n)的周期频谱。若x(n)不是周期序列,先对x(n)进行周期性扩展,把它看成某个周期性信号的一个周期,得到的X(k)是x(n)频谱在一个周期的采样。DFT有一种快速算法FFT,称为快速傅里叶变换。MATLAB中采用的就是FFT算法。2、滤波器的设计原理及设计方法FIR滤波器的设计问题在于寻求一系统函数)(zH,使其频率响应)(jeH逼近滤波器要求的理想频率响应)(jdeH,其对应的单位脉冲响应)(nhd。1、用窗函数设计FIR滤波器的基本方法设计思想:从时域从发,设计)(nh逼近理想)(nhd。设理想滤波器)(jdeH的单位脉冲响应为)(nhd。以低通线性相位FIR数字滤波器为例。deeHnhenheHjnjddjnndjd)(21)()()()(nhd一般是无限长的,且是非因果的,不能直接作为FIR滤波器的单位脉冲响应。要想得到一个因果的有限长的滤波器h(n),最直接的方法是截断)()()(nwnhnhd,即截取为有限长因果序列,并用合适的窗函数进行加权作为FIR滤波器的单位脉冲响应。按照线性相位滤波器的要求,h(n)必须是偶对称的。对称中心必须等于滤波器的延时常数,即2/)1()()()(Nanwnhnhd用矩形窗设计的FIR低通滤波器,所设计滤波器的幅度函数在通带和阻带都呈现出振荡现象,且最大波纹大约为幅度的9%,这个现象称为吉布斯(Gibbs)效应。为了消除吉布斯效应,一般采用其他类型的窗函数。2、典型的窗函数(1)矩形窗(RectangleWindow))()(nRnwN其频率响应和幅度响应分别为:21)2/sin()2/sin()(NjjeNeW,)2/sin()2/sin()(NWR(2)三角形窗(BartlettWindow)121,122210,12)(NnNNnNnNnnw其频率响应为:212])2/sin()4/sin([2)(NjjeNNeW(3)汉宁(Hanning)窗,又称升余弦窗)()]12cos(1[21)(nRNnnwN其频率响应和幅度响应分别为:)]12()12([25.0)(5.0)()()]}12()12([25.0)(5.0{)()21(NWN(4)汉明(Hamming)窗,又称改进的升余弦窗)()]12cos(46.054.0[)(nRNnnwN其幅度响应为:)]12()12([23.0)(54.0)(NWN(5)布莱克曼(Blankman)窗,又称二阶升余弦窗)()]14cos(08.0)12cos(5.042.0[)(nRNnNnnwN其幅度响应为:)]14()14([04.0)]12()12([25.0