语音信号的噪声分析及滤波的过程研究资料.pdf

上传人:tbuqq 文档编号:4707508 上传时间:2019-11-28 格式:PDF 页数:14 大小:794.87KB
返回 下载 相关 举报
语音信号的噪声分析及滤波的过程研究资料.pdf_第1页
第1页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《语音信号的噪声分析及滤波的过程研究资料.pdf》由会员分享,可在线阅读,更多相关《语音信号的噪声分析及滤波的过程研究资料.pdf(14页珍藏版)》请在三一文库上搜索。

1、电网络理论 课程设计与报告 题目:语音信号的噪声分析及滤波的过程研究 一、 语音信号的噪声分析及滤除一般过程 选择一个语音信号作为分析的对象,或录制一段格式为 *.wav各人自己的 语音信号,对其进行频谱分析;利用MATLAB 中的随机函数产生噪声加入到语音 信号中,模仿语音信号被污染,并对其进行频谱分析;设计数字滤波器,并对 被噪声污染的语音信号进行滤波,分析滤波后信号的时域和频域特征,回放语 音信号。其流程图如下所示: 二、 音频信号、噪声的分析 (一) 、音频信号分析 音频信号的频率范围在20Hz-20000Hz ,是人耳可以听到的频率范围,超过 这个范围的音频信号没有意义。语音的频率范

2、围在30-1000Hz 之间。 (二)、噪声的产生 噪声的来源一般有环境设备噪声和电气噪声。环境噪声一般指在录音时外界 环境中的声音, 设备噪声指麦克风、 声卡等硬件产生的噪声, 电气噪声有直流电 中包含的交流声, 三极管和集成电路中的无规则电子运动产生的噪声,滤波不良 产生的噪声等。这些噪声虽然音量不大( 因为在设备设计中已经尽可能减少噪 声),但参杂在我们的语音中却感到很不悦耳,尤其中在我们语音的间断时间中, 噪声更为明显。 三、A/D 转换 A/D转换可分为 4 个阶段:即采样、保持、量化和编码。 采样就是将一个时间上连续变化的信号转换成时间上离散的信号,根据奈奎 斯特采样定理fsZZf

3、h ,如果采样信号频率大于或等于2 倍的最高频率成分,则 可以从采样后的信号无失真地重建恢复原始信号。考虑到模数转换器件的非线性 失真、量化噪声及接收机噪声等因素的影响,采样频率一般取 253 倍的最高 频率成分。 要把一个采样信号准确地数字化, 就需要将采样所得的瞬时模拟信号保持一 段时间,这就是保持过程。保持是将时间离散、数值连续的信号变成时间连续、 数值离散信号, 虽然逻辑上保持器是一个独立的单元,但是,实际上保持器总是 与采样器做在一起,两者合称采样保持器。 图给出了 A/D采样电路的采样时序图, 采样输出的信号在保持期间即可进行量化和编码。 量化是将时间连续、 数值离散的信号转换成时

4、间离散、幅度离散的信号; 编 码是将量化后的信号编码成二进制代码输出。到此,也就完成了 A/D 转换,这些 过程通常是合并进行的。 例如,采样和保持就经常利用一个电路连续完成,量化 和编码也是在保持过程中实现的。 四、 通用串行总线 (一)、 USB 总线的分析 USB标准采用 NRZI 方式(翻转不归零制)对数据进行编码。翻转不归零制 (non-return to zero,inverted) ,电平保持时传送逻辑1,电平翻转时传送逻 辑 0。USB 接头提供一组 5 伏特的电压, 可作为相连接 USB设备的电源。实际上, 设备接收到的电源可能会低于5V,只略高于 4V。USB规范要求在任何

5、情形下, 电压均不能超过 5.25V;在最坏情形下(经由USB供电 HUB 所连接的 LOW POWER 设备)电压均不能低于4.375V,一般情形电压会接近5V。 (二)、PCI 总线 PCI是由 Intel公司 1991 年推出的一种局部总线。从结构上看,PCI 是在 CPU 和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层 的管理,并实现上下之间的接口以协调数据的传送。管理器提供了信号缓冲, 使 之能支持 10 种外设,并能在高时钟频率下保持高性能,它为显卡,声卡,网卡, MODEM等设备提供了连接接口,它的工作频率为33MHz/66MHz 。 五、 语音信号杂音滤除的

