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

下载本文档

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

文档简介

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

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

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

4、(n)式中,y(n)是带噪语音,s(n)是纯净语音,v(n)是噪声。对式子两边进行傅立叶变 换,得Y(k)=X(k)+N(k)由于对噪声的统计参数的未知,所以在实际应用中,通常使用非语音段噪声谱的 均值来作为对噪声谱N(k)的估计,八r1匕-1所j=e| 三同同=方z (j|K 1=0则对纯净语音幅度谱的估量表示为i】a)i-而伉)if”iF依)卜 |Xs)2o0otherwise把带噪语音的相位为(&)当作是纯净语音的相位,那么纯净语音频谱的估量为 刈/b )=耳。卜用 1 x(n)=zrri(0内)2.2 wiener滤波法一个线性系统,如果它的单位样本响应为h(n),当输入一个随

5、机信号x(n), 且x(n) = s(n) + L>(n)其中s(n)表示信号,Mn)表示噪声,则输出y(n)为y(n) = Zh(m)x(n-m)m我们希望x(n)通过线性系统h(n)后得到的y(n)尽量接近于s(n),因此称y(n)为s(n) 的估计值,用§(n)表示,即y(n) = S(n)维纳滤波器的输入一输出关系为:%)=寅x(n) = s(n) + 认n) I如上图所示。这个线性系统h(n)称为对于s(n)的一种估计器。如果我们以s与合分别表示信号的真值与估计值,而用e(n)表示它们之间的 误差,即e(n) = s(n) s(n)显然,e(n)可能是正的,也可能是负

