基于matlab声音信号的滤波去噪处理摘要滤波器设计在数字信号处理中占有极其重要的地位FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分Matlab功能强大简单易学编程效率高深受广大科技工作者的欢迎特别是Matlab还具有信号分析工具箱不需具备很强的编程能力就可以很方便地进行信号分析处理和设计利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器课题基于MATLAB有噪音语音信号处理的设计与实现综合运用数字信号处理的理论知识对加噪声语音信号进行时域频域分析和滤波通过理论推导得出相应结论再利用MATLAB作为编程工具进行计算机实现在设计实现的过程中使用窗函数法来设计FIR数字滤波器用巴特沃斯切比雪夫和双线性变法设计IIR数字滤波器并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制通过对对所设计滤波器的仿真和频率特性分析可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器过程简单方便结果的各项性能指标均达到指定要求目录摘要 ABSTRACT绪论 11研究的目的和意义12国内外同行的研究状况13本课题的研究内容和方法语音信号去噪方法的研究21去噪的原理22去噪的方法去噪和仿真的研究31语音文件在MATLAB平台上的录入与打开32 原始语音信号频谱分析及仿真33 加噪语音信号频谱分析及仿真34 去噪及仿真35 结合去噪后的频谱图对比两种方式滤波的优缺点总结致谢参考文献1绪论 11研究的目的和意义语音信号的采集与分析技术是一门涉及面很广的交叉科学它的应用和发展与语音学声音测量学电子测量技术以及数字信号处理等学科紧密联系语音是人类获取信息的重要来源和利用信息的重要手段在信号传输过程中由于实验条件或各种其他主观或客观条件的原因语音处理系统都不可避免地要受到各种噪声的干扰噪声不但降低了语音质量和语音的可懂度而且还将导致系统性能的急剧恶化严重时使整个系统无法正常工作 MATLAB是由美国mathworks公司发布的主要面对科学计算可视化以及交互式程序设计的高科技计算环境它将数值分析矩阵计算科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中为科学研究工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案并在很大程度上摆脱了传统非交互式程序设计语言如CFortran的编辑模式代表了当今国际科学计算软件的先进水平其强大的数据处理能力可以极大程度上削弱噪声影响还原出真实的语音信号相符度在90以上12 国内外同行研究现状20世纪60年代中期形成的一系列数字信号处理的理论和算法如数字滤波器快速傅立叶变换FFT等是语音信号数字处理的理论和技术基础随着信息科学技术的飞速发展语音信号处理取得了重大的进展进入70年代之后提出了用于语音信号的信息压缩和特征提取的线性预测技术LPC并已成为语音信号处理最强有力的工具广泛应用于语音信号的分析合成及各个应用领域以及用于输入语音与参考样本之间时间匹配的动态规划方法80年代初一种新的基于聚类分析的高效数据压缩技术矢量量化VQ应用于语音信号处理中而用隐马尔可夫模型HMM描述语音信号过程的产生是80年代语音信号处理技术的重大发展目前HMM已构成了现代语音识别研究的重要基石近年来人工神经网络 ANN 的研究取得了迅速发展语音信号处理的各项课题是促进其发展的重要动力之一他的各项成果也体现在语音信号处理的各项技术之中 13本课题的研究内容和方法 maxbook118com 研究内容本论文主要介绍的是的语音信号的简单处理本论文针对以上问题运用数字信号学基本原理实现语音信号的处理在matlab70环境下综合运用信号提取幅频变换以及傅里叶变换滤波等技术来进行语音信号处理我所做的工作就是在matlab70软件上编写一个处理语音信号的程序能对语音信号进行采集并对其进行各种处理达到简单的语音信号处理的目的 maxbook118com 运行环境运行环境主要介绍了硬件环境和软件环境硬件环境① 处理器Inter Pentium B950 ② 内存2G ③ 硬盘空间460G④ 显卡NVIDIA GeForce GT520 操作系统Window 764位旗舰版 maxbook118com 开发环境开发环境主要介绍了本系统采用的操作系统开发语言操作系统Windows 7 2 开发环境Matlab 70 maxbook118com骤语音信号的录制在MATLAB平台上读入语音信号绘制频谱图并回放原始语音信号利用MATLAB编程加入一段正弦波噪音设计滤波器去噪利用MATLAB编程加入一段随机噪音信号设计FIR和IIR滤波器去噪并分别绘制频谱图回放语音信号 6 通过仿真后的图像以及对语音信号的回放对比两种去噪方式的优缺点具体流程图如下所示图11论文设计流程 2语音信号去噪方法的研究21 去噪的原理 maxbook118com 采样定理在进行模拟数字信号的转换过程中当采样频率fsmax大于信号中最高频率fmax的2倍时即fsmax 2fmax则采样之后的数字信号完整地保留了原始信号中的信息一般实际应用中保证采样频率为信号最高频率的5~10倍采样定理又称奈奎斯特定理 1924年奈奎斯特 Nyquist 就推导出在理想低通信道的最高大码元传输速率的公式理想低通信道的最高大码元传输速率 2Wlog2 N 其中W是理想低通信道的带宽N是电平强度为什么把采样频率设为8kHz在数字通信中根据采样定理最小采样频率为语音信号最高频率的2倍频带为F的连续信号 f t 可用一系列离散的采样值 f t1 f t1±Δt f t1±2Δt 来表示只要这些采样点的时间间隔Δt≤12F便可根据各采样值完全恢复原来的信号f t 这是时域采样定理的一种表述方式时域采样定理的另一种表述方式是当时间信号函数f t 的最高频率分量为fM时f t 的值可由一系列采样间隔小于或等于12fM的采样值来确定即采样点的重复频率f≥2fM图为模拟信号和采样样本的示意图时域采样定理是采样误差理论随机变量采样理论和多变量采样理论的基础对于时间上受限制的连续信号f t 即当│t│ T时f t 0这里T T2-T1是信号的持续时间若其频谱为Fω则可在频域上用一系列离散的采样值采样值来表示只要这些采样点的频率间隔采样频率也称为采样速度或者采样率定义了每秒从连续信号中提取并组成离散信号的采样个数它用赫兹Hz来表示采样频率的倒数是采样周期或者叫作采样时间它是采样之间的时间间隔通俗的讲采样频率是指计算机每秒钟采集多少个声音样本是描述声音文件的音质音调衡量声卡声音文件的质量标准采样频率只能用于周期性采样的采样器对于非周期性采样的采样器没有规则限制采样频率的常用的表示符号是 fs 通俗的讲采样频率是指计算机每秒钟采集多少个声音样本是描述声音文件的音质音调衡量声卡声音文件的质量标准采样频率越高即采样的间隔时间越短则在单位时间内计算机得到的声音样本数据就越多对声音波形的表示也越精确采样频率与声音频率之间有一定的关系只有采样频率高于声音信号最高频率的两倍时才能把数字信号表示的声音还原成为原来的声音这就是说采样频率是衡量声卡采集记录和还原声音文件的质量标准采样位数和采样率对于音频接口来说是最为重要的两个指标也是选择音频接口的两个重要标准无论采样频率如何理论上来说采样的位数决定了音频数据最大的力度范围每增加一个采样位数相当于力度范围增加了6dB采样位数越多则捕捉到的信号越精确对于采样率来说你可以想象它类似于一个照相机441kHz意味着音频流进入计算机时计算机每秒会对其拍照达441000次显然采样率越高计算机摄取的图片越多对于原始音频的还原也越加精确在我们的日常交流和语音通信系统中加性宽带噪声严重影响了语音质量和可懂度从带噪语音中提取原始语音信号的方法很多在单信道条件下谱相减算法以其运算量小原理简单易于实现并且有不错的增强效果而得到了广泛的应用谱相减语音增强算法的核心是噪声检测和谱减规则在分析了语音增强算法理论的基础上本文首先研究了语音激活检测算法对基于短时能量和短时过零率双门限法语音激活检测的噪声估计算法做了研究及仿真同时还研究了一种基于最小子带能量的噪声估计方法然后通过分析经典谱减法的原理及其一般改进形式研究了一种基于噪声残差的谱相减改进算法和一种可以不以噪声是零均值的高斯分布为前提的谱减法改进算法最后通过大量的仿真实验验证了所研究的几种改进算法都能有效地提高增强效果在进入FIR滤波器前首先要将信号通过AD器件进行模数转换使之成为8bit的数字信号一般可用速度较高的逐次逼进式AD转换器不论采用乘累加方法还是分布式算法设计FIR滤波器滤波器输出的数据都是一串序列要使它能直观地反应出来还需经过数模转换因此由FPGA构成的FIR滤波器的输出须外接DA模块FPGA有着规整的内部逻辑阵列和丰富的连线资源特别适合于数字信号处理任务相对于串行运算为主导的通用DSP芯片来说其并行性和可扩展性更好利用FPGA乘累加的快速算法可以设计出高速的FIR数字滤波器有限长单位冲激响应FIR滤波器有以下特点位冲激响应h n 在有限个n值处不为零0处收敛极点全部在z 0处结构上主要是非递归结构没有输出到输入的反馈但有些结构中例如频率抽样结构也包含有反馈的递归部分设FIR滤波器的单位冲激响应h n 为一个N点序列0 ≤ n ≤N 1则滤波器的系统函数为H z ∑h n z-n 2-3 就是说它有N1阶极点在z 0处有N1个零点位于有限z平面的任何位置FIR滤波器基本结构 FIR滤波器有以下几种基本结构横截型式的系统的差分方程表达式为y n ∑h m x n-m 2-4 很明显这就是线性移不变系统的卷积和公式也是x n 的延时链的横向结构称为横截型结构或卷积型结构也可称为直接型结构将转置定理用于可得到的转置直接型结构 FIR滤波器的横截型结构级联型其中[N2]表示取N2的整数部分若N为偶数则N1为奇数故系数B2K中有一个为零这是因为这时有奇数个根其中复数根成共轭对必为偶数必然有奇数个实根画出N为奇数时FIR滤波器的级联结构其中每一个二阶因子用图4-11的横型结构这种结构的每一节控制一对零点因而再需要控制传输零点时可以采用它但是这种结构所需要的系数B2kI 012k 12...[N2]比卷积型的系数h n 要多因而所需的乘法次数也比卷积型的要多 nfinite Impulse Response 数字滤波器又名无限脉冲响应数字滤波器或递归滤波器递归滤波器也就是IIR数字滤波器顾名思义具有反馈一般认为具有无限的脉冲响应IIR数字滤波器的设计利用分析工具 FDATool 可以很方便地设计出符合应用要求的未经量化的IIR数字滤波器需要将MATLAB设计出的IIR数字滤波器进一步分解和量化从而获得可用FPGA实现的滤波器系数IIR数字滤波器的设计步骤由于采用了级联结构因此如何将滤波器的每一个极点和零点相组合从而使得数字滤波器输出所含的噪声最小是个十分关键的问题为了产生最优的量化后的IIR数字滤波器采用如下步骤进行设计首先计算整体传递函数的零极点选取具有最大幅度的极点以及距离它最近的零点使用它们组成一个二阶基本节的传递函数对于剩下的极点和零点采用与相类似的步骤直至形成所有的二阶基本节通过上面三步法进行的设计可以保证IIR数字滤波器中N位乘法器产生的量化舍入误差最小获得最优IIR数字滤波器系数为了设计出可用FPGA实现的数字滤波器需要对上一步分解获得的二阶基本节的滤波器系数进行量化即用一个固定的字长加以表示量化过程中由于存在不同程度的量化误差由此会导致滤波器的频率响应出现偏差严重时会使IIR滤波器的极点移到单位圆之外系统因而失去稳定性为了获得最优的滤波器系数采用以下步骤进行量化计算每个系数的 B查找出每个系数绝对值中的最大值计算比此绝对值大的最小整数 maxbook118com取反获得负整数计算需要表示此整数的最小位数计算用于表示系数值分数部分的余下位数除了系数存在量化误差数字滤波器运算过程中有限字长效应也会造成误差因此对滤波器中乘法器加法器及寄存器的数据宽度要也进行合理的设计以防止产生极限环现象和溢出振荡与FIR数字滤波器的设计不同IIR滤波器设计时的阶数不是由设计者指定而是根据设计者输入的各个滤波器参数截止频率通带滤纹阻带衰减等由软件设计出满足这些参数的最低滤波器阶数在MATLAB下设计不同类型IIR滤波器均有与之对应的函数用于阶数的选择利用MATLAB中的wavread命令来读入采集语音信号将它赋值给某一向量 Wavread函数可得出信号的采样频率为22500并且声音是单声道的利用Sound函数可以清晰的听到毕业设计声音文件的语音采集数据并画出波形图在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换下面介绍这些函数函数FFT用于序列快速傅立叶变换函数的一种调用格式y fft x 其中x是序列y是序列的FFTx可以为一向量或矩阵若x为一向量y是x的FFT且和x相同长度若x为一矩阵则y是对矩阵的每一列向量进行FFT 如果x长度是2的幂次方函数fft执行高速基-2FFT算法否则fft执行一种混合基的离散傅立叶变换算法计算速度较慢函数FFT的另一种调用格式为y fft xN 式中xy意义同前N为正整数函数执行N点的FFT若x为向量且长度小于N则函数将x补零至长度N若向量x的长度大于N则函数截短x使之长度为N若x 为矩阵按相同方法对x进行处理经函数fft求得的序列y一般是复序列通常要求其幅值和相位MATLAB提供求复数的幅值和相位函数absangle这些函数一般和 FFT同时使用函数abs x 用于计算复向量x的幅值函数angle x 用于计算复向量的相角介于和之间以弧度表示用MATLAB工具箱函数fft进行频谱分析时需注意 1函数fft返回值y的数据结构对称性一般而言对N点的x n 序列的FFT是N点的复数序列其点n N21对应Nyquist频率作频谱分析时仅取序列X k 的前一半即前N2点即可X k 的后一半序列和前一半序列时对称的频率计算若N点序列x n n 01N-1 是在采样频率下获得的它的FFT也是N点序列即X k k 012N-1 则第k点所对应实际频率值为 f kf N 绘出了语音信号的波形频谱图 [xfsbits] wavread wangqingtianwav sound xfsbits X fft x4096 magX abs X angX angle X subplot 221 plot x title 原始信号波形 subplot 222 plot X title 原始语音信号采样后的频谱图 subplot 223 plot magX title 原始信号幅值 subplot 224 plotangX title 原始信号相位程序运行可以听到声音得到的图形为atlab函数randn产生正态分布的随机数或矩阵的函数产生均值为0方差σ2 1标准差σ 1的正态分布的随机数或矩阵的函数用法Y randn n 返回一个nn的随机项的矩阵如果n不是个数量将返回错误信息 Y randn mn 或 Y randn [m n] 返回一个mn的随机项矩阵 Y randn size A 返回一个和A有同样维数大小的随机数组randn返回一个每次都变化的数量[yfsbits] wavread chushiwav sound yfs n length y y_p fft yn f fs 0n2-1 n figure 1 subplot 211 plot y title 原始语音信号采样后的时域波形 xlabel 时间轴 ylabel 幅值A subplot 212 plot fabs y_p 1n2 title 原始语音信号采样后的频谱图 xlabel 频率Hz ylabel 频率幅值 L length y noise 01randn L2 y_z ynoise sound y_zfs n length y y_zp fft y_zn f fs 0n2-1 n figure 2 subplot 211 plot y_z title 加噪语音信号时域波形 xlabel 时间轴 ylabel 幅值A subplot 212 plot fabs y_zp 1n2 title 加噪语音信号频谱图 xlabel 频率Hz ylabel 频率幅值初始信号的时域波形频谱图与加噪后语音信号的时域波形频谱图分别如图3536所示图35 图36 通过对两张图片的对比很明显可以看加噪后的语音信号时域波形比原始语音信号浑浊了许多在时间轴上可以明显看出005S的幅值增大了通过对原始语音信号的频谱图与加噪后的语音信号频谱图的对比也可以看出在频率5000Hz以后的频率幅值发生了明显的增加再通过对原始语音信号的回放效果与加噪后的语音信号回放的效果的对比人耳可以明显辨别出两种语音信号不一样了加噪后的语音信号在听觉上比原始语音信号要浑浊很多而且还有吱吱嘎嘎的混杂音 34 去噪及仿真1FIR滤波器法去噪通过对上一节中加噪语音信号和原始语音信号频谱图对比可以知道噪音大部分是Hz大于5000的部分故设计低通滤波器进行滤波处理接下来我们要用设计的FIR低通滤波器对上一节中加噪语音信号进行滤波处理用自己设计的FIR数字低通滤波器对加噪的语音信号进行滤波时在Matlab中FIR滤波器利用函数fftfilt对信号进行滤波函数fftfilt用的是重叠相加法实现线性卷积的计算调用格式为y fftfilter hxM 其中h是系统单位冲击响应向量x是输入序列向量y是系统的输出序列向量M是有用户选择的输入序列的分段长度缺省时默认的输入向量的重长度M 512 用设计好的FIR数字低通滤波器对加噪语音信号的滤波程序 [yfsbits] wavread chushiwav sound yfs n length y y_p fft yn f fs 0n2-1 n figure 1 subplot 211 plot y title 原始语音信号采样后的时域波形 xlabel 时间轴 ylabel 幅值A subplot 212 plot fabs y_p 1n2 title 原始语音信号采样后的频谱图 xlabel 频率Hz ylabel 频率幅值 L length y noise 01randn L2 y_z ynoise sound y_zfs n length y y_zp fft y_zn f fs 0n2-1 n figure 2 subplot 211 plot y_z title 加噪语音信号时域波形 xlabel 时间轴 ylabel 幅值A subplot 212 plot fabs y_zp 1n2 title 加噪语音信号频谱图 xlabel 频率Hz ylabel 频率幅值 Ft 5000 Fp 1000 Fs 1200 wp 2FpFt ws 2FsFt rp 1 rs 50 p 1-10 -rp20 s 10 -rs20 fpts [wp ws] mag [1 0] dev [p s] [n21wn21betaftype] kaiserord fptsmagdev b21 fir1 n21wn21Kaiser n211beta [hw] freqz b211 plot wpiabs h title FIR低通滤波器 x fftfilt b21y_z X fft xn figure 4 subplot 221 plot fabs y_zp 1n2 title 滤波前信号的频谱 subplot 222 plot fabs X 1n2 title 滤波后信号的频谱 subplot 223 plot y_z title 滤波前信号的时域波形 subplot 224 plot x title 滤波后信号的时域波形 sound xfsbits 而后得到图像如下图37 分析从以上四图可以很明显和直观的看出原始语音信号和加噪语音信号时域波形和频谱图的区别加噪后的语音信号的时域波形比原始语音信号要模糊得多频谱图则是在频率5000Hz 以后出现了明显的变化再通过滤波前的信号波形和频谱图的对比可以明显看出滤波后的波形开始变得清晰了有点接近原始信号的波形图了滤波后信号的频谱图也在5000Hz以后开始逐渐接近原始语音信号的频谱图再从对语音信号的回放人耳可以明显辨别出加噪后的语音信号比较浑浊还有很明显嘎吱嘎吱的杂音在里面滤波后语音信号较加噪后的信号有了明显的改善基本可以听清楚了而且杂音也没有那么强烈但是声音依然没有原始语音信号那么清晰脆耳 2IIR滤波器法去噪同样也设计一个IIR低通滤波器对加噪语音信号进行内部处理程序如下Ft 8000 Fp 1000 Fs 1200 wp 2piFpFt ws 2piFsFt fp 2Fttan wp2 fs 2Fstan wp2 [n11wn11] buttord wpws150s 求低通滤波器的阶数和截止频率[b11a11] butter n11wn11s 求S域的频率响应的参数 [num11den11] bilinear b11a1105 双线性变换实现S域到Z域的变换 [hw] freqz num11den11 根据参数求出频率响应 plot w800005piabs h legend 用butter设计 grid [yfsnbits] wavread BYSJwav n length y 求出语音信号的长度 noise 001randn n2 随机函数产生噪声 s ynoise 语音信号加入噪声 S fft s 傅里叶变换 z11 filter num11den11s sound z11 m11 fft z11 求滤波后的信号 subplot 221 plot abs S g title 滤波前信号的频谱 grid subplot 222 plot abs m11 r title 滤波后信号的频谱grid subplot 223 plot s title 滤波前信号的波形 grid subplot 224 plot z11 title 滤波后的信号波形得到图像如下图38 通过程序运行我们可以听出滤波效果很不好失真现象严重并且出现了严重的寄生震荡 35 结合去噪后的频谱图对比两种方式滤波的优缺点 IIR数字滤波器采用递归型结构即结构上带有反馈环路IIR滤波器运算结构通常由延时乘以系数和相加等基本运算组成可以组合成直接型正准型级联型并联型四种结构形式都具有反馈回路由于运算中的舍入处理使误差不断累积有时会产生微弱的寄生振荡 1IIR数字滤波器的相位特性不好控制对相位要求较高时需加相位校准网络FIR滤波器则要求较低 2IIR滤波器运算误差大有可能出现极限环振荡FIR相比之下运算误差较小不会出现极限环振荡 3IIR幅频特性精度很高不是线性相位的可以应用于对相位信息不敏感的音频信号上 4与FIR滤波器的设计不同IIR滤波器设计时的阶数不是由设计者指定而是根据设计者输入的各个滤波器参数截止频率通带滤纹阻带衰减等由软件设计出满足这些参数的最低滤波器阶数在MATLAB下设计不同类型IIR滤波器均有与之对应的函数用于阶数的选择 5IIR单位响应为无限脉冲序列FIR单位响应为有限的 6FIR幅频特性精度较之于iir低但是线性相位就是不同频率分量的信号经过FIR滤波器后他们的时间差不变这是很好的性质 7IIR滤波器有噪声反馈而且噪声较大FIR滤波器噪声较小 FIR幅频特性精度较之于iir低但是线性相位就是不同频率分量的信号经过FIR滤波器后他们的时间差不变这是很好的性质 4总结本文对语音信号处理系统的设计作了详细的介绍采用一系列图像分析和处理技术实现了语音信号的基本处理的功能经过测试运行本设计圆满的完成了对语音信号的读取与打开较好的完成了对语音信号的频谱分析通过fft变换得出了语音信号的频谱图在滤波这一块课题主要是从滤波器入手来设计滤波器基本实现了滤波与课题的要求十分相符在此论文撰写过程中要特别感谢我的导师的指导与督促同时感谢的谅解与包容没有的帮助也就没有今天的这篇论文求学历程是艰苦的但又是快乐的感谢我的老师谢谢他在这四年中为我们全班所做的一切他不求回报无私奉献的精神很让我感动再次向表示由衷的感谢在这四年的学期中结识的各位生活和学习上的挚友让我得到了人生最大的一笔财富在。