一种基于Matlab的语音信号端点检测方法
第 35 卷第 4 期 黑 龙 江 水 专 学 报 Vol. 35, No. 4
2008 年 12 月 Journal of H eilongjiang H ydraulic Engineering Dec. , 2008
文章编号: 10009833( 2008) 04007403
一种基于 M atlab 的语音信号端点检测方法
宋建华1 , 包玉花2 , 梁 跃1 , 刘 坤1
( 1. 黑龙江大学 电子工程学院, 哈尔滨 150080; 2. 齐齐哈尔职业学院 机电工程系, 黑龙江 齐齐哈尔 161005)
摘 要: 首先简介语音信号端点检测涉及到的几个基本概念, 然后采用短时平均幅度与短时平均过零率相结合 的双门限算法来 对
语音信号进行端点检测。重点阐述双门限算法的设计思想与实现过程, 经 Matlab 编程实验证明, 该方法准确、有效。
关键词: Matlab; 端点检测; 短时平均幅度; 过零率
中图分类号: T N912. 3 文献标识码: A
Endpoint Detection M ethod of Speech Based on M atlab
SONG Jianhua1 , BAO Yuhua2 , LIANG Yue1 , LIU Kun1
( 1. College of Electronic Engineering, H eilongjiang University, H arbin 150080 , China; 2. Department of Mechanical and Electrical Engineer
ing, Qiqihar Vocational College, Qiqihar 161005, Heilongjiang, China)
Abstract:T his paper firstly introduces some related concepts of speech endpoint detection, and then makes
endpoint detection by the combination of short time average magnitude and short time average zerocross
ing rate. Focusing on dualthreshold algorithm design and implementation of the process, the Matlab pro
gramming experiment proved that the method is accurate and effective.
Key words: Matlab; endpoint detection; short time average magnitude; zerocrossing rate
收稿日期: 20080730; 修订日期: 20081022
作者简 介: 宋建华 ( 1978 ) , 男, 黑龙 江五常人, 讲师, 主 要研究
方向为语音信号处理、程控交换网理论。
0 引 言
语音端点检测( Endpoint Detection) 是从包含
语音的一段信号中找出语音的起始点及结束点, 将
语音信号同其它信号( 如背景噪声) 分离开来, 从而
只存储和处理有效语音信号。语音的端点检测在语
音的编码[ 1] 、语音识别、语音增强、说话人识别中起
着非常重的作用, 直接影响着后续工作的正确率。
有效的端点检测不仅可以减少数据的存储量和处理
时间, 提高系统的处理实时性, 而且能排除无声段的
噪声干扰, 从而使后续的识别性能得以较大提高。
端点检测的结果不准确, 系统的识别性能就得不到
保证; 如果端点检测的结果过于放松, 虽然语音部
分被很好地包含在处理的信号中, 但是增加过多的
静音则会增加系统的运算量, 同时对识别性能也有
负面的影响, 因此在语音识别中, 准确、有效的端
点检测方法无疑是整个系统中非常重要的部分。本
文讨论了一种基于短时平均幅度与短时平均过零率
相结合的双门限端点检测方法, 在 M atlab 上进行了
仿真, 并验证了该方法的可行性。
1 检测原理
语音信号一般可分为无声段、清音段和浊音段。
无声段是背景噪声段, 平均能量最低; 浊音段为声带
振动发出对应的语音信号段, 平均能量最高; 清音段
为空气在口腔中的摩擦、冲击或爆破而发出的语音
信号段, 平均能量居于两者之间。采用基于幅度的
算法来检测浊音通常是可行也是可靠的, 但对清音
而言, 除非信号具有极高的信噪比, 否则, 采用基于
幅度算法从背景噪声中鉴别出清音就不够可靠了。
此时, 需要用到语音信号的另一重要特征, 即过零
率, 它指一定时间内信号穿越零电平的次数。清音
段与无声段的波形特点有明显不同, 无声段信号变
化比较缓慢, 清音段信号由气流摩擦产生, 在幅度上
的变化比较剧烈, 穿越零电平次数较多。大量实验
表明, 通常清音段过零率最大, 浊音段过零率的变化
范围较小。可见, 振幅特征适合检测浊音, 而过零率
则适合检测清音, 为了同时检测两者, 一般综合利用
两种特征。
1. 1 短时平均幅度
短时平均幅度[ 2] ( Short T ime Average M agni
tude) 是度量语音信号幅度变化的参量, 是针对短时
平均能量对于高电平信号, 其平方处理方式显得过
于灵敏, 在处理器字长有限的情况下, 容易产生溢出
而提出来的, 其定义见式( 1)
Mn =
n= -
| x(m) | w (n- m) = | x(n) | w ( n)
(1)
其实现框图见图 1。
图 1 语音信号的短时平均幅度
Fig. 1 Short time average magnitude of speech signal
利用式( 1) 就可以将语音信号分帧后计算每帧
的短时平均幅度, 再设定一个门限阈值, 就可以实
现一个简单的端点检测算法。
但是这样的算法是很不可靠的, 因为人的语音
分清音和浊音两种, 浊音为声带振动发出, 对应的
语音信号有幅度高、周期性明显的特点, 而清音则
不会有声带的振动, 只是靠空气在口腔中摩擦、冲
击或爆破而发声, 其短时平均幅度一般比较小。
1. 2 短时平均过零率
信号的幅度值从正值到负值要经过零值, 从负
值到正值也要经过零值, 称其为过零, 统计信号在 1
s 穿越零值的次数, 就称为过零率。过零率的求取
公式见式( 2)
z(i) =
N- 1
n= 1
| x i (n) - x i ( n+ 1) | ( 2)
过零率可以看作信号频率的简单度量[ 3] 。发浊
音时, 声带振动, 因而声门激励是以此音调频率为
基频来使声道共振; 尽管有若干个共振峰, 但其能
量的分布集中于低 3 kHz 的频率范围内。
发清音时声带不振动, 声道某部分阻塞产生类
似白噪声激励, 通过声道后其能量集中在比浊音时
更高的频率范围内。浊音时能量集中于较低频率段
内, 具有较低的过零率, 而发清音时能量集中于较
高频率段内, 具有较高的过零率。虽然清音的过零
率比较高, 浊音的过零率比较低, 但是在实际的语
音数据中, 背景噪声的过零率也是很低的, 因为背
景噪声的很多值都为零, 因此按照上述公式计算的
过零率就会很低[ 4] 。
实际的处理中, 将各帧语音信号的过零率做统
计平均, 就是短时平均过零率( Short T ime Average
ZeroCrossing Rate) 。语音信号序列 x( n) 的短时
平均过零率定义为
Zn =
m= -
| sgn[ x( m)] - sgn[ x( m- 1)] |
w (n - m) = | sgn[ x(n) ] - sgn[ x(n - 1)] | w (n)
(3)
其中 sgn 为符号函数, 见式( 4) ; w (n)为窗函数。
sgn| x(n)| = 1 x(n) !0
- 1 x(n) < 0 ( 4)
图 2 给出了短时平均过零率的计算过程。首先
对语音信号序列 x(n)进行成对处理, 检查是否有过
零现象, 若有符号变化, 则表示有一次过零现象; 然后
进行一阶差分计算, 取绝对值; 最后进行低通滤波。
图 2 短时平均过零率的计算
Fig. 2 Calculation of short time average zerocrossing rate
2 实验结果与分析
2. 1 基于短时能量的端点检测
实验数据是英文单词? sunday#, 时域波形见图
3。在实验中, 取帧长为 256 点, 采样频率为 f s =
16 000 Hz, 图 4 是基于短时平均幅度的端点检测分
析, 采用 3 个阈值, 阈值 1 取音量最大值的 0. 1 倍,
阈值 2 取音量中值的 0. 1 倍, 阈值 3 取音量最小值
的 10 倍。将语音信号的能量值与预设的阈值相比
较, 若信号的能量大于最大阈值, 可确定两个端点,
并可判断这两个端点之间是语音信号, 但是语音的
真正起点和终点不一定是这两个点。再与低能量阈
值相比较, 如果信号的能量大于这个阈值, 所对应的
端点之间仍是语音。为了更加精确地展示语音信号
的能量变化, 将能量与 3 个阈值分别相比较, 得到 3
对边界, 检测出了不同边界条件下的语音端点。
由图可见, ? sun#, ? day#两个词的音量变化呈现
出两个波峰形状的图像。由于语音分为清音和浊
75第 4 期 宋建华, 等. 一种基于 M atlab 的语音信号端点检测方法
音, 浊音是声带振动发出的, 对应的波形振幅高, 周
期性明显, 相对的短时能量也比较大, 因而图中
8 500左右音量达到最大, 对应的是浊音段? d# 的部
分; 清音不会有声带振动, 只是靠空气在口腔中摩
擦、冲击或爆破来发声, 其短时能量就比较小。如图
中 3 000 左右, 发的是? s# 这个清音, 短时能量很小,
有些地方甚至与静音段的短时平均幅度差不多, 这
就使得清音段容易与静音段混淆, 所以如果仅采用
平均幅度法进行端点检测, 就有可能漏掉清音段, 使
得语音的端点检测不准确, 识别率也会下降。
2. 2 短时平均幅度与短时平均过零率相结合的端
点检测
图 5 是在求短时平均幅度的基础上, 又结合了
短时平均过零率的检测, 其中第三个图像横轴表示
时间, 纵轴表示了? sunday#这个词的短时平均过零
率, 图中的黑线为所设定的门限值, 取值是过零率最
大值的 1/ 10, 即 max( ZCR) * 0. 1。
由图 5 可见, 无声段语音信号的的过零率基本
为零, 浊音段部分语音信号的过零率波形变化相对
比较缓慢, 而清音段由于口腔中空气摩擦的原因, 过
零率波形在幅度上变化比较剧烈, 通过了零电平的
次数也比浊音段多。例如? s#这个音的过零率较高,
ZCR 值远远大于门限值, 这说明该段是语音部分,
且是语音的清音部分, 清音波形变化很快, 通过零电
平的次数也较浊音段多得多, 因此反映的过零率高。
通过比较发现, 仅通过短时平均幅度法检测语
音信号的端点, 很容易将语音中的清音部分同无声
段混合在一起, 导致在使用该法进行检测时, 将清音
部分给忽略掉, 而结合过零率进行端点检测时, 会有
效的避免这种错误发生, 提高了检测的准确率。
图 5 中第四个图像将语音信号在时间轴上放大了
一些, 更加清晰地展现了? sunday#这个词在发音时的短
时平均过零率变化情况。
3 结 语
通过本文可以看出, 仅采用短时平均幅度法进
行语音信号端点检测弊端较多, 因为有些音节以清
音开始, 单用幅度或能量法检测可能会漏音, 而用结
合短时过零率则可以避免这种情况。
由于短时平均幅度检测算法更适合检测浊音,
而短时过零率更适合检测清音, 因此将短时平均幅
度和短时平均过零率相结合来进行端点检测是一种
有效的端点检测方法。从实验结果可以看出, 该方
法能够有效地检测出语音信号的起止点, 将语音段
与噪声段分离开来, 从而排除噪声的干扰, 提高系统
的效率和识别能力。
参考文献:
[ 1] 王炳锡, 屈 丹, 彭 煊. 实用语音识别基础[ M] . 北京: 国防 工
业出版社, 2005.
[ 2] 韩纪庆, 张 磊, 铁 然. 语音信号处理[ M] . 北京: 清华大学 出
版社, 2004.
[ 3] 赵 力. 语音信号处理[ M ] . 北京: 机械工业出版社, 2003.
[ 4] 刘 羽. 语音端点检测及其在 Matlab 中的实现 [ J]. 计算机 时
代, 2005, ( 8) : 2526.
[ 5] Ying G S, Mitchell C D, Jamieson L H . Endpoint Detection of
Isolated U tterances Based on a Modified T erager Energy Meas
urem ent[ M ] . In Sullivan B J. ICASSP 93. Minnesota, USA:
IEEE Press, 1993. 732735.
[ 6] 郭 巧, 张立伟, 陆际联. 用于汉语语音信号端点检测与切分的
有效方法[ J] . 计算机工程与应用, 2005, 41( 5) : 9294.
[ 7] H aigh J A , Mason J S. Robust Voice Activity Detection Using
Cepstral Features [ J] . Proc IE EE T ENCON, 1993, ( 3) : 321
324.
[ 8] 何 强, 何 英. Matlab 扩 展编 程[ M] . 北京: 清华 大 学出 版
社, 2002. 146152.
76 黑 龙 江 水 专 学 报 第 35 卷
一种基于Matlab的语音信号端点检测方法.pdf