基于MATLAB语音信号降噪处理_第1页
基于MATLAB语音信号降噪处理_第2页
基于MATLAB语音信号降噪处理_第3页
基于MATLAB语音信号降噪处理_第4页
基于MATLAB语音信号降噪处理_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录插 图 清 单II摘 要IIIAbstractIV引 言- 1 -第一章 语音信号的采集- 2 -1.1 语音信号产生数字模型- 2 -1.2 语音信号的数字化和预处理- 2 -第二章 语音信号的分析- 6 -2.1 语音信号的时域分析和频域分析- 6 -2.1.1 语音信号的时域分析- 6 -2.1.2 语音信号的频域分析- 6 -2.2 语音信号处理软件介绍- 7 -2.3 基于MATLAB的语音信号处理- 7 -第三章 MATLAB滤波器设计- 9 -3.1 模拟滤波器设计- 9 -3.2 数字滤波器设计- 9 -第四章 语音信号降噪处理- 11 -4.1 语音信号处理调用函数介绍

2、- 11 -4.2 语音信号降噪程序设计- 12 -4.2.1 原始语音信号的获得- 12 -4.2.2 原始语音信号加噪处理- 13 -4.2.3 语音信号滤波处理- 15 -4.3 改进型语音降噪技术- 18 -结 论- 25 -参考文献- 26 -致 谢- 27 -插 图 清 单图1-1 语音信号产生模型-2-图1-2语音信号时域波形-3-图1-3语音信号频谱图-4-图1-4 时域波形比较-5-图2-1 语音信号降噪流程图-8-图 3-1 巴特沃斯滤波器频率响应-10-图4-1 原始语音信号时域波形-13-图4-2 原始语音信号频谱图-13-图4-3 加噪语音信号时域波形-15-图 4-

3、4 加噪语音信号频谱图-15-图 4-5 滤波前后时域波形比较图-17-图 4-6 滤波前后频谱比较图-17-图 4-7 语音激活检测框图-18-图 4-8 纯净语音信号时域波形-23-图 4-9 带噪语音信号时域波形-23-图 4-10 增强后语音信号时域波形-24-摘 要语音是语言符号系统载体。由人的发音器官发出,带有一定意义的语言意义。语言通过语音实现它的社会功能。语言的声音和语言的意义是紧密联系着的,但语言和语音又是有着本质区别的。人们通过语言进行交流和社会活动,我们要对语音进行处理分析,优化人类通信交流。对于语音信号的处理,有通过语音信号的数字处理技术和相关技术,研究语音信号处理是十

4、分有实际意义的。本次论文制作,选取的是一段wav格式语音信号,运用 MATLAB软件分析语音信号的时域波形和频域图形。在对语音信号进行滤波处理前,先对原始语音信号进行了加噪处理,此举目的是为了使滤波前和滤波后的信号有明显区别。加噪后的语音通过MATLAB绘制出它的时域波形和频谱。加噪前后的语音信号我们可通过MATLAB软件中sound函数播放,明显感觉到加入噪声的效果。滤波处理后进行了语音回放。滤波处理在本次设计中用到的是巴特沃斯低通滤波器。对于巴特沃斯低通滤波器的设计,在现在已有相当成熟的设计技术可供借鉴。滤波器降噪效果不是十分理想,本文还提供了一种改进型降噪处理方法。MATLAB软件功能强

5、大,本次语音信号处理所用的都是MATLAB软件中的相关函数。关键词:语音;噪声;MATLAB;滤波器;信号处理AbstractThe voice is the carrier of language symbol system. Issued by the human vocal organs, with a certain sense of meaning in language. Its social function of language are closely linked ,but the language and voice is different in nature. Thr

6、ough language, communication and social activities, to the voice processing and analysis and optimization of human communication exchange. For speech signal processing,digital voice signal processing technology and related technologies,speech signal processing is of practical significance.The paper

7、production, the selected perid of wav format voice signal using MATLAB software to analyze the speech signal time-domain waveform and frequence-domain graphics. Filtering the speech signal, the first of the original speech signal plus noise ,the aim was to make before filtering and the filtered sign