6、具体实现 (一)、语音信号的采集 利用 PC 机上的声卡和 WINDOWS 操作系统可以进行数字信号的采集。 将话筒 输入计算机的语音输入插口上, 启动录音机。 按下录音按钮 , 接着对话筒说话 “语 音信号处理”, 说完后停止录音 , 屏幕左侧将显示所录声音的长度。 点击放音按钮 , 可以实现所录音的重现。以文件名“speech”保存入X: MATLAB work 中。 可以看到 , 文件存储器的后缀默认为*.wav , 这是 WINDOWS 操作系统规定的声音 文件存的标准。 (二)、语音信号的时频分析 利用 MATLAB 中的“wavread”命令来读入(采集)语音信号,将它赋值给某 一

7、向量。再对其进行采样,记住采样频率和采样点数。 其格式是: y=wavread(file)功能是读取 file所规定的 wav文件,返回采样值 放在向量 y 中。 接下来,对语音信号OriSound.wav 进行采样。其程序是 y,fs,nbits=wavered (OriSound); 把语音信号加载入Matlab 仿真软件 平台中。 然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB 提 供了快速傅里叶变换算法FFT计算 DFT的函数 fft,其调用格式是 Xk=fft(xn,N)。 参数 xn 为被变换的时域序列向量, N是 DFT变换区间长度,当 N大于 xn 的长度

