2020-10-17  8 views 评论

《实时语音处理实践指南》学习笔记:第三章

第三章 语音端点检测(VAD)

  1. WebRTC中集成了基于RNN模型的VAD检测算法,该方法也作为WebRTC新一代AGC算法的一个子模块而存在。

第一节 特征选取

  1. 一个好的VAD特征应该具备以下特性:
  • 区分能力:含噪语音和仅含噪声音频的分离度应该尽可能的大。理论上的最好效果是让语音特征和噪声特征没有交集(实际很难,因为会有相似)
  • 噪声鲁棒性:背景噪声会造成语音失真,这会影响提取的特征区分能力。
  1. 基于能量的特征:基于能量的方法可以将宽带语音分成各个子带,求各个子带的能量。这是因为语音在2kHz以下频带含有大量的能量,而噪声在2~4kHz及4kHz以上频带的能量往往要比在0~2kHz的能量高。这其实就是噪声平坦度的概念。WebRTC中基于统计模型方法利用了频谱平坦度的特征。基于能量的方法在信噪比低于10dB的时候,语音和噪声的区分性能会大大下降。
  2. 短时能量过零率:采集到的语音信号在数字域上有正负之分。过零率等于一段时间内穿过横轴的次数与总采样点数的比值,它反映了信号变化的快慢,虽然是时域特征,但变化快慢在一定程度上体现了频域的信息。过零率对低频噪声敏感,实际使用中可以过滤掉低频部分。
  3. 频域特征:通过STFT将时域信号变成频域信号,即使SNR=0的时候,一些频带的长时包络还是可以用于区分语音和噪声的。
  4. 倒谱特征:能量倒谱峰值确定了语音信号的基频,也有使用MFCC特征的。
  5. 基于谐波的特征:语音的一个明显特征是包含了基频F0和多个谐波频率的,即使在强噪声条件下,谐波这一特征也存在,可以使用自相关的方法找到基频所在的频点。
  6. 长时特征:语音是非稳态信号,音素间的谱分布是不同的,这就导致了随着时间变化,语音统计特性也是变化的。另外,日常绝大多数噪声都是稳态的(变化较慢),如白噪声、家电噪声等,根据音频长时统计变化特征(语音变化快,日常稳态噪声变化慢)也可以区分噪声和语音。

第二节 判决准则

  1. 门限:门限通常是根据目标场景的数据集与处理得到的。对于噪声变化的场景,需要使用自适应的门限。绝大多数情况可以使用平滑策略来更新门限值。
  2. 统计模型法。类似于IMCRA噪声估计方法,源于似然比检验(LRT),假设语音和背景噪声是独立的高斯分布,这样DFT系数可以用高斯随机变量来描述。

WebRTC用定点化的方法实现了该似然比检验,式(3.4)取对数均值以提升判决的可靠性,如果它大于阈值,则认为是语音;否则认为是非语音。由于式(3.4)中左侧的log总是正数,因而这意思然偏向于Hs,这种偏差可以通过减小只有噪声时似然比波动的判决引导(DD)方法来纠正。DD方法在语音到非语音变换区域可能发生错误,这时又可以基于时域平滑法来减少错误的发生。

第三节 语音/非语音帧初始参数

  1. WebRTC子带的VAD使用了二维高斯模型,这些参数不一定适用于所有场景,如果使用场景有变化,则对初始参数的调优也是影响算法性能的一个方面,通过EM算法来获得模型初始参数的流程图如下图所示。

首先将原始的语音采样率重采样到目标采样率,然后对语音进行分帧和STFT变换(或二分频子带滤波法),根据STFT计算结果,计算各个子带的能量,最后将子带能量组成特征矩阵。该特征矩阵里语音数据是没有标注过的,所以预先不知道特征矩阵里面的数据是语音还是噪声,但是可以知道语音、噪声和带噪语音是有差异的,所有的语音又具有共性。如语音子带能量分布特征等,这里就用聚类的思想经过多轮迭代将相似的数据聚合在一起,再根据聚合后的数据求得高斯分布参数。另外还需要准备一个测试集,验证训练出来的模型的正确性,当正确性达到某一个门限时,就将其作为模型初始参数。

2.在语音相关处理算法中,大多数算法使用了多维高斯分布,多维高斯分布的均值向量协方差矩阵参数由各个单高斯的均值和方差得到,当不同高斯成分不相关时,且协方差矩阵退化为对角矩阵,这样可以减少计算量。

3.EM算法。EM算法是采用迭代方法获得统计模型参数的最大后验概率估计法,EM算法可以用于数据聚类以及说话人识别等场景。具体过程如下:

给我留言

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: