语音信号的端点检测_第1页
语音信号的端点检测_第2页
语音信号的端点检测_第3页
语音信号的端点检测_第4页
语音信号的端点检测_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、实验一 语音信号的端点检测一、实验目的1、掌握短时能量的求解方法2、掌握短时平均过零率的求解方法3、掌握利用短时平均过零率和短时能量等特征,对输入的语音信号进行端点检测。二、仪器设备HP计算机、Matlab软件三、实验原理3.1、短时能量3.1.1、原理:语音信号能量随时间有相当大的变化,特别是清音段的能量一般比浊音段的小得多。 语音信号的短时能量定义:3.1.2、短时能量序列反映了语音振幅或能量随着时间缓慢变化的规律。从原始语音信号图中可以看到语音信号幅度随时间有相当大的变化,特别是清音段的幅度一般比浊音段的幅度小很多,语音信号的短时能量给出了反映这些幅度变化的一个合适的描述方法。3.1.3

2、、短时平均幅度函数和能量函数的作用(1)区分清/浊音。 En、Mn大,对应浊音; En、Mn小,对应清音。其中Mn是短时幅度差。(2)在信噪比高的情况下,能进行有声/无声判决。 无声时,背景噪声的En、Mn小; 有声时,En、Mn显著增大。判决时可设置一个门限。(3) 大致能定出浊音变为清音的时刻,或反之。 3.2、短时过零率:3.2.1、定义:过零就是信号通过零值。连续语音信号,考察其时域波形通过时间轴的情况;离散时间信号,相邻的 值改变符号则称为过零。窄带信号,平均过零数作为信号频率的一种简单度量是很精确的,语音信号序列是宽带信号, 则不能简单用上面的公式,但是可以用短时平均过零数来得到频

3、谱的粗略估计。3.2.2、短时过零分析的意义:(1)、可以区分清音与浊音:浊音时具有较低的平均过零数,而清音时具有较高的平均过零数。(2)、利用它可以从背景噪声中找出语音信号,可用于判断寂静无语音和有语音的起点和终点位置。(3)、在背景噪声较小时用平均能量识别较为有效,而在背景噪声较大时用平均过零数识别较为有效。3.3、语音的端点检测:语音信号有如下特点:(1)浊音的短时平均幅度最大,过零率最低;(2)无声的短时平均幅度最低,过零率居中;(3)清音短时平均幅度居中,过零率最高;根据上述特点就可以检测出语音的端点来。即区分出有声和无声的分界线。 四、实验内容1、找到机器中声音文件,对其进行相应的