8、al. Voice plus noise by MATLAB to map out its time-domain wavefrom and spectrum. The voice signal before and after adding noise,we can pay through the sound function in the MATLAB software, and obviously feel that by adding the effect of noise. Voice playback filtering,filtering used in the design o

9、f the Butterworth low-pass filter. Butterworth low-pass filter design are now quite mature design technology for reference.MATLAB software is powerful, the correlation function of the speech signal processing are used MATLAB software .Kerwords : voice ; noise; of MATLAB; filter; signal processing 引

10、言通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。语音信号是人们构成思想疏通和感情交流的最主要途径。20世纪60年代中期语音信号的采集与分析作为一个重要的研究领域,形成的一系列数字信号处理方法和技术,如快速博里叶变换(FFT)、数字滤波器。随着信息科学技术的飞速发展,语音信号处理在最近20多年中取得了重大进展。在处理方法上,随着电子计算机的飞速发展,以前以硬件为中心的研究逐渐转化为以软件处理为主的研究。然而,在语音识别领域,初期有几种语音打字机的研究很活跃,但后来被全部停了下来,这说明了当时对话音识别难度的认识得到了加深。20世纪90年代以来,语音信号采集和分析通过科学家的

11、不断努力在实用化方面取得了许多实质性的研究进展。其中,语音信号的识别技术和处理技术逐渐从实验室走到大众的现实生活中,具体体现在移动通信的普。另一方面,为了语音识别实用化的需要,快速搜索识别算法、听觉模型、讲者自适应以及进一步的语言模型的研究等课题倍受关注。本文基于matlab的基础进行语音信号的分析和降噪处理。第一章 语音信号的采集1.1 语音信号产生数字模型一般的语音信号是模拟信号,模拟信号的存储和传输都比数字语音信号占更大的内存和带宽。所以获得数字语音信号可方便对语音信号的后续处理。语音信号的数字模型就是利用数字模拟技术模拟连续语音信号,或者说,利用数字信号处理技术来实现发音器官的模拟。发

12、音器官能发出连续的声波,那么数字模型就能产生与此相对应的信号序列。为了表示取样的语音信号,我们采用的是离散时间模型。虽然已经假定了许多不同的模型,但是目前还没发现一种可以详细描述人类语音中以观察到的全部特征模型。建立模型的基本准则是寻求一种可以表达一定物理状态下的数学关系,要使这种关系不仅具有强大的精确度,而且还要最简单。由于语音信号是一连串的时变过程,具有的是非线性时变特性。然而,作出一些合理的假设,在较短的时间间隔内表示语音信号,可以采用线性时不变模型。图1-1给出经典的语音信号数字模型。这里,语音信号被看成是线性时不变系统在随机噪声或准周期脉冲序列下的输出。冲激序列发生器随机噪声发生器声

13、门波模型声道模型振幅Au振幅Av声道参数图1-1 语音信号产生模型1.2 语音信号的数字化和预处理语音信号的数字化处理一般包括反混叠滤波、采样、放大以及增益控制、A/D转换及PCM编码。预处理则包括预加重、分帧和加窗。在将语音信号进行数字化前,必须先进行防混叠预滤波,预滤波的目的有两个:(1)抑制输入信导各频域分量中频率超出fs/2的所有分量(fs为采样频率),以防止混叠干扰。(2)抑制50Hz的电源工频干扰。这样预滤波器必须是一个带通滤波器。语音信号处理中,为将原始模拟语音信号变为数字信号,必须经过采样和量化两个步骤,从而得到时间和幅度上均为离散的数字语音信号。采样,是信号在时间上的离散化,

14、即在模拟信号x(t)上按照一定时间间隔逐点采取其瞬时值。采样时必须要注意满足奈奎斯特定理,即采样频率fs必须以高于被测信号的最高频率两倍以上的速度进行采样,才能正确地重建原始波形,它是通过采样脉冲和模拟信号相乘来实现的。 根据语音信号时域波形可知,语音信号频率集中于1KHz,而采样频率50KHz远大于1KHz,因此不会发生采样混叠现象。如果上述语音信号的采样频率变为600Hz时,由于采样频率小,所得采样点少,离散信号偏离原始信号,频谱发生混叠。一般而言,采样频率越高,采样就越密,所得离散信号就越逼近原始信号。但对于固定长度的信号,过高的采样频率并不可取,会给计算机增加不必要的工作量和存储空间。

15、采样频率过低,采样点间隔过远,则离散信号不足以反映原有信号波形特征,无法使信号复原,造成信号混淆。根据采样定理,当采样频率大于信号的两倍带宽时,采样过程不会丢失信息,利用理想滤波器可从采样信号中不失真地重构原始信号波形。采样后的信号仍然是模拟信号,需对其进行量化,才可得到数字信号。量化是对幅值进行离散化,即将振动幅值用二进制量化电平来表示。量化电平按级数变化,实际的振动值是连续的物理量。量化一般有均匀量化和非均匀量化。而均匀量化对于小输入信号很不利,为了克服这个缺点,改善小信号时的信号量噪比,通常在实际中用到非均匀量化。非均匀量化间隔是根据信号抽样值的不同而变化的。 语音信号经过预滤波和采样后

16、,由A/D变换器变换为二进制数字码。这种防混叠滤波与模数转换器通常做在一个集成块内,因此到目前来说,语音信号的数字化的质量还是可靠地。第二章 语音信号的分析2.1 语音信号的时域分析和频域分析2.1.1 语音信号的时域分析语音信号是一种非平稳的时变信号,它携带着各种信息。在语音识别、语音增强、语音编码和语音合成等语音处理中全都需要提取语音中包含的各类信息。语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。语音信号分析可以分为时域变换和频域变换分析方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数

17、等。(1) 提取:通过图形用户界面上的菜单功能按键采集电脑设备上的一段音频信号,完成音频信号的频率,幅度等信息的提取,并得到该语音信号的波形图。(2) 调整:在设计的用户图形界面下对输入的音频信号进行各种变化,如变化幅度、改变频率等操作,以实现对语音信号的调整。2.1.2 语音信号的频域分析 分析语音信号的频域特征称为语音信号的频域分析。语音信号的频域分析包括语音信号的功率谱、频谱、频谱包络倒频谱分析。我在本次设计中选择傅里叶变换的方法对语音信号的频谱进行分析。之所以选择这种方法,是由于在本科学习期间重点学习了傅里叶变换的方法。对于傅里叶变换,它把一些复杂的信号进行分解,分解为许多有一定相互关

18、系的正弦信号的和。再对各个正弦信号进行分析,而得到复杂信号的一些特征。傅里叶变换可用下面公式表示:x(t)为信号的时域表示,X(f)为信号的频域表示,f为频率。信号的傅里叶表示在信号的分析与处理中有着十分重要的作用。因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅里叶分析方法能完善地解决许多信号分析和处理问题。另外,傅里叶表示使信号的某些特性变得更明显。 语音信号是随着时间变化的,但通常认为,语音是一个随机噪声源激励或受准周期脉冲的线性系统的输出,输出频谱是声道系统频率响应与激励源频谱的乘积。然而声道系统的频率响应及激励源都是随时间变化的,一般标准的傅里叶表示虽然适用于周

19、期及平稳随机信号的表示,但不能直接用于语音信号。语音信号我们则可以认为在短时间内,近似不变,因而可以采用短时分析法,减少分析的困难。2.2 基于MATLAB的语音信号处理Matlab是一个比较常用的语音处理工具箱。基于DSP和MATLAB的语音数据采集和处理系统,该工具包主要应用于语音处理中听觉模型的建立和分析,其中也包含了语音处理的各种基本功能如线性预测、语谱图、识别和合成等语音信号的频域处理。语音虽然是一个非平稳、时变的随机过程,但在短时间内可近似看作是平稳的。如果能从带噪语音的短时谱中估计出“纯净”的语音短时谱,就可达到消除噪声的目的。噪声也是随机过程,所以这种估计只能建立在统计模型基础

