大致看了一下官方文档的Running the example scripts 部分:http://kaldi-asr.org/doc/tutorial_running.html
记录一下,免得忘记,写得也不是很清楚,只是记录一下,以后再填坑
看的过程中,发现了几篇有用的文章:
1.https://blog.youkuaiyun.com/boyStray/article/details/89857435(解析kaldi中yesno的语音分帧和模型)
2.https://blog.youkuaiyun.com/chinatelecom08/article/details/81252140(语音识别——kaldi常用文件查看指令)
kaldi中运行一个例子的几个步骤:(在yesno例子里的run.sh中写得很清楚)
1.数据准备
大致应该是准备语言模型
对应到yesno例子里是:
# Data preparation
local/prepare_data.sh waves_yesno
local/prepare_dict.sh
utils/prepare_lang.sh --position-dependent-phones false data/local/dict "<SIL>" data/local/lang data/lang
local/prepare_lm.sh
其中最重要的应该是prepare_lang.sh
2.特征提取
# Feature extraction
for x in train_yesno test_yesno; do
steps/make_mfcc.sh --nj 1 data/$x exp/make_mfcc/$x mfcc
steps/compute_cmvn_stats.sh data/$x exp/make_mfcc/$x mfcc
utils/fix_data_dir.sh data/$x
done
注意这里调用的shell文件有make_mfcc.sh
compute_cvmn_stats.sh
fix_data.sh
3.单音素训练(针对训练集)
# Mono trainingexp/mono0a/decode_test_yesno
steps/train_mono.sh --nj 1 --cmd "$train_cmd" \
--totgauss 400 \
data/train_yesno data/lang exp/mono0a
这里调用了train_momo.h
训练好的模型存储在exp/mono0a中
例如0.mdl存储的是gmm模型,可以通过gmm-copy来读取
4.makegraph
# Graph compilation
utils/mkgraph.sh data/lang_test_tg exp/mono0a exp/mono0a/graph_tgpr
并将结果存储于exp/mono0a exp/mono0a/graph_tgpr
5.解码(针对测试集)
# Decoding
steps/decode.sh --nj 1 --cmd "$decode_cmd" \
exp/mono0a/graph_tgpr data/test_yesno exp/mono0a/decode_test_yesno
并将结果存储于exp/mono0a/decode_test_yesno