Kaldi是一个强大的语音识别工具包,目前支持GMM-HMM,DNN-HMM等多种语音识别模型的训练和预测。其中DNN-HMM中的神经网络还可以由配置文件自定义,DNN,CNN,TDNN,LSTM,Bidirectional-LSTM等神经网络结构均可支持。
在https://github.com/kaldi-asr/kaldi下载代码,在http://kaldi-asr.org/doc/查看文档。
安装过程
sudo apt-get install autoconf automake gcc libtool subversion libatlas-dev libatlas-base-dev gfortran
git clone https://github.com/kaldi-asr/kaldi.git
cd kaldi/tools
cat INSTALL #该文件描述了详细的安装步骤
extras/check_dependencies.sh #检查一些依赖,根据提示将没装的都装上
nproc #看看有多少处理单元,比如有8个
make -j 8
cd ../src
./configure
make depend -j 8
make -j 8
- 运行例子yesno进行测试:
cd ../egs/yesno/s5
./run.sh
运行结果:
%WER 0.00 [ 0 / 232, 0 ins, 0 del, 0 sub ] exp/mono0a/decode_test_yesno/wer_10_0.0
主要目录介绍
- ./tools目录下是kaldi依赖的包
- ./src目录存放kaldi的源代码
- ./egs目录保存着一些kaldi在公共语音数据集上的训练步骤(shell脚本)以及测试的结果
- s5/run.sh包含了在这个数据集上所有的训练步骤,包括数据预处理、训练以及测试gmm/dnn/lstm/tdnn等模型、实验结果统计在内的各种脚本。理论上来说只要相关环境配置正确,运行run.sh就能完成整个训练步骤。
- s5/RESULTS里面保存着最近的实验结果
- s5/conf就是一些训练所要用到的配置文件
- s5/{local, steps, utils}里面则是run.sh所要用到的一些脚本文件
在kaldi中,目前针对深度神经网络提供三种代码库。第一个是"nnet1"(位于nnet/和nnetbin/下),最初由Karel Vesely维护;第二个"nnet2"(位于nnet2/和nnet2bin/下)最初由Daniel Povey维护;第三个"nnet3"(位于nnet3/和nnet3bin/下)由Daniel的nnet2转化而来
type | author | CPU/GPU | features |
---|---|---|---|
nnet1 | Karel | GPU单卡训练 | 使用pre-training,early-stopping |
nnet2 | Daniel | 支持多GPU训练和多CPU多线程 | 固定迭代次数,最后几个epoch参数平均化 |
nnet3 | Daniel | nnet2的扩展 | 支持更多的网络类型(如RNN/LSTM) |
在诸如egs/wsj/s5/, egs/librispeech/s5, egs/swbd/s5, egs/hkust/s5的例子下,存在神经网络样例脚本。
参考文章:
Installing Kaldi
Kaldi学习之神经网络简介
有趣的开源软件-语音识别工具Kaldi
ubuntu下kaldi的安装以及实例的运行
网友评论