语音增强报告(谱减法和维纳滤波)_第1页
语音增强报告(谱减法和维纳滤波)_第2页
语音增强报告(谱减法和维纳滤波)_第3页
语音增强报告(谱减法和维纳滤波)_第4页
语音增强报告(谱减法和维纳滤波)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、Speech Enhancement一、 语音增强方法的理论分析 2 1.引言 22.语音增强算法 22.1谱减法 22.2 Wiener滤波法 3二、谱减法 51.算法实现 52.改善算法,减少音乐噪声9三、Wiener滤波法111.算法实现 112.迭代Wiener滤波的算法实现14四、Wiener滤波法与谱减法的比较 17五、参考文献17一、 语音增强方法的理论分析1.引言语音增强的目标是从含有噪声的语音信号中提取尽可能纯净的原始语音。然而,由于干扰通常都是随机的,从带噪语音中提取完全纯净的语音几乎不可能。在这种情况下,语音增强的目的主要有两个:一是改进语音质量,消除背景噪音,使听者乐于

2、接受,不感觉疲劳,这是一种主观度量;二是提高语音可懂度,这是一种客观度量。这两个目的往往不能兼得,所以实际应用中总是视具体情况而有所侧重的。带噪语音的噪声类型可以分为加性噪声和非加性噪声。加性噪声有宽带的,窄带的,平稳的,非平稳的,白噪声,有色噪声,等;非加性噪声如乘性噪声,卷积噪声等。一般,语音增强处理的噪声指环境中的噪声,而这些噪声主要是高斯白噪声,这种噪声一般符合如下的假设:(1)噪声是加性的。(2)噪声是局部平稳的。局部平稳是指一段加噪语音中的噪声,具有和语音段开始前那段噪声相同的统计特性,且在整个语音段中保持不变。也就是说,可以根据语音开始前那段噪声来估计语音中所叠加的噪声统计特性。

3、(3)噪声与语音统计独立或不相关。2.语音增强算法 根据语音和噪声的特点,出现了很多种语音增强算法。比较常用的有噪声对消法、谱相减法、维纳滤波法、卡尔曼滤波法、FIR 自适应滤波法等。此外,随着科学技术的发展又出现了一些新的增强技术,如基于神经网络的语音增强、基于HMM 的语音增强、基于听觉感知的语音增强、基于多分辨率分析的语音增强、基于语音产生模型的线性滤波法、基于小波变换的语音增强方法、梳状滤波法、自相关法、基于语音模型的语音增强方法等。此处主要介绍谱减法和wiener滤波法。2.1谱减法使用谱减法是假设: 噪声叠加; 声与语音不相关;对纯净语音无先验知识; 对统计噪声有先验知识。带噪语音

4、模型为:y(n)=x(n)+v(n)式中,y(n)是带噪语音,s(n)是纯净语音,v(n)是噪声。对式子两边进行傅立叶变换,得Y(k)=X(k)+N(k)由于对噪声的统计参数的未知,所以在实际应用中,通常使用非语音段噪声谱的均值来作为对噪声谱N(k)的估计, 则对纯净语音幅度谱的估量表示为把带噪语音的相位y(ej)当作是纯净语音的相位,那么纯净语音频谱的估量为2.2 wiener滤波法一个线性系统,如果它的单位样本响应为h(n),当输入一个随机信号x(n),且其中s(n)表示信号,表示噪声,则输出y(n)为我们希望x(n)通过线性系统h(n)后得到的y(n)尽量接近于s(n),因此称y(n)为

5、s(n)的估计值,用表示,即维纳滤波器的输入输出关系为:如上图所示。这个线性系统h(n)称为对于s(n)的一种估计器。如果我们以s与s分别表示信号的真值与估计值,而用e(n)表示它们之间的误差,即显然,e(n)可能是正的,也可能是负的,并且它是一个随机变量。因此,用它的均方值来表达误差是合理的,所谓均方误差最小即它的平方的统计平均值最小: 最小已知希望输出为:误差为:均方误差为:上式对求导得到:进一步得:从而有:于是就得到N个线性方程:写成矩阵形式为:简化形式:其中:是滤波器的系数是互相关序列是自相关矩阵由上可见,设计维纳滤波器的过程就是寻求在最小均方误差下滤波器的单位脉冲响应或传递函数的表达

