基于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模型为例)相关推荐

  1. 【kaldi】chain-model在线解码(以aishell数据集为例)

    以aishell数据集为例,演示如何进行chain-model在线解码. 1.首先生成配置文件 steps/online/nnet3/prepare_online_decoding.sh --add_ ...

  2. kaldi nnet3在线解码和chain在线解码

    chain在线解码可以参考https://blog.csdn.net/it_king1/article/details/80109398 我补充一下nnet3在线解码: nnet3跟chain不同之处 ...

  3. 深度神经网络对脑电信号运动想象动作的在线解码

    目录 简介 网络模型 结果比较 结论 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 QQ交流群:941473018 简介 近年来,深度学习方法的快速发展使得无需任何特征工程的端到端学习成为 ...

  4. Kaldi 离线在线解码应用

    环境:Ubuntu 12.04,   Kaldi timit训练完语音模型后可以进入解码, 1. 首先安装PortAudio cd /u01/kaldi/tools/portaudio ./confi ...

  5. kaldi nnet3实时解码(使用麦克风在线解码)

    前言 好久没有更新博客,自从有小孩之后,留给自己的时间越来越少,加上最近一段时间在学习深度学习方面的理论知识,所以博客的更新拖的时间太长了. 最近经常留意到kaldi交流群中,不断有小伙伴提问有没有实 ...

  6. DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练、预测

    DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练.预测 导读           计算图在神经网络算法中的作用.计算图的节点是由局部计算构成的. ...

  7. DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练、GC对比

    DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练.GC对比 导读           神经网络算法封装为层级结构的作用.在神经网络算法中,通过将 ...

  8. DL之DNN:自定义2层神经网络TwoLayerNet模型(计算梯度两种方法)利用MNIST数据集进行训练、预测

    DL之DNN:自定义2层神经网络TwoLayerNet模型(计算梯度两种方法)利用MNIST数据集进行训练.预测 导读 利用python的numpy计算库,进行自定义搭建2层神经网络TwoLayerN ...

  9. 对某在线教育平台用户使用RFM模型按价值分类

    对某在线教育平台用户使用RFM模型按价值分类 说在前面 项目背景 RFM分析 RFM分析过程 明确目的 分析原因 对R,F,M值进行定义 统计R,F,M值 给R,F,M值"打分" ...

最新文章

  1. 1020. Tree Traversals (25)
  2. Django 框架 数据库操作
  3. Android消息机制——时钟显示和异步处理工具类(AsyncTask)
  4. 如果我要...(研究版)
  5. ubuntu 安装lamp
  6. Oracle 一些常用函数
  7. 热点热词 新闻热点 最新新闻数据API接口-天狗热点热词开放平台
  8. 201612-2工资计算
  9. JSP—跳转页面的三种方式
  10. Unity AssetBundle加载的理解
  11. Ubuntu 18.04中安装飞行模拟器FlightGear 2018.2.1
  12. 服务器装系统就蓝屏,重装了下系统老是蓝屏
  13. 编写jQuery插件
  14. GreenPlum 大数据平台--segment 失效问题恢复
  15. PS不能完成命令,因为没有足够内存(RAM)
  16. c语言省二机考和笔试,计算机二级都是上午考试吗
  17. ORACLE 培训教程(1)
  18. DEM中坡度和坡向的计算
  19. MyDocument.exe病毒免疫方法
  20. php yii2 sns,GitHub - 13240031972/iisns: 基于 yii2 的 sns 社区系统,一站式解决社区建站...

热门文章

  1. opencv Mser的用法
  2. 小型项目SSM+Maven实战讲解:APP信息管理平台-developer版
  3. matlab卡农代码微盘,MATLAB演奏国歌,除乐理知识基本抛弃卡农代码,未参照前国歌.......
  4. 【错题本】关于protected修饰的成员变量,以下说法正确的是
  5. 多比(SVG/VML)图形控件
  6. 【开发日常】【Java】Java小程序动物乐园zoo
  7. 如何根据染色体坐标快速得到基因组的 DNA 序列
  8. 「历时6个月招聘数据收集」致应届生的一份招聘市场报告
  9. Java线程深入的理解
  10. 手动编译LUCI 到 openwrt中 并且解决'/bin/po2lmo': Permission denied问题