聲學特徵轉換 kaldi工具


基本工具

1.transform-feats

transform-feats <transform> <input-feats> <output-feats>

其中transform是對應的特徵轉化矩陣,如果transform是rxfilename形式,認爲是speaker-independent;如果transform是rspecifier形式,有-utt2spk選項,認爲是per-speaker,沒有-utt2spk選項,認爲是per-utterance。
- speaker-independent: LDA MLLT/STC
- per-speaker or per-utterance: fMLLR

2.compose-transform
將多個transform合併爲一個
3.weight-silence-post
在說話人相關的特徵變換中,需要刪除silence對應的幀

說話人無關特徵

lda

原始mfcc特徵40維,左右3幀,擴展成280維,然後經過轉換矩陣(40*280)將特徵降維到40維,轉換矩陣即爲LDA
- acc-lda獲取LDA的統計量
- est-lda根據統計量進行LDA估計

frame splicing

  • splice-feats左右拼幀

delta feature

  • add-deltas 增加差分

HLDA

  • gmm-acc-hlda
  • gmm-est-hlda

STC/MLLT

  • gmm-acc-mllt
  • est-mllt

說話人相關特徵

CMLLR/fMLLR

Constrained Maximum Likelihood Linear Regression (CMLLR), also known as feature-space MLLR (fMLLR)
fmllr變換得到trans.JOB文件,每個speaker對應一個變換矩陣。相當於去除speaker的信息
- gmm-est-fmllr

linear VTLN

沒有收益

ET

另外一種VTLN變換的方法

cmvn

compute-cmvn-stats 如果提供spk2utt,以speaker爲單位;如果沒有,以utterance爲單位
apply-cmvn 同樣如果提供utt2spk,以speaker爲單位;否則,以utterance爲單位

特徵變換相關的recipe

train_delta

train_delta.sh:使用mfcc+cmvn+delta特徵

train_lda_mllt

train_lda_mllt.sh:使用mfcc+cmvn+splice+LDA特徵,獲得final.mat(LDA和MLLT變換合在一起)
主要是特徵做LDA/MLLT變換,轉換以後的特徵重新訓練GMM模型,具體步驟:
- 估計出LDA變換,M ,特徵經過LDA轉換
- 轉換後的特徵重新訓練GMM,在指定的迭代更新MLLT矩陣
- 計算MLLT統計量
- 更新MLLT矩陣T
- 更新模型的均值μjmTμjm
- 更新轉換矩陣MTM

train_sat

train_sat.sh:使用mfcc+cmvn+splice+LDA+fmllr特徵,獲得trans.JOB
主要是特徵做fmllr變換,轉換以後的特徵重新訓練GMM模型

train

dnn訓練:將mfcc(沒有cmvn和lda)特徵和ivector特徵拼在一起

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章