20、上。利用人耳感知对语音频谱分量的相位不敏感的特性,这类语音增强算法主要针对短时谱的幅度估计。用MATLAB对语音信号进行处理,综合运用数字信号处理的理论知识对加噪语音信号进行时域、频域分析和滤波。滤波所需的滤波器,可以利用MATLAB工具箱快速有效的设计。本次设计流程,大致包括对原始语音加噪、时域分析和频域分析,绘制出相关波形。加噪语音再通过设计的滤波器,得出处理后的频谱图形。处理的一系列过程,都在MATLAB环境中进行。流程图如图2-1。录制语音信 号有效语音段截取语音信号加噪处理语音信号时域分析和频域分析语音信号滤波处理语音回访图 2-1 语音信号降噪处理流程图第三章 MATLAB滤波器设

21、计3.1 模拟滤波器设计 模拟滤波器的理论和设计方法已相当成熟,设计时可以选用已有的典型模拟滤波器,如巴特沃斯滤波器、契比雪夫滤波器、椭圆滤波器、贝赛尔滤波器等。它们有严格的设计公式和现成的曲线图表可供参考。本次设计中选择巴特沃斯滤波器。巴特沃斯滤波器具有单调下降的幅频特性。该滤波器通带内具有最大平坦的幅频特性,随频率的增大,平滑单调下降。且阶数N越高,响应特性越接近矩形,过度带越窄。巴特沃斯低通滤波器设计:MATLAB信号处理工具箱函数buttap,buttord和butter是巴特沃斯滤波器设计函数。Buttord命令的格式是:n,wn=buttord(wp,ws,Rp,Rs)巴特沃斯低通

22、滤波器系数的计算公式为:b,a=butter(n,Wn)3.2 数字滤波器设计数字滤波器按照实现的网络结构或单位抽样响应进行分类,可以分成无限长单位冲激响应( IIR)数字滤波器和有限长单位冲激响应( FIR)数字滤波器。数字滤波器的四个重要的通带、阻带参数是:fp:通带截止频率(Hz)fs:阻带起始频率(Hz)Rp:阻带内波动(dB),即通带内允许的最大衰减Rs:阻带内最小波动(dB)设采样频率(即奈奎斯特频率)为fN,那么可将以上参数中的频率参数转化为归一化角频率参数:Wp:通带截止角频率(rad/s),wp=fp/(fN/2)Ws:通带起始角频率(rad/s),ws=fs/(fN/2)通

23、过这些参数就可以进行数字滤波器的设计。在本次设计中用到得是FIR滤波器。FIR滤波器的设计方法有窗函数法、频率取样法、最佳等波纹法等。FIR滤波器与IIR滤波器相比,在保证幅频满足技术要求的同时,更容易做到严格的线性相位。在MATLAB设计FIR滤波器的相关文件buttord.m用来确定数字滤波器的阶次,其调用格式为:n,wn=buttord(wp,ws,Rp,Rs)对于不同类型的滤波器,参数Wp和Ws有一些限制:对于低通滤波器,Wp<Ws。bilinear 可实现双线性变换,即由模拟滤波器H(s)到数字滤波器H(z)。其调用格式是bz,az=bilinear(b,a,Fs)式中b,a分

24、别是H(s)的分子、分母多项式的系数向量;bz,az分别是H(z)的分子、分母多项式的系数向量,Fs是抽样频率。本次设计中用到的巴特沃斯低通滤波器设计程序如下:Fs=50000;Ts=1/Fs;wp1=2/Ts*tan(wp/2);  %将模拟指标转换成数字指标ws1=2/Ts*tan(ws/2); N,Wn=buttord(wp1,ws1,Rp,Rs,'s');  %选择滤波器的最小阶数Z,P,K=buttap(N);  %创建butterworth模拟滤波器Bap,Aap=zp2tf(Z,P,K);b,a=lp2lp(Bap,Aap,Wn);&

25、#160;  bz,az=bilinear(b,a,Fs);  %用双线性变换法实现模拟滤波器到数字滤波器的转换H,W=freqz(bz,az);  %绘制频率响应曲线figure(1);plot(W*Fs/(2*pi)   wp=0.25*pi;ws=0.3*pi;Rp=1;Rs=15;abs(H);grid xlabel('频率Hz');ylabel('频率响应幅度');title('Butterworth')该低通滤波器的频率响应如图3-1:图3-1 巴特沃斯滤波器频率响应第四章 语音信号降

