[2017年整理]谱相减MATLAB代码以及信噪比计算

上传人:豆浆 文档编号:915500 上传时间:2017-05-21 格式:DOC 页数:7 大小:203.50KB
返回 下载 相关 举报
[2017年整理]谱相减MATLAB代码以及信噪比计算_第1页
第1页 / 共7页
[2017年整理]谱相减MATLAB代码以及信噪比计算_第2页
第2页 / 共7页
[2017年整理]谱相减MATLAB代码以及信噪比计算_第3页
第3页 / 共7页
[2017年整理]谱相减MATLAB代码以及信噪比计算_第4页
第4页 / 共7页
[2017年整理]谱相减MATLAB代码以及信噪比计算_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《[2017年整理]谱相减MATLAB代码以及信噪比计算》由会员分享,可在线阅读,更多相关《[2017年整理]谱相减MATLAB代码以及信噪比计算(7页珍藏版)》请在金锄头文库上搜索。

1、1实验二 语音信号的频域处理一、 实验目的、要求(1)掌握语音信号频域分析方法(2)了解语音信号频域的特点(3)了解谱减法作为频域语音增强的原理与编程实现(3)了解谱减法的缺点,并分析产生该缺点的原因二、实验原理语音虽然是一个时变、非平稳的随机过程。但在短时间内可近似看作是平稳的。因此如果能从带噪语音的短时谱中估计出“纯净”语音的短时谱,即可达到语音增强的目的。由于噪声也是随机过程,因此这种估计只能建立在统计模型基础上。利用人耳感知对语音频谱分量的相位不敏感的特性,这类语音增强算法主要针对短时谱的幅度估计。短时话幅度估计概述设一帧加窗后的带噪语音为(2.1)()()01ynsdnN其中 为纯净