4、文件操作。2、对该声音文件提取短时能量和短时过零率。3、根据上述特征进行端点检测。4、按照实际的情况调整阈值。五、实验步骤及程序1、实验步骤:(1)、编写程序提取语音的短时能量,即过零率;(2)、设定阈值,进行端点检测。2、实验流程:开始读入语音信号对语音信号预加重分帧设定阈值,amp1,amp2,zcr1,zcr2求短时能量amp求短时过零率zcr根据阈值进行端点检测3、 实验程序:端点检测:x,fs,nbits=wavread('1.wav');%语音信号的端点检测matlab实现x = x / max(abs(x);%幅度归一化到-1,1%参数设置FrameLen = 2

5、56; %帧长inc = 90; %未重叠部分,帧移amp1 = 10; %短时能量阈值amp2 = 2; zcr1 = 10; %过零率阈值zcr2 = 5;minsilence = 6; %用无声的长度来判断语音是否结束minlen = 15; %判断是语音的最小长度status = 0; %记录语音段的状态count = 0; %语音序列的长度silence = 0; %无声的长度%计算过零率tmp1 = enframe(x(1:end-1), FrameLen,inc);tmp2 = enframe(x(2:end) , FrameLen,inc);signs = (tmp1.*tmp

6、2)<0;diffs = (tmp1 -tmp2)>0.02;zcr = sum(signs.*diffs,2);%计算短时能量amp = sum(abs(enframe(filter(1 -0.9375, 1, x), FrameLen, inc).2, 2);%调整能量门限amp1 = min(amp1, max(amp)/4);amp2 = min(amp2, max(amp)/8);%开始端点检测for n=1:length(zcr) goto = 0; switch status case 0,1 % 0 = 静音, 1 = 可能开始 if amp(n) > amp

7、1 % 确信进入语音段 x1 = max(n-count-1,1); % 记录语音段的起始点 status = 2; silence = 0; count = count + 1; elseif amp(n) > amp2 | zcr(n) > zcr2 % 可能处于语音段 status = 1; count = count + 1; else % 静音状态 status = 0; count = 0; end case 2, % 2 = 语音段 if amp(n) > amp2 |zcr(n) > zcr2 % 保持在语音段 count = count + 1; el

8、se % 语音将结束 silence = silence+1; if silence < minsilence % 静音还不够长,尚未结束 count = count + 1; elseif count < minlen % 语音长度太短,认为是噪声 status = 0; silence = 0; count = 0; else % 语音结束 status = 3; end end case 3, break; endend count = count-silence/2;x2 = x1 + count -1; %记录语音段结束点subplot(3,1,1)plot(x)axis

9、(1 length(x) -1 1)ylabel('Speech');line(x1*inc x1*inc, -1 1, 'Color', 'red');%给语音端点加分界线line(x2*inc x2*inc, -1 1, 'Color', 'red');subplot(3,1,2)plot(amp);axis(1 length(amp) 0 max(amp)ylabel('Energy');line(x1 x1, min(amp),max(amp), 'Color', '

10、red');line(x2 x2, min(amp),max(amp), 'Color', 'red');subplot(3,1,3)plot(zcr);axis(1 length(zcr) 0 max(zcr)ylabel('ZCR');line(x1 x1, min(zcr),max(zcr), 'Color', 'red');line(x2 x2, min(zcr),max(zcr), 'Color', 'red');六、实验结果与分析1、实验结果:端点x1 = 63x

11、2 = 93该段语音的起始帧为第63帧,结束帧为93帧。设定了阈值的过零率可以对噪声的干扰有一定的抑制作用。 实验二 语音信号的特征提取一、实验目的1、掌握语音信号的Mel倒谱特征(MFCC)的求解方法2、掌握语音信号的线性预测原理以及LPC特征的求解方法二、仪器设备HP计算机、Matlab软件3、 实验原理 1、线性预测分析包含的基本概念:一个语音的抽样能够用过去若干个语音抽样的线性组合来逼近。通过使实际语音抽样和线性预测抽样之间差值的平方和(在一个有限间隔上)达到最小值,即进行最小均方误差的逼近,能够决定唯一的一组预测系数。这组系数就能反映语音信号的特性,可以作为语音信号特征参数来用于语音

12、编码、语音合成和语音识别等应用中。 线性预测模型一般均采用全极点模型,在语音线性预测方面的文献和资料中,绝大多数情况采用全极点模型。这是因为: 全极点模型最容易计算,对全极点模型作参数估计是对线性方程组组的求解过程,相对来说比较容易。而若模型中含有有限个零点,则是解非线性方程组,实现起来非常困难。如果不考虑鼻音和摩擦音,那么语音的声道传递函数就是一个全极点模型。为了使模型的假定能够很好地符合语音产生的模型,需要考虑如下两个因素。1)模型阶数的选择:阶数应与共振峰的个数相吻合,通常一对极点对应一个共振峰,因此当共振峰数为5时,应取p=10。此外当语音为鼻音和摩擦音时,声道传递函数并不符合全极点模

13、型的假定,而是一个既有极点又有零点的模型,但由于可以用多个极点来近似一个零点,所以仍然可以采用全极点模型的假定,但要求有足够高的阶数。考虑到这些情况,一般按如下的方式计算模型阶数,P=2*D+1,其中D为共振峰的个数。2)通过预加重进行高频提升:由于声门脉冲形状和口唇辐射的影响,语音信号的频谱在总趋势上会产生高频衰落的现象,大约每倍程下降6dB。要抵消这一影响,通常在LPC分析之前采用一个非常简单的一阶FIR滤波器进行预加重以进行高频提升,其传递函数为 ,其中为预加重系数,对10kHz采样的语音,一般取=0.95。 2、基于Mel频率的倒谱MFCC: 根据人类听觉系统的特性,人耳分辨声音频率的

14、过程犹如一种取对数的功能,基于此,出现了Mel 频率的倒谱系数(MFCC)MFCC: Mel-Frequency Cepstrum CoefficientsMFCC 比LPCC(线性预测倒谱)更能反映听觉特性,在语音识别系统中有着广泛的应用,是目前公认的性能最好的特征参数之一Mel频率与实际频率的对应关系如下: 求MFCC参数的流程为:(1) 首先确定每一帧语音采样序列的点数,对每帧序列进行预加重处理后再经过离散FFT变换,取模的平方得到离散能量谱。(2) 计算通过M个 Mel滤波器后所得的功率值,得到M个参数X(k)。(3) 计算X(k)的对数,得到相应频带的对数功率谱,并 计算其离散余弦变

15、换,得到L个MFCC系数。计算式如下:四、实验内容1、找到机器中声音文件,对其进行相应的文件操作。2、对该声音文件提取MFCC特征和LPC特征。3、画图分析对比实验结果五、实验步骤及程序1、实验步骤:(1)读语音信号;(2)编写程序进行LPC特征提取;(3)编写程序进行MFCC特征提取。开始读入语音信号取第60帧语音信号,加窗处理求预测语音与原始语音的误差E用specgram求频谱用LPC求线性预测系数求倒谱,提取特征2、实验流程:3、 实验程序:(1)、LPCI = wavread('C:UserspowertrueDesktop1.wav');%读入原始语音subplot(

16、3,1,1)plot(I);title('original wave')%对指定帧位置进行加窗处理Q = I'N = 256; % 窗长Hamm = hamming(N); % 加窗frame = 60;%需要处理的帧位置M = Q(frame - 1) * (N / 2) + 1):(frame - 1) * (N / 2) + N); %帧长为N/2Frame = M .* Hamm'%加窗后的语音帧B,F,T = specgram(I,N,N/2,N); m,n = size(B);for i = 1:m FTframe1(i) = B(i,frame);

17、endP =input('please input a P = '); ai = lpc(Frame,P); % 计算lpc系数LP = filter(0 -ai(2:end),1,Frame); % 建立语音帧的正则方程FFTlp = fft(LP);E = Frame - LP; % 预测误差subplot(3,1,2),plot(1:N,Frame,1:N,LP,'-r');grid;title('original and predicted wave')subplot(3,1,3),plot(E);grid;title('pred

18、icted error');pausefLength(1 : 2 * N) = M,zeros(1,N); Xm = fft(fLength,2 * N);X = Xm .* conj(Xm);Y = fft(X , 2 * N);Rk = Y(1 : N);PART = sum(ai(2 : P + 1) .* Rk(1 : P);G = sqrt(sum(Frame.2) - PART); %增益A = (FTframe1 - FFTlp(1 : length(F') ./ FTframe1 ; subplot(2,1,1),h=plot(F',20*log(abs

19、(FTframe1),F',(20*log(abs(1 ./ A),'-r');grid;xlabel('frequency/dB');ylabel('amplitude');title('short_time spetrum');legend(h,'original fft','lpc fft',2);subplot(2,1,2),plot(F',(20*log(abs(G ./ A);grid;xlabel('frequency/dB');ylabel('

20、amplitude');title('LPC spetrum');pause%求出预测误差的倒谱pitch = fftshift(rceps(E); %rceps求倒谱函数M_pitch = fftshift(rceps(Frame);subplot(2,1,1),plot(M_pitch);grid;xlabel('speech frame');ylabel('/dB');title('real cepstrum of original wave');subplot(2,1,2),plot(pitch);grid;xla

21、bel('speech');ylabel('/dB');title('real cepstrum of predicted error');pause%画出语谱图ai1 = lpc(I,P); % 计算原始语音lpc系数LP1 = filter(0 -ai(2:end),1,I); % 建立原始语音的正则方程subplot(2,1,1); specgram(I,N,N/2,N); title('yuan shi yu yin de yu pu tu');subplot(2,1,2);specgram(LP1,N,N/2,N); t

22、itle('yu ce yu yin de yu pu tu');(2)、MFCC:close allclearclcx=wavread('1.wav');bank=melbankm(24,510,8000,0,0.5,'m');bank=full(bank);bank=bank/max(bank(:);for k=1:12 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);% 预加重滤波器xx=double(x

23、);xx=filter(1 -0.9375,1,xx);% 语音信号分帧xx=enframe(xx,256,80);% 计算每帧的MFCC参数for i=1:size(xx,1) y = xx(i,:); s = y' .* hamming(256); t = abs(fft(s); t = t.2; c1=dctcoef * log(bank * t); c2 = c1.*w' m(i,:)=c2'endfigureplot(m);xlabel('frames');ylabel('amplitude');title('MFCC&

24、#39;);6、 实验结果与分析1、LPC图2.1图2.2图2.3图2.42、MFCC图2.5从图中可以看出:在信号能量较大的区域即接近谱的峰值处,LPC谱和信号谱很接近;而在信号能量较低的区域即接近谱的谷底处,则相差比较大。这个特点对于呈现谐波结构的浊音语音谱来说,就是在谐波成分处LPC谱匹配信号谱的效果要远比谐波之间好得多。LPC谱估计的这一特点实际上来自均方误差最小准则。实验三 语音信号的基频提取一、实验目的1、掌握语音信号基频的概念,加深对基频刻画声调特征作用的理解。2、掌握语音信号基频特征的典型求解方法二、仪器设备HP计算机、Matlab软件三、实验原理1.人在发浊音时,气流通过声门

25、使声带产生张弛振荡式振动,产生一股准周期脉冲气流,这一气流激励声道就产生浊音,又称有声语音,它携带着语音中的大部分能量。这种声带振动的频率称为基频,相应的周期就称为基音周期( Pitch) ,它由声带逐渐开启到面积最大(约占基音周期的50% ) 、逐渐关闭到完全闭合(约占基音周期的35% ) 、完全闭合(约占基音周期的15% )三部分组成。 当今主流的基音周期检测技术主要有时域的自相关法、频域的倒谱法、时频结合的小波变换分析方法以及在其基础上的衍生算法。本文所采用的方法是自相关法2本实验采用自相关法: (1)自相关函数对于离散的语音信号x(n),它的自相关函数定义为: R(k)=x(n)x(n

26、-k), 如果信号x(n)具有周期性,那么它的自相关函数也具有周期性,而且周期与信号x(n)的周期性相同。自相关函数提供了一种获取周期信号周期的方法。在周期信号周期的整数倍上,它的自相关函数可以达到最大值,因此可以不考虑起始时间,而从自相关函数的第一个最大值的位置估计出信号的基音周期,这使自相关函数成为信号基音周期估计的一种工具。 (2)短时自相关函数语音信号是非平稳的信号,所以对信号的处理都使用短时自相关函数。短时自相关函数是在信号的第N个样本点附近用短时窗截取一段信号,做自相关计算所得的结果 Rm(k)=x(n)x(n-k) 式中,n表示窗函数是从第n点开始加入。 四、实验内容1、找到机器

27、中声音文件,对其进行相应的文件操作。2、对该声音文件提取基频特征。3、画出相应的基频曲线的图形。4、按照实际的情况调整阈值五、实验步骤及程序1、实验步骤:(1)读取语音信号;(2)分帧求取每帧的基因周期,前34帧和52帧以后的属于无声段,可以不予考虑;(3)观察运行结果。2、程序流程:用中值滤波器去除野点找出每帧自相关函数的最大值所在位置N对每一帧求短时自相关对语音信号分帧处理N除以采样频率,即的基音周期开始读入语音信号画图显示语音段每帧的基音周期3、 实验程序function pitch x=wavread('1.wav');%读取声音文件 figure(1); stem(x

28、,'.'); %显示声音信号的波形 n=160; %取20ms的声音片段,即160个样点 for m=1:length(x)/n; %对每一帧求短时自相关函数 for k=1:n; Rm(k)=0; for i=(k+1):n; Rm(k)=Rm(k)+x(i+(m-1)*n)*x(i-k+(m-1)*n); end end p=Rm(10:n) %防止误判,去掉前边10个数值较大的点 Rmax,N(m)=max(p); %读取第一个自相关函数的最大点 end %补回前边去掉的10个点 N=N+10; %每帧对应的最大值处 T=N/8; %算出对应的周期,f=8khz figure(2);stem(T,'.&

温馨提示

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

评论

0/150

提交评论