基于Matlab编写的语音端点检测
专 业:班 级:姓 名:指导教师:
2011 年 6月 18 日
一、实验目的
1.学会MATLAB的使用,掌握MATLAB的程序设计方法; 3.掌握语音处理的基本概念、基本理论和基本方法; 4.掌握基于MATLAB编程实现带噪语音信号端点检测; 5.学会用MATLAB对信号进行分析和处理。
二、实验内容简介:
可利用时域分析(短时能量、短时过零率、短时自相关)方法的某一个特征或某几个特征的结合,判定某一语音信号的端点,尤其在有噪声干扰时,如何准确检测语音信号的端点,这在语音处理中是富有挑战性的一个课题。
要求:(1)录制语音,读入文件,绘制波形
(2)分帧,绘制能量曲线和短时过零率曲线 (3)根据上述端点检测原理,实现端点检测 (4)界面
三.课程设计原理
端点检测是语音信号处理过程中非常重要的一步,它的准确性直接影响到语音信号处理的速度和结果,因此端点检测方法的研究一直是语音信号处理中的热点。本设计使用传统的短时能量和过零率相结合的语音端点检测算法利用短时过零率来检测清音.用短时能量来检测浊音,两者相配合便实现了信号信噪比较大情况下的端点检测。
算法对于输入信号的检测过程可分为短时能量检测和短时过零率检测两个部分。算法以短时能量检测为主,短时过零率检测为辅。根据语音的统计特性,可以把语音段分为清音、浊音以及静音(包括背景噪声)三种。在本算法中,短时能量检测可以较好地区分出浊音和静音。对于清音,由于其能量较小,在短时能量检测中会因为低于能量门限而被误判为静音;短时过零率则可以从语音中区分出静音和清音。将两种检测结合起来,就可以检测出语音段(清音和浊音)及静音段
1、短时能量计算
定义n时刻某语音信号的短时平均能量En为:
En?m????[x(m)w(n?m)]??2?m?n?(N?1)?[x(m)w(n?m)]n2
式中N为窗长,可见短时平均能量为为一帧样点值的甲醛平方和。特殊地,当窗函数为矩形窗时,有
En?m?n?(N?1)?xn2(m)
2、短时过零率
过零就是指信号通过零值。过零率就是每秒内信号值通过零值的次数。 对于离散时间序列,过零则是指序列取样值改变符号,过零率则是每个样本的改变符号的次数。对于语音信号,则是指在一帧语音中语音信号波形穿过横轴(零电平)的次数。可以用相邻两个取样改变符号的次数来计算。 如果窗的起点是n=0,短时过零率Z为
波形穿过横轴(零电平)的次数
x?0?1,
sgn(x)?? ??1,x?0短时过零可以看作信号频率的简单度量
1N?1Z0??Sgn(Sw(n))?Sgn(Sw(n?1))2n?0浊音的短时平均幅度最大,无声的短时平均幅度最小,清音的短时过零率最大,无声居中,浊音的短时过零率最小。 3、短时自相关函数
N?k?1 Rw(k)??sw(n)sw(n?k)n?0
1、是偶函数;
2、s(n)是周期的,那么R(k)也是周期的; 3、可用于基音周期估计和线性预测分析
4、判断语音信号的起点和终点
利用短时平均幅度和短时过零率可以判断语音信号的起点和终点。语音端点检测方法可采用测试信号的短时能量或短时对数能量、联合过零率等特征参数,并采用双门限判定法来检测语音端点,即利用过零率检测清音,用短时能量检测浊音,两者 配合。首先为短时能量和过零率分别确定两个门