数字音效处理器项目报告_第1页
数字音效处理器项目报告_第2页
数字音效处理器项目报告_第3页
数字音效处理器项目报告_第4页
数字音效处理器项目报告_第5页
免费预览已结束,剩余21页可下载查看

付费下载

下载本文档

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

文档简介

1、数字信号处理B课程项目终期报告题目:数字音效处理器组号:14号任课教师:组长:成员:成员:成员:成员:联系方式:二0一五年10月24日目录项目介绍二.项目原理三.项目完成过程四.项目结果与分析五 .工作分配六 .参考文献语音信号码本库一.项目介绍本次项目要求设计一个数字音效处理器, 通过一系列相关算法以及借助相关工具 (MATLAB,对声音信号进行处理,要求具备语音识别以及降除噪声的功能,另外我们又加入了语音均衡器,丰富了数字音效处理器的功能。最后加入GUI界面设计,方便了用户的使用。二.项目原理本部分主要分为三部分,分别是语音识别,噪声降除以及语音均衡器的相关原理。语音识别:1.1项目大体步

2、骤我们主要采用基于VQ的说话人识别,我们采用的识别结构框图如下,识别结果1.2语音信号的预处理预处理包括:预加重,端点检测,分帧以及加窗。预加重的目的是将更为有用的高频部分频谱进行提升,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求取频谱,以便于进行频谱分析或声道参数分析。端点检测即是对输入语音信号的起始点与结束点的判定。分帧:由于语音信号的准平稳特性,使得其只有在短时段上才可被视为一个平稳过程,所以需要把一定长度的语音分为很多帧来分析。加窗:为了减少语音帧的截断效应,降低帧两端的坡度,使语音帧的两端不引起急剧变化而平滑过渡到零,需要将语音帧乘以一个窗函数。1.3MFC

3、CMFCC特征函数的提取Mel频率倒谱系数(MFCC的分析与传统的线性倒谱系数(LPCC不同,它的分析是着眼于人耳的听觉机理,因为人类在对1000Hz以下的声音频率范围的感知遵循近似的线性关系;对1000Hz以上的声音频率范围的感知不遵循线性关系,而是遵循在对数频率坐标上的近似线性关系,所以Mel倒谱系数获得了较高的识别率和较好的鲁棒性。实现上,Mel倒谱系数是将语音频率划分成一系列三角形的滤波器序列,这组滤波器在频率的Mel坐标上是等待宽的。MFCC参数的提取过程为:1 .对输入的语音信号进行分帧、加窗,然后作离散傅立叶变换,获得频谱分布信息。设语音信号的DFT为:NJ2-nkXa(k)-x

4、(n)e-N,0kN-1_*(1)2.再求频谱幅度的平方,得到能量谱。3.将能量谱通过一组Mel尺度的三角形滤波器组。我们定义一个有M个滤波器的滤波器组(滤波器的个数和临界带的个数相近),采用的滤波器为三角滤波器,中心频率为f(m),m=1,2,3,M,本系统取M=100o4.计算每个滤波器组输出的对数能量。NJS(m)=ln(|Xa(k)|2Hm(k),0mM-1*(2)k4其中Hm(k)为三角滤波器的频率响应。5.经过离散弦变换(DCT)得到MFCC系数。M1C(n)=S(m)cos(nn(m0.5/m),0nN-1*(3)m=0MFCC系数个数通常取2030,常常不用0阶倒谱系数,因为它

5、反映的是频谱能量,故在一般识别系统中,将称为能量系数,并不作为倒谱系数,本文选取20阶倒谱系数。与线性预测倒谱分析相比,MFCC勺优点是不依赖全极点语音信号产生模型的假定,因而在噪声环境下表现出更强的鲁棒性,在非特定人说话人识别方面有利于减小因说话人不同的差异可能带来的影响。1.4矢量量化矢量量化是将若干个幅度连续取值的时域采样信号分成一组, 则构成矢量, 然后用若干离散数字值,来表示各种矢量,其有效地利用了矢量中各分量的四种相关的性质,因此在量化过程中最大限度地消除数据之间的冗余,从而实现高效的嫡压缩码。其基本原理为:将一帧语音数据中提取的矢量特征在多维空间给予整体量化。首先把信号序列的每隔

6、K个连续点分成一组,形成K维欧氏空间中的一个矢量,然后对此矢量进行量化。本文中矢量量化有两个作用,在训练阶段,把每个说话者所提取的特征参数进行分类,产生不同码子组成的码本;在识别阶段,我们用VQ方法计算平均失真测度,以此进行说话人识别。VQ码本的设计主要采用LBG算法,该算法是一种递推算法,从一个事先选定的初始码本进行迭代,直到系统性能满足要求或不再有明显的改进为止。具体LBg法如下:设Xk-,K)为训练序列,B为码本。1 .取提取出来的所有帧的特征矢量的型心(均值)作为第一个码字矢量B1。2.将当前的码本Bm艮据以下规则分裂,形成2m个码字。其中m从1变化到当前的码本的码字数,是分裂时的参数

7、,本文e=0.010处收敛,极点全部在z=0处,即FIR一定为稳定系统;结构上是非递归的,没有输出到输入的反馈。对于数字均衡器,一方面用于处理语音信号,另一方面需要用到频率特性分段的带通滤波器,因此本文选用IIR滤波器。3.23.2IIRIIR滤波器设计(1)设计模拟滤波器。根据实际需要确定滤波器的参数,利用的滤波器的设计公式设计模拟滤波器并得到其传递函数H(s);(2)将滤波器转化为数字滤波器。利用冲激响应不变法或双线性变法将H(s)转化成H(z);(3)频率变换。上述得到的是低通滤波器,利用变换公式作频率变换得到高通、带通滤波器。3.33.3均衡器的原理均衡器的基本功能是调节各个频段内的信

8、号的强弱,设计过程如下:?俄示第i路的权值,第i路的输出为?%?匕??表示均衡器的输出三.项目完成过程1 1 . .语音识别以下为语音识别过程所用到的相关函数介绍,具体关系为:VQ.m调用mfcc.m获取单个录音的mel倒谱系数, 接着mfcc.m调用melfb.m,完成语音信号从普通频谱到mel频谱的转换。在train.m文件调用VQ.m即该文件用于训练码本,从而获(1)3)设计出八个频段的对应的带通滤波器;把语音信号分8路用八个带通滤波器进行滤波;将八个滤波器的输出结果进行加权求和,?=?1?*(25)得码本库;在test.m文件调用distance.m计算训练录音与测试录音的mel倒谱系

9、数的欧氏距离,如果最小距离小于一个阈值,则可判断该说话人是否在码本库内以及说话人是谁。1.1VQ函数functionr=VQ(d,k)e=.01;r=mean(d,2);dpr=10000;fori=1:log2(k)r=r*(1+e),r*(1-e);while(1=1)z=distance(d,r);m,ind=min(z,2);t=0;forj=1:2Air(:,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)e)break;el

10、sedpr=t;endendend1.2mfcc函数functionr=mfcc(s,fs)m=100;n=256;l=length(s);nbFrame=floor(l-n)/m)+1;fori=1:nforj=1:nbFrameM(i,j)=s(j-1)*m)+i);endendh=hamming(n);/加窗函数M2=diag(h)*M;fori=1:nbFrameframe(:,i)=fft(M2(:,i);/逐帧进行快速傅立叶变换endt=n/2;tmax=l/fs;m=melfb(20,n,fs);/通过Mel滤波器组得到Mel频谱n2=1+floor(n/2);/求每帧要进行变换

11、的数据的行数z=m*abs(frame(1:n2,:).A2;/求矩阵绝对值和的平方并与原始矩阵相乘。r=dct(log(z);/dct变换1.3melfb函数functionm=melfb(p,n,fs)f0=700/fs;fn2=floor(n/2);lr=log(1+0.5/f0)/(p+1);bl=n*(f0*(exp(01pp+1*lr)-1);/直接转换为FFT的数字模型b1=floor(bl(1)+1;b2=ceil(bl(2);b3=floor(bl(3);b4=min(fn2,ceil(bl(4)-1;pf=log(1+(b1:b4)/n/f0)/lr;fp=floor(pf

12、);pm=pf-fp;r=fp(b2:b4)1+fp(1:b3);c=b2:b41:b3+1;v=2*1-pm(b2:b4)pm(1:b3);m=sparse(r,c,v,p,1+fn2);1.4train函数functioncode=train(traindir,n)k=16;fori=1:n/对数据库中的代码形成码本file=sprintf(%svoice%d.wav,traindir,i);disp(file);s,fs=wavread(file);v=mfcc(s,fs); 计算MFCCs提取特征特征, 返回值是Mel倒谱系数,是一个log的dct得到的codei=VQ(v,k);/训

13、I练VQK本通过矢量量化,得到原说话人的VQB本end1.5distance函数functiond=distance(x,y)M,N=size(x);M2,P=size(y);/音频y赋值给M2,Pif(M=M2)error(不匹配!)/两个音频时间长度不相等endd=zeros(N,P);if(NP)/在两个音频时间长度相等的前提下copies=zeros(1,P);forn=1:Nd(n,:)=sum(x(:,n+copies)-y).A2,1);endelsecopies=zeros(1,N);forp=1:Pd(:,p)=sum(x-y(:,p+copies).A2,1);end/成对

14、欧氏距离的两个矩阵的列之间的距离endd=d.A0.5;1.6test函数functionfinalmsg=test(testdir,n,code)nameList=胡程勇,周轶轩,刘杨雨,腾飞,夏文杰);file=sprintf(%stest.wav,testdir);s,fs=wavread(file);v=mfcc(s,fs);/计算MFCCdistmin=inf;/无穷k1=0;fori=1:length(code)/code的最大长度,对于每个训练码书,计算失真d=distance(v,codei);dist=sum(min(d,2)/size(d,1);/size(d,1):列的长

15、度即行数/min(A,dim),dim取1或2,取1时,与max(A)完全相同,取2时,该函数返回一个列向量,/min第i个元素是A矩阵的第i行上的最小值ifdistdistmindistmin=dist;k1=i;endenddisp(distmin);if(distmin4.5)xianshi=sprintf(说话者为%s!,nameListk1);elsexianshi=endmsgbox(xianshi);上述diatance.m函数中,阈值4.5是通过将码本库里的语音分别作为测试音,与码本库里的码本计算得到的最小距离, 另外再用两个不是码本库里的测试音与码本库的码本计算得到最小距离,

16、取这些最小距离的平均值作为此次识别的阈值,如果小于阈值,则可说明该说话者是码本库中的一个,并进一步可以判断出是码本库中的哪一个。2 2 . .噪声降除WienerScalart:WienerScalart:NoiseCounter=0;NoiseLength=9;G=ones(size(N);Gamma=G;X=zeros(size(Y);fori=1:numberOfFramesSpeechFlag=SF(i);ifi=NISSpeechFlag=0;NoiseCounter=100;%else%NoiseFlag,SpeechFlag,NoiseCounter,Dist=vad(Y(:,i

17、),N,NoiseCounter);endifSpeechFlag=0%在无话段中平滑更新噪声谱值N=(NoiseLength*N+Y(:,i)/(NoiseLength+1);LambdaD=(NoiseLength*LambdaD+(Y(:,i).A2)./(1+NoiseLength);% %更新和平滑噪声方差endgammaNew=(Y(:,i).A2)./LambdaD;% %计算后验信噪比xi=alpha*(G.A2).*Gamma+(1-alpha).*max(gammaNew-1,0);% %计算先验信噪比说话者不在数据库中!,);% %初始化NoiseCounterNoise

18、Counter%设置噪声平滑区间长度%初始化谱估计器% %初始化X X% %若i=NISiNISiNIS判断是否为有话帧Gamma=gammaNew;G=(xi./(xi+1);X(:,i)=G.*Y(:,i);s=s/max(abs(s);N=length(s);globaltime;time=(0:N-1)/fs;ns=1.5*cos(2*pi*50*time);globalx;x=s+ns;%语音信号和snr1=SNR_singlech(s,x);x1=cos(2*pi*50*time);x2=sin(2*pi*50*time);w1=0.1;w2=0.1;e=zeros(1,N);y=

19、zeros(1,N);mu=0.05;fori=1:Ny(i)=w1*x1(i)+w2*x2(i);e(i)=x(i)-y(i);w1=w1+mu*e(i)*x1(i);w2=w2+mu*e(i)*x2(i);endglobaloutputoutput=e;snr2=SNR_singlech(s,output);snr=snr2-snr1;%计算维纳滤波器的谱估计器%维纳滤波后的幅值LMSadaptivefilter:LMSadaptivefilter:%幅值归一化%求出信号长度%设置时间% %计算出50Hz50Hz工频信号% %初始化w1w1和w2w2% %初始化e e和y y% %设置mu

20、mu% %LMSLMS自适应陷波器滤波%陷波器输出%计算滤波后的信噪比50Hz50Hz工频信号叠加% %计算叠加50Hz50Hz工频信号后的信噪比% %设置x1x1和x2x23 3 . .语音均衡器该部分GUI界面如下,主要分成4个部分,音频选择及播放,音感特征调节以及均衡,均衡后音频播放,以及相关的波形图显示。3.1音频选择这里既可以选择音频文件,也可以现场录制一段语音进行均衡处理;3.1音感特征调节及均衡音感特征调节实质是调节八个控件, 从而改变对应滤波器的权值; 滤波器类型选择,用户可以选择4种滤波器,分别为巴特沃斯滤波器,切比雪夫1滤波器,切比雪夫2滤波器以及椭圆滤波器。均衡器的功能的

21、实现,其实质就是生成带通滤波器,并对原信号进行滤波。首先进行频段划分handles.fband=20100200500100020004000800016000;接着便是产生滤波器,该过程我们在确定选择按钮的回调函数中实现,fori=1:8ifget(handles.popufilter,Value)=2ba=butter(order,2*fband(i:i+1)/handles.Fs);/巴特沃斯滤波器(阶数,3db截止频率的归一化值)elseifget(handles.popufilter,Value)=3ba=cheby1(order,0.5,2*fband(i:i+1)/handles

22、.Fs);/切比雪夫一型(阶数,通带最大衰减,通带截止频率归一化值)elseifget(handles.popufilter,Value)=4ba=cheby2(order,20,2*fband(i:i+1)/handles.Fs);/切比雪夫二型(阶数,阻带最小衰减,通带截止频率归一化值)elseifget(handles.popufilter,Value)=5ba=ellip(order,0.5,20,2*fband(i:i+1)/handles.Fs);/椭圆滤波器endeval(sprintf(k=get(handles.band%d,Value);,i);/获取相应的权值y=(9Ak

23、-1)/8*filter(b,a,handles.y);/对语音信号进行滤波handles.yy=handles.yy+y;/将滤波后的输出波形叠加y=(9Ak-1)/8*filter(b,a,handles.y);的作用是加权以便下一句的求和,因为音感特征调节所获得的值在(0,2)之间,而需要的权值是(0,10)之间,所以令w为需要的权值,由于实际需要w为指数变化,故设kw=abc代入w=0,k=0;w=1,k=1;w=10,k=2,可以解得a=1/8,b=9,c=-1,从而得到上述的公式。3.2均衡后播放对均衡过后的语音信号进行播放;3.3相关波形的显示该部分主要显示均衡之前的语音信号的时

24、域波形图,以及均衡之后的时域波形图,方便用户进行比较。4 4 .GUI.GUI界面设计本项目通过MATLAB勺GUI设计界面,使用户更加方便的运用这些功能,设计出来的主界面如下,分为三个功能,语音识别,降噪以及均衡器。语音识别界面如下:训练部分我们设计了用户可以自由选择码本训练的数量, 也可以现场进行码本录制,然后进行码本训练;识别部分主要进行测试音的录制以及识别;界面的右部分主要是录音波形的显示。降噪界面如下:我们分别对音频信号加入工频噪声(这里的工频噪声是一个50Hz的余弦信号)和白噪声,并且针对这两种噪声使用不同的去噪方法进行解决,并且我们可以现场录音,将现场的录音中带有的噪声用维纳滤波

25、器除去。可以看到我们给出了原始音频信号频谱,加噪信号频谱和去噪信号频谱,以此给读者一个更加直观的去噪过程。均衡器界面部分已在第三部分介绍,这里不再叙述。四.项目结果与分析1.1.语音识别识别结果显示如下,该部分设计过程中,我们发现利用VQ矢量量化的方法存在一些问题,如果录音的时候不说话, 那么识别判断出来的结果并不是显示“说话人不在语音库中”, 而是上一次的判断结果,即如果上一次判断是库中的“胡程勇”,那么下一次录音时无人说话,则判断出来的还是库中的“胡程勇”。我们在多次实验中发现,一般将库中的语音作为测试音,所得到的最小距离都比较大,大概在4-5之间,但是如果是空白的录音,具测试所得到的最小

26、距离一般都比较小,大概在2-3附近,所以我们将最小距离设置一个下限,即如果最小距离小于这个下限,则判断不在语音库中。但是这种方法并不能完全解决问题,因为这些阈值都是一个粗略的值,一旦录音环境变了,结果可能就完全不一样。2.2.降噪我们在降噪部分遇到了不小的麻烦,起初我们使用了谱减法和小波变换去噪,可能是我们做得不太好,所以效果不是很理想,接着试过了多种滤波器,但是效果依然不佳。最后我们小组经过讨论,决定使用维纳法去噪。原因是维纳法的去噪效果比较好。我们在处理信噪比(SNR)为5的加噪音频信号时可以取得不错的效果, 可以保证输出与原信号差别不大的音频信号。经过这次实验我们发现自然界里噪声真是无处不在,但是如何处理这些噪声又是一个老大难的问题,对于某一种噪声而言,我们往往会使用针对它的降噪法,自适应滤波法就如同万精油一般,样样行但不是样样精。所

温馨提示

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

评论

0/150

提交评论