2、语音, 假设为平稳加性高斯噪声。将 在一组基 上展开,使展对系数为各不相关的随机变量。设k的相关函数为 ,由 KL 展开得知 满足()y(,)yRm()kn(2.2)10()()NkkKn则 的展开式为y(2.3)10()()NkKkknYy如果 的相关长度小于帧长 N,则 的近似函数为() ()kn(2.4)12expk nj可见 的展开过程实际上相当于离散博里叶交换,其展开系数(为傅里()yn叶变换系数。由 ,则有: 。()sdkkYSN其中 、 、 分别为 、 及 的|expkkYj|expkSj()yns()dn傅里叶交换系数。由于假设噪声是高斯分布的,其傅里叶系数 相当于多个高k2斯

3、样本的加权和,故可认为仍然为高斯分布。其均值为 0,方差可通过无语音时对噪声的分析而获得。语音增强的任务就是利用已知的噪声功率谱信息,从 中估计出 。由于kYkS人耳对相位不敏感,故只需估计出 ,然后借用带噪语音的相位,进行傅里|kS叶逆变换就可得到增强的语音。基于短时谱幅度估计的方法的原理图如图 2.1所示。图 2.1 短时谱估计原理图在短时谱幅(STSA)估计基础上,人们提出了许多语音增强算法。基本思想是利用输入带噪语音短时谱幅来估计清洁语音短时谱幅,结合带噪语音相位信息,得到增强信号。运用短时傅里叶变换(STFT)和重叠相加是短时谱估计技术中最常用的方法。输入信号 的短时谱幅 与一个修正

4、因子相乘,得到增强信号谱幅度)(ny|)(|kY(通常修正因子与噪声信号 谱幅估计密切相关) ;或将含噪语音谱幅|)(|kSnd减去噪声谱幅估计,得到增强信号谱幅,这些方法统称为相减类型算法(subtractive type algorithms)。噪声谱幅估计可以通过有声、无声检测获取。一般认为噪声与信号不相关,增强信号谱幅 是清洁语音信号 的谱幅估|)(|kS)(ns计。通常假设人耳对含噪语音相位产生的畸变不敏感,所以进行 IDFT 恢复成时域信号时,含噪语音的相位一般不作处理。三、使用仪器、材料微机(带声卡) 、耳机,话筒。四、 实验步骤(1) 分析含噪语音信号的频谱(幅度谱和相位谱)(

5、2) 获取噪声信号频谱(幅度谱)(3) 对含噪语音信号进行分帧并进行加窗处理(4) 将含噪语音信号谱和噪声谱作为输入,进行谱减法(5) 回复增强语音信号帧.(6) 对比输入信号与增强信号波形,分析算法对其产生的影响.FFTIFFT 幅度谱 估计器y(n)=s(n)+d(n)s(n)相位噪声特性3五、实验过程原始记录(数据,图表,计算)假设 为含噪语音离散时间序列,由清洁语音信号 和非相关加性噪)(ny )(ns声信号 组成。 可表示为d)( (2.5)(ys将输入信号按帧处理,前后帧之间重叠(一般为 50%) ,对每帧含噪语音进行加窗处理,然后进行 FFT 变换,变换到频率域。含噪语音的能量谱

6、可以表示为 (2.6)2|)(|kY2|)(S2|)(kD其中 为 (2.7)(k102)(NnNknjey|)(|Y)(kie其中 为含噪语音 的相位。由于没法直接得到含噪语音中噪声能量谱 ,一般将无声阶段的数帧2|)(|kD噪声信号进行能量谱加权平均得到噪声能量谱估计 。假设噪声与语音信号不相关,语音能量谱估计为 (2.8)2|)(|kS2|)(Y2|)(kD其中清洁语音能量谱估计 由含噪语音能量谱减去噪声能量谱估计得S到。由于噪声能量谱估计与含噪语音中噪声能量谱之间存在差异,式(3.4)可能出现负值,为了避免能量谱出现负值,将这些负值设为零,这一处理称为半波整流(half-wave re

7、ctification)。通过半波整流,清洁语音能量谱估计 可表2|)(|kS示为(2.9)0|)(|0|)(|)(| 222 kSkS当当结合含噪语音相位信息,通过逆离散傅里叶变换(IDFT)得到时域清洁语音信号的估计信号 。)(nsIDFT( ) (2.10)(ns(|kjeS其中增强语音信号频谱 也可以通过时变滤波器 重建)(kG (2.11)kSG)(Y式中时变滤波器(或称为增益函数) 可表示为)(k4(2.12)否 则如 果 1|)(|)|(|)|(|1() 25.025.02kYDkYDkkG六:实验结果,及分析(c) 原始含噪语音(a) 原始含噪语音(b) 谱相减增强语音5图 2

8、.2 谱减法结果分析实验结果:图 2.2 中(a) , (c)为不同信噪比输入含噪语音信号,图 2.2 中(b) , (d)为对应增强语音信号。当信噪比较低时,降噪效果较差。并且引入音乐噪声。算法缺陷分析:(1)不可避免的引入音乐噪声。要有效地滤除含噪语音中的噪声,需要准确地估计含噪语音中噪声的频谱。噪声谱估计越准确,增强信号谱中音乐噪声越小。然而,由于不能直接得到噪声谱,在绝大多数谱相减算法中,通过加权平均无声阶段噪声谱得到噪声谱估计,这种噪声谱估计与含噪语音中的瞬时噪声谱存在差异,噪声平稳性越差,差异越大,由于这种差异的存在,谱相减不可避免地引入音乐噪声。(2) 半波、全波整流式(3.4)

9、中负能量值的产生是由于噪声谱估计发生了错误。这些负值用半波整流(被设定为 0)或全波整流(被设定为绝对值) ,这样处理并没有纠正这种错误,可能导致时域信号更进一步的失真。(3) 用含噪语音的相位作为增强语音的相位在生成增强时域信号时,含噪语音的相位并没有作任何修改。这是基于这样一个事实,相位的失真对语音质量下降造成的影响不大。当信噪比比较高(5dB)时,相位失真确实对语音质量的影响不大,然而,当信噪比较低时(0dB)这种由于相位失真造成的语音质量下降是可以感觉得到的。七、实验参考程序代码谱相减原程序代码hanning=zeros(1,256);speech=zeros(1,32000);dd=

10、wavread(D:语音信号处理实验 2noise.wav);%噪声;sp=wavread(D:语音信号处理实验 2speech.wav);%纯语音;hanning=zeros(1,256);noise=dd(10000:45000);speech=sp(25000:60000);e2=noise+speech;szeros=zeros(1,32000);soutput1=zeros(1,32000);j=sqrt(-1); (d) 谱相减增强语音6a=3,b=0.01;Snoise=zeros(1,256);phase=zeros(1,256);for n=1:256hanning(n)=(

11、1/2)*(1-cos(2*pi)*(n-1)/255);end% to get noise spectral Noise=zeros(1,256);Noise1=zeros(1,256);for i=1:3Noise1(1:256)=abs(fft(e2(1+i*256:256*(i+1).*hanning);Noise=Noise+Noise1/3;end% spectral subtraction algrithm for i=1:245 %第 i 帧snoise=e2(i-1)*128+1:(i-1)*128+256).*hanning; phase=angle(fft(snoise)

12、; % to get noisy signal spectral phaseSnoise=abs(fft(snoise); % to get noisy signal spectral amplitudefor n=1:256 if(Snoise(n)2-Noise(n)2)0 %the power of enhanced speech must be positiveSout0(n)=0.1*Snoise(n);elseSout0(n)=(Snoise(n)2-(Noise(n)*1.5)2)0.5; %power type spectral subtractionendS0(n)=Sout

13、0(n)*(cos(phase(n)+j*sin(phase(n); % to get enhanced speech spectral amplitudeendsout0=ifft(S0);szeros(i-1)*128+1):(i-1)*128+256)=real(sout0);soutput1=soutput1+szeros;szeros=zeros(1,32000);end%the following is for SNR calculationsp_energe=zeros(1,256);sn_energe=zeros(1,256);SN=zeros(1,256);in_SNR1=z

14、eros(1,125);out_SNR1=zeros(1,125);snoise=zeros(1,256);for i=1:240snoise=speech(i-1)*128+1:(i-1)*128+256).*hanning;%第 i 帧清洁语音存放到 snoiseSN=noise(i-1)*128+1:(i-1)*128+256).*hanning; %第 i 帧清洁语音存放到 SN%in_SNR1(i) sp_energe(i)=snoise(1:256)*snoise(1:256);%第 i 帧清洁语音 snoise 的能量存放到 sp_energe(i)sn_energe(i)=SN

15、(1:256)*SN(1:256);%第 i 帧皂声 SN 的能量存放到 sn_energe(i)7in_SNR1(i)=10*log10(sp_energe(i)/sn_energe(i);%第 i 帧含噪语音信号输入信噪比 in_SNR1(i)SN=soutput1(i-1)*128+1:(i-1)*128+256).*hanning; %第 i 帧输出信号存放 SN sn_energe1(i)=SN(1:256)*SN(1:256);%第 i 帧输出信号 SN 能量out_SNR1(i)=10*log10(sp_energe(i)/abs(sn_energe1(i)-sp_energe(i);%第 i 帧增强信号输出信噪比endplot(e2);hold onplot(s

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号