apply-cmvn&apply-cmvn-online&apply-cmvn-slide

kaldi中现有的cmvn处理包含三种形式,即apply-cmvn、apply-cmvn-online、apply-cmvn-slide,这三种形式在使用时略有区别。
cmvn为倒谱均值方差归一化,大多数情况下只会对均值进行归一化,也可以写成cmn。
倒谱均值方差归一化,顾名思义,需要先通过compute-mfcc计算倒谱特征mfcc,然后通过compute-cmvn-stats计算相关的cmvn统计量
apply-cmvn:
  • apply-cmvn归一化时,--utt2spk作为可选参数,该参数决定是对每个句子按照说话人归一化还是整体归一化,当utt2spk作为输入时,此时会分别统计每个说话人对应句子的归一化参数
  • 然后对于输入句子的每一帧,将每一帧的各个维度利用上述统计的归一化参数进行归一化
apply-cmvn-online:
  • apply-cmvn-online归一化时,同样可输入utt2spk作为参数,该参数决定了句子起始部分(小于cmvn_window,默认是600帧,6s)的cmvn计算统计量,当输入utt2spk,统计量来源于对应的说话人统计量;否则来源于全局统计量
  • apply-cmvn-online对当前帧进行cmvn时使用的是前600frames的统计量,不够时会利用所属说话人的统计量或全局统计量;
  • apply-cmvn-online对相关参数的默认设置在online-feature.h文件中
  • 对于句子起始帧利用的统计量的默认的顺序为说话人和全局,具体在文件online-feature.cc
  其中,count_from_speaker表示需要补齐的帧数;speaker_count表示说话人统计量实际的帧数;spekaer_frames是指定的说话人统计量帧数参数。
apply-cmvn-slide
  • 顾名思义,apply-cmvn-slide对前帧的归一化采取的是滑窗的形式,可以选择以当前帧作为中心帧的窗口进行均值和方差计算,或者之前的窗口内。一般窗口window大小为300帧
  • 对于句子的前window内的帧的cmvn计算,采用的是从第0帧开始的window,同理最后windows帧采用的最后一帧往前的window
三者的区别
类型
统计量
cmvn_window
适用场景
apply-cmvn
所属说话人的所有句子的统计量;没有utt2spk时统计全局统计量
无此参数,用到的是说话人所有句子或者全局特征
离线asr
apply-cmvn-online
当前帧的前cmvn_window内的帧的统计量
600帧,6s
在线asr
apply-cmvn-slide
以当前帧为中心的cmvn_window内的帧或者当前帧之前的cmvn_window内的帧的统计量
300帧,3s
声纹识别
 
posted @ 2020-09-16 23:46  卑微的蜗牛  阅读(1661)  评论(0编辑  收藏  举报