版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、语音信号处理实验报告 实验名称 端点检测 学 院 外国语学院 专 业 科技英语 学生姓名 周孝松 提交日期 2014年4月 23日1.实验目的1 语音信号端点检测技术其目的就是从包含语音的一段信号中准确地确定语音的起始点和终止点,区分语音和非语音信号,它是语音处理技术中的一个重要方面。本实验的目的就是要掌握基于MATLAB编程实现带噪语音信号端点检测,利用MATLAB对信号进行分析和处理,学会利用短时过零率和短时能量,对语音信号的端点进行检测。2. 实验原理1、短时能量语音和噪声的区别可以体现在它们的能量上,语音段的能量比噪声段能量大,语音段的能量是噪声段能量叠加语音声波能量的和。在信噪比很高
2、时,那么只要计算输入信号的短时能量或短时平均幅度就能够把语音段和噪声背景区分开。这是仅基于短时能量的端点检测方法。信号x(n)的短时能量定义为: 语音信号的短时平均幅度定义为: 其中w(n)为窗函数。2、短时平均过零率短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。过零分析是语音时域分析中最简单的一种。对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号称为过零。过零率就是样本改变符号次数。信号x(n)的短时平均过零率定义为: 式中,sgn为符号函数,即:过零率有两类重要的应用:第一,用于粗略地描述信号的频谱特性;第二,用于判别清音和浊音、有话和无话
3、。从上面提到的定义出发计算过零率容易受低频干扰,特别是50Hz交流干扰的影响。解决这个问题的办法,一个是做高通滤波器或带通滤波,减小随机噪声的影响;另一个有效方法是对上述定义做一点修改,设一个门限T,将过零率的含义修改为跨过正负门限。于是,有定义: 3、检测方法利用过零率检测清音,用短时能量检测浊音,两者配合。首先为短时能量和过零率分别确定两个门限,一个是较低的门限数值较小,对信号的变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。低门限被超过未必是语音的开始,有可能是很短的噪声引起的,高门限被超过并且接下来的自定义时间段内的语音超过低门限,意味着信号开始。此时整个端点检测可分为四段:
4、静音段、过渡段、语音段、结束。实验时使用一个变量表示当前状态。静音段,如果能量或过零率超过低门限,就开始标记起始点,进入过渡段。过渡段当两个参数值都回落到低门限以下,就将当前状态恢复到静音状态。而如果过渡段中两个参数中的任一个超过高门限,即被认为进入语音段。处于语音段时,如果两参数降低到门限以下,而且总的计时长度小于最短时间门限,则认为是一段噪音,继续扫描以后的语音数据,否则标一记结束端点。3. 实验数据及平台本实验所采用的数据是几段语音文件(老师提供),平台是MATLAB。4. 实验过程(步骤)1、 取一段录音作为音频样本。2、 利用公式分别编程计算这段语音信号的短时能量和短时过零率,然后分
5、别画出它们的曲线。3、 调整能量门限。4、 进行幅度归一化并设置帧长、短时能量阈值、过零率阈值等参数。5、 编写程序实现语音端点检测。6、 最后得到语音端点检测图像。5. 实验结果与总结1、语音1_2.wav2、语音你好.wav这次实验利用MATLAB对信号进行分析和处理,利用短时过零率和短时能量,对语音信号的端点进行检测。由于知识储备的不足,在实验过程中还是遇到比较大的困难,代码是参考网上的,在理解的基础上参考借鉴。但是整个过程自己还是投入其中,收获是比较大的。但是经过这次实验,对短时过零率和短时能量等概念,以及matlab中enframe函数分帧的使用有了深入了解,做出来的结果与结论差不多
6、,效果不错。实验代码function point_check2z=0;s1=wavread(1_2.wav);s=s1/max(abs(s1);s=filter(1 -0.9375,1,s);plot(s);len=length(s);round=160;repeat=80;inc=round-repeat; ka=ceil(len-round)/(round-repeat)+1;s=s;zeros(round-repeat)*(ka-1)+round-len,1);len=length(s);w=zeros(round,ka);for i=1:kafor k=1:roundw(k,i)=s(
7、k+(i-1)*(round-repeat),1);endendST=0.01;f=zeros(ka,1);F=zeros(ka,round);for i=1:kafor k=0:round-1for j=1:round-kF(ka,k+1)=F(ka,k+1)+abs(w(j,i)-w(j+k,i);endif(k0&w(k+2,i)0)z=sign(w(k+1,i)-ST)-sign(w(k+2,i)+ST);elseif(w(k+1,i)0)z=sign(w(k+2,i)-ST)-sign(w(k+1,i)+ST);endif(z=2)f(i,1)=f(i,1)+1;endendende
8、ndamp=sum(abs(w).2,1);amp1=10;amp2=2;zcr1=10;zcr2=6;minsilence=7; minlen=15;status=0;count=0;silence=0;xpoint=;amp1=min(amp1,max(amp)/4);amp2=min(amp2,max(amp)/8);for n=1:ka%goto =0;switch statuscase 0,1;if amp(n) amp1 x1=max(n-count-1,1); xpoint=xpoint,x1;status = 2;silence = 0;count = count + 1;el
9、seif amp(n) amp2 | f(n) zcr2 status = 1;count = count + 1;else status = 0;count = 0;endcase 2, if amp(n) amp2 |f(n) zcr2 count = count + 1;else silence = silence+1;if silence minsilence count = count + 1;elseif count minlen status = 0;silence = 0;count = 0;else status = 3;endendcase 3,status=0;count
10、 = count-silence/2;x2 = x1 + count -1; xpoint=xpoint,x2;count=0;silence=0;endendsubplot(3,1,1)plot(s)axis(1 length(s) -1 1)ylabel(Speech);for i=1:length(xpoint)line(xpoint(i)*inc xpoint(i)*inc, -1 1, Color, red); endsubplot(3,1,2)plot(amp);axis(1 length(amp) 0 max(amp)ylabel(Energy);for i=1:length(x
11、point)line(xpoint(i) xpoint(i),min(amp),max(amp), Color, green); endsubplot(3,1,3)plot(f);axis(1 length(f) 0 max(f)ylabel(ZCR);for i=1:length(xpoint)line(xpoint(i) xpoint(i),min(f),max(f), Color, black); end语音信号处理实验报告 实验名称 基音周期 学 院 外国语学院 专 业 科技英语 学生姓名 周孝松 提交日期 2014年4月 30日 1. 实验目的1、 熟练运用MATLAB软件的运用,学
12、习通过MATLAB软件编程来进行语音信号的基 因周期提取。2、 掌握语音信号的基音周期提取的方法,实现其中一种基频提取方法。3、 学会用自相关法进行语音信号的基因检测。2. 实验原理浊音信号的自相关函数在基因周期的整数倍位置上出现峰值,而清音的自相关函数没有明显的峰值出现。因此检测自相关函数是否有峰值就可以判断是清音还是浊音,而峰-峰值之间对应的就是基音周期。影响从自相关函数中正确提取基音周期的最主要原因是声道响应。当基音的周期性和共振峰的周期性混在一起时,被检测出来的峰值可能会偏离原来峰值的真实位置。另外,在某些浊音中,第一共振频率可能会等于或低于基音频率。此时,如果其幅度很高,它就可能在自
13、相关函数中产生一个峰值,而该峰值又可以同基音频率的峰值相比拟。1、自相关函数 对于离散的语音信号x(n),它的自相关函数定义为:R(k)=x(n)x(n-k),如果信号x(n)具有周期性,那么它的自相关函数也具有周期性,而且周期与信号x(n)的周期性相同。自相关函数提供了一种获取周期信号周期的方法。在周期信号周期的整数倍上,它的自相关函数可以达到最大值,因此可以不考虑起始时间,而从自相关函数的第一个最大值的位置估计出信号的基音周期,这使自相关函数成为信号基音周期估计的一种工具。 2、短时自相关函数语音信号是非平稳的信号,所以对信号的处理都使用短时自相关函数。短时自相关函数是在信号的第N个样本点
14、附近用短时窗截取一段信号,做自相关计算所得的结果Rm(k)=x(n)x(n-k) 式中,n表示窗函数是从第n点开始加入。 3、算法通过对自相关基音检测原理的分析,考虑到检测准确度和检测速率2方面的因素,提出了算法实现方案,并对算法进行了Matlab编程实现。算法包含6个功能模块:带通滤波、取样、分帧、短时能量分析、相关运算、基音检测。 基因周期检测短时自相关分析 分帧 取样语音信号图2.1 基音检测框图3.实验步骤及程序(1) 实验步骤1、 取一段录音作为音频样本。2、 对样本音频进行采样。3、 对采样后样本音频进行分帧。4、 对每一帧求短时自相关函数5、 算出对应周期。(2)语音信号基音周期
15、提取的程序流程图:输入语音信号 采样 分帧短时自相关分析 输出图像图2.2 语音信号基音周期提取的程序流程图4. 实验结果与总结1、语音2_2.wav2、语音2_3.wav通过图像可以清楚地看出每一帧对应的基音周期,实验效果比较理想,达到了预期目标。5.实验体会通过本次实验是我更加理解短时自相关函数法进行基音检测的原理,短时自相关函数法基音检测的主要原理是通过比较原始信号和它移位后的信号之间的类似性来确定基音周期,如果移位距离等于基音周期,那么两个信号具有最大类似性。基于自相关函数的算法是基音周期估计的常用方法,特别适用于噪声环境下的基音提取。自相关函数在基音周期处表现为峰值,相邻两个峰值之间
16、的间隔即为一个基音周期。实验代码function pitchclc;clear;x= wavread(2_2.wav);figure(1);stem(x,.);y=enframe(x,160,80);l=length(y);for i=1:l;c(i,:)=xcorr(y(i,:);end for k=1:l;M1(1,k), I1(1,k)=max(c(k,:); %最大值M2(1,k), I2(1,k)=max(c(k,1:(I1(1,k)-10); %最大值邻近的极值endd=(I1-I2)/8;figure(2);stem(d,.); axis(0 l 0 14); xlabel(帧数
17、(n); ylabel(周期(ms); title(各帧基因周期); grid on 语音信号处理实验报告 实验名称 LPC特征提取 学 院 外国语学院 专 业 科技英语 学生姓名 周孝松 提交日期 2014年5月 7日 1. 实验目的1、 熟练运用MATLAB软件进行语音信号实验;2、 熟悉短时分析原理、LPC的原理;3、 学习运用MATLAB编程进行LPC的提取;4、 学会利用短时分析原理提取LPC特征序列。2. 实验原理1、LPC分析基本原理LPC分析为线性时不变因果稳定系统V(z)建立一个全极点模型,并利用均方误差准则,对已知的语音信号s(n)进行模型参数估计。如果利用P个取样值来进行
18、预测,则称为P阶线性预测。假设用过去P个取样值的加权之和来预测信号当前取样值,则预测信号为: (1)其中加权系数用表示,称为预测系数,则预测误差为: (2)要使预测最佳,则要使短时平均预测误差最小有: (3) (4)令 (5) 最小的可表示成: (6)显然,误差越接近于零,线性预测的准确度在均方误差最小的意义上为最佳,由此可以计算出预测系数。通过LPC分析,由若干帧语音可以得到若干组LPC参数,每组参数形成一个描绘该帧语音特征的矢量,即LPC特征矢量。由LPC特征矢量可以进一步得到很多种派生特征矢量,例如线性预测倒谱系数、线谱对特征、部分相关系数、对数面积比等等。不同的特征矢量具有不同的特点,
19、它们在语音编码和识别领域有着不同的应用价值。2 、自相关法在最佳线性预测中,若用下式定义的时间平均最小均方准则代替(3)式的集合平均最小均方准则,即令 (7) 事实上就是短时自相关函数,因而 (8) (9)根据平稳随机信号的自相关性质,可得 (10) 由(6)式,可得: (11) 综上所述,可以得到如下矩阵形式: (12)值得注意的是,自相关法在计算预测误差时,数据段的两端都需要加P个零取样值,因而可造成谱估计失真。特别是在短数据段的情况下,这一现实更为严重。另外,当预测系数量化时,有可能造成实际系统的不稳定。自相关解法主要有杜宾算法、格型算法和舒尔算法等几种高效递推算法。3、 协方差法如果在
20、最佳线性预测中,用下式定义的时间平均最小均方准则代替(3)式的集合平均最小均方准则,则可得到类似的方程: (13) 可以看出,这里的数据段两端不需要添加零取样值。在理论上,协方差法计算出来的预测系数有可能造成预测误差滤波器的不稳定,但在实际上当每帧信号取样足够多时,其计算结果将与自相关法的结果很接近,因而稳定性一般是能够保证的 (当然这种方法也有量化效应可能引起不稳定的缺点)。协方差解法的最大优点在于不存在自相关法中两端出现很大预测误差的情况,在N和P相差不大时,其参数估值比自相关法要精确的多。但是在语音信号处理时,往往取N在200左右。此时,自相关法具有较大误差的段落在整个语音段中所占的比例
21、很小,参数估值也是比较准确的。在这种情况下,协方差法误差较小的优点就不再突出,其缺乏高效递推算法的缺点成为了制约因素。所以,在语音信号处理中往往使用高效的自相关法。4、 LPC由于频率响应反映声道的频率响应和被分析信号的谱包络,因此用做反傅里叶变换求出的LPC倒谱系数。通过线性预测分析得到的合成滤波器的系统函数为,其冲激响应为h(n)。h(n)的倒谱为,就是说的逆变换是存在的。设,将式两边同时对求导,得得到,于是有令其左右两边z的各次幂前系数分别相等,得到和间的递推关系 ,按其可直接从预测系数求得倒谱。这个倒谱是根据线性预测模型得到的,又称为LPC倒谱。LPC倒谱由于利用线性预测中声道系统函数
22、H(z)的最小相位特性,因此避免了一般同态处理中求复对数的麻烦。3. 实验数据及平台本实验所采用的数据是语音文件0a.WAV、1a.WAV和2a.WAV,平台是MATLAB。4. 实验过程(步骤)(1)、实验步骤1、输入原始语音2、对样本语音进行加窗处理3、计算LPC系数4、建立语音正则方程5、输出原始样本语音、预测语音波形和预测误差6、输出LPC谱7、求出预测误差的倒谱8、输出原始语音和预测语音的语谱图(2)实验流程输出图像建立语音正则方程计算LPC系数加窗处理输入原始语音LPC系数实验流程图5. 实验结果与总结我们使用的原始语音为“0a.WAV、1a.WAV和2a.WAV”,运行程序。l
23、0a.WAV选取处理的帧位置为30,选取线性预测阶数为12,得到实验结果: 图上半部分中蓝色的线是原始语音帧波形,红色的线是预测语音帧的波形;下半部分为预测误差。coef = Columns 1 through 7 1.0000 -0.7466 -0.1099 0.3177 0.1325 -0.1109 0.1084 Columns 8 through 13 -0.0516 0.0207 0.0858 0.1773 -0.0616 0.0128l 1a.WAV选取处理的帧位置为30,选取线性预测阶数为15,得到实验结果: 图上半部分中蓝色的线是原始语音帧波形,红色的线是预测语音帧的波形;下半部
24、分为预测误差。coef = Columns 1 through 7 1.0000 -0.6410 0.0293 -0.0222 0.2401 -0.1293 0.1099 Columns 8 through 14 0.0719 -0.0710 -0.0811 -0.0239 -0.1900 0.2992 -0.1699 Columns 15 through 16 0.0739 -0.0630l 2a.WAV选取处理的帧位置为30,选取线性预测阶数为12,得到实验结果: 图上半部分中蓝色的线是原始语音帧波形,红色的线是预测语音帧的波形;下半部分为预测误差。coef = Columns 1 thr
25、ough 7 1.0000 -0.6134 0.0747 0.0554 0.1231 0.2386 -0.2459 Columns 8 through 13 -0.0340 -0.0060 -0.0165 0.0765 -0.1541 -0.0077这次实验利用MATLAB对信号进行分析和处理,主要就是进行语音线性预测,语音线性预测的基本思想是:一个语音信号的抽样值可以用过去若干个取样值的线性组合来逼近。通过使实际语音抽样值与线性预测抽样值的均方误差达到最小,可以确定唯一的一组线性预测系数。通过这个实验,我对语音线性预测进行了探究和验证,巩固了课内所学的知识。实验代码function lpcc
26、oMusicSource = wavread(0a.wav); %读入原始语音Music_source = MusicSource;stem(MusicSource);title(原始语音波形);N = 256;Hamm = hamming(N); %加窗frame = input(请输入需要处理的帧位置=); % 需要处理的帧位置origin = Music_source(frame-1)*(N/2)+1):(frame-1)*(N/2)+N);Frame = origin.*Hamm; %加窗后的语音帧,短时傅里叶变换s1,f1,t1 = specgram(MusicSource,N,N/
27、2,N); %生成语谱图Xs1,Ys1 = size(s1); %用Xs1和Ys1两个变量表示语谱图向量的大小for i = 1:Xs1 FTframe1(i) = s1(i,frame); end N1 = input(请输入预测器阶数=); %输入预测器阶数coef,gain = lpc(Frame,N1) %计算lpc系数est_Frame = filter(0 -coef(2:end),1,Frame); %估计帧FFT_est =vfft(est_Frame); err = Frame - est_Frame; %预测误差FFT_err = fft(err); subplot(2,1
28、,1),plot(1:N,Frame,1:N,est_Frame,-r);grid;title(原始语音帧vs预测后语音帧);subplot(2,1,2),plot(err);grid;title(预测误差);语音信号处理实验报告 实验名称 MFCC特征提取 学 院 外国语学院 专 业 科技英语 学生姓名 周孝松 提交日期 2014年5月14日 2. 实验目的5、 熟练运用MATLAB软件进行语音信号实验;2、熟悉短时分析原理、MFCC的原理;3、学习运用MATLAB编程进行MFCC的提取;4、学会利用短时分析原理提取MFCC特征序列;2. 实验原理一、MFCC概述 在语音识别(Speech
29、Recognition)和话者识别(Speaker Recognition)方面,最常用到的语音特征就是梅尔倒谱系数(Mel-scale Frequency Cepstral Coefficients,简称MFCC)。根据人耳听觉机理的研究发现,人耳对不同频率的声波有不同的听觉敏感度。从200Hz到5000Hz的语音信号对语音的清晰度影响对大。两个响度不等的声音作用于人耳时,则响度较高的频率成分的存在会影响到对响度较低的频率成分的感受,使其变得不易察觉,这种现象称为掩蔽效应。由于频率较低的声音在内耳蜗基底膜上行波传递的距离大于频率较高的声音,故一般来说,低音容易掩蔽高音,而高音掩蔽低音较困难。
30、在低频处的声音掩蔽的临界带宽较高频要小。所以,人们从低频到高频这一段频带内按临界带宽的大小由密到疏安排一组带通滤波器,对输入信号进行滤波。将每个带通滤波器输出的信号能量作为信号的基本特征,对此特征经过进一步处理后就可以作为语音的输入特征。由于这种特征不依赖于信号的性质,对输入信号不做任何的假设和限制,又利用了听觉模型的研究成果。因此,这种参数比基于声道模型的LPCC相比具有更好的鲁邦性,更符合人耳的听觉特性,而且当信噪比降低时仍然具有较好的识别性能。梅尔倒谱系数(Mel-scale Frequency Cepstral Coefficients,简称MFCC)是在Mel标度频率域提取出来的倒谱
31、参数,Mel标度描述了人耳频率的非线性特性,它与频率的关系可用下式近似表示:式中f为频率,单位为Hz。下图展示了Mel频率与线性频率的关系:图1 Mel频率与线性频率的关系二、语音特征参数MFCC提取过程 基本步骤:图2 MFCC参数提取基本流程1.预加重预加重处理其实是将语音信号通过一个高通滤波器:式中的值介于0.9-1.0之间,我们通常取0.97。预加重的目的是提升高频部分,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱。同时,也是为了消除发生过程中声带和嘴唇的效应,来补偿语音信号受到发音系统所抑制的高频部分,也为了突出高频的共振峰。2.分帧先将N个采样点集合成
32、一个观测单位,称为帧。通常情况下N的值为256或512,涵盖的时间约为2030ms左右。为了避免相邻两帧的变化过大,因此会让两相邻帧之间有一段重叠区域,此重叠区域包含了M个取样点,通常M的值约为N的1/2或1/3。通常语音识别所采用语音信号的采样频率为8KHz或16KHz,以8KHz来说,若帧长度为256个采样点,则对应的时间长度是256/80001000=32ms。3.加窗(Hamming Window)将每一帧乘以汉明窗,以增加帧左端和右端的连续性。假设分帧后的信号为S(n), n=0,1,N-1, N为帧的大小,那么乘上汉明窗后W(n)形式如下:不同的a值会产生不同的汉明窗,一般情况下a
33、取0.464.快速傅里叶变换由于信号在时域上的变换通常很难看出信号的特性,所以通常将它转换为频域上的能量分布来观察,不同的能量分布,就能代表不同语音的特性。所以在乘上汉明窗后,每帧还必须再经过快速傅里叶变换以得到在频谱上的能量分布。对分帧加窗后的各帧信号进行快速傅里叶变换得到各帧的频谱。并对语音信号的频谱取模平方得到语音信号的功率谱。设语音信号的DFT为: 式中x(n)为输入的语音信号,N表示傅里叶变换的点数。5.三角带通滤波器将能量谱通过一组Mel尺度的三角形滤波器组,定义一个有M个滤波器的滤波器组(滤波器的个数和临界带的个数相近),采用的滤波器为三角滤波器,中心频率为f(m),m=1,2,
34、.,M。M通常取22-26。各f(m)之间的间隔随着m值的减小而缩小,随着m值的增大而增宽,如图所示:图3Mel频率滤波器组三角滤波器的频率响应定义为:式中三角带通滤波器有两个主要目的:对频谱进行平滑化,并消除谐波的作用,突显原先语音的共振峰。(因此一段语音的音调或音高,是不会呈现在MFCC参数内,换句话说,以 MFCC为特征的语音辨识系统,并不会受到输入语音的音调不同而有所影响)此外,还可以降低运算量。6.计算每个滤波器组输出的对数能量为:7.经离散余弦变换(DCT)得到MFCC系数:将上述的对数能量带入离散余弦变换,求出L阶的Mel-scale Cepstrum参数。L阶指MFCC系数阶数
35、,通常取12-16。这里M是三角滤波器个数。8.对数能量此外,一帧的音量(即能量),也是语音的重要特征,而且非常容易计算。因此,通常再加上一帧的对数能量(定义:一帧内信号的平方和,再取以10为底的对数值,再乘以10)使得每一帧基本的语音特征就多了一维,包括一个对数能量和剩下的倒频谱参数。注:若要加入其它语音特征以测试识别率,也可以在此阶段加入,这些常用的其它语音特征包含音高、过零率以及共振峰等。9.动态差分参数的提取(包括一阶差分和二阶差分)标准的倒谱参数MFCC只反映了语音参数的静态特性,语音的动态特性可以用这些静态特征的差分谱来描述。实验证明:把动、静态特征结合起来才能有效提高系统的识别性
36、能。差分参数的计算可以采用下面的公式:式中,dt表示第t个一阶差分,Ct表示第t个倒谱系数,Q表示倒谱系数的阶数,K表示一阶导数的时间差,可取1或2。将上式的结果再代入就可以得到二阶差分的参数。3. 实验数据及平台本实验所采用的数据是语音文件0a.WAV、1a.WAV、01F19_02_01_01.wav和2a.WAV,平台是MATLAB。4. 实验过程(步骤)一、实验步骤1. 输入样本音频2. 给样本音频预加重、分帧、加窗3. 将处理好的样本音频做傅里叶变换4. 进行Mel频率滤波5. 进行Log对数能量6. 对样本求倒谱二、 实验流程5. 实验结果我们使用的原始语音为“0a.WAV、1a.
37、WAV和2a.WAV”,运行程序。l 0a.wavl 1a.wavl 2a.wavl 01F19_02_01_01.wav通过计算MFCC参数,获得了声纹识别的特征参数。由于MFCC参数是对人耳听觉特征的描述,因此,可以认为,不同声纹的MFCC参数距离,能够代表人耳对两个语音听觉上的差异,可以为声纹的识别提供可靠的依据。6. 实验总结这次通过课堂的学习和资料的查找,对MFCC特征提取进行探究和验证,真正把课堂知识用到实验之中,但是还是存在一些理论知识上的不清晰,所以在做实验的时候一边看课本理解,一边结合资料的解析,对MFCC提取的参数有一定了解,而且还知道还能结合一阶和二阶差分方程参数使得最后
38、提取的参数更加的多,为以后的声纹识别精确度打下更好的基础。实验代码clearclcx fs=wavread(0a.wav);bank=melbankm(24,256,fs,0,0.4,t); %Mel滤波器的阶数为24,fft变换的长度为256,采样频率为8000Hz%归一化mel滤波器组系数bank=full(bank);bank=bank/max(bank(:);for k=1:12 %归一化mel滤波器组系数n=0:23;dctcoef(k,:)=cos(2*n+1)*k*pi/(2*24);endw=1+6*sin(pi*1:12./12); %归一化倒谱提升窗口w=w/max(w);
39、 %预加重滤波器xx=double(x);xx=filter(1-0.9375,1,xx); %语音信号分帧xx=enframe(xx,256,80); %对x 256点分为一帧%计算每帧的MFCC参数for i=1:size(xx,1)y=xx(i,:);s=y.*hamming(256); t=abs(fft(s); %fft快速傅立叶变换t=t.2; c1=dctcoef*log(bank*t(1:129);c2=c1.*w;m(i,:)=c2;endplot(m);title(MFCC);ylabel(幅值);%求取一阶差分系数dtm=zeros(size(m);for i=3:siz
40、e(m,1)-2dtm(i,:)=-2*m(i-2,:)-m(i-1,:)+m(i+1,:)+2*m(i+2,:);enddtm=dtm/3;%求取二阶差分系数dtmm=zeros(size(dtm);for i=3:size(dtm,1)-2dtmm(i,:)=-2*dtm(i-2,:)-dtm(i-1,:)+dtm(i+1,:)+2*dtm(i+2,:);enddtmm=dtmm/3;%合并mfcc参数和一阶差分mfcc参数ccc=m dtm dtmm;%去除首尾两帧,因为这两帧的一阶差分参数为0ccc=ccc(3:size(m,1)-2,:);% subplot(2,1,1)% ccc_
41、1=ccc(:,1);% plot(ccc_1);title(MFCC);ylabel(幅值);% h,w=size(ccc);% A=size(ccc);% subplot(2,1,2) % plot(1,w,A);% xlabel(维数);% ylabel(幅值);% title(维数与幅值的关系);语音信号处理实验报告 实验名称 DTW语音识别 学 院 外国语学院 专 业 科技英语 学生姓名 周孝松 提交日期 2014年5月28日 3. 实验目的运用课堂上所学知识以及matlab工具,利用DTW(DynamicTimeWarping,动态时间规整)算法,进行说话者的语音识别。4. 实验原
42、理一、 语音识别系统概述一个完整特定人语音识别系统的方案框图如图1所示。输入的模拟语音信号首先要进行预处理,包括预滤波、采样和量化、加窗、端点检测、预加重等,然后是参数特征量的提取。提取的特征参数满足如下要求:1. 特征参数能有效地代表语音特征,具有很好的区分性;2. 参数间有良好的独立性;3. 特征参数要计算方便,要考虑到语音识别的实时实现。图1语音识别系统方案框图语音识别的过程可以被看作模式匹配的过程,模式匹配是指根据一定的准则,使未知模式与模型库中的某一个模型获得最佳匹配的过程。模式匹配中需要用到的参考模板通过模板训练获得。在训练阶段,将特征参数进行一定的处理后,为每个词条建立一个模型,
43、保存为模板库。在识别阶段,语音信号经过相同的通道得到语音特征参数,生成测试模板,与参考模板进行匹配,将匹配分数最高的参考模板作为识别结果。在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。因为语音信号具有相当大的随机性,即使同一个人在不同时刻发同一个音,也不可能具有完全的时间长度。而且同一个单词内的不同音素的发音速度也不同,比如有的人会把“A”这个音拖得很长,或者把“i”发的很短。在这些复杂情况下,使用传统的欧几里得距离无法有效地求的两个时间序列之间的距离(或者相似性)。 例如图A所示,实线和虚线分别是同一个词“pen”的两个语音波形(在y轴上
44、拉开了,以便观察)。可以看到他们整体上的波形形状很相似,但在时间轴上却是不对齐的。例如在第20个时间点的时候,实线波形的a点会对应于虚线波形的b点,这样传统的通过比较距离来计算相似性很明显不靠谱。因为很明显,实线的a点对应虚线的b点才是正确的。而在图B中,DTW就可以通过找到这两个波形对齐的点,这样计算它们的距离才是正确的。 也就是说,大部分情况下,两个序列整体上具有非常相似的形状,但是这些形状在x轴上并不是对齐的。所以我们在比较他们的相似度之前,需要将其中一个(或者两个)序列在时间轴下warping扭曲,以达到更好的对齐。而DTW就是实现这种warping扭曲的一种有效方法。DTW通过把时间
45、序列进行延伸和缩短,来计算两个时间序列性之间的相似性。 那如果才知道两个波形是对齐了呢?也就是说怎么样的warping才是正确的?直观上理解,当然是warping一个序列后可以与另一个序列重合recover。这个时候两个序列中所有对应点的距离之和是最小的。所以从直观上理解,warping的正确性一般指“feature to feature”的对齐。二、动态时间规整DTW动态时间规整DTW是一个典型的优化问题,它用满足一定条件的的时间规整函数W(n)描述测试模板和参考模板的时间对应关系,求解两模板匹配时累计距离最小所对应的规整函数。 假设我们有两个时间序列Q和C,他们的长度分别是n和m:(实际语
46、音匹配运用中,一个序列为参考模板,一个序列为测试模板,序列中的每个点的值为语音序列中每一帧的特征值。例如语音序列Q共有n帧,第i帧的特征值(一个数或者一个向量)是qi。至于取什么特征,在这里不影响DTW的讨论。我们需要的是匹配这两个语音序列的相似性,以达到识别我们的测试语音是哪个词)Q= q1, q2,qi, qn;C= c1, c2, cj, cm; 如果n=m,那么就用不着折腾了,直接计算两个序列的距离就好了。但如果n不等于m我们就需要对齐。最简单的对齐方式就是线性缩放了。把短的序列线性放大到和长序列一样的长度再比较,或者把长的线性缩短到和短序列一样的长度再比较。但是这样的计算没有考虑到语
47、音中各个段在不同情况下的持续时间会产生或长或短的变化,因此识别效果不可能最佳。因此更多的是采用动态规划(dynamic programming)的方法。 为了对齐这两个序列,我们需要构造一个n x m的矩阵网格,矩阵元素(i, j)表示qi和cj两个点的距离d(qi, cj)(也就是序列Q的每一个点和C的每一个点之间的相似度,距离越小则相似度越高。这里先不管顺序),一般采用欧式距离,d(qi, cj)= (qi-cj)2(也可以理解为失真度)。每一个矩阵元素(i, j)表示点qi和cj的对齐。DP算法可以归结为寻找一条通过此网格中若干格点的路径,路径通过的格点即为两个序列进行计算的对齐的点。
48、那么这条路径我们怎么找到呢?那条路径才是最好的呢?也就是刚才那个问题,怎么样的warping才是最好的。我们把这条路径定义为warping path规整路径,并用W来表示,W的第k个元素定义为wk=(i,j)k,定义了序列Q和C的映射。这样我们有: 首先,这条路径不是随意选择的,需要满足以下几个约束:1. 边界条件:w1=(1, 1)和wK=(m, n)。任何一种语音的发音快慢都有可能变化,但是其各部分的先后次序不可能改变,因此所选的路径必定是从左下角出发,在右上角结束。2. 连续性:如果wk-1= (a, b),那么对于路径的下一个点wk=(a, b)需要满足(a-a) =1和(b-b) =
49、1。也就是不可能跨过某个点去匹配,只能和自己相邻的点对齐。这样可以保证Q和C中的每个坐标都在W中出现。3. 单调性:如果wk-1= (a, b),那么对于路径的下一个点wk=(a, b)需要满足0=(a-a)和0= (b-b)。这限制W上面的点必须是随着时间单调进行的。以保证图B中的虚线不会相交。结合连续性和单调性约束,每一个格点的路径就只有三个方向了。例如如果路径已经通过了格点(i, j),那么下一个通过的格点只可能是下列三种情况之一:(i+1, j),(i, j+1)或者(i+1, j+1)。 满足上面这些约束条件的路径可以有指数个,然后我们感兴趣的是使得下面的规整代价最小的路径: 分母中
50、的K主要是用来对不同的长度的规整路径做补偿。我们的目的是什么?或者说DTW的思想是什么?是把两个时间序列进行延伸和缩短,来得到两个时间序列性距离最短也就是最相似的那一个warping,这个最短的距离也就是这两个时间序列的最后的距离度量。在这里,我们要做的就是选择一个路径,使得最后得到的总的距离最小。 这里我们定义一个累加距离cumulative distances。从(0, 0)点开始匹配这两个序列Q和C,每到一个点,之前所有的点计算的距离都会累加。到达终点(n, m)后,这个累积距离就是我们上面说的最后的总的距离,也就是序列Q和C的相似度。累积距离(i,j)可以按下面的方式表示,累积距离(i,j)为当前格点距离d(i,j),也就是点qi和cj的欧式距离(相似性)与可以到达该点的最小的邻近元素的累积距离之和: 最佳路径是使得沿路径的积累距离达到最小值这条路径。这条路径可以通过动态规划(dynamic programming)算法得到。三、端点检测原理1、短时能量语音和噪声的区别可以体现在它们的能量上,语音段的能量比噪声段能量大,语音段的能量是噪声段能量叠加语音声波能量的和。在信噪比很高时,那么只要计算输入信号的短时能量或短时平均幅度就能够把语音段和噪声背景区分开。这是仅基于短时能量的端点检测方法。信号x(n)的短时能量定义为: 语音信号的短时平均幅度定义为: 其中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 富士康入职培训课件
- 家长开学安全教育培训
- 家长安全守法意识培训课件
- 流产与早产预防临床全程管理指南
- 演出合同2026年合同评估协议
- 2026年电子商务平台搭建合同协议
- 2026年母婴用品知识产权转让合同协议
- 海上货物运输合同2026年货物放行协议
- 2026年通信线路标准化建设合同
- 家长会安全培训课件
- 团体团建跳舞活动方案
- 食品加工企业主要管理人员及工程技术人员的配备计划
- 儿童语言发育迟缓课件
- 2025至2030年中国汽车用碳纤维行业竞争格局分析及市场需求前景报告
- 正循环成孔钻孔灌注桩施工方案
- 焊接作业指导书完整版
- 苍南分孙协议书
- 2025年部编版道德与法治六年级上册全册教案设计(共4个单元含有教学计划)
- 2025-2030中国电动警用摩托车和应急摩托车行业市场现状供需分析及投资评估规划分析研究报告
- 企业所得税纳税申报表(2024年修订)填报要点及相关政策分析
- 课程设计说明书
评论
0/150
提交评论