异常声音检测之kaldi DNN 训练

使用kaldi的DNN做音频分类,异常声音检测。

基本上沿用语音识别的思路,有两点注意一下即可。

1. 在训HMM/GMM时,训到monophone即可,使用monophone的HMM与alignment来训DNN

2.语言模型的准备,手动构造一个一元的简单模型即可

DNN的主要训练步骤如下:

#Step 1. Pre-train DBN

steps/nnet/pretrain_dbn.sh

 --cmvn-opts "--norm-means=true --norm-vars=true" // 均值方差归一化

--delta-opts "--delta-order=2"// 差分特征

--splice 5

--nn_depth 3 // 隐含层的个数

--hid-dim 256// 隐层节点数

--rbm-iter 8 // 迭代次数

$train $dir


# Step2:Train the DNN optimizing per-frame cross-entropy

steps/nnet/train.sh 

--feature-transform $feature_transform 

--dbn $dbn  // step1 所得到的dbn

--hid-layers 0  // 表示使用dbn的隐层

--learn-rate 0.008 // 学习率
    ${train}_tr90 ${train}_cv10 data/lang $ali $ali $dir


# step3: generate lattices and alignments for sMBR:
  steps/nnet/align.sh --nj 20 --cmd "$train_cmd"   $train data/lang $srcdir ${srcdir}_ali 

  steps/nnet/make_denlats.sh --nj 20 --cmd "$decode_cmd" --config conf/decode_dnn.config --acwt $acwt \
    $train data/lang $srcdir ${srcdir}_denlats 


#step4:Re-train the DNN by  iterations of sMBR

steps/nnet/train_mpe.sh 

--cmd "$cuda_cmd" --num-iters 6 --acwt $acwt --do-smbr true \
    $train data/lang $srcdir ${srcdir}_ali ${srcdir}_denlats $dir


你可能感兴趣的:(音频分类与检索)