您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 畜牧/养殖 > 谱减法的语音信号增强
设计性实验4语音信号增强一、实验目的1、了解语音信号噪声抑制的仿真方法及原理;2、利用谱想减法抑制语音中的噪声;二、实验要求1、仿真合成一段带噪语音;2、使用谱相减法对带噪语音进行增强;三、实验原理1、语音信号特点:语音信号是一种时变的非平稳的随机信号,但是人类的发声系统的生理结构的变化速度是有一定限度的,在一段时间内(10~30ms)人的声带和声道形状具有相对稳定性,可以认为其特性是不变的,因而语音的短时谱分析也有相对稳定性,在语音增强中可以利用短时谱的这种稳定性。2、语音信号的处理方法根据语音信号的特点,可以将平稳过程中的处理方法和理论引入到语音信号的短时处理当中,将语音信号划分为很多短时的语音段,每个短时的语音段称为一个分析帧。这样,对每一帧语音信号处理就相当于对特征固定的持续信号进行处理。帧既可以是连续的,也可以采用交叠分帧,一般帧长取10~30ms。取数据时,前一帧和后一帧的交迭部分称为帧移,帧移与帧长之比一般取为0~1/2。对取出的语音帧要经过加窗处理,即用一定的窗函数)(nw与信号相乘,从而形成加窗语音。加窗的主要作用在于减少由分帧处理带来的频谱泄露,这是因为,分帧是对语音信号的突然截断,相当于语音信号的频谱与矩形窗函数频谱的周期卷积。由于矩形窗频谱的旁瓣较高,信号的频谱会产生“拖尾”,即频谱泄露。为此,可采用汉明窗,因为汉明窗旁瓣最低,可以有效地克服泄露现象,具有更平滑的低通特性,得到的频谱比较平滑。汉明(Hamming)窗定义:10)),1/(2cos(*46.054.0)(NnNnnw3、谱减法简介谱相减方法是基于人的感觉特性,即语音信号的短时幅度比短时相位更容易对人的听觉系统产生影响,从而对语音短时幅度谱进行估计,适用于受加性噪声污染的语音。谱减法的基本原理:图1谱相减法原理图图中yw(n)为加窗后的带噪信号,Dw(ω)为的噪声信号功率谱,ŝw(n)为增强后的语音信号。由于人耳对语音相位不敏感,所以用原始含噪语音的相位代替估计语音的相位。谱减法实现的几条公式如下:|Ŝw(ω)|2=|Yw(ω)|2−E[|Dw(ω)|2](1)Ŝw(ω)=|Ŝw(ω)|exp(j∠Yw(ω))(2)ŝw(n)=F−1(Ŝw(ω))(3)由式(1)得到增强后的语音信号的功率谱;然后利用原始含噪语音的相位∠Yw(ω)代替增强后语音的相位,恢复出增强后的语音信号ŝw(n)。由公式(1)可看出,估计值|Ŝw(ω)|2不能保证是非负的,这是因为在估计噪声时存在误差,当估计噪声平均功率大于某帧带噪语音功率时,该帧得出的估计值|Ŝw(ω)|2就会出现为负的情况,这些负值我们直接给它们置零。4、“音乐噪声”的产生由于在谱减法处理过程中,是以无声期间统计平均的噪声方差代替当前分析帧各频率点的噪声频率分量,而噪声频谱具有高斯分布,即其幅度随机变化范围很宽,因此相减时,若该帧某频率点噪声分量较大,就会有很大一部分保留,具体来讲,由谱相减所产生的噪声称为残余噪声,与语音信号不相关,是由具有随机频率和幅度的窄带信号所组成。在频谱上呈现随机出现的尖峰,便产生了间歇短暂的突发声调,在听觉上形成有节奏性起伏的类似音乐噪声的残留噪声。5、语音端点检测技术在谱减法中噪声功率谱的估计至关重要,如果噪声估计偏差较大的话,将毫无疑问的影响语音增强质量。语音端点检测是一种噪声估计的算法,目的就是从连续记录的带噪语音信号中分离出我们真正感兴趣的语音信号。语音激活检测指从一段包含语音的信号中确定出语音的起始点和终点,又称端点检测。语音激活检测是基于语音帧来进行的,语音帧的长度在10~30ms不等。语音活性检测的方法可以综述为:从输入信号中提取一个或一系列的对比特征参数,然后将其和一个或一系列的门限阈值进行比较,如图3-2所示。如果超过门限则表示当前为有音段,否则就表示当前为无音段。而门限通常是根据无音段时语音特征确定的。图2语音激活检测框图6、实验的流程图:图3实验流程图用wavread函数读入一个语音信号,然后取其单声道信号得到纯净的语音信号;用rand函数加入噪声,得到加噪的语音噪声;对加噪的语音信号进行分帧,帧长取20ms,每帧的重合长度设置为帧长的2/3,用floor函数求帧数;对分帧信号加上汉明窗,并求得信号的fft频谱,进而求得信号能量和fft的复角度,该角度用于后面增强语音信号的重构;设置阈值为信号开始阶段的能量平均值;进行谱减运算,得到估计出的语音信号功率谱;插入相位谱,计算出语音谱;进行IFFT变换,得到还原的语音帧;对语音信号进行去加重处理,得到最终信号。四、Matlab程序及实验结果分析加窗分帧特征提取与阀值比较判断有无语音带噪语音1、源代码clear;clc;[xx,fs]=wavread('F:\111.wav');%读入语音信号xs=xx(:,1);%取单声道N=length(xs);%求信号长度x=xs+0.01*rand(N,1);%加噪n=fs*20*10^-3;%每帧长取20msn1=ceil(1*n/3);%每两帧重合的长度为1/3frame=floor((N-n)/(n-n1));%求帧数fori=1:framey1=x((i-1)*(n-n1)+1:(i-1)*(n-n1)+n).*hamming(n);%每一帧对应的语音信号fy=fft(y1,n);%求fftene(i,:)=abs(fy).^2;%求能量energeang(i,:)=angle(fy);%求复角度angleendthreshold=sum(sum(ene(2:5,:)))/(4*n);%求阈值,信号开始阶段的能量平均值fori=1:frameene(i,:)=ene(i,:)-threshold;%减谱ene(i,find(ene(i,:)0))=0;%将估计能量小于0的部分赋值为0endfori=1:frameene(i,:)=sqrt(ene(i,:));%开根号Sw=ene(i,:).*exp(j*ang(i,:));%求频域函数Swout(i,:)=real(ifft(Sw))./hamming(n)';%去窗求逆fftendspeech=out(1,:)';%对out求导,以便于原信号比较n2=n;fori=2:frame%将一系列的帧组合还原speech(n2-n1+1:n2)=(speech(n2-n1+1:n2)+out(i,1:n1)')/2;n2=n2+n-n1;speech=[speech;out(i,n1+1:end)'];endfigure(1);subplot(211);plot(xs);title('原始语音信号');%原始语音信号axis([1,(n-n1)*frame+n,min(xs),max(xs)]);subplot(212);specgram(xs,fs,1024,n,n1);%原始信号的语谱图title('原始信号语谱图');figure(2);subplot(211);plot(x);title('加噪语音信号');%加噪的语音信号axis([1,(n-n1)*frame+n,min(x),max(x)]);subplot(212);specgram(x,fs,1024,n,n1);%加噪信号的语谱图title('加噪信号语谱图');figure(3);subplot(211);plot(speech);title('增强的语音信号');%增强的语音信号axis([1,(n-n1)*frame+n,min(speech),max(speech)]);subplot(212);specgram(speech,fs,1024,n,n1);%增强信号的语谱图title('增强信号语谱图');wavplay(xx,fs);%输出原始音频wavplay(x,fs);%输出加噪音频wavplay(speech,fs);%输出增强音频2、程序运行结果由上面几个图的对比可知,经处理后去噪效果明显,较好地抑制了噪声,这从彩色的语谱图中也可清晰的观察到。五、实验总结
本文标题:谱减法的语音信号增强
链接地址:https://www.777doc.com/doc-4752426 .html