26、噪处理4.1 语音信号处理调用函数介绍信号处理中调用函数主要有Wavread,还有其他相关函数,有fftfilt函数、sound函数、filter函数、randn函数和FFT函数。选取一段语音信号,然后在matlab软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数。通过使用wavread函数,理解采样频率、采样位数等概念。wavread函数调用格式:y=wavread(file)读取file所规定的wav文件,pcm格式的文件才能被读取。返回采样值放在向量y中。y,fs,nbits=wavread(file)采样值放在向y中,表示采样频率(),nbits表示采样位数

27、。y=wavread(file,N)读取前N点的采样值放在向量y中。y=wavread(file,,)读取从到点的采样值放在向量y中。对语音信号1.wav进行采样其程序如下:y,fs,nbits=wavread(1.wavv)其中:fs =5000;(fs=50000为双声道设置频率,fs=25000为单声道设置频率)nbits =16;y=wavread(1.wav)另外相关的函数fftfilt的调用格式为y=fftfilt(b,x)该格式是利用FFT的重叠相加法对数据进行滤波的,并且这种频域滤波技术只对FIR滤波器有效。该函数是通过向量b描述的滤波器对x数据进行滤波。函数sound可以对声

28、音进行回放。其调用格式为:sound(x,fs,bits)函数filter的调用格式为y=filter(b,a,x)该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a1,此时表示FIR滤波器,否则就是IIR滤波器。该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y中。rand产生的是0,1上的均匀分布的随机序列 ,randn产生均值为0,方差为1的高斯随机序列,也就是白噪声序列;也就是说,可以直接使用上面两个函数对原始信号添加噪声,调用格式:y=x+rand(length(x),1)或

29、者y=x+randn(length(x),1)在MATLAB的信号处理工具箱中函数FFT用于序列快速傅立叶变换。FFT函数的一种调用格式为其中,x是序列,y是序列的FFT,x可以为一向量或矩阵。FFT函数的另一种调用格式为式中,x,y意义同前,N为正整数4.2 语音信号降噪程序设计4.2.1 原始语音信号的获得 在原始语音信号的得到可用windows的录音机录制一段自己说的话(语音信号),在本次设计中我直接用了一个wav文件来当作原始语音信号,再画出语音信号的时域波形和频谱图;在MATLAB中使用Wavread函数,可得出声音的采样频率fs为5KHz, 且声音是双声道的。利用sound函数,

30、可清晰地听到一段音乐语音。设计程序详见附录1:得到时域波形和频谱图如图4-1和图 4-2:图4-1 原始语音信号时域波形时域波形中的蓝色波形是选用的语音信号原来带有的噪声,说明原始的声音包含在少量噪声。图4-2原始语音信号频谱图从频谱图可以看出,语音信号的频谱在0,2是对称的,主要看0,2.5KHZ之间的频谱,可以看出这段语音信号的频谱主要集中在0,1KHZ之间,高频部分几乎为0 。4.2.2 原始语音信号加噪处理 运用MATLAB,给语音信号加上噪声,绘出加噪后的语音信号时域波形和频谱。应当注意加入的单频噪声的位置应高于原始语音信号的频率,噪声频率越高,滤波器设计的指标就会越宽松,这样可使噪

31、声容易被滤除。高斯白噪声加噪设计程序见附录2:加噪声后的语音信号时域波形和频谱图如图4-3和图4-4:图4-3 加噪语音信号时域波形从时域图中可以看出,声音信号的波形基本都被噪声波形覆盖。图4-4 加噪语音信号频谱图对比图1-2,可以看出,在高频部分1KHZ,2.5KHZ间噪声信号。4.2.3 语音信号滤波处理用前面设计的滤波器对语音信号进行滤波,得出滤波后信号的时域波形和频谱图,并对滤波前、后的信号进行对比,画出时域波形差,分析信号的变化。在MATLAB中,用巴特沃斯数字低通滤波器,其程序设计详见附录3:滤波前后语音信号的时域波形和频谱图对比如图4-5和图4-6:图4-5 滤波前后时域波形比

