kaldi_小记

kaldi 安装&编译流程以及thchs30的训练

kaldi是个为语音识别开发提供各种工具以及算法的开源框架,同时附上多种语言的训练,测试以及应用的demo

开发语言:C++,shell
g++:>= 4.8

kaldi 安装&编译

1. clone 源码

git clone https://github.com/kaldi-asr/kaldi.git

2. 检查环境依赖

cd {kaldi_path}/tool
extras/check_dependencies.sh
make -j 4

3. 编译源码

cd ../src
./configure --shared
make depend -j 8
make -j 8

ps: 顺着INSTALL阅读即可明白。。。。。。

thchs30的训练

1.下载训练的数据

yum install axel


# 下载站点:http://www.openslr.org/18/
axel -n 20 "http://cn-mirror.openslr.org/resources/18/resource.tgz"
axel -n 20 "http://cn-mirror.openslr.org/resources/18/test-noise.tgz"
axel -n 20 "http://cn-mirror.openslr.org/resources/18/data_thchs30.tgz"

# 解压到同一个目录 data_path 自己创建
tar -xf ./resource.tgz -C {data_path}
tar -xf ./test-noise.tgz -C {data_path}
tar -xf ./data_thchs30.tgz -C {data_path}

2. 修改配置

cd {kaldi_path}/egs/thchs30/s5/
vi cmd.sh

cmd.sh


export train_cmd=run.pl
export decode_cmd="run.pl --mem 4G"
export mkgraph_cmd="run.pl --mem 8G"
export cuda_cmd=run.pl


#export train_cmd=queue.pl
#export decode_cmd="queue.pl --mem 4G"
#export mkgraph_cmd="queue.pl --mem 8G"
#export cuda_cmd="queue.pl --gpu 1"

save cmd.sh

修改run.sh thchs=/nfs/public/materials/data/thchs30-openslr 换成你的{data_path}
./run.sh

耐心等待……

#####ps:因为没有显卡的支持 DNN训练会报错

thchs30 数据集的说明

1. data_thchs30

ls ./
README.TXT  data  dev  lm_phone  lm_word  test  train

主要有 4个音频数据集目录{data dev test train}

*.wav 16kHz 单声道的音频数据
*.wav.trn 音频文件对应的中文语义以及双音素跟三音素的标注 

lm_phone 音素字典以及语言模型

lexicon.txt 音素字典
phone.3gram.lm  音素语言模型 

lm_word 词典以及语言模型

lexicon.txt 词典以其音素标注
word.3gram.lm  词典语言模型 

上述模型是通过SRILM来训练的SRILM

运行的脚本分析

run.sh

line 22:local/thchs-30_data_prep.sh $H $thchs/data_thchs30 || exit 1;

thchs-30_data_prep.sh 主要是做数据准备工作

1.创建 data/{train,dev,test} 这些个目录(用这这些目录对应的数据文件做下面的事)
2.构建音频文件名字跟位置对应表 wav.scp(name => path)
3.构建了语音与录音者的对应关系 utt2spk
4.构建了语音与语义的对应字典 word.txt
5.构建了语音与音素标注的对应字典 phone.txt
6.构建了录音者与语音的对应关系 spk2utt


line 24-33:#produce MFCC features
分析mfcc(梅尔频率倒谱系数)这个音频特征
算出cmvn(特征均值)

line 36-60:#prepare language stuff(语言素材)

参考

line 62-107:各种训练跟测试
monophone,monophone_ali,triphone,triphone_ali,lda_mllt(tri2b),lda_mllt_ali(tri2b_ali).....

后期

1.整合到在线实时识别的demo中
2.改进词典以及音素模型在训练一下

阅读量: