基于matlab的语音信号滤波处理课程设计报告(编辑修改稿)内容摘要:

优点。 一般用两种方法来实现数字滤波器 :一是采用通用计算机,把滤波器所要完成的运算编成程序通过计算机来执行,也就是采用计算机软件来实现。 二是采用实际专用的数字处理硬件。 数字滤波器按照冲激响应的时域特性可分为 :无限长单位冲响应滤波器( IIR)和有限长单位冲击响应滤波器( FIR),但与 IIR 相比,在满足同样阻带衰减的情况下需要的阶数较高,滤波器的阶数越高,占用的运算时间就越多,因此在满足指标要求的情况下应尽量减少滤波器的阶数。 FIR 滤波器的基本结构可以理解为一个分节的延时线,把每一节的输出加权累加,可得到滤波器的输出, FIR 滤波器的冲激响应 h(n)是有限长的,数学 M阶 FIR滤波器可以表示为: 在此处键入公式。 窗口设计法 窗口设计法的基本思想是要选取某一种合适的理想频率选择性滤波器(这种滤波器总是有一个非因果,无限长的脉冲响应),然后将它的脉冲响应截断(或加窗)以得到一个线性相位和因果的 FIR 滤波器。 凯塞窗 窗函数的主瓣宽度和旁瓣峰值衰耗是矛盾的,一项指标的提高总是以另一项指标的下降为代价,窗口选择实际上是对两项指标作权衡。 而两项指标是跳变的,于是有人提出可调整窗,适当修改参数,可在这两项指标间作连续的选择。 常用的可调整窗是凯塞( Kaiser)窗。 凯塞( Kaiser)窗全面地反映主瓣与旁瓣衰减之间的交换关系, 可以在它们两者之间自由地选择它们的比重。 凯塞窗的表达式是 : (0 n N 1)# ( 31) 10( n ) ( i) x ( n i)Niyh==229。 10(z ) (n ) zN nnHh== 229。 ( 32) 2020( n ) I [ 1 ( 1 ) ] / I ( )1nNw b b= (33) 西安欧亚学 院课程设计 5 式中, 0(.)I 是第一类修正的零阶贝塞尔函数,可以用级数展开来计算它的值。 设计过程 录制语音信号 用 windows 工具中的录音机录制一段语音信号,语音为“ 请鞭挞我吧,公瑾。 ”,时间长度约为 2s。 将语音信号的文件名设置为 ,并将文件保存在 MATLAB下的 WOK 文件夹里面。 然后在 MATLAB 平台上,用 wavread 函数调出此语音信号,并得到其采样率 fs 和比特数 bits。 [x,fs,bits]=wavread(39。 39。 )。 % 输入参数为文件的全路径和文件名,输出的第一个参数是信号的样本值, fs 是生成该波形文件时的采样率, bits 是波形文件每样本的编码位数。 sound(x,fs,bits)。 % 按指定的采样率和每样本编码位数回放录音 x=x(:,2)。 N=length(x)。 % 计算信号 x的长度 fn=1000。 % 单频噪声频率 t=0:1/fs:(N1)/fs。 % 计算时间范围,样本数除以采样频率 x=x39。 y=x+.*sin(fn*2*pi*t)。 %y为加入单频干扰信号后的语音 sound(y,fs,bits)。 在 MATLAB 平台上,用 plot 函数画出原始语音信号,如图 31所示: 图 31 西安欧亚学 院课程设计 6 对原信号加入噪声 在 MATLAB 平台上,对原始信号和加噪信号进行 fft 变换 ,取幅度谱 ,并对频谱进行分析。 具体实现如下: [x,fs,bits]=wavread(39。 39。 )。 % 输入参数为文件的全路径和文件名,输出的第一个参数是信号的样本值, fs 是生成该波形文件时的采样率, bits 是波形文件每样本的编码位数。 sound(x,fs,bits)。 % 按指定的采样率和每样本编码位数回放录音 x=x(:,2)。 N=length(x)。 % 计算信号 x的长度 fn=1000。 % 单频噪声频率 t=0:1/fs:(N1)/fs。 % 计算时间范围,样本数除以采样频率 x=x39。 y=x+.*sin(fn*2*pi*t)。 %y为加入单频干扰信号后的语音 sound(y,fs,bits)。 % 对加噪信号进行回放 X=abs(fft(x))。 % 对原始信号进行 fft变换 ,取幅度谱 Y=abs(fft(y))。 % 对加噪后信号进行 fft变换 ,取幅度谱 X=X(1:N/2)。 Y=Y(1:N/2)。 % 截取前半部分 deltaf=fs/N。 % 计算频谱的谱线间隔 f=0:deltaf:fs/2deltaf。 % 计算频谱频率范围 subplot(2,2,1)。 plot(t,x)。 axis([0 1 1 1])。 grid on。 %画原始语音信号的 时域图 xlabel(39。 时间 (s)39。 )。 ylabel(39。 幅度 39。 )。 title(39。 原始语音信号 39。 )。 subplot(2,2,2)。 plot(f,X)。 axis([0 4000 0 1500])。 grid on。 %画原始语音信号幅度谱图 xlabel(39。 频率 (Hz)39。 )。 ylabel(39。 幅度谱 39。 )。 title(39。 语音信号幅度谱图 39。 )。 subplot(2,2,3)。 plot(t,y)。 axis([0 1 1 1])。 grid on。 %画加噪语音信号的时域图 xlabel(39。 时间 (s)39。 )。 ylabel(39。 幅度 39。 )。 title(39。 加入单频干扰后的语音信号 39。 )。 subplot(2,2,4)。 plot(f,Y)。 axis([0 4000 0 1500])。 grid on。 %画加噪语音信号幅度谱图 xlabel(39。 频率 (Hz)39。 )。 ylabel(39。 幅度谱 39。 )。 title(39。 加入干扰后的语音信号幅度谱图39。 )。 在 MATLAB 上运行结果如图 32 所示: 西安欧亚学 院课程设计 7 由图 32 可以看出, 对比原始信号与加噪信号幅度谱图我们可以清晰的看到 在1000Hz 是出现了一个脉冲,从而使原有的音频听上去有了噪声,这样就到达了预期结果 滤波器的设计 滤波器设计就是要找到一组能满足特定滤波要求的系数向量 a和 b,而它主要是通过设计指标来实现的。 滤波器设计的要求或指标一般是在频域上给出的,常用的滤波器频域指标有: fp fs fs fp Rp、 As。 要达到最佳的滤波效果,则需要对fp fs fs fp2 和 Rp、 As 进行适当的调整。 由图 33 可以看出,语音信号可以选择 fp1=900; fs1=950; fs2=1050; fp2=1100; Rp=1; As=60 的滤波器。 在 MATLAB中,通常采用 1/2 采样频率进行归一化处理,如果将频率转化为角频率,则需将归一化频率乘以 pi。 设计程序如下: fp1=900。 fs1=950。 fs2=1050。 fp2=1100。 Rp=1。 As。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。