32、较图图4-6 滤波前后频谱对比图利用函数sound函数,进行语音回放,比较下滤波前后的语音效果,会发现滤除了绝大部分噪声,但没完全滤除,这是设计的滤波器不够精细,残留噪声的缘故。4.3 改进型语音降噪技术上述语音信号降噪处理方法称为谱减法。谱减法就是从输入信号的幅度谱中减去估计得来的噪声平均的幅度谱,其效果相当于在变换域对带噪信号进行了某种均衡化处理。与其它方法相比较,谱相减法引入的约束条件最少,物理意义最直接,运算量小,但是在实际中语音噪声频率和信号频率很接近,噪声频率很难准确的估计出来。因此传统的谱减法除噪效果并不是十分理想。传统的谱减法即在频域将带噪语音的功率谱减去噪声的功率谱,得到语音

33、的功率谱估计,开方后就得到语音幅度估计,将其相位恢复后再采用逆傅立叶变换恢复时域信号。所以在谱减法中噪声功率谱的估计至关重要,如果噪声估计偏差较大的话,这必将会影响语音增强质量。传统的噪声估计方法是基于最优平滑和最小统计的噪声估计,还有一种采用改进的算法基于语音活性检测的噪声估计算法。语音激活检测指从一段包含语音信号中确定出语音的起始点和终点,又称端点检测。语音端点检测的目的就是从连续记录的带噪语音信号中分离出有用的语音信号。语音激活检测是各种语音处理中必需的一个重要环节,精确地确定输入语音的起点和终点将保证语音处理系统良好的性能。对于语音激活检测在语音增强中的应用,为了得到更多的关于背景噪声

34、特性,语音端点检测更注重于如何准确的检测出无音段。一般的语音激活检测是根据语音帧来进行的,语音帧的长度在1030ms不等。语音端点检测的方法可以综述为:从输入信号中提取一个或一系列的对比特征参数,然后将其和一个或一系列的门限阈值进行比较,如图4-7所示。如果超过门限则表示当前为有音段,否则就表示当前为无音段。带噪语音加窗分帧特征提取与阀值比较判断有无语音图4-7语音激活检测框图目前语音端点检测所采取的方法大体可以分为两类:第一类是噪声环境下基于 HMM 模型的语音信号端点检测的方法,该方法要求背景噪声保持平稳且信噪比较高。第二类方法是基于信号的短时能量进行检测的算法,它通过对背景噪声能量的统计

35、,定出能量门限,利用能量门限来确定语音信号起始点。在这里运用语音端点检测采用了第二类方法,即基于信号的短时能量进行检测的算法。基于信号的短时能量检测具体算法如下:1) 计算每一帧的语音能量: (4-1)式中为帧长,为帧的编号,m为每一帧中的各点,为帧数;然而它有一个缺陷,即它对高电平非常敏感(信号的二次方计算)。为此,定义短时平均幅度函数来表征一帧语音信号的能量大小,定义: (4-2)2) 计算前20帧平均噪声能量;3) 求能量最大值和能量最小值,;4) 根据式(4-2)确定门限 (4-3)应用谱相减法实现语音增强基本原理是通过对带噪语音谱减去噪声谱得到语音谱,因此,语音激活检测这一环节非常重

36、要,准确地确定语音的起始点和终止点对噪声谱估计有着重要的作用。改进型语音降噪处理运用端点检测技术,用MATLAB仿真,可明显显示出其优越性。用MATLAB仿真的流程如下:1)对输入的语音信号进行预滤波;2)对滤波后的语音信号进行预加重;3)将语音信号按每帧128个信号点进行分帧,帧移为64;4)对信号帧加汉明窗(Haming);5)对加窗后的信号帧进行FFT变换;6)对各帧语音信号求功率谱;7)根据前20帧求取平均噪声功率;8)利用VAD进行噪声估计检测寂静段,进而组合递归平滑,更新噪声谱;9)进行谱减运算,得到估计出的语音信号功率谱;10)插入相位谱,计算出语音谱;11)进行IFFT变换,得

37、到还原的语音帧;12)根据各个语音帧组合为语音信号;13)对语音信号进行去加重处理,得到最终信号。本次仿真选用wav格式文件2.wav,仿真程序如下:s=wavread(2.wav);n=randn(length(s),1);x=s+n;Wp=0.025*pi,0.85*pi; %通带上下截止频率Ws=0.010*pi,0.95*pi; %阻带上下截止频率Ap=10; %通带内衰减As=60; %阻带内衰减N=128; %每帧的信号个数p=0.0005; %白噪声信号的方差alpha=0.75; %加重系数beta=0.90;%去重系数%产生带通滤波器wdb,mag,pha,grd,w=ban

