[转]异常声音检测之kaldi DNN 训练

转自: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

时间: 2024-12-24 11:41:52

[转]异常声音检测之kaldi DNN 训练的相关文章

[转]kaldi ASR: DNN训练

作者:zqh_zy链接:http://www.jianshu.com/p/c5fb943afaba來源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本文通过简单kaldi源码,分析DNN训练声学模型时神经网络的输入与输出.在进行DNN训练之前需要用到之前GMM-HMM训练的模型,以训练好的mono模型为例,对模型进行维特比alignement(对齐),该部分主要完成了每个语音文件的帧到transition-id的映射. 不妨查看对齐后的结果: $ copy-int-

时间序列异常事件检测

一.异常数据挖掘简介: 异常数据挖掘,又称为离群点分析或者孤立点挖掘.在人们对数据进行分析处理的过程中,经常会遇到少量这样的数据,它们与数据一般模式不一致,或者说与大多数样相比有些不一样.我们称这样的数据为异常数据,对异常数据的处理在某些领域很有价值,例如在网络安全领域,可以利用异常数据挖掘来分析网络中的异常行为:在金融领域异常数据挖掘可以识别信用卡的欺诈交易.股市的操控行为.会计信息的虚假报价.欺诈贷款等. 异常数据挖掘其中又包含时间序列和非时间序列.非时间序列主要为发现异常的点集,其中各事件

以一个闰年检测程序为例的非法字符异常输入检测

闰年:闰年(Leap Year)是为了弥补认为历法规定造成的年度天数与地球实际公转周期的时间差而设立的.补上时间差的年份为闰年. 简单来说,置润法则是:四年一闰,百年不闰,四百年再闰.即规定公历年份是整百数的,必须是400的倍数才是闰年,不是400的倍数的就是平年. 例如:1950-2050年间的闰年: 1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000, 2004,2008,2012,2016,2020,2024,2

(转)TCP连接异常断开检测

TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现.某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接.下面介绍一种方法来检测这种异常断开的情况 TAG: TCP连接异常断开  TCP断链 TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现.某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接.下面介绍一种方法来检测这种异常断开的情况 1) 在TCP协议中提供了KEEPA

【Demo 1】基于object_detection API的行人检测 3:模型训练与测试

训练准备 模型选择 选择ssd_mobilenet_v2_coco模型,下载地址(https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md),解压到./Pedestrian_Detection/ssd_mobilenet_v2_coco_2018_03_29. 修改object_detection配置文件 进入目录./Pedestrian_Dete

物体检测算法 SSD 的训练和测试

GitHub:https://github.com/stoneyang/caffe_ssd Paper: https://arxiv.org/abs/1512.02325 1. 安装 caffe_SSD: git clone https://github.com/weiliu89/caffe.git cd caffe git checkout ssd 2. 编译该 caffe 文件,在主目录下: # Modify Makefile.config according to your Caffe i

socket选项自带的TCP异常断开检测

TCP异常断开是指在突然断电,直接拔网线等等情况下,如果通信双方没有进行数据发送通信等处理的时候,无法获知连接已经断开的情况. 在通常的情况下,为了使得socket通信不受操作系统的限制,需要自己在应用层实现心跳包机制,来检查异常断开的情况,一般的方式就是服务器在一段时间没有收到客户端数据包时,定时发包,然后客户端回应,如果已经出现异常断开则服务器接收会返回错误,而客户端在指定时间内没有收到数据包,则主动向服务器发包,得到错误就说明断开.诸如此类的方式就是自己实现的心跳包机制. 但操作系统本身也

linux服务器硬件报错,系统异常重启检测-MCElog

mcelog 是 x86 的 Linux 系统上用来检查硬件错误,特别是内存和CPU错误的工具.比如服务器隔一段时间莫名的重启一次,而message和syslog又检测不到有价值的信息. 通常发生MCE报错的原因有如下:1.内存报错或者ECC问题2.处理器过热3.系统总线错误4.CPU或者硬件缓存错误 一般来说当有错误提示时,需要优先注意内存问题,但由于现在内存控制器是集成在cpu里,所以有个别情况是由CPU问题引起的 一.如果是联网的情况下,yum源配置可用则yum install mcelo

如何开发一个异常检测系统:如何评价一个异常检测算法

利用数值来评价一个异常检测算法的重要性 使用实数评价法很重要,当你用某个算法来开发一个具体的机器学习应用时,你常常需要做出很多决定,如选择什么样的特征等等,如果你能找到如何来评价算法,直接返回一个实数来告诉你算法的好坏,那样你做决定就会更容易一些.如现在有一个特征,要不要将这个特征考虑进来?如果你带上这个特征运行你的算法,再去掉这个特征运行你的算法,得到返回的实数,这个实数直接告诉你加上这个特征算法是变好了还是变坏了,这样你就有一种更简单的算法来确定是否要加上这个特征. 为了更快地开发出一个异常