[转载]kaldi学习笔记:run.sh(egs/timit/s5)详细分析:从数据准备到特征提取
- 首先看一下前三行:
. ./cmd.sh
[ -f path.sh ] && . ./path.sh
set -e
- 1
- 2
- 3
(1)cmd.sh脚本文件包含三部分内容:
# "queue.pl" uses qsub. The options to it are
# options to qsub. If you have GridEngine installed,
# change this to a queue you have access to.
# Otherwise, use "run.pl", which will run jobs locally
# (make sure your --num-jobs options are no more than
# the number of cpus on your machine.#a) JHU cluster options
#export train_cmd="queue.pl -l arch=*64"
#export decode_cmd="queue.pl -l arch=*64,mem_free=2G,ram_free=2G"
#export mkgraph_cmd="queue.pl -l arch=*64,ram_free=4G,mem_free=4G"
#export cuda_cmd=run.pl#if [[ $(hostname -f) == *.clsp.jhu.edu ]]; then
# export train_cmd="queue.pl -l arch=*64*"
# export decode_cmd="queue.pl -l arch=*64* --mem 3G"
# export mkgraph_cmd="queue.pl -l arch=*64* --mem 4G"
# export cuda_cmd="queue.pl -l gpu=1"
#elif [[ $(hostname -f) == *.fit.vutbr.cz ]]; then
# #b) BUT cluster options
# queue="all.q@@blade,all.q@@speech,all.q@dellgpu*,all.q@supergpu*"
# export train_cmd="queue.pl -q $queue -l ram_free=2500M,mem_free=2500M,matylda5=0.5"
# export decode_cmd="queue.pl -q $queue -l ram_free=3000M,mem_free=3000M,matylda5=0.1"
# export mkgraph_cmd="queue.pl -q $queue -l ram_free=4G,mem_free=4G,matylda5=3"
# export cuda_cmd="queue.pl -q long.q@pcspeech-gpu,long.q@dellgpu1,long.q@pcgpu*,long.q@supergpu1 -l gpu=1"
#else
# echo "$0: you need to define options for your cluster."
# exit 1;
#fi
#c) run locally...
export train_cmd=run.pl
export decode_cmd=run.pl
export cuda_cmd=run.pl
export mkgraph_cmd=run.pl
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
其中a)和b)都是在集群上运行,而c)是在本地运行,因此c)是我们需要的,将a)和b)注释掉,只保留c)。
(2) 若path.sh是常规文件就运行之:-f 判断path.sh是否常规文件,另,常见文件判断命令如下:
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真。
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
!非
path.sh内容为:
修改前:
1 export KALDI_ROOT=`pwd`/../../..2 export PATH=$PWD/utils/:$KALDI_ROOT/src/bin:$KALDI_ROOT/tools/openfst/bin:$KALDI_ROOT/tools/irstlm/bin/:$KALDI_ROOT/src/fstbin/:$KALDI_ROOT/src/gmmbin/:$KALDI_ROOT/src/featbin/:$KALDI_ROOT/src/lm/:$KALDI_ROOT/src/sgmmbin/:$KALDI_ROOT/src/sgmm2bin/:$KALDI_ROOT/src/fgmmbin/:$KALDI_ROOT/src/latbin/:$KALDI_ROOT/src/nnetbin:$KALDI_ROOT/src/nnet2bin/:$KALDI_ROOT/src/kwsbin:$PWD:$PATH3 export LC_ALL=C4 export IRSTLM=$KALDI_ROOT/tools/irstlm
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
只修改第一行:(注意,有一些不需要修改也能成功运行)
1 export KALDI_ROOT=/home/wangyongqing/dev/kaldi-git2 export PATH=$PWD/utils/:$KALDI_ROOT/src/bin:$KALDI_ROOT/tools/openfst/bin:$KALDI_ROOT/tools/irstlm/bin/:$KALDI_ROOT/src/fstbin/:$KALDI_ROOT/src/gmmbin/:$KALDI_ROOT/src/featbin/:$KALDI_ROOT/src/lm/:$KALDI_ROOT/src/sgmmbin/:$KALDI_ROOT/src/sgmm2bin/:$KALDI_ROOT/src/fgmmbin/:$KALDI_ROOT/src/latbin/:$KALDI_ROOT/src/nnetbin:$KALDI_ROOT/src/nnet2bin/:$KALDI_ROOT/src/kwsbin:$PWD:$PATH3 export LC_ALL=C4 export IRSTLM=$KALDI_ROOT/tools/irstlm5 export LD_LIBRARY_PATH=$KALDI_ROOT/tools/openfst/lib:$LD_LIBRARY_PATH
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
修改为kaldi安装目录;
将各种目录设置为环境变量;
LC_ALL它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响。”C” 这是标准的C Locale。”POSIX”是”C”的别名。它所指定的属性和行为由ISO C标准所指定。
irstlm为开源的语言模型工具包。。
将openfst设为 LD_LIBRARY_PATH 动态库环境变量
(3) set -e 表示告诉bash如果任何语句的执行结果不是true(返回值非零)则应该退出。写每个脚本都应该在开头加上set -e, 这样的好处是防止错误像雪球一样越滚越大。ps: 用set -o errexit也是一样的效果.
2. 然后是声学模型参数设置
#Acoustic model parameters
export LD_LIBRARY_PATH=/home/wyq/dev/kaldi-git/tools/openfst/lib:$LD_LIBRARY_PATH
numLeavesTri1=2500
numGaussTri1=15000
numLeavesMLLT=2500
numGaussMLLT=15000
numLeavesSAT=2500
numGaussSAT=15000
numGaussUBM=400
numLeavesSGMM=7000
numGaussSGMM=9000feats_nj=10
train_nj=30
decode_nj=5
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
这部分基本默认不改,除非自己训练自己的数据库。nj指运行的jobs数目,一般不超过CPU的数量。
3.数据准备
timit=/home/wyq/dev/kaldi-git/egs/timit/s5/timitdata/timit # @BUT
local/timit_data_prep.sh $timit || exit 1
local/timit_prepare_dict.sh
# Caution below: we remove optional silence by setting "--sil-prob 0.0",
# in TIMIT the silence appears also as a word in the dictionary and is scored.
utils/prepare_lang.sh --sil-prob 0.0 --position-dependent-phones false --num-sil-states 3 data/local/dict "sil" data/local/lang_tmp data/lang
local/timit_format_data.sh
- 1
- 2
- 3
- 4
- 5
- 6
- 7
(1) 首先timit数据库原始的wav文件目录赋值给timit,然后运行local目录下的timit_data_prep.sh 脚本,此脚本为数据准备脚本,输入为timit wav文件,输出为data/目录下的:
其中关于特征提取的文件夹为dev,test和train,每个文件夹内容都具有相同文件名的文件,如下图所示
其中四个为必要:wav.scp,text,spk2utt,utt2spk ,这四个文件将作为下一步特征提取的输入。
注: 数据准备详细解析,见博客 (kaldi学习笔记:data_prep.sh详细分析)
4.特征提取
# Now make MFCC features.
mfccdir=mfcc
for x in train dev test; dosteps/make_mfcc.sh --cmd "$train_cmd" --nj $feats_nj data/$x exp/make_mfcc/$x $mfccdirsteps/compute_cmvn_stats.sh data/$x exp/make_mfcc/$x $mfccdir
done
- 1
- 2
- 3
- 4
- 5
- 6
(1)mfccdir=mfcc:将mfcc字符串赋值给变量mfccdir
(2)然后运行steps/下的特征提取脚本make_mfcc.sh,其中–cmd traincmd为脚本cmd.sh中设置的run.pl;−−njfeats_nj 为运行job数目; data/x为源数据的目录(data/train,data/dev,data/test为数据准备阶段生成的);exp/makemfcc/x 为中间生成的.log文件。$mfccdir 为目标目录mfcc文件夹,里面的文件机位提取得分mfcc;
(3)compute_cmvn_stats.sh 是为了计算提取特征的CMVN,即为倒谱方差均值归一化!
注:
MFCC特征提取详细解析,见博客 (kaldi学习笔记:make_mfcc.sh详细分析)
CMVN详细解析,见博客 (kaldi学习笔记:compute_cmvn_stats.sh 详细分析)
[转载]kaldi学习笔记:run.sh(egs/timit/s5)详细分析:从数据准备到特征提取相关推荐
- python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据
但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...
- Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据
#2018-03-23 16:26:20 March Friday the 12 week, the 082 day SZ SSMR [Python数据挖掘学习笔记]九.回归模型LinearRegre ...
- python分析鸢尾花数据_python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据...
但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...
- Kaldi学习笔记:01(kaldi/egs/sitw/v1)run.sh解析
kaldi学习笔记-01-sitw 简介 脚本修改 run.sh 简介 研究生阶段入坑了说话人识别方向,最近在学习如何使用Kaldi提取i-vector进行说话人识别,在这里记录一下学习的笔记. 这次 ...
- 语音识别(ASR)-- Kaldi 学习笔记
语音识别(ASR)-- Kaldi学习笔记 语音识别简介 GMM-HMM基本原理 DNN-HMM(基于神经网络) Kaldi Kaldi架构简介 Kaldi在Windows下的安装 工具准备 编译Op ...
- Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析)
Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析_2020.06.25) 前言: Netty 作为一个网络框架,提供了诸多功能,比如编码解码等,Netty 还提供了非常重要的一 ...
- oracle查看表空间的内容,学习笔记:Oracle查看object对象 表空间 表 索引 数据文件的使用空间...
天萃荷净 运维DBA咨询想要查看Oracle的object对象的使用空间大小,包括表空间 表 索引 数据文件的使用空间 1.查看Oracle表空间大小 Select Tablespace_Name,S ...
- Ui学习笔记---EasyUI的EasyLoader组件源码分析
Ui学习笔记---EasyUI的EasyLoader组件源码分析 技术qq交流群:JavaDream:251572072 1.问题1:为什么只使用了dialog却加载了那么多的js http: ...
- 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的函数】
介绍 上一篇 [MATLAB深度学习工具箱]学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构]_bear_miao的博客-CSDN博客原文链接如下[MATLAB深度学习工具箱]学 ...
最新文章
- DIY强大的虚拟化环境-技术可行性部分
- IT服务台来电分配技术——ACD介绍
- 哪些是能安装mysql的文件_安装mysql详细步骤有哪些?
- python 2x和python 3x的区别_python2x和3x区别
- qtreewidgetitem 文字内存太长换行_table文字溢出显示省略号问题
- 腾讯:干掉头条,先拿抖音开刀!
- 使用Lambda解决_inbound_nodes错误
- linux 终端 快捷键
- git安装 tor_【git安装教程 windows】怎么装git window_git安装配置教程
- Silverlight4 麦克风应用-录音机
- html5跳转页面接收参数,HTML页面跳转及参数传递问题
- 抛弃手册,开启TongWeb+TongLINK/Q的开发方式
- 央行降息后六大城市房价有望反弹(名单)
- windows下mysql8初始化
- Linux DAC 权限管理详解
- 【Ping命令的使用】
- 将SD卡中保存的摄像头(OV7620)数据合成8位灰度图像
- ShareSDK 第三方平台注册指南
- 周末读《仍然不足够》-TOC与ERP结合的经典小说
- continue在python中什么意思_Python中Continue语句的用法的举例详解