6、式,其实质就是解维纳霍夫(WienerHopf)方程。另外,设计维纳滤波器要求已知信号与噪声的相关函数。二、谱减法1.算法实现%Spectral Subtraction Algorithmwinsize=256; %窗长n=0.05; % 噪声电平speech,fs,nbits=wavread(speech_clean.wav); % 读入数据size=length(speech);numofwin=floor(size/winsize); % 帧数%加窗ham=hamming(winsize); %Generates Hamming Windowhamwin=zeros(1,size); %

7、Vector for window gainenhanced=zeros(1,size); %Vector for enhanced speech%产生带噪声信号x=speech+ n*randn(1,size); %Contaminates signal with white noise%噪声估计noise=n*randn(1,winsize); %Sample of noiseN = fft(noise);nmag= abs(N); %Estimated noise magnitude spectrumfor q=1:2*numofwin-1frame=x(1+(q-1)*winsize/

8、2:winsize+(q-1)*winsize/2); %50 percent overlaphamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+ham; %Window gain%对带噪声语音进行DFTy=fft(frame.*ham);mag = abs(y); %Magnitude Spectrumphase = angle(y); %Phase Spectrum%幅度谱减for i=1:winsizeif mag(i)-nmag(i)0cl

9、ean(i)= mag(i)-nmag(i);elseclean(i)=0;endend%在频域中重新合成语音spectral= clean.*exp(j*phase);%IDFT 并重叠想加enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+real(ifft(spectral);end%除去汉宁窗引起的增益for i=1:sizeif hamwin(i)=0enhanced(i)=0;elseenhanced(i)=enhanced(i

10、)/hamwin(i);endendSNR1 = 10*log10(var(speech)/var(noise); %加噪语音信噪比SNR2 = 10*log10(var(speech)/var(enhanced-speech); %增强语音信噪比wavwrite(x,fs,nbits,noise.wav); %输出带噪信号wavwrite(enhanced,fs,nbits,enhanced.wav); %输出增强信号t=1:size;figure(1),subplot(3,1,1);plot(t/fs,speech); %原始语音波形xlabel(time(s);title(Origina

11、l Voice (n=,num2str(n),) );figure(2),specgram(speech); %原始语音语谱title(Original Voice (n=,num2str(n),) );figure(1),subplot(3,1,2); plot(t/fs,x);xlabel(time(s);title(Noise Added (SNR=,num2str(SNR1),dB);figure(3),specgram(x); %加噪语音语谱title(Noise Added (SNR=,num2str(SNR1),dB);figure(1),subplot(3,1,3);plot(

12、t/fs,enhanced);xlabel(time(s);title(Improved Voice (SNR=,num2str(SNR2),dB);figure(4),specgram(enhanced); %增强语音语谱title(Improved Voice (SNR=,num2str(SNR2),dB);2.改善算法、减少音乐噪声白噪声的短时功率谱上既有波峰,又有波谷。在一帧里,它们的频率分布是随机的;在帧与帧之间,它们的频率和幅度也是随机变化的。当我们从带噪语音的频谱中减去我们估计的噪声谱,所有的带噪语音频谱峰值都会变小,而谷值由于小于估计的噪声值被置零。因此,进行谱减法之后,在频谱

13、上只留下波峰。在这些留下的波峰中,频带较宽的部分被视为时变宽带噪声,频带较窄的部分则被当成时变音调,也就是所谓的音乐噪声。我们改善的算法为:其中,Ps(w)是所求的语音幅度谱,Ps(w)是带噪语音幅度谱,Pn(w)是估计的噪声幅度谱。当1,改善的算法通过消除那些宽波峰,去除所有的宽频带噪声。然后,提高频谱下限Pn(w),使得波峰与波峰间的波谷不会那么深。两者结合,使噪声波峰间的频谱偏移不再那么大,从而减少了音乐噪声。程序如下:%幅度谱减for i=1:winsized(i)=mag(i)-2.5*nmag(i);f(i)=0.01*nmag(i);if d(i)f(i)clean(i)=d(i

14、);elseclean(i)=f(i);endend 三、wiener滤波法1.算法实现function y=mut(x,y,m,L) %计算自相关矩阵的函数tep=0;for i=1:L-abs(m) tep=tep+x(i)*y(i+abs(m);endy=1/(L-abs(m)*tep; %产生原始信号S(n)和带噪信号x(n) clear;a=0.95;L=input(输入信号样本个数L:n)N=input(输入wiener滤波器阶数N:n)temp=rand(1,L);temp1=rand(1,L);v=12(0.5).*(temp-0.5); %让噪声信号v(n)变成均值为0,在-

15、0.5,0.5间均匀分布的随机信号w=(1-a2)*12)(0.5).*(temp1-0.5);s=zeros(1,L);s(1,1)=w(1,1);for i=2:L s(1,i)=a*s(1,i-1)+w(1,i);endx=s+v; %显示原始信号S(n)和带噪信号x(n)clf; figure(1); i=L-100:L; %只显示后100个样值plot(i,s(L-100:L),r,i,x(L-100:L),b:);title( 原始信号s(n)和带噪信号x(n) );legend(s(n),x(n);xlabel(n);ylabel(x(n) & s(n); %求x(n)的自相关矩

16、阵,以及x(n)与s(n)的互相关矩阵 Rxx=zeros(N,N); for i=1:N for j=1:N Rxx(i,j)=mut(x,x,i-j,L); endendfor i=1:N rxs(1,i)=mut(x,s,i-1,L);endrxs=rxs;h=inv(Rxx)*rxs; %绘出Wiener滤波器的N个系数h(n)figure(2);i=1:N;plot(i,h,r:o);title( Wiener滤波器的系数h(n) );legend(h(n); %求带噪信号x(n)经Wiener滤波器的输出序列SR(n)SR=zeros(1,L);h=h;for i=1:L for

17、m=0:N-1 if im SR(1,i)=SR(1,i)+h(1,m+1)*x(i-m); end endend %比较SR(n)和原始信号s(n)figure(3);i=L-100:L;plot(i,SR(L-100:L),r:,i,s(L-100:L),b);title( 经Wiener滤波的信号SR(n)和原始信号s(n) );legend(SR(n),s(n);L=500,N=10 2.迭代wiener滤波的算法实现function y=mut(x,y,m,L) %计算自相关矩阵的函数tep=0;for i=1:L-abs(m) tep=tep+x(i)*y(i+abs(m);end

18、y=1/(L-abs(m)*tep;%产生原始信号S(n)和带噪信号x(n) clear;a=0.95;L=input(输入信号样本个数L:n)N=input(输入wiener滤波器阶数N:n)temp=rand(1,L);temp1=rand(1,L);v=12(0.5).*(temp-0.5);w=(1-a2)*12)(0.5).*(temp1-0.5);s=zeros(1,L);s(1,1)=w(1,1);for i=2:L s(1,i)=a*s(1,i-1)+w(1,i);endx=s+v; %显示原始信号S(n)和带噪信号x(n)clf; figure(1); i=L-100:L;

19、%只显示后100个样值plot(i,s(L-100:L),r,i,x(L-100:L),b:);title( 原始信号s(n)和带噪信号x(n) );legend(s(n),x(n);xlabel(n);ylabel(x(n) & s(n); %计算迭代wiener滤波器的N个系数reh(n) for i=1:N reh(i,1)=0.238*(0.724)(i-1);end %绘出迭代Wiener滤波器的N个系数reh(n)figure(2); i=1:N;plot(i,reh,b-+);title( 迭代Wiener滤波器的系数reh(n) );legend(reh(n);SI(1,1)=

20、0.238*x(1,1);for i=2:L SI(1,i)=0.724*SI(1,i-1)+0.238*x(1,i);end %比较SI(n)和原始信号s(n)figure(3);i=L-100:L;plot(i,SI(L-100:L),r:,i,s(L-100:L),b);title( 经迭代Wiener滤波的信号SI(n)和原始信号s(n) );legend(SR(n),s(n);L=600,N=10四.Wiener滤波法与谱减法的比较1,谱减法是在信号的频域中实现的,而wiener滤波是在信号的时域中实现的。2,实现谱减法要求:噪声可叠加;噪声与语音不相关;对纯净语音无先验知识;对统计噪声有先验知识。 实现Wiener滤波的要求:输入过程是广义平稳的;输入过程的统计特

温馨提示

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

评论

0/150

提交评论