转自:http://blog.csdn.net/huchad/article/details/52092796
使用kaldi的DNN做音频分类,异常声音检测。
HMM/GMM -》 HMM/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