ASR:特征提取

作者: zqh_zy | 来源:发表于2017-04-14 11:48 被阅读549次

    在不深究具体过程的前提下理一理语音识别中特征提取的基本过程,并通过kaldi对该过程进行操作,得出相应结果。以梅尔倒普系数MFCC为例,对于语音信号,处理如下:

    • Input is 16kHz sampled audio.
    • Take a 25ms window (shift by 10 ms each time; we will output a sequence of vectors, one every 10ms)
    • Multiply by windowing function e.g. Hamming
    • Do fourier transform FFT
    • Take log energy in each frequency bin
    • Do discrete cosine transform (DCT): (gives us the “cepstrum”)
    • Keep the first 13 coefficients of the cepstrum.

    在kaldi工具下,完成上述过程需要一条命令(steps/make_mfcc.sh)

    #gen MFCC features
    for x in train cv test; do
       #make  mfcc 
       steps/make_mfcc.sh --nj $n --cmd "$train_cmd" data/mfcc/$x exp/make_mfcc/$x mfcc/$x || exit 1;
       #compute cmvn
       steps/compute_cmvn_stats.sh data/mfcc/$x exp/mfcc_cmvn/$x mfcc/$x || exit 1;
    done
    

    steps/make_mfcc.sh命令指定参数包括 data-dir、 log-dir、mfcc-dir,分别指定原数据位置、日志输出目录、和提取结果目录。 steps/compute_cmvn_stats.sh 用于对说话人语音的特征取均值和方差。

    完成MFCC特征提取后,查看结果:

    $ copy-matrix ark:raw_mfcc_train.1.ark ark,t:- | head copy-matrix ark:raw_mfcc_train.1.ark ark,t:- 
    speaker001_00001  [
      27.54613 -20.59882 -9.078632 -9.878078 -3.408179 -6.33442 -7.088059 -9.386513 -9.514486 5.714392 3.923563 -0.2056017 -6.208587 
     ...]
    

    语音speaker001_00001被以帧为单位转化为13维向量集,接着为了以后对说话人进行自适应,对每个说话者求倒普均值与方差,这里用到了spk2utt和feats.scp两个映射文件, 查看结果:

    $ copy-matrix ark:cmvn_train.ark ark,t:- 
    copy-matrix ark:cmvn_train.ark ark,t:- 
    speaker001  [
      3153345 -332630 -150518.8 -129893.8 -416410.7 -370985.3 -160386.6 17840.54 -276749.9 -312077.3 -381611.7 -315793.8 -147651.9 46141 
      2.236304e+08 6630422 6846200 7327799 1.325839e+07 1.371075e+07 1.077766e+07 7187704 1.197414e+07 8830369 1.272681e+07 1.092798e+07 5399742 0 ]
    speaker002  [
      4278844 -475446.6 -279641.1 -196591.9 -759722.8 -208586.2 117607.6 -258971.1 -547313 -553619.6 -266483.2 40984.47 48301.47 63223 
      2.995394e+08 7515546 8840850 1.154735e+07 3.502638e+07 1.221414e+07 9032753 1.709921e+07 1.77456e+07 1.534125e+07 7840884 7368065 9012588 0 ]
    

    小结

    通过上面的过程,可以知道,对于一段语音,首先对其进行分帧(如,每10ms取25ms的窗口作为一帧),对每一帧进行平滑(加窗,如汉明窗),之后进行FFT(快速傅里叶变化)将连续信号转化为数字信号, 再进行离散余弦变换(DCT)得到一个多维向量,最后取前13维作为最后的MFCC。重复该过程,得到一段语音每个帧的特征向量。
    更多关注公众号:


    wechat

    相关文章

      网友评论

      本文标题:ASR:特征提取

      本文链接:https://www.haomeiwen.com/subject/rtewattx.html