哈尔滨工程大学 语音信号处理实验报告分析
- 格式:doc
- 大小:824.50 KB
- 文档页数:25
实 验 报 告 实验课程名称: 语音信号处理实验 姓名: 班级: ******** 学号:
指导教师 张磊 实验教室 21B#293 实验时间 2015年4月12日 实验成绩
实验序号 实验名称 实验过程 实验结果 实验成绩 实验一 语音信号的端点检测 实验二 语音信号的特征提取 实验三 语音信号的基频提取 实验一 语音信号的端点检测 一、实验目的 1、掌握短时能量的求解方法 2、掌握短时平均过零率的求解方法 3、掌握利用短时平均过零率和短时能量等特征,对输入的语音信号进行端点检测。 二、实验设备
HP计算机、Matlab软件 三、实验原理 1、短时能量 语音信号的短时能量分析给出了反应这些幅度变化的一个合适的描述方法。对于信号)}({nx,短时能量的定义如下:
mmnnhnxmnhmxmnwmxE)()()()()]()([222
2、短时平均过零率 短时平均过零率是指每帧内信号通过零值的次数。对于连续语音信号,可以考察其时域波形通过时间轴的情况。对于离散信号,实质上就是信号采样点符号变化的次数。过零率在一定程度上可以反映出频率的信息。短时平均过零率的公式为:
1)]1(sgn[)](sgn[21 )()]1(sgn[)](sgn[21Nnnmww
mn
mxmx
mnwmxmxZ
其中,sgn[.]是符号函数,即 0)(10)(1)](sgn[nxnx
nx 3、端点检测原理 能够实现这些判决的依据在于,不同性质语音的各种短时参数具有不同的概率密度函数,以及相邻的若干帧语音应具有一致的语音特性,它们不会在S、U、V之间随机地跳来跳去。要正确判断每个输入语音的起点和终点,利用短时平均幅度参数E和短时平均过零率Z可以做到这一点。
首先,根据浊音情况下的短时能量参数的概率密度函数)|(VEP确定一个阈值参数HE,HE值一般定的较高。当一帧输入信号的短时平均幅度参数超过HE
时,就可以判定该帧语音信号不是无声,而有相当大的可能是浊音。根据HE可判定输入语音的前后两个点1A和2A。在1A和2A之间的部分肯定是语音段,但语音的精确起点、终点还要在1A之前和2A之后仔细查找,如图1所示。
C1 B1 A1
A
2
B2 C
2
EH
E
EL
C2 B2 A1 C1 B1 A2
Z
Zs
图1 端点检测原理示意图 为此,再设定一个较低的阈值参数LE,由1A点向前找,当短时能量由大到小减至LE可以确定点1B。类似地,可以由2A点向后找,确定2B点。在1B和2B之间的仍能肯定是语音段。然后由1B向前和2B向后,利用短时平均过零率进行搜索。根据无声情况下的短时平均过零率,设置一个参数sZ,如果由1B向前搜索时,短时平均过零率大于sZ的3倍,则认为这些信号仍属于语音段,直到短时平均过零率下降到低于3倍的sZ,这时的点1C就是语音的精确的起点。对于终点也做类似的处理,可以确定终点2C。采用短时平均过零率的原因在于,1B点以前可能是一段清辅音,它的能量相当弱,依靠能量不可能将它们与无声段分开。而对于清辅音来说,它们的过零率明显高于无声段,因而能用这个参数将二者区分开来。
存在噪声的情况下,正常的过零率计算会存在一定的误差,解决这个问题的一种方法是对上述过零率定义做一个简单的修改,即设立一个门限T,将过零率的含义修改为跨过正负门限的次数,如图2。 门限3 门限2 门限1 门限1 门限2
门限3
时间
图2 门限短时平均过零率 于是,有:
)(}])1(sgn[])(sgn[ ])1(sgn[])(sgn[{21mnwTmxTmxTmxTmxZmn
这样计算的短时平均过零率就有一定的抗干扰能力。即使存在小的随机噪声,只要它不超过正负门限所构成的带,就不会产生虚假过零率。
四、实验步骤及程序 实验程序: function point_check() s1=wavread('man.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;%b_len-2*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:ka for k=1:round w(k,i)=s(k+(i-1)*(round-repeat),1); end end ST=0.01; F=zeros(ka,round); for i=1:ka for k=0:round-1 for j=1:round-k F(ka,k+1)=F(ka,k+1)+abs(w(j,i)-w(j+k,i)); end if(kif(w(k+1,i)>0&&w(k+2,i)<0) z=sign(w(k+1,i)-ST)-sign(w(k+2,i)+ST); elseif(w(k+1,i)<0&&w(k+2,i)>0) z=sign(w(k+2,i)-ST)-sign(w(k+1,i)+ST); end if(z==2) f(i,1)=f(i,1)+1;
end end end end amp=sum(abs(w).^2,1);
实验结果截图: 02468101214x 105
-0.8
-0.6-0.4-0.200.20.40.60.8 五、实验结果与分析 这次实验利用MATLAB对信号进行分析和处理,利用短时过零率和短时能量,对语音信号的端点进行检测。我之前虽然接触过MATLAB软件,但从未进行过有关语音信号的操作,在实验过程中欠缺独立性,代码是参考网上的,在理解的基础上借鉴。学习是无止境的,现在的动手能力不强也是由于之前的松懈造成的,以后一定要多动手,毕竟能力是立身之本。 实验二 语音信号的特征提取 一、实验目的 1、掌握语音信号的Mel倒谱特征(MFCC)的求解方法 2、掌握语音信号的线性预测原理以及LPC特征的求解方法 二、实验设备
HP计算机、Matlab软件 三、实验原理
1、MFCC特征原理及求解方法 在语音识别和说话人识别中,常用的语音特征是基于Mel频率的、倒谱系数(Mel Frequency Cepstrum Coefficient,简称MFCC)。由于MFCC参数是将人耳的听觉感知特性和语音的产生机制相结合,因此目前大多数语音识别系统中广泛使用这种特征。
研究者根据心理学实验得到了类似于耳蜗作用的一组滤波器组,这就是Mel频率滤波器组。Mel频率可以用公式表达如下: )700/log(12595 frequency Melf
在实际应用中,MFCC倒谱系数计算过程如下: (1) 将信号进行分帧,预加重和加汉明窗处理,然后进行短时傅立叶变换得到其频谱;
(2) 求出频谱平方,即能量谱,并用M个Mel带通滤波器进行滤波,由于每一个频带中分量的作用在人耳中是叠加的,因此将每个滤波频带内的能量进行叠加,这时第k个滤波器输出功率谱)(kx;
(3) 将每个滤波器的输出取对数,得到相应频带的对数功率谱;并进行反离散余弦变换,得到L个MFCC系数,如下式所示。一般L取12~16个左右;
MknMnkkxC1]/)5.0(cos[)(log Ln,....2,1
(4) 这种直接得到的MFCC特征作为静态特征,将这种静态特征做一阶和二阶差分,得到相应的动态特征。 2、线性预测原理及LPC特征求解方法 根据参数模型功率谱估计的思想,可以将语音信号()xn看作是由一个输入序列)(nu激励一个全极点的系统(模型))(zH而产生的输出,如图3所示。
()xn)(ns)(nu
)(zH
图3 语音信号的模型化 系统的传递函数为:
piiizaGzH11
)(
其中G为常数,ia为实数,p为模型的阶数。显而易见,这种模型是以系数ia和增益G为模型参数的全极点模型,即AR模型。
用系数{ia}可以定义一个p阶线性预测器)(zF piiizazF1)(
这个p阶预测器从时域角度可以理解为,用信号的前p个样本来预测当前的样本得到预测值()xn,
1()()piixnaxni
因为预测器)(zF是用AR模型的系数{ia}来构造的,而AR模型是在最小均方意义上对数据的拟合,所以预测器)(zF必然是一个最佳预测器,即此时预测器的预测误差短时总能量最小。
语音信号的线性预测分析就是根据这一性质,从语音信号()xn出发,依据最小均方误差准则,估计出一组线性预测器的系数{ia},它就是我们所要求的信号AR模型的系数。{ia}被称为线性预测系数或LPC系数。
预测器的预测误差)(ne为:
1()()()()()piienxnxnxnaxni 由上式可知,)(ne是输入为()xn,且具有如下形式传递函数的滤波器的输出