8、 时,fft函数自动在 xn 后面补零。,当 N小于 xn 的长度时, fft函数计算 xn 的 前 N个元素,忽略其后面的元素。 在本次设计中, 我们利用 fft对语音信号进行快速傅里叶变换,就可以得到 信号的频谱特性。其程序如下: fs=22050; y,fs,nbits=wavread (OriSound.wav); sound(y,fs,nbits); %回放语音信号 N= length (y) ; %求出语音信号的长度 Y=fft(y,N); %傅里叶变换 subplot(2,1,1); plot(y);title(原始信号波形 ); subplot(2,1,2); plot(abs

9、(Y); title(原始信号频谱 ) 程序结果如下图: 图 1 原始信号波形及频谱 (三)、语音信号加噪与频谱分析 MATLAB 中产生高斯白噪声非常方便,有两个产生高斯白噪声的两个函数。 我们可以直接应用两个函数:一个是WGN,另一个是 AWGN。WGN 用于产生高斯白 噪声, AWGN 则用于在某一信号中加入高斯白噪声。也可直接用randn 函数产生 高斯分布序列。 在本次课程设计中,用MATLAB 中的随机函数 (rand 或 randn) 产生噪声加入 到语音信号中,模仿语音信号被污染,并对其频谱分析。Randn函数有两种基本 调用格式: Randn(n)和 Randn (m,n),

10、 前者产生 nn 服从标准高斯分布的随机 数矩阵,后者产生m n 的随机数矩阵。在这里,用Randn (m,n)函数。 语音信号添加噪声及其频谱分析的主要程序如下: y,fs,nbits=wavread (OriSound.wav); N = length (y) ; %求出语音信号的长度 Noise=0.01*randn(n,2); %随机函数产生噪声 Si=y+Noise; %语音信号加入噪声 sound(Si); subplot(2,1,1); plot(Si);title(加噪语音信号的时域波形 ); S=fft(Si); %傅里叶变换 subplot(2,1,2); plot(abs

11、(S); title(加噪语音信号的频域波形 ); 程序结果如下图: 图 2 加噪后的波形及频谱分析 六、 数字滤波器设计 滤波器设计方法有间接法和直接法, 间接法是借助于模拟滤波器的设计方法 进行的。其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s) ,然后将 H (s)按某种方法转换成数字滤波器的系统函数H(z) 。间接法,常用的方法有窗 函数法、频率采样等。 具体设计步骤如下: (1)确定所需类型数字滤波器的技术指标。 (2)将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频 率,转换公式为 =2/T tan(0.5) (3)将相应类型的模拟滤波器技术指标转换成模拟低通滤波

12、器技术指标。 (4)设计模拟低通滤波器。 (5)通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。 (6) 采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字 滤波器。 脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏 离模拟滤波器的频响特性。 原则是在保证阻带衰减满足要求的情况下,尽量选择 主瓣的窗函数。 (1)构造希望逼近的频率响应函数。 (2)计算 h(n) 。 (3)加窗得到设计结果。 接下来,我们根据语音信号的特点给出有关滤波器的技术指标: 低通滤波器的性能指标: fp=1000Hz,fc=1200Hz,As=100db ,Ap=1dB 高通滤波器的

13、性能指标: fp=3500Hz,fc=4000Hz,As=100dB ,Ap=1dB ; 带通滤波器的性能指标: fp1=1200Hz,fp2=3000hZ,fc1=1000Hz,fc2=3200Hz,As=100dB ,Ap=1dB 数字滤波器的主要程序: 1、低通滤波器 : wp=2*pi*Fp/Ft; ws=2*pi*Fs/Ft; fp=2*Ft*tan(wp/2); fs=2*Fs*tan(wp/2); n11,wn11=buttord(wp,ws,1,50,s); %求低通滤波器的阶数和截止频率 b11,a11=butter(n11,wn11,s); %求 S域的频率响应的参数 nu

14、m11,den11=bilinear(b11,a11,0.5); %双线性变换实现 S域到 Z 域的变换 h,w=freqz(num11,den11); %根据参数求出频率响应 plot(w*8000*0.5/pi,abs(h); legend(用 butter设计); 图 3 低通滤波器 2、带通 wp1=tan(pi*Fp1/Ft); %带通到低通滤波器的转换 wp2=tan(pi*Fp2/Ft); ws1=tan(pi*Fs1/Ft); ws2=tan(pi*Fs2/Ft); w=wp1*wp2/ws2; bw=wp2-wp1; wp=1; ws=(wp1*wp2-w.2)/(bw*w)

15、; n12,wn12=buttord(wp,ws,1,50,s); %求低通滤波器阶数和截止频率 b12,a12=butter(n12,wn12,s); %求 S 域的频率响应参数 num2,den2=lp2bp(b12,a12,sqrt(wp1*wp2),bw);%将 S域低通参数转为带通的 num12,den12=bilinear(num2,den2,0.5);%双线性变换实现 S域到 Z 域的转换 h,w=freqz(num12,den12); %根据参数求出频率响应 plot(w*8000*0.5/pi,abs(h); axis(0 4000 0 1.5); legend(用 butt

16、er设计); 图 4 带通滤波器 七、 用滤波器对加噪语音信号进行滤波 (一)、滤波 用自己设计的各滤波器分别对加噪的语音信号进行滤波,在 Matlab 中,FIR 滤波器利用函数fftfilt对信号进行滤波, IIR 滤波器利用函数filter对信号 进行滤波。 函数 fftfilt用的是重叠相加法实现线性卷积的计算。调用格式为: y=fftfilter(h,x,M)。其中,h 是系统单位冲击响应向量;x 是输入序列向量; y 是系统的输出序列向量; M是有用户选择的输入序列的分段长度,缺省时,默认 的输入向量的重长度M=512 。 函数 filter的调用格式: yn=filter(B,A

17、.xn) ,它是按照直线型结构实现 对 xn 的滤波。其中 xn 是输入信号向量, yn 输出信号向量。 1、低通滤波器 y,fs,nbits=wavread (speech.wav); n = length (y) ; %求出语音信号的长度 noise=0.01*randn(n,2); %随机函数产生噪声 s=y+noise; %语音信号加入噪声 S=fft(s); %傅里叶变换 z11=filter(num11,den11,s); sound(z11); m11=fft(z11); %求滤波后的信号 subplot(2,2,1); plot(abs(S),g); title(滤波前信号的频

18、谱 ); grid; subplot(2,2,2); plot(abs(m11),r); title(滤波后信号的频谱 ); grid; subplot(2,2,3); plot(s); title(滤波前信号的波形 ); grid; subplot(2,2,4); plot(z11); title(滤波后的信号波形 ); 图 5 性法低通滤波 2、带通滤波器 y,fs,nbits=wavread (speech.wav); n = length (y) ; %求出语音信号的长度 noise=0.01*randn(n,2); %随机函数产生噪声 s=y+noise; %语音信号加入噪声 S=f

19、ft(s); %傅里叶变换 z12=filter(num12,den12,s); sound(z12); m12=fft(z12); %求滤波后的信号 subplot(2,2,1); plot(abs(S),g); title(滤波前信号的频谱 ); subplot(2,2,2); plot(abs(m12),r); title(滤波后信号的频谱 ); subplot(2,2,3); plot(s); title(滤波前信号的波形 ); subplot(2,2,4); plot(z12); title(滤波后的信号波形 ); 图 6 带通滤波 (二)、回放语音信号 经过以上的加噪声处理后,可在

20、Matlab 中用函数 sound 对声音进行回放。 其调用格式: sound(y,Fs) ,sound(y) 和 sound(y,Fs,bits)。可以察觉滤波前后 的声音有明显的变化。 总结: 语音信号的噪声分析及滤除一般包括以下步骤:语音信号的采样、 保持、模 拟量到数字量转化、通过USB设备或者 PCI 设备采集到电脑、时域 / 频域分析、 设计滤波器、滤波,与原来语音信号进行比对,改进滤波器等步骤。 本次课程设计的主要内容是滤波器设计,数字滤波器是滤波器设计的重要组 成部分。利用 MATLAB 信号处理工具箱可以快速有效地设计各种数字滤波器。课 题基于 MATLAB 有噪音语音信号处

21、理的设计与实现,综合运用数字信号处理的理 论知识对加噪声语音信号进行时域、频域分析和滤波。 通过理论推导得出相应结 论,再利用 MATLAB 作为编程工具进行计算机实现。在设计实现的过程中, 使用 窗函数法来数字滤波器, 并利用 MATLAB 作为辅助工具完成设计中的计算与图形 的绘制。通过对所设计滤波器的仿真和频率特性分析,可知利用MATLAB 信号处 理工具箱可以有效快捷地设计数字滤波器,过程简单方便, 结果的各项性能指标 均达到指定要求。 在时域,频率估计是使用过零检测的方式计算出,从而对于带噪声的信号既 容易造成“误判”,也容易造成“漏判”,且噪声信号越明显,“误判”与“漏判” 的可能

22、性越大。 但在没有噪声或噪声很小时, 时域分析对每个周期长度的检测是 没有累积误差的,故随着样本容量的增大,估计的精度大大提高。 在频域,频率估计是通过找出幅值谱峰值点对应的频率求出。故不会有时域 分析的问题。 但频率离散化的误差及栅栏效应却是不可避免地带来误差,仅频率 离散化的误差就大于Fs/2 。 由实验结果及以上的分析可以得出结论:在作频率估计时, 如果信号的噪声 很小,采用时域分析的方法较好; 如果信号的噪声较大, 采用频域分析的方法较 好。 八、 课程设计总结 本这次电网络课程设计中, 我设计制作了加噪语音信号滤波提取的系统,尤 其是滤波器设计方面的MATLAB 知识,并最后得到了比

23、较理想的效果。通过这次 课程设计,我加深了对滤波器方面知识的理解。用自己设计的各种滤波器对污染 信号进行处理, 也让我更加清楚的理解了滤波器的滤波特性,比较并找到最合适 的滤波器。 这次课程设计是一个不小的挑战,通过不断的学习和尝试,最终制作完成, 在这个过程中我也有了很多的提高和收获。比如,如何在语音信号中添加噪声, 如何灵活的利用各种滤波器对语音信号进行处理,如何用MATLAB 设计 GUI界面 并对控件添加回调函数等。通过查找资料,我掌握了设计GUI基本界面的方法, 把所有的功能集中到一个界面中,操作简便又实用美观。 当然,这次设计也让我 认识到自身的不足, 比如编程经验欠缺, 知识联系能力不强等。 但是通过不断的 改进, 我在这两方面都有了很大的提高, 对课堂知识的掌握和精进有很大的帮助。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1