pytorch-kaldi是开发最先进的DNN/RNN混合语音识别系统的公共存储库。DNN部分由pytorch管理,而特征提取,标签计算和解码使用kaldi工具包执行。前面我们已经介绍了Linux/Windos搭建安装Kaldi环境实现ASR语音识别

介绍:

该项目发布了一系列代码和实用程序,以开发最先进的DNN/RNN混合语音识别系统。DNN/RNN部分在pytorch中实现,而特征提取,对齐和解码使用Kaldi工具包执行。提供的系统的当前版本具有以下功能:

支持不同类型的NN(例如,MLP,RNN,LSTM,GRU,最小GRU,轻GRU)[1,2,3]

支持recurrent dropout

支持batch和图层规范化

支持单向/双向RNN

支持residual/skip连接

支持双正则化[4]

python2/python3兼容性

多gpu训练

recovery/saving checkpoints

可与kaldi轻松对接。

所提供的解决方案专为标准机器和HPC集群上的大规模语音识别实验而设计。

先决条件:

必须是Linux(我们在Ubuntu 17.04和各种版本的Debian上进行了测试)。

我们建议在GPU机器上运行代码。确保安装了cuda库(https://developer.nvidia.com/cuda-downloads)并且正常工作。我们在`cuda 9.0,9.1和8.0上测试了我们的系统。确保安装了python(代码使用python 2.7和python 3.6进行测试)。建议使用Anaconda`(https://anaconda.org/anaconda/python)。

如果没有安装pytorch,请先安装(http://pytorch.org/)。我们在`pytorch 0.3.0和pytorch 0.3.1上测试了我们的代码。较旧版本的pytorch可能会出现错误。要检查安装,请键入python,然后在进入控制台后输入import torch`。确保一切都很好。

从kaldi-io-for-python项目安装kaldi-io软件包(https://github.com/vesis84/kaldi-io-for-python)。它提供了`kaldi`和`python`之间的简单接口。要安装它:

1、克隆代码

git clone https://github.com/vesis84/kaldi-io-for-python.git

2、添加export PYTHONPATH=$PYTHONPATH:到$HOME/.bashrc和其来源

输入python -c "import kaldi_io"以检查包是否已正确安装。您可以在https://github.com/vesis84/kaldi-io-for-python上找到更多信息(包括一些读写测试)。

RNN模型的实现根据训练句的长度对训练句进行排序。这允许系统在形成微型机时最小化零填充的需要。使用sox提取每个句子的持续时间。请确保已安装(仅在create_chunk.sh中生成功能列表时使用)

pytorch-kaldi源码环境:

cd pytorch-kaldi

source ./env.sh

如何运行TIMIT实验:

尽管代码可以很容易地适应任何语音数据集,但在文档的以下部分中,我们提供了一个基于流行的TIMIT数据集的示例。

1、运行TIMIT的Kaldi s5基线。此步骤对于计算稍后用于训练pytorch MLP的特征和标签是必要的。尤其是:

转到$ KALDI_ROOT/egs/timit/s5然后在path.sh之前运行run.sh脚本。

确保一切正常。

请使用local/nnet/run_dnn.sh运行Karel的DNN基线。

不要忘记使用以下命令计算test和dev数据的对齐方式。如果您想使用tri3对齐方式,请键入:

steps/align_fmllr.sh --nj 4 data/dev data/lang exp/tri3 exp/tri3_ali_dev

steps/align_fmllr.sh --nj 4 data/test data/lang exp/tri3 exp/tri3_ali_test

如果您想使用dnn alignments(如建议的那样),请输入:

steps/nnet/align.sh --nj 4 data-fmllr-tri3/dev data/lang exp/dnn4_pretrain-dbn_dnn exp/dnn4_pretrain-dbn_dnn_ali_dev

steps/nnet/align.sh --nj 4 data-fmllr-tri3/test data/lang exp/dnn4_pretrain-dbn_dnn exp/dnn4_pretrain-dbn_dnn_ali_test

2、将功能列表拆分为块。

转到pytorch-kaldi文件夹。

create_chunks.sh脚本首先对kaldi特征列表进行清洗或排序(根据句子长度),然后将其拆分为一定数量的块。混合列表可能适用于前馈DNN,而排序列表可用于RNN(用于最小化形成微缩位时零填充的需要)。该代码还计算每个发言者和每个句子的CMVN。

对于清洗mfcc功能运行:

./create_chunks.sh $KALDI_ROOT/egs/timit/s5/data/train mfcc_shu 5 train 0

./create_chunks.sh $KALDI_ROOT/egs/timit/s5/data/dev mfcc_shu 1 dev 0

./create_chunks.sh $KALDI_ROOT/egs/timit/s5/data/test mfcc_shu 1 test 0

对于有序的mfcc功能运行:

./create_chunks.sh $KALDI_ROOT/egs/timit/s5/data/train mfcc_ord 5 train 1

./create_chunks.sh $KALDI_ROOT/egs/timit/s5/data/dev mfcc_ord 1 dev 1

./create_chunks.sh $KALDI_ROOT/egs/timit/s5/data/test mfcc_ord 1 test 1

注意:每个训练块应包含大约1小时的语音。对于100小时的较大训练数据集,您应该使用:

./create_chunks.sh $KALDI_ROOT/egs/your_dataset/data/train mfcc_ord 100 train 1

3、设置配置文件。

进入cfg文件夹

打开配置文件(例如,TIMIT_MLP.cfg,TIMIT_GRU.cfg)并根据您的路径修改它:

tr_fea_scp包含使用create_chunks.sh创建的功能列表。

tr_fea_opts允许用户轻松添加规范化,衍生物和其他类型的特征处理。

tr_lab_folder是包含对齐(标签)的kaldi文件夹。

tr_lab_opts允许用户派生依赖于上下文的电话目标(当设置为ali-to-pdf时)或单声道目标(当设置为ali-to-phone --per-frame时)。

请修改dev和测试数据的路径。

您可以根据需要随意修改DNN架构和其他优化参数。

所需的count_file用于在馈送解码器之前规范化DNN后验。该归一化步骤对于HMM-DNN语音识别是至关重要的。事实上,DNN提供后验概率,而HMM是与可能性一起工作的生成模型。为了得出所需的可能性,可以简单地将后验除以先验概率。计数文件包含上述先验,通过简单计算电话状态得出。如果运行完整的TIMIT s5配方(包括DNN部分),则会在此处自动创建计数文件:

$KALDI_ROOT/egs/timit/s5/exp/dnn4_pretrain-dbn_dnn/ali_train_pdf.counts

否则,您可以使用以下命令临时创建:

alidir=/home/mirco/kaldi-trunk/egs/timit/s5/exp/tri3_ali (change it with your own path)

num_pdf=$(hmm-info $alidir/final.mdl | awk '/pdfs/{print $4}')

labels_tr_pdf="ark:ali-to-pdf $alidir/final.mdl \"ark:gunzip -c $alidir/ali.*.gz |\" ark:- |"

analyze-counts --verbose=1 --binary=false --counts-dim=$num_pdf "$labels_tr_pdf" ali_train_pdf.counts

使用use_cuda=1选项在GPU上运行代码(强烈建议)。

使用save_gpumem = 0选项来保存gpu内存。代码会慢一点(大约10-15%),但它可以节省gpu内存。

有关所有可能选项的更详细说明,请参阅config_description.cfg。

4、运行实验。

键入以下命令以运行DNN训练:

./run_exp.sh cfg/baselines/TIMIT_MLP.cfg

或者

./run_exp.sh cfg/baselines/TIMIT_GRU.cfg

要检查可能出现的错误,请大家看看到log.log保存到在CFG文件中指定的输出文件夹(out_folder)文件。请注意,run_exp.sh是一个执行完整ASR实验(训练,转发和解码步骤)的bash脚本。如果一切正常,您应该在输出文件夹中找到以下文件:

文件res.res总结了各个时期的训练和评估表现。查看exp/our_results,了解运行代码时应该获得的结果。

包含语音识别结果的文件夹decode_test。如果您输入./RESULTS,您应该能够看到每个实验的错误率(PER%)。

.pkl模型是用于语音解码的最终模型。

.info文件报告每个训练块的损失和错误性能。

log.log文件包含训练过程中可能发生的错误。

添加自定义DNN模型

可以轻松编写自己的自定义DNN模型并将其插入neural_nets.py。与已经实现的模型类似,用户必须编写初始化DNN参数的init方法和forward方法。正向方法应该输入当前特征x和相应的lab标签。它必须在输出端提供处理过的小批量的损失,误差和后验概率。创建自定义DNN后,应以这种方式将新模型导入run_nn_single_ep.py文件:

from neural_nets import mydnn as ann

如果模型是RNN模型,则正确设置标签rnn = 1并且如果它是前馈DNN则rnn = 0也是很重要的。请注意,RNN和前馈模型基于不同的特征处理(对于RNN模型,功能是根据其长度排序的,对于前馈DNN,功能是shuffled的。)

pytorch使用pytorch-kaldi实现ASR语音识别 - pytorch中文网

原文出处: https://ptorch.com/news/208.html

问题交流群 :168117787

python语音识别库kaldi_pytorch使用pytorch-kaldi实现ASR语音识别 - pytorch中文网相关推荐

  1. python语音识别库kaldi_Kaldi 语音识别基础教程

    Kaldi 介绍 Kaldi 是由 C++ 编写的语音识别工具,其目的在于为语音识别研究者提供一个研究和使用的平台. Kaldi 环境搭建 本文主要通过使用 Docker 和 Nvidia-docke ...

  2. python自带语音识别库识别语音文件(wav)

    最近在试语音转文本,了解了一些相关的东西,记录一下. 一.python speechRecogniton库 python自带的speechRecognition库是一个多功能的实现语音识别的库,细节网 ...

  3. pytorch torchvision 各种版本(包括ARM架构),python第三方库的whl下载地址

    一.torchvision下载地址 https://download.pytorch.org/whl/torch_stable.html 二.pytorch与torchvision对应版本号 NVID ...

  4. pytorch使用pytorch-kaldi实现ASR语音识别

    pytorch使用pytorch-kaldi实现ASR语音识别 Song • 10986 次浏览 • 0 个回复 • 2018年09月17日 pytorch-kaldi是开发最先进的DNN/RNN混合 ...

  5. Pytorch Kaldi

    PYTORCH-KALDI语音识别工具包 Mirco Ravanelli1,Titouan Parcollet2,Yoshua Bengio1 * Mila, Universit´e de Montr ...

  6. python第三方库排行-140种Python标准库、第三方库和外部工具

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  7. python第三方库大全win-Python标准库、第三方库和外部工具汇总

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  8. 140种Python标准库、第三方库和外部工具都有了

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  9. cassandra可视化工具_耗时1个月整理!160种Python标准库、第三方库和外部工具都有了...

    耗时1个月整理!160种Python标准库.第三方库和外部工具都有了 北京尚学堂 2019-12-09 14:59:15 Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数 ...

最新文章

  1. 应用程序-特定 权限设置并未向在应用程序容器 不可用 SID
  2. 怎么求人眼图像中的噪声
  3. 文献引用的标准格式_论文参考文献格式标准~建议收藏
  4. 基于ArcSDE、Oralce空间数据库冷备份与恢复
  5. python使用matplotlib绘制k线图
  6. transform你不知道的那些事
  7. 云计算之路-阿里云上:基于Xen的IO模型进一步分析“黑色0.1秒”问题
  8. java sleep唤醒_JAVA wait(), notify(),sleep详解(转)
  9. 队列C++ | 用链表实现队列_2
  10. ShardingSphere 语句解析生成初探
  11. 康熙通宝铜钱值多少钱?
  12. 苹果蓝牙连接不上是什么原因_为什么无线鼠标几乎都不用蓝牙连接呢?延迟、回报率是硬伤...
  13. Android 增量编译小解
  14. Vlan和Trank
  15. python-生成xlsx表格
  16. Vue 项目性能优化方案
  17. 泉州地区的“会子”是一种怎样的制度?
  18. DAU与GMV的差异,蛋鸡与肉鸡的区别
  19. python 添加半透明水印_如何利用python给图片添加半透明水印
  20. MySQL分库分表面试知识总结

热门文章

  1. 软中断指令INT 理解
  2. java 正数减去负数,Java中正数与负数操作、的区别
  3. Oracle通过定时任务+dblink+存储过程传数据到中间库
  4. parity使用教程
  5. 看似“佛系”的手游《QQ炫舞》,背后的音频技术一点都不简单
  6. chrome浏览器快捷键使用
  7. 路由器重温——POS接口配置管理——SDH
  8. 《云端软件平台》运行机制浅析
  9. 小学计算机六年级下教学计划,人教版小学六年级下册信息技术教学计划范文(通用3篇)...
  10. matlab lpc求共振峰频率,在Python中使用LPC估计共振峰