38、dpass(Wp,Ws,Ap,As,length(x);%将带噪语音信号x通过带通滤波器w,得到语音信号x_bapbap=abs(ifft(w/pi);x_conv=conv(x,bap);x_bap=x_conv(1,1:length(x_conv)/2);%将语音信号x_bap加重,得到语音信号yfor j=1:length(x_bap)-1y(j)=x_bap(j)-alpha*x_bap(j+1);endy(length(x_bap)=x_bap(length(x_bap);%将语音信号y按每帧N个信号点进行分帧,帧移为N/2,得到信号帧y_framfor j=1:floor(leng

39、th(y)/(N/2)-1for k=1:Ny_fram(j,k)=y(j-1)*(N/2)+k);%产生汉明窗hamham=hamming(N);%对信号帧y_fram加汉明窗ham,得到信号帧y_hamfor j=1:floor(length(y)/(N/2)-1for k=1:Ny_ham(j,k)=y_fram(j,k)*ham(k);endendy_fft=fft(y_ham',128);y_fft_angle=angle(y_fft);y_w=sum(abs(y_fft);ave=0;for j=1:20ave=ave+y_w(j);endave=ave/20;EMAX=m

40、ax(y_w(1:20);EMIN=min(y_w(1:20);T=min(0.03*(EMAX-EMIN)+ave,4*ave);for j=1:length(y_w)if y_w(j)<Tnoise_w(j)=y_w(j);elsenoise_w(j)=T;%组合平滑更新噪声谱%采用中值平滑更新噪声谱noise_w,得到噪声谱noise_w_midfor j=2:(length(noise_w)-1)array=noise_w(j-1),noise_w(j),noise_w(j+1);array=sort(array);noise_w_mid(j)=array(2);endnoise

41、_w_mid(length(noise_w)=ave;%采用线性平滑更新噪声谱noise_w_mid,得到噪声谱noise_w_linenoise_w_line(1)=ave;noise_w_line(2)=ave;for j=3:(length(noise_w_mid)-2)noise_w_line(j)=1/9*noise_w_mid(j-2)+2/9*noise_w_mid(j-1)+3/9*noise_w_mid(j)+2/9*noise_w_mid(j+1)+1/9*noise_w_mid(j+2);endnoise_w_line=noise_w_line,ave,ave;%计算原噪

42、声功率谱noise_w与新噪声功率谱noise_w_line的残差噪声谱noise_deltanoise_delta=noise_w-noise_w_line;%采用中值平滑更新残差噪声谱noise_delta,得到残差噪声谱noise_delta_midfor j=2:(length(noise_delta)-1)array=noise_delta(j-1),noise_delta(j),noise_delta(j+1);array=sort(array);noise_delta_mid(j)=s(2);endnoise_delta_mid(length(noise_delta)=0;for

43、 j=3:(length(noise_delta_mid)-2)noise_delta_line(j)=1/9*noise_delta_mid(j-2)+2/9*noise_delta_mid(j-1)+3/9*noise_delta_mid(j)+2/9*noise_delta_mid(j+1)+1/9*noise_delta_mid(j+2);endnoise_delta_line=noise_delta_line,0,0;noise_w_com=noise_w_line+noise_delta_line;%用平滑之后的噪声功率谱noise_w_com减去功率谱y_w%如果减谱后的功率小于

44、0,则置为0%得到减谱后的功率谱y_w_decy_w_dec=y_w-noise_w_com;for j=1:length(y_w_dec)if y_w_dec(j)<0y_w_dec(j)=0;%利用相位谱y_fft_angle恢复减谱后的频域信号y_fft_newfor j=1:N for k=1:floor(length(y)/(N/2)-1 y_percent(j,k)=abs(y_fft(j,k)/y_w(k); endendfor k=1:length(y_w_dec) for j=1:N y_fft_new(j,k)=y_w_dec(k)*y_percent(j,k)*ex

45、p(i*y_fft_angle(j,k);y_new_fram=real(ifft(y_fft_new);%根据信号帧y_new_fram恢复语音信号y_newh=1;for j=1:N/2 y_new(h)=y_new_fram(j,1); h=h+1;endfor j=2:floor(length(y)/(N/2)-1 for k=1:N/2 y_new(h)=y_new_fram(k,j)+y_new_fram(k+N/2,j-1); h=h+1;%对语音信号y_new做去加重,得到减谱完毕的语音信号x_newfor j=1:length(y_new)-1x_new(j)=y_new(j

46、)+beta*y_new(j+1);endx_new(length(y_new)=y_new(length(y_new);wavwrite(x,8000,'noised');wavwrite(x_new,8000,'enhanced');%产生带通滤波器function db,mag,pha,grd,w=bandpass(Wp,Ws,Ap,As,Length)N,wn=buttord(Wp/pi,Ws/pi,Ap,As);b,a=butter(N,wn,'bandpass');H,w=freqz(b,a,Length);mag=abs(H);db

47、=20*log10(mag/max(mag);pha=angle(H);grd=grpdelay(b,a,w);%plot(w/pi,mag);所得仿真图如图4-8、图4-9和图4-10:图4-8 纯净语音信号时域波形图4-9 带噪语音信号时域波形图4-10 增强后语音信时域波形结 论 本文主要是研究语音信号的降噪处理。并且这次设计中主要通过用MATLAB软件分析,得到语音信号的时域波形和频域图形,为后面语音信号处理提供原始信号。对信号进行滤波处理,需要设计滤波器。本文中设计和用到的滤波器是巴特沃斯低通滤波器。对于滤波器的设计,已经有很成熟的技术。所以本次滤波器设计直接借鉴现有的设计技术。为使

48、降噪处理结果更明显,我在处理前对语音信号进行加噪处理,再对其进行滤波。需要指出的是,所加单频噪声应高于语音信号的最高频率,噪声频率越高,在设计滤波器时的指标就可越宽松,使噪声更容易被滤除。在对滤波处理后的语音进行回放时,发现它和未加噪的语音还是有些不同,这是因为噪声未完全滤除的缘故。在滤波处理时,噪声估计直接由含噪语音信号的频域图形估计,略显主观。尤其当噪声为非单一频谱噪声时,这种估计更加不精确,会严重影响滤波器设计时的参数设置,使降噪效果不佳。在文中提出的改进型语音降噪技术,采用语音活性检测的噪声估计算法,更为客观的估计了噪声的频率,保证了语音信号处理系统的良好性能。整个设计之中主要用到的是

49、MATLAB软件,该软件功能强大。就但对语音信号处理这一块来说,就有专门的工具箱进行处理。为我们的学习提供了方便。也激励我需要用更多的时间去学习和思考。参考文献1 胡航 .语音信号处理 M.哈尔滨工业大学出版社.2002.2月.2 张宝锋. 基于DSP的语音识别算法研究与实现 J.电子设计.2011.3 徐明远 邵玉斌.MATLAB仿真在通信与电子工程中的应用 M.西安电子科技大学出版社.2005.4 罗军辉 罗勇江 白义臣等.MATLAB 7.0在数字信号处理中的应用 M.机械工业出版社.2005.5 徐键.无线通信中的声信号处理及其DSP实现 J.信号处理.2000.6 李金宝.抗噪声语音

50、识别的前端处理算法研究 J.计算机应用.2007.7 李海忠 杨艳翔 王娟等.基于改进谱减法的语音增强J.电子设计.2010.4.8 丁玉美.数字信号处理M.西安电子科技大学出版社,20069 周渊.基于MATLAB的噪声信号采集和分析系统的设计J. 清华大学出版社.2004.10 徐靖涛 王金根.基于MATLAB语音信号的分析和处理 J.科学应用.2008.2.11 冯岩 唐普英.基于MATLAB的语音增强系统的设计 J.通信技术.2010.5.12 (美)奥本海默.信号与系统 M.西安电子科技大学出版社.第二版 1997.13 Donoho D L. De-noising by Soft-threshold

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论