6、的,并且它是一个随机变量。因此,用 它的均方值来表达误差是合理的,所谓均方误差最小即它的平方的统计平均值最 小:EF(n)=Eks-6)最小已知希望输出为:N-ly(n) = s(n) = V h(m)x(n-m)nx=O误差为:N-l e(n) = s(n) - s(n) = s(n) - £ h(m)x(n-m) xn-0均方误差为:N-lEe2(n) = E (s(n)-h(m)x(n-m)2 m=O上式对h(m) m=O,l,N1求导得到:NT2E (s(n)-(m)x(n-m)x(n- j) =0 j =0,1,2N-l nW进一步得:N-lE s(n)x(n - j) =

7、 £ % (m)Ex(n-m) x(n-j)j =0,l,-N-lm=0从而有:N-lR(j)= Z%(m)&(jT】)j =0,1,2, N-l m=0于是就得到N个线性方程;j = 0W (0) = h(0)L(0)+ hQ风(1) + + h(N -1)及(N -1)j=lR Q) = h(0)*(l) + h(l)%(0) + + h(N -1)及(N - 2)t j = N-1 Rte(N-l) = h(0) R5(X(N-1) + h(l)R0t (N - 2) + + h(N -1)(0)写成矩阵形式为:MO)*(N1)简化形式:*11 = R其中:H=h(O)

8、 h(l)h(Nl),是滤波器的系数4 =4(0)R广&(N-可是互相关序列氏x(。)*(1)*(NT)*(。)之(N-2)L(N-D*(N - 2)是自相关矩阵 Q(0)由上可见,设计维纳滤波器的过程就是寻求在最小均方误差下滤波器的单位脉冲响应或传递函数的表达式,其实质就是解维纳-霍夫(Wiener-Hopf)方程。 另外,设计维纳滤波器要求已知信号与噪声的相关函数。二、谱减法1 .算法实现%Spectral Subtraction Algorithmwinsize=256; *窗长 n=0.05; %噪声电平speech, fs, nbits =wavread (T speech_

9、clean. wav1) ; % 读入数据 size=length (speech);numofv/in=floor (size/winsize) ; % 帧数 生加窗ham=hamming(winsize)T; %Generates Hamming Window hamwin=zeros(lr size); %Vector for window gain enhanced=zeros(lr size) ; %Vector for enhanced speGch 学产生带噪声信号 x=speechf + n*randn(lr size); %Contaminates signal with w

10、hite noise 5噪声估计 noise=n*randn(lr winsize) ; %Sampie of noise N = fft (noise);nmag= abs(N); %Estimated noise magnitude spectrum for q=l:2*numofwin-lf rame=x (1+ (q-l) *winsize/2: vzinsize+ (q-l) *winsize/2) ; %50 percent overlap ham win (1+ (q-l) *winsize/2: winsize+ (q-l) *winsize/2) =hamwin (1+ (q

11、-l) *v7ins ize/2:winsizef(q-l)*winsize/2)+ham; %Window gain*对带噪声语音进行DFT y=fft(frame.*ham);mag = abs (y) ; %Magnitude Specrt rum phase = angle(y); %Phase Spectrum *幅度谱减 for i=l:v/insizeif mag (i) -nmag (i) >0clean (i) = mag (i) -nmag (i); elseclean (i)=0; endend务在频域中重新合成语音 spectral= clean.*exp(j*p

12、hase); %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=l:sizeifhamwin(i)=0 enhanced(i)=0;elseenhanced(i)=enhanced(i)/hamwin(i);end end SNR1 = 10*logl0 (var (speech1) / var (noise) ) ; *加噪常音信噪比

13、 SNR1=10*logl0 (var (speech1) / var (enhanced-speech1) ; * 增强语音信噪比 wavwrite (xf fsf nbitsr T noise. wavf) ; *输出带噪(肃号wavwrite (enhanced, fsr nbits, f enhanced. wavf) ; *输;1;增强信号 t=l:size;figure (1) 9 subplot (3, 1, 1) ;piot (t/fsr speech1) ; * 原始语音波形 xlabel(1time(s)1);title(1 Original Voice (n=T tnum

14、Zstr(n>r 1;figure (2) , specgram (speech1) ; %以始诘 门语谱title ( Original Voice (n=T r numZstr (n), f) f ;figure(1),subplot (3,1,2); plot(t/fs,x);xlabel(1time(s)f);title (fNoise Added (SNR=f,numZstr (SNR1)r 1dB) 1);figure (3) r specgram (x) ; 当 加噪语音语谱title(1Noise Added (SNR=19numZstr(SNR1)r 1dB)1);fi

15、gure(1) , subplot(3, 1, 3);plot(t/fsr enhanced); xlabel(1 time(s)f);title (improved Voice (SNR=numZst r (SNR2) r fdB) f);figure (4) 9 specgram (enhanced) ;*培强V二门语谱title (1Improved Voice (SNR=l numZstr (SNR2)r 1dB) 1);File Edit View Insert Tools Desktop Window Help ngiqI琳|,0白要/口因|回选:jf r 1 '. . w

16、p' Original Voice (n=0 05)20004000600080001000012000Time9 8 7f 5 4S oo.o.oo.AOUBnbalLl.2.改善算法、减少音乐噪声白噪声的短时功率谱上既有波峰,乂有波谷。在一帧里,它们的频率分布是 随机的;在帧与帧之间,它们的频率和幅度也是随机变化的。当我们从带噪语音 的频谱中减去我们估计的噪声谱,所有的带噪语音频谱峰值都会变小,而谷值由 于小于估计的噪声值被置零。因此,进行谱减法之后,在频谱上只留下波峰。在 这些留下的波峰中,频带较宽的部分被视为时变宽带噪声,频带较窄的部分则被 当成时变音调,也就是所谓的音乐噪声。

17、我们改善的算法为:let D(w)= P$(w)-oPn(w) p(w), if D(w) >BPn(w) = 18Fn(w), otherwise| with a > 19 and 0 < B « 1其中,P1(w)是所求的语音幅度谱,旦(W)是带噪语音幅度谱,4(W)是估计的噪 声幅度谱。当改善的算法通过消除那些宽波峰,去除所有的宽频带噪声。 然后,提高频谱下限BP”(w),使得波峰与波峰间的波谷不会那么深。两者结合, 使噪声波峰间的频谱偏移不再那么大,从而减少了音乐噪声。程序如下:钎幅度谱减for i=l:vzinsized(i)=mag(i)-2.5*nma

18、g(i);f (i)=0.01*nmag(i);if d(i)>f (i)clean (i)=d (i);elseclean (i)=f (i);endendFile Edit View Insert Tools Desktop Window HelpImproved Voice (SNR=12 419dB)20004000600080001000012000Time3 2 10 I o o o三、wiener滤波法1 .算法实现function y =mut (x, y,m, L) +计算门相关矩阵的函数tep=0;for i=l:L-abs(m)tep=tep+x(i)*y(i+ab

19、s(m);endy=l/(L-abs(m)*tep;学产生原始信号s (n)和带噪信号x (n)clear;a=0.95;L=input瑜入信号样本个数L: n*)N=input谕入wiener泄波器分数N: n1)temp=rand(1,L);templ=rand(1, L);v=12人(0.5) .* (temp-0.5) 6让噪声信号v(n)变成均 JO,在-0.5, 0.5间均匀分布的 随机信号w=(l-a/s2)*12)/ (0.5) . * (templ-0.5);s=zeros(1, L);s(l, l)=w(l, 1);for i=2:Ls (1, i) =a*s (lr i-

20、1) +w(lr i);endx=s+v;%显示原始信号S (n)和带噪信号x (n)elf;figure(1);i=L-100:L;%只显示后10 0个样值plot(i,s(L-100:L), 'L,i,x (L-100:L)f T b: T);title (,原始信号s(n)和带噪信号x(n);legend(1s(n)f f f x(n)1);xlabel(1nf);ylabei(1x(n) & s(n)1);“求x (n)的自相关矩阵,以及x (n)与s (n)的互相关矩阵Rxx=zeros(N,N);for i=l:Nfor j=l:NRxx(i/ j)=mut (x,

21、x,i-j, L);endendfor i=l:Nrxs (1, i) =mut (x, s, i-lr L);endrxs=rxs1;h=inv(Rxx)*rxs;+绘出Wiener滤波器的N个系数h (n)figure (2);i=l:N;plot(i,h, f r: o1);title ( 'Wiener滤波器的系数h (n)');legend (fh(n) f);*求带噪佶号x (n)经Wiener滤波器的检出序列SR (n) SR=zeros(lf L);h=hr ;for i=l: Lfor m=0:N-lif i>mSR (1, i) =SR (1, i)+

22、h (1, m+l)*x (i-m);endendend%比较SR (n)和原始信号s (n)figure (3);i=L-100:L;plot(i, SR(L-100:L)r 1r: ', i, s(L-100:L)r f bf);title (滤波的信SR (n)和原始信号s (n),);legend (f SR (n) 1 r fs(n) T);L=500, N=102.迭代wiener滤波的算法实现function y =mutL) 为计算自相关矩阵的函数tep=0;for i=l:L-abs (m)tep=tep+x (i) *y (i+abs (m);endy=l/(L-a

23、bs(m)*tep;务产生原始信号S (n)和带噪信号x (n) clear;a=0,S5;L=i nput (T瑜入信号样本个数L: n *)N=input (,谕入wiener沱波器阶数N: nf)temp=rand(1,L);templ=rand(lr L);v=12A(0.5).(temp-0.5);w=(l-a/s2)*12)/s (0.5) . * (templ-0.5);s=zeros(1,L);s(l, l)=w(l, 1);for i=2:Ls (I, i) =a*s (lr i-1) +w(lr i);endx=s+v;*显示原始信号S (n)和带噪信号x (n) elf;

24、figure(1);i=L-100:L;%只显示后10。个样值plot (i,s(L-100:L), 1 rf rir x(L-100:L)f Tb: T);title (,原始信号s(n)和带噪信号x(n),);legend(1s(n)f f T x (n)f);xlabel(1nf);ylabei(1x(n) & s (n)1);%计算迭代wiener波波器的N个系数reh (n) for i=l:Nreh(ir 1)=0.238* (0.724)人(i-l);ende绘出迭代Wiener源波器的N个系数reh (n)figure (2);i=l:N;plot(i,reh,'

25、;b-+');title (,迭代Wiener滤波器的系数reh (n),);legend('reh (n)T);SI (1, l)=0.238*x(lr 1);for i=2:LSI (lri)=0.724*SI(lri-l)+0.238*x(lri);end务比较S工(n)和原始信号s (n)figure (3);i=L-100:L;plot (i,SI (L-100:L)r 1r: 3 i,s (L-100:L)r 1bf);title (,经迭代Wiener滤波的信号S工(n)和原始信号s (n) T );legend ( SR (n) fs(n) T);L=600, N=10File Edit View Insert Tools Deskto

温馨提示

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

评论

0/150

提交评论