语音识别的端点检测

端点检测的概念

端点检测,也叫语音活动检测,Voice Activity Detection,VAD,它的目的是对语音和非语音的区域进行区分。通俗来理解,端点检测就是为了从带有噪声的语音中准确的定位出语音的开始点,和结束点,去掉静音的部分,去掉噪声的部分,找到一段语音真正有效的内容。

在噪声环境下使用语音识别系统,或者讲话人产生情绪或心里上的变化,导致发音失真、发音速度和音调改变,都会产生Lombard/Loud效应。研究表明,即使在安静的环境下,语音识别系统一半以上的识别错误来自端点检测器。

 

端点检测的分类

VAD 算法可以粗略的分为三类:基于阈值的 VAD、作为分类器的 VAD、模型 VAD。

基于阈值的 VAD:通过提取时域(短时能量、短期过零率等)或频域(MFCC、谱熵等)特征,通过合理的设置门限,达到区分语音和非语音的目的。这是传统的 VAD 方法。

作为分类器的 VAD:可以将语音检测视作语音/非语音的两分类问题,进而用机器学习的方法训练分类器,达到检测语音的目的。

模型 VAD:可以利用一个完整的声学模型(建模单元的粒度可以很粗),在解码的基础,通过全局信息,判别语音段和非语音段。

VAD 作为整个流程的最前端,需要在本地实时的完成。由于计算资源非常有限,因此,VAD 一般会采用阈值法中某种算法;经过工程优化的分类法也可能被利用;而模型 VAD 目前难以在本地部署应用。

 

端点检测处理的好,不仅将处理的时间序列变小,还能消除无声段道噪声。

 

端点检测的原理

为了能更清楚说明端点检测的原理,录制了一段音频,并且将语音信号截取了几部分。

开始,有片刻的准备工作,并未发出声音

 

语音识别的端点检测_第1张图片

第一次讲”你好”

 

语音识别的端点检测_第2张图片

第二次讲”你好”

 

语音识别的端点检测_第3张图片

第三次伪装了声音讲”你好”

 

语音识别的端点检测_第4张图片

可以看到如下特点:

  1. 首尾的静音部分声波的振幅很小,而有效语音”你好”部分的振幅比较大。
  2. 一个信号的振幅表示了信号能量的大小,从直观上明显看出静音的部分能量值较小,有效语音部分的能量值较大。
  3. 首尾没有讲话,缺依然有能量值,并且能量值有变化。
  4. 在没有特别的伪装和干扰的情况下,两次讲你好的振幅,即信号是一样的。
  5. 第三次由于伪装了声音,所以导致振幅同上面两次不一样,并且由于刻意的伪装,导致第三次的波长度和前两次明显不一样。

 

由此可以了解到端点检测中涉及到的一些概念:

噪声:背景音称之为噪声。有外界环境的噪声,也有设备本身的噪声。在实际使用中,如果出现长时间的静默,会使用户感到很不自然。因此接收端常常会在静音期间发送一些分组,从而生成使用户感觉舒服一些的背景噪声,即所谓的舒适噪声。

静音:连续若干帧能量值持续维持在低水平。理想情况下静音能量值为0,但实际无法做到,因为一般有背景音,而背景音有基础能量值。

端点:静音和有效语音信号变化临界点。

在实际应用中,比如说电话通话时,用户没有讲话时,就没有语音分组的发送,从而可以进一步降低语音比特率。当用户的语音信号能量低于一定门限值时就认为是静默状态,也不发送语音分组。当检测到突发的活动声音时才生成语音信号,并加以传输。运用这种技术能够获得大于50%的带宽。

同理,在实际测试过程中我们也需要考虑非连续性说话,比如口吃、犹豫、吞吞吐吐时,语言的识别准确性,避免断点检测环节处理出现异常或者不合理的情况。

你可能感兴趣的:(AI&Tensorflow)