• 876.95 KB
  • 27页

数字音效处理器项目报告

  • 27页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《数字信号处理B》课程项目终期报告:字音效处理器14号题目:一组号:_任课教师:组长:_成员:_成员:_成员:_成员:_联系方式:二0—五年10月240 目录项目介绍•项目原理•项目完成过程四.项目结果与分析五.工作分配六.参考文献 一.项目介绍本次项0要求设计一个数字音效处理器,通过一系列相关算法以及借助相关工具(MATLAB),对声音信号进行处理,要求具备语音识别以及降除噪声的功能,另外我们又加入了语音均衡器,丰富了数字音效处理器的功能。最后加入GUI界而设计,方便了用户的使用。二.项目原理本部分主要分为三部分,分别是语音识别,噪声降除以及语音均衡器的相关原理。语音识别:1.1项目大体步骤我们主要釆用基于VQ的说话人识别,我们采用的识别结构框图如下,语音信号 1.2语音信号的预处理预处理包括:预加重,端点检测,分帧以及加窗。预加重的目的是将更为有用的高频部分频谱进行提升,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求取频谱,以便于进行频谱分析或声道参数分析。端点检测即是对输入语音信号的起始点与结束点的判定。分帧:由于语音信号的准平稳特性,使得其只有在短时段上才可被视为一个平稳过程,所以需要把一定长度的语音分为很多帧来分析。加窗:为了减少语音帧的截断效应,降低帧两端的坡度,使语音帧的两端不引起急剧变化而平滑过渡到零,需要将语咅帧乘以一个窗函数。1.3MFCC特征函数的提取Mel频率倒谱系数(MFCC)的分析与传统的线性倒谱系数(LPCC)不同,它的分析是着眼于人耳的听觉机理,因为人类在对1000Hz以下的声音频率范围的感知遵循近似的线性关系;对1000Hz以上的声咅频率范围的感知不遵循线性关系,而是遵循在对数频率坐标上的近似线性关系,所以Mel倒谱系数获得了较高的识别率和较好的兽棒性。实现上,Mel倒谱系数是将语音频率划分成一系列三角形的滤波器序列,这组滤波器在频率的Mel坐标上是等待宽的。MFCC参数的提取过程为:1.对输入的语音信号进行分帧、加窗,然后作离散傅立叶变换,获得频谱分布信息。设语音信号的DFT为:/V-l」2nnkXa(k)=^x(n)e~,0r/7(z7t-0.5/m)),0<7iwn)....来估计信号的当前值s(n)<,因此,用A⑻进行过滤问题实际上是一种统计估计问题。一般地,从当前的和过去的观察值x(Xbx(n-l),x(n-2),,估计当前的信号值r(H)=5(n)成为过滤或滤波;从过去的观察值,估计当前的或者将来的信号值y(n)=s(n+N).称为外推或预测;从过去的观察值,估计过去的信号值y(n)=s(n-/V)称为平滑或内插。因此维纳滤波器又常常被称为最佳线性过滤与预测或线性最优估计。这里所谓的最佳与最优是以最小均方误差为准则的。如果我们分别以a,(X)与s(n)表示信号的真实值与估计值,而用e//7)表示他们之间的误差,即(11)e(n)=s(n)—s⑻ 显然可能是正值,也可能是负值,并且它是一个随机变量。因此,用它的均方误差来表达误差是合理的,所谓均方误差最小即它的平方的统计期望最小:(72)=E[e2(n)]=min*************(12)采用最小均方误差准则作为最佳过滤准则的原因还在于它的理论分析比较简单,不要求对概率的描述。为了按(12)式所示的最小均方误差准则来确定维纳滤波器的冲激响应h(n),令G(n)对的导数等于零,即口得Rxs(jn)=h{i)Rxx{m—1),Vm***********(13)式中,么/⑹是伽与x⑻的互相关函数,/^(>1)是对/2)的自相关函数,分别定义为Rxs=F[x(x)s(n+m)]Rxx=F[x(x)%(n+m)]式(13)称为维纳滤波器的标准方程或维纳霍夫方程。如果己知/?xs(m)和那么解此方程即可求的维纳滤波器的冲激响应。式(13)所示标准方程右端的求和范围即/的取值范围没有具体标明,实际上有三种情况:(1)有限冲激响应(FIR)维纳滤波器,/从0到N-1取得有限个整数值;(2)非因果无限冲激响应(非因果IIR)维纳滤波器,Z从到取所有整数值;(3)因果无限冲激响应(因果IIR)维纳滤波器,f从0到取正整数值。上述三种情况下标准方程的解法不同,本文只描述FIR维纳滤波器的求解。设滤波器冲激响应序列的长度为N,冲激响应矢量为h=[h(O)/i(l)…/i(/V—1)]T****************(14)滤波器输入数据矢量为x(n)=[x(n)x(n—1)…x(n—N+l)]r*******(15)则滤波器的输出为y(n)=s(tl)=xT(ri)h=hTx(ji)**************(16)这样,式(13)所示的维纳-霍夫方程可写成 其中P=F[x(n)s(n)]********************(18)是咖)与的互相关函数,它是一个N维列矢量;R是;c⑻的自相关函数,是N阶方阵(19)R=E[x(n)xT(n)]利用求逆矩阵的方法直接求解式(19),得optr-ip********************(20)这里opt表示“最佳”,这就是FIR维纳滤波器的冲激响应2.2LMS自适应滤波法白适应滤波器是能够根据输入信号自动调整性能进行数字信号处理的数字滤波器。作为对比,非自适应滤波器有静态的滤波器系数,这些静态系数一起组成传递函数。对于一些应用来说,由于事先并不知道所需要进行操作的参数,例如一些噪声信号的特性,所以要求使用自适应的系数进行处理。在这种情况下,通常使用自适应滤波器,白适应滤波器使用反馈來调整滤波器系数以及频率响应。总的来说,自适应的过程涉及到将代价函数用于确定如何更改滤波器系数从而减小下一次迭代过程成本的算法。价值函数是滤波器最佳性能的判断准则,比如减小输入信号中的噪声成分的能力。随着数字信号处理器性能的增强,&适应滤波器的应用越来越常见,时至今日它们己经广泛地用于手机以及其它通信设备、数码录像机和数码照相机以及医疗监测设备中。下面图示的框图是最小均方滤波器(LMS)和递归最小平方(Recursiveleastsquaresfilter,RLS,即我们〒时说的最小二乘法)这些将殊自适应滤波器实现的基础。桐图的理论基础是可变滤波器能够得到所要信号的估计。 d(n)1.输入信号是所要信号⑻和干扰噪声V(>2)之和咖)+V(X)2.可变滤波器有有限脉冲响应结构,这样结构的脉冲响应等r滤波器系数。P阶滤波器的系数定义为Wn=[a)n(0),o)n(l),*******************(21)3.误差信号或者叫作代价函数,是所要信号与估计信号之差q^71.)—c/—c/(TI)*************************(22)可变滤波器通过将输入信号与脉冲响应作卷积估计所耍信号,用向量表示为"d(7i)=wn*x(ji)**************************^23)其中x(n)=[x(n),x(n—1)…,x(n—p)]r*(24)是输入信号向量。另外,可变滤波器每次都会马上改变滤波器系数^n+l=Wn+Awn其屮是滤波器系数的校正因子。自适应算法根据输入信号与误差信号生成这个校正因子,LMS和RLS是两种不同的系数更新算法。3语音均衡器我们所设计的数字均衡器毡括以下功能:1.音频文件(.wav)的获取;2.八段数字均衡器设定;3.滤波;4.播放,播放均衡过后的语音信号,并显示相关波形。此设计的关键是设计出满足一定性能指标的各个数字滤波器,构成一个覆盖音频频段的滤波器组。 d(n)1.输入信号是所要信号⑻和干扰噪声V(>2)之和咖)+V(X)2.可变滤波器有有限脉冲响应结构,这样结构的脉冲响应等r滤波器系数。P阶滤波器的系数定义为Wn=[a)n(0),o)n(l),*******************(21)3.误差信号或者叫作代价函数,是所要信号与估计信号之差q^71.)—c/—c/(TI)*************************(22)可变滤波器通过将输入信号与脉冲响应作卷积估计所耍信号,用向量表示为"d(7i)=wn*x(ji)**************************^23)其中x(n)=[x(n),x(n—1)…,x(n—p)]r*(24)是输入信号向量。另外,可变滤波器每次都会马上改变滤波器系数^n+l=Wn+Awn其屮是滤波器系数的校正因子。自适应算法根据输入信号与误差信号生成这个校正因子,LMS和RLS是两种不同的系数更新算法。3语音均衡器我们所设计的数字均衡器毡括以下功能:1.音频文件(.wav)的获取;2.八段数字均衡器设定;3.滤波;4.播放,播放均衡过后的语音信号,并显示相关波形。此设计的关键是设计出满足一定性能指标的各个数字滤波器,构成一个覆盖音频频段的滤波器组。 3.1数字滤波器数字滤波器的功能是把输入序列通过一定的运算,变换成输出序列。数字滤波器分为两类:无限冲激响应(IIR)以及有限冲激响应(FIR)(1)IIRTTR滤波器的最大特点是:单位冲激响应h(n)是无限长的;系统函数H(z)在有限长Z平面有极点存在;结构上存在输出到输入的反馈,即结构上是递归的;稳定的UR滤波器其全部极点一定在革位圆内。(2)FIRFIR滤波器最大的特点是:系统的单位冲激响应h(n)是个有限长序列;系统函数|H(z)|在|z|>0处收敛,极点全部在z=0处,即FTR—定为稳定系统;结构上是非递归的,没有输出到输入的反馈。对于数字均衡器,一方面用于处理语音信号,另一方面需要用到频率将性分段的带通滤波器,因此本文选用IIR滤波器。3.2IIR滤波器设计(1)设计模拟滤波器。根据实际需耍确定滤波器的参数,利用的滤波器的设计公式设计模拟滤波器并得到其传递函数H(s);(2)将滤波器转化为数字滤波器。利用冲激响应不变法或双线性变法将H(s)转化成H(z);(3)频率变换。上述得到的是低通滤波器,利用变换公式作频率变换得到高通、带通滤波器。3.3均衡器的原理均衡器的基本功能是调节各个频段内的信号的强弱,设计过程如下:(1)设计出八个频段的对应的带通滤波器;(2)把语音信号分8路用八个带通滤波器进行滤波;(3)将八个滤波器的输出结果进行加权求和,y(ri)=******************(25)/q表示第i路的权值,第i路的输出力yi(n),y(X)表示均衡器的输出。一.项目完成过程1.语音识别以下为语音识别过程所用到的相关函数介绍,具体关系为:VQ.m调用mfcc.in获取单个录音的mel倒谱系数,接着mfcc.m调用melfb.ni,完成语音信号从普通频谱到mel频谱的转换。在train.m文件调用VQ.m, 即该文件用于训练码本,从而获得码本库;在test,m文件调用distance,m计算训练录音与测试录音的mel倒谱系数的欧氏距离,如果最小距离小于一个阈值,则可判断该说话人是否在码木库内以及说话人是谁。1.1VQ函数functionr=VQ(d,k)e=.01;r=mean(d,2);dpr=10000;fori=1:log2(k)r=[r*(l+e),r*(l_e)];while(1==1)z=distance(d,r);[m,ind]=min(z,[],2);t=0;forj=l:2"ir(:,j)=mean(d(:,find(ind=j)),2);x=distance(d(:,find(ind=j)),r(:,j));forq=1:length(x)t=t+x(q);endendif(((dpr-t)/t)NIS判断是否为有话帧%[NoiseFlag,SpeechFlag,NoiseCounter,Dist]=vad(Y(:,i),N,NoiseCounter);endifSpeechFlag=O%在无话段中平滑更新噪声谱值N=(NoiseLength*N+Y(:,i))/(NoiseLength+l);LambdaD=(NoiseLength*LambdaD+(Y(:,i).A2))./(l+NoiseLength);%更新和平滑噪声方差endgammaNew=(Y(:,i).A2)./LambdaD;%计算后验信噪比xi=alpha*(G.A2)<*Gamma+(l-alpha).*max(gammaNew-1,0);%计算先验信噪比 Ganima=gaminaNew;G=(xi./(xi+l));s=s/max(abs(s));N=length(s);globaltime;time=(0:N-1)/fs;ns=l.5*cos(2*pi*50*time);globalx;x=s+ns";snrl=SNR_singlech(s,x);x1=cos(2*pi*50*time);x2=sin(2*pi*50*time);wl=0.1;w2=0.1;e=zeros(1,N);y=zeros(1,N);mu=0.05;fori=l:Ny(i)=wl*xl(i)+w2*x2(i);e(i)=x(i)-y(i);wl=wl+mu*e(i)*xl(i);w2=w2+mu*e(i)*x2(i);endglobaloutputoutput=e,;%计算维纳滤波器的谱估计器%维纳滤波后的幅值LMSadaptivefilter:%幅值归一化%求出信号长度%设置时间%计算出50Hz工频信号%语音信号和50Hz工频信号叠加%计算叠加50Hz工频信号后的信噪比%设置xl和x2%初始化wl和w2%初始化e和y%设置mu%LMS自适应陷波器滤波%陷波器输出%计算滤波后的信噪比snr2=SNR_singlech(s,output);snr=snr2-snrl; 3.语音均衡器该部分GUI界面如下,主要分成4个部分,音频选择及播放,音感特征调节以及均衡,均衡后音频播放,以及相关的波形图显示。3.1音频选择这里既可以选择音频文件,也可以现场录制一段语音进行均衡处理;3.2音感特征调节及均衡音感特征调节实质是调节八个控件,从而改变对应滤波器的权值;滤波器类型选择,用户可以选择4种滤波器,分别为巴特沃斯滤波器,切比雪夫1滤波器,切比雪夫2滤波器以及椭圆滤波器。均衡器的功能的实现,其实质就是生成带通滤波器,并对原信号进行滤波。首先进行频段划分handles.fband=[20100200500100020004000800016000];接着便是产也波波器,该过程我们在确定选择按钮的回调函数中实现,fori=1:8ifget(handles,popufilter,’Value’)==2[ba]=butter(order,2*fband(i:i+1)/handles.Fs);//巴特沃斯滤波器(阶数,3db截止频率的归一化值) elseifget(handles,popufilter,’Value’)==3[ba]=chebyl(order,0.5,2*fband(i:i+1)/handles.Fs);//切比雪夫一型(阶数,通带最大衰减,通带截止频率归一化值)elseifget(handles,popufilter,’Value’)==4[ba]=cheby2(order,20,2*fband(i:i+1)/handles.Fs);//切比雪夫二型(阶数,阻带最小衰减,通带截止频率归一化值)elseifget(handles,poptifiIter,’Value’)==5[ba]=el1ip(order,0.5,20,2*fband(i:i+1)/handles.Fs);//楠圆滤波器endeval(sprintf(’k=get(handles.band%d,Value’’);’,i));//获取相应的权值y=(9"k-l)/8*filter(b,a,handles,y);//对语音信号进行滤波handles,yy=handles,yy+y;//将滤波后的输出波形叠加y=(9、-l)/8*filter(b,a,handles,y);的作用是加权以便下一句的求和,因为音感特征调节所获得的值在(0,2)之间,而需要的权值是(0,10)之间,所以令w为需要的权值,由于实际需要w为指数变化,故设w=axbk+c代入w=0,k=0;w=l,k:l;w=10,k:2,可以解得a=l/8,b=9,c=_l,从而得到上述的公式。3.3均衡后播放对均衡过后的语咅信号进行播放;3.4相关波形的显示该部分主要显示均衡之前的语音信号的时域波形图,以及均衡之后的时域波形图,方便用户进行比较。4.GUI界面设计本项目通过MATLAB的GUT设计界面,使用户更加方便的运用这些功能,设计出来的主界面如下,分为三个功能,语音识别,降噪以及均衡器。 语音识别界面如下:训练部分我们设计了用户可以自由选择码本训练的数量,也可以现场进行码本录制,然后进行码本训练;识别部分主耍进行测试音的录制以及识别;界面的右部分主要是录音波形的显示。降噪界面如卜: 录音播放工频噪声白噪声去嗦前播放去噪后播放返回主界面噪声降除「波形赚——05010501050002040608100204060810020406081我们分别对音频信号加入工频噪声(这里的工频噪声是一个50Hz的余弦信号)和白噪声,并且针对这两种噪声使用不同的去噪方法进行解决,并且我们可以现场录音,将现场的录音中带有的噪声用维纳滤波器除去。可以看到我们给出了原始音频信号频谱,加噪信号频谱和去噪信号频谱,以此给读者一个更加直观的去噪过程。均衡器界而部分已在第三部分介绍,这里不再叙述。一.项目结果与分析1.语音识别识别结果显示如下, 训练陳繼}fll送择码本个教码本录制说话*为明S®I训练码本录音波形测试A返回主界面娜 该部分设计过程屮,我们发现利用VQ矢量量化的方法存在一些问题,如果录音的时候不说话,那么识别判断出来的结果并不是显示“说话人不在语音库中”,而是上一次的判断结果,即如果上一次判断是库中的“胡程勇”,那么下一次录音时无人说话,则判断出来的还是库中的“胡程勇”。我们在多次实验中发现,一般将库中的语音作为测试音,所得到的最小距离都比较大,大概在4-5之间,但是如果是空白的录音,其测试所得到的最小距离一般都比较小,大概在2-3附近,所以我们将最小距离设置一个下限,即如果最小距离小于这个下限,则判断不在语音库中。但是这种方法并不能完全解决问题,因为这些阈值都是一个粗略的值,一旦录音环境变了,结果可能就完全不一样。2.降噪 pangzao噪声降除录音播放二频噪声白噪声去#前播放去喊后播放返回主界面波形赚厍始语音沽号0246810带吱语音值号IW哪W明曙1珊瞳1111必崖鳥ii瘇齙Ml0246810LMS进波瑤出语音信号时间/s我们在降噪部分遇到了不小的麻烦,起初我们使用了谱减法和小波变换去噪,可能是我们做得不太好,所以效果不是很理想,接着试过了多种滤波器,但是效果依然不佳。最后我们小组经过讨论,决定使用维纳法去噪。原因是维纳法的去噪效果比较好。我们在处理信噪比(SNR)为5的加噪音频信号时可以取得不错的效果,可以保证输出与原信号差别不大的音频信号。经过这次实验我们发现自然界里噪声真是无处不在,但是如何处理这些噪声又是一个老大难的问题,对于某一种噪声而言,我们往往会使用针对它的降噪法,自适应滤波法就如同万精油一般,样样行但不是样样精。所以我们还是要多多学习,填充自己的技能。3.语音均衡器选择巴特沃斯滤波器以及音感特征调节如上,均衡过后图像显示如下,由图像可明显看到时域波形发生变化以及频域内各个频段的对应的幅度值也发生变化。存在的问题是如果语音文件过长,均衡的速度就会很慢,这是因为语音 时间过长,那么输入序列越长,filter函数需要处理的序列越多,则处理时间就相对而言就比较长了。理想的滤波器是不存在的,实际屮只能无限接近理想滤波器,对于IIR滤波器,阶数越高,则滤波器的精度越高,即越接近与理想的情况,但计算机的运行速度就越慢,所以实际中应该权衡运行速度与滤波器的精度。均《后《形x1054.项目总结与体会这次项S对于我们每个人都是收获极人的,我们从一开始的茫然到现在完成项目,所经历的过程并不是一帆风顺的,程序的调试是很需要耐心的,有时候一点小错误就会导致整段程序出错,一些错误是以前没有碰到过的,我们只能上网斉找问题的解决方案,虽然有些麻烦,但是在这过程中,也是有收获的,不次再碰到这些错误,我们就可以顺利解决了。还有就是GUI的界面的设计,我们是首次接触GUI界面编程,起初觉得有些困难,因为设计图形界面不仅需要将程序的功能完整实现,而且还要考虑的界面的大气和美观。正因为如此,我们在学习GUI的过程中体会到了不一般的快乐,因为 GUI能够将自己的想法真正的体现在交互界面上,与用户进行交流,与以往枯燥的编程感觉很不一样。最后,最最重要的是,我们在完成项0的过程中增进了彼此之间的友谊,培养了自己的团队协作能力,而且也学会了自主创新学习。很感谢通信学院能够给与我们这样一个机会,相信在不久的将来,我们从中学到的东西能够带给我们收获。一.工作分配二.参考文献[1]肖正安,湖北第二师范学院学报,基于MATLAB的数字均衡器的设计,2008年第25卷第八期[2]方勇,数据结构(C语言版)数字信号处理一一原理与实践(第2版),北京,清华大学出版社,2010.8[3]刘志城,陈超,基于MATLAB算法的数字变声器,青海民族大学物理与电子信息工程学院,《电子世界》,2013年12期'