DNN在线解码(以aishell的chain模型为例)
基于gmm模型的在线解码很简单,网上例子也比较多,但是基于DNN模型的在线解码资料很少,看官网的介绍也比较麻烦。在这里,我将自己做的DNN在线解码的过程记录下来给大家参考,有错误之处恳请指正。
我以aishell的chain模型为例(nnet3和chain的在线一样,只替换相应的文件路径即可)。
1,生成配置文件
./steps/online/nnet3/prepare_online_decoding.sh data/lang_chain exp/nnet3/extractor exp/chain/tdnn_1a_sp exp/chain/nnet_online
其中,lang_chain是存储chain模型解码网络图中G.fst和L.fst文件以及词汇表words.txt文件的文件夹
exp/nnet3/extractor文件夹内容如下:
exp/chain/tdnn_1a_sp文件夹是存储chain模型的, exp/chain/nnet_online是自己定义存储生成配置文件的路径,生成的配置文件列表如下:
打开conf文件夹:
这样,在线解码的配置文件就生成成功了。
2,准备你要识别的音频,并用脚本生成spk2utt文件和wav.scp,spk2utt文件通过utt2spk_to_spk2utt.pl生成(在这之前你先要生成utt2spk文件),wav.scp写入待识别音频的路径。
3,需要kaldi源码里的三个程序:wav-copy,online2-wav-nnet3-latgen-faster,lattice-scale,然后执行以下命令:
./online2-wav-nnet3-latgen-faster --do-endpointing=false--frames-per-chunk=20 --extra-left-context-initial=0 --online=true--frame-subsampling-factor=3 --config=online.conf --min-active=200--max-active=7000 --beam=15.0 --lattice-beam=6.0 --acoustic-scale=1.0--word-symbol-table=words.txt final.mdl HCLG.fst ark:spk2utt'ark,s,cs:./wav-copy scp,p:wav.scp ark:- |' 'ark:|./lattice-scale--acoustic-scale=10.0 ark:- ark:- | gzip -c >lat.1.gz'
注意: 在该命令中,只需将我们刚才生成配置文件中的online.conf 文件的路径写入即可,其他配置文件都可以通过该文件找到,另外,words.txt final.mdl HCLG.fst spk2utt wav.scp文件请写对你自己的路径。
若以上步骤都没错,执行该命令后会导致如下错误:
LOG (wav-copy[5.3]:main():wav-copy.cc:68) Copied 1 wave files
ERROR (online2-wav-nnet3-latgen-faster[5.3]:OnlineTransform():online-feature.cc:421)Dimension mismatch: source features have dimension 91 and LDA #cols is 281
意思是特征维度不匹配。我们生成的配置文件里的特征类型是MFCC,而aishell训练nnet和chain模型输入的是更高维度的MFCC,叫mfcc_hire,hire是high resolution单词的缩写。所以我们要修改第一步生成的MFCC配置文件,打开mfcc.conf文件,我们看到:
--use-energy=false # only non-default option.
--sample-frequency=16000
添加新内容:
--num-mel-bins=40 # similar to Google's setup.
--num-ceps=40 # there is no dimensionality reduction.
--low-freq=40 # low cutoff frequency for mel bins
--high-freq=-200 # high cutoff frequently,relative to Nyquist of 8000 (=3800)
然后重新执行第三步的命令,可以看到识别结果已在终端输出。
DNN在线解码(以aishell的chain模型为例)相关推荐
- 【kaldi】chain-model在线解码(以aishell数据集为例)
以aishell数据集为例,演示如何进行chain-model在线解码. 1.首先生成配置文件 steps/online/nnet3/prepare_online_decoding.sh --add_ ...
- kaldi nnet3在线解码和chain在线解码
chain在线解码可以参考https://blog.csdn.net/it_king1/article/details/80109398 我补充一下nnet3在线解码: nnet3跟chain不同之处 ...
- 深度神经网络对脑电信号运动想象动作的在线解码
目录 简介 网络模型 结果比较 结论 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 QQ交流群:941473018 简介 近年来,深度学习方法的快速发展使得无需任何特征工程的端到端学习成为 ...
- Kaldi 离线在线解码应用
环境:Ubuntu 12.04, Kaldi timit训练完语音模型后可以进入解码, 1. 首先安装PortAudio cd /u01/kaldi/tools/portaudio ./confi ...
- kaldi nnet3实时解码(使用麦克风在线解码)
前言 好久没有更新博客,自从有小孩之后,留给自己的时间越来越少,加上最近一段时间在学习深度学习方面的理论知识,所以博客的更新拖的时间太长了. 最近经常留意到kaldi交流群中,不断有小伙伴提问有没有实 ...
- DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练、预测
DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练.预测 导读 计算图在神经网络算法中的作用.计算图的节点是由局部计算构成的. ...
- DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练、GC对比
DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练.GC对比 导读 神经网络算法封装为层级结构的作用.在神经网络算法中,通过将 ...
- DL之DNN:自定义2层神经网络TwoLayerNet模型(计算梯度两种方法)利用MNIST数据集进行训练、预测
DL之DNN:自定义2层神经网络TwoLayerNet模型(计算梯度两种方法)利用MNIST数据集进行训练.预测 导读 利用python的numpy计算库,进行自定义搭建2层神经网络TwoLayerN ...
- 对某在线教育平台用户使用RFM模型按价值分类
对某在线教育平台用户使用RFM模型按价值分类 说在前面 项目背景 RFM分析 RFM分析过程 明确目的 分析原因 对R,F,M值进行定义 统计R,F,M值 给R,F,M值"打分" ...
最新文章
- 1020. Tree Traversals (25)
- Django 框架 数据库操作
- Android消息机制——时钟显示和异步处理工具类(AsyncTask)
- 如果我要...(研究版)
- ubuntu 安装lamp
- Oracle 一些常用函数
- 热点热词 新闻热点 最新新闻数据API接口-天狗热点热词开放平台
- 201612-2工资计算
- JSP—跳转页面的三种方式
- Unity AssetBundle加载的理解
- Ubuntu 18.04中安装飞行模拟器FlightGear 2018.2.1
- 服务器装系统就蓝屏,重装了下系统老是蓝屏
- 编写jQuery插件
- GreenPlum 大数据平台--segment 失效问题恢复
- PS不能完成命令,因为没有足够内存(RAM)
- c语言省二机考和笔试,计算机二级都是上午考试吗
- ORACLE 培训教程(1)
- DEM中坡度和坡向的计算
- MyDocument.exe病毒免疫方法
- php yii2 sns,GitHub - 13240031972/iisns: 基于 yii2 的 sns 社区系统,一站式解决社区建站...
热门文章
- opencv Mser的用法
- 小型项目SSM+Maven实战讲解:APP信息管理平台-developer版
- matlab卡农代码微盘,MATLAB演奏国歌,除乐理知识基本抛弃卡农代码,未参照前国歌.......
- 【错题本】关于protected修饰的成员变量,以下说法正确的是
- 多比(SVG/VML)图形控件
- 【开发日常】【Java】Java小程序动物乐园zoo
- 如何根据染色体坐标快速得到基因组的 DNA 序列
- 「历时6个月招聘数据收集」致应届生的一份招聘市场报告
- Java线程深入的理解
- 手动编译LUCI 到 openwrt中 并且解决'/bin/po2lmo': Permission denied问题