一、前言
1.1 课题内容:
- 利用麦克风采集语音信号(人的声音、或乐器声乐),人为加上环境噪声(窄带)
- 分析上述声音信号的频谱,比较两种情况下的差异
- 根据信号的频谱分布,选取合适的滤波器指标(频率指标、衰减指标),设计对应的 FIR 滤波器
- 实现数字滤波,将滤波前、后的声音播放,由听觉主观判别滤波效果。并选择、计算合适的客观参数(如:信噪比)评价滤波效果
- 优化参数,取得更好的滤波效果
1.2 课题要求:
- 滤波部分要详细讨论各种参数对结果的影响,并对结果数据进行分析、比较与总结
- 分析、讨论至少两种不同滤波方案的优劣
- 采用 Matlab 语言编程
1.3 应用价值:
20世纪60年代中期形成的一系列数字信号处理方法和算法,如数字滤波器,快速傅里叶变换(FFT)是语音数字信号处理的理论和技术基础。而70年代初期产生的线性预测编码(LPC)算法,为语音信号的数字处理提供了一个强有力的工具。语音信号的编码和压缩是语音信号处理的主要内容。语音信号处理在通信、语音识别与合成、自然语言理解、多媒体数据库以及互联网等多个领域有广泛的应用,同时它对于理解音频类等一般的声音媒体的特点也有很大的帮助。对于移动通信来说,最多的信息是语音信号,语音编码的技术在数字移动通信中具有相当关键的作用,高质量低速率的语音编码技术是数字移动网的永远的追求。所谓语音编码是信源编码,它是将模拟语音信号变成数字信号以便在信道中传输。除了通信带宽的要求外,计算机存储容量的限制也要求对语音信号进行压缩,以满足海量数据情况下进行实时或准实时计算机处理的目的。
二、文献综述
- 数字滤波器有很多种,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种:有限冲激响应( FIR,Finite Impulse Response)滤波器和无限冲激响应( IIR,Infinite Impulse Response)滤波器。
- FIR滤波器必须采用间接法,常用的方法有窗函数法、频率采样法和切比雪夫等波纹逼近法。对于线性相位滤波器,经常采用FIR滤波器。在设计FIR滤波器时可以根据对阻带衰减及过渡带的指标要求,选择窗函数类型,并估计窗口长度N,先按照阻带衰减选择窗函数类型。保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数,再构造希望逼近的频率响应函数,计算。最后加窗便可以得到设计结果。
- FIR滤波器设计方法有窗函数法、频率抽样法等。窗函数设计法比较简单,有闭合形式的公式可循。频率抽样法可以在频域直接设计,在抽样点处与理想滤波器严格相等,可以设计任意幅度响应的滤波器。窗函数设计法是根据设计的性能要求,选择一个理想滤波器,然后用一个合适的窗函数,与理想滤波器在时域中的单位冲激响应相乘,即所谓加窗,得到一个有限长的冲激响应的数字系统,通过调整窗函数的参数来逼近理想滤波器的性能参数,从而达到设计要求。通过窗函数的作用过程可知,一个理想的窗函数在频域的主瓣应该非常窄,有足够的频率分辨率。而旁瓣又能非常低,降低频率之间的干扰。但是在实际中,我们不能同时做到主瓣和旁瓣性能最优,需要在这两者之间取得性能折中。常见的窗函数有矩形(Rectangle)窗、三角形(Fejer)窗、汉宁(Hanning)窗、海明(Hamming)窗、平顶 (Flat Top)窗、凯泽(Kaiser)窗、布莱克曼(Blackman)窗等。矩形窗的优点是主瓣比较集中,频率分辨率最高,缺点是旁瓣较高;三角形窗的主瓣较宽,约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣 ;汉宁窗又称升余弦窗,主瓣变宽,频率分辨率下降,旁瓣减小,有效抑制频谱泄露;海明窗又称为改进升余弦窗,相对汉宁窗来说,其旁瓣更小,但是旁瓣衰减速度变慢;平顶窗在频域通带的波动较小;凯泽窗由一组可调的零阶贝塞尔(Bessel)函数构成,可以通过参数来调整主瓣宽度和旁瓣衰减程度;布莱克曼又称二阶升余弦窗,主瓣宽,旁瓣比较低。
- 窗函数的主瓣宽度和旁瓣峰值衰耗是矛盾的,一项指标的提高总是以另一项指标的下降为代价,窗口选择实际上是对两项指标作权衡。而两项指标是跳变的,于是有人提出可调整窗,适当修改参数,可在这两项指标间作连续的选择。常用的可调整窗是凯泽(Kaiser)窗。凯泽(Kaiser)窗全面地反映主瓣与旁瓣衰减之间的交换关系,可以在它们两者之间自由地选择它们的比重。 表2-1中列出了5种常用的窗函数的特性。
- 表2-1中,窗函数在某一个窗长N时,除凯泽(Kaiser)窗以外其他窗函数的系数都是固定的,而凯泽(Kaiser)窗的系数不是固定的,而是随参数值而变化的,凯泽(Kaiser)窗函数的形状也会随着不同的值而变化。
凯泽(Kaiser)窗在通带波纹和阻带衰减都随参数值而变化,表2-2中列出了部分值与FIR滤波器性能的关系。
- 从表2-2中可看出,当参数取不同数值时,阻带的衰减可以从30dB增加到100dB,滤波器的性能与参数的关系极为紧密。所以在滤波器设计中要选择合适的参数值,使滤波器的效果最佳。
三、算法分析
四、算法仿真与结果分析
- 准备原始音频——录制一段语音信号,时间长度约为6s。将音频信号保存路径为D:\matlab_project\audio.mp3。在MATLAB平台上,用audioread函数调出此语音信号,并得到其音频数据和采样率。
%% 读取音频文件
[x,fs]=audioread('audio.mp3'); % 读取音频信号:x是数据,fs是采样率
x = x(:,<