基于分带谱熵的语音激活检测算法的设计与实现

时间:2011-07-09

  采用一定的信号处理技术来检测信号中是否包含语音信号,并从背景噪声中找出每一段语音的开始和终止,以明确找出语音信号存在的范围,这就是语音激活检测VAD(Voice Activity Detection)。该技术目前被广泛应用在语音编码、语音增强、语音合成、回声抵消以及语音通信等领域。

  语音激活检测的研究历史很长,从早的基于短时能量、过零率的判断,到基于语音模型和统计知识的各种复杂算法,语音激活检测算法的原理和实现方法都在不断地更新。近年来,一些学者提出了基于支持向量机[1]、小波理论[2]、神经网络[3]和循环累积量[4]等理论的检测方法,对语音检测方法的研究给出了新的思路。如何在保证算法鲁棒性的同时降低算法的复杂度是一个极具挑战性的问题,也是目前语音激活检测中的热点问题。本文设计了一种基于分带谱熵的语音激活检测算法,该方法采用分带谱熵作为判决参数,达到了较高的判别准确率及较低的算法复杂度。

  1 特征提取

  特征提取的框图如图1所示。首先对加噪语音进行分帧和加窗处理,然后进行时频变换,由参考文献[5]知,与常用的FFT相比,用离散余弦变换谱熵来区分噪声与语音具有更大的隔离度,因此本文选用离散余弦变换(DCT)。离散余弦变换的定义式为:

  在DCT变换之后,对DCT系数进行分带,分成32个子带,然后分别计算它的能量,其计算公式为:

  为了提高概率密度函数分辨语音信号和非语音信号的能力,提出了一些经验性的约束。首先,由于大部分语音信号都在250 Hz~6 000 Hz频带内,因此有:

  为进一步提高语音激活检测的准确率,本文采用短时平均能量进行加权的方法,即:

  从图2(c)和图2(d)可以看出,加权谱熵对帧能量更加敏感,而通过对其取对数,在一定程度上降低了能量的影响。正因为如此,本文采用加权谱熵的对数值作为特征量,提高了算法的鲁棒性。

  2 语音激活检测算法

  (1) 对输入的语音信号s(n)进行分帧处理,帧长32 ms (256个样点),得到每帧信号si(n),i表示第i帧,并对si(n)进行加窗处理,窗函数采用汉明窗。

  (2) 自适应阈值的确定。可合理假设待检测语音的前几帧是非语音信号,本文中假设前10帧为非语音信号,计算其加权谱熵的对数值,然后求它们的值,门限值就是前10帧信号的加权谱熵的对数值中的值。

  (3) 计算每一帧信号的加权谱熵的对数值,然后把它与门限值进行比较。如果大于门限值,则判为语音帧,否则判为噪声帧或静音帧。

  (4)对判决结果进行平滑处理。为了有效地避免激活状态的频繁切换,本文对判决结果进行平滑后处理。由于无论是非语音信号还是语音信号,一般都会持续一段时间,因此为了剔除判决时的少数坏点,在判决结束后加入了平滑后处理。即:

  3 仿真与实验结果

  本文的算法用VC、Matlab进行仿真。图3所示为原始语音、加噪语音(噪声为汽车内部噪声,信噪比为0 dB)、人工标注的结果和使用本文算法检测的结果。图3(a)是一段纯净语音,其采样率为8 000 Hz。图3(b)是加噪语音,所加噪声为汽车内部噪声,信噪比为0 dB。图3(c)为本文算法检测的结果。图3(d)为人工标注的结果。由图3(c)可以看出,本文的方法对低信噪比条件下的语音依然具有较好的分类效果。

  为进一步说明本文算法对加噪语音进行检测的鲁棒性,对本文算法和G.729B中的VAD算法进行对比。对1 000帧中文信号进行实验, 测试环境分别选取了-5 dB、 0 dB、5 dB、10 dB、20 dB、30 dB等6个不同的信噪比,充分体现了算法在不同信噪比下的性能。图4给出了不同算法在相同背景噪声类型(都为汽车内部噪声)、不同信噪比情况下的检测准确率。

  从图4可以看出,本文算法的性能基本上不随信噪比的变化而变化。同时可以看出当信噪比逐渐降低时,G.729B算法性能有了明显的下降。

  文中提出了一种能够准确进行VAD判决的算法。该算法提取了加权谱熵的对数值作为特征,然后通过自适应阈值,实现语音和静音(或噪声)的准确检测。实验表明,该语音激活检测算法在汽车内部噪声条件具有较高的准确率和稳定性,是一种有效、简单的语音激活检测算法。


  
上一篇:精准农业监控系统设计与应用
下一篇:基于声信号的车辆碰撞检测装置的设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料