AISHELL2脚本参数和生成文件详解(一)
run.sh
config
- nj
需要运行的jobs数量,根据实际机器的CPU数量更改,一般选用最大CPU数但不超过CPU总数,提高运行效率。
qstat -f 查看集群CPU使用情况 - stage
控制训练流程。比如run.sh包括三个阶段:数据准备、GMM训练、神经网络训练。默认stage为1。如果想从中间步骤开始,可更改stage数控制。 - gmm_stage
原理同上。参数传给GMM训练阶段。
local/prepare_all.sh
config
- stage
原理同上。
local/prepare_dict.sh
purpose
初步处理大辞典,生成五个txt文件
lexicon.txt(每行由一句话和对应的音素组成)
nonsilence_phones.txt
silence_phones.txt
optional_silence.txt
extra_questions.txt
config
data_词典文件
- data/local/DaCiDian:网上下载的词典原始词典文件
-
data/local/dict/lexicon.txt:转换的词典文件
lexicon.png
如图所示,词典文件每行由文字和对应的音素组成,音素后缀代表该音素发音声调。
lexicon文件以<UNK>\t(tab)spn结尾。
词典中还包含字母和阿拉伯数字的发音 -
data/local/dict/nonsilence_phones.txt:
nonsilence_phones.png
文件由音素组成,其中部分音素有0,1,2,3,4不同声调状态
- data/local/dict/silence_phones.txt:
文件中仅有sil - data/local/dict/optional_silence.txt:
同上 -
data/local/dict/extra_questions.txt:
extra_questions.png -
data/local/dict/lexiconp.txt
lexiconp.png
带概率的词典文件
local/prepare_data.sh(脚本待学)
根据原始训练集(wav.scp和 text)和data/local/dict里的词典文件转成最终可用于后续训练的data/train/wav.scp /text(word-segmented)/utt2spk/spk2utt
config
data_可执行的训练数据
注:train,test和dev同理
-
data/train/wav.scp
wav.scp.JPG
格式:<utterance ID> <utterance的wav绝对路径>
注:C0007是说话人编号,W0006是对应的句子编号。 -
data/train/text
before.png
after.png
格式:<utterance ID><utterance_trans>
注:可以看出处理前后txt的分词差别
当我直接用未处理的txt进行后续程序时,会报错,很神奇,待学。 -
data/train/utt2spk
格式:<utterance ID><speaker ID>
utt2spk.png -
data/train/spk2utt
感觉这个文件没啥用,每个说话人对应的句子数目都没标全
utils/prepare_lang.sh
purpose
This script adds word-position-dependent phones and constructs a host of other derived files
config
- num_sil_states=5
- num_nonsil_states=3
- position_dependent_phones=true
- share_silence_phones=false
if true, then share pdfs of different silence phones together - sil_prob=0.5
- unk_fst=
data_可执行的L.fst
- data/local/lang
临时文件夹 -
data/lang/phones.txt
phones.png
number.png
phones.txt文件里除了有意义的音素外还有数字
-
data/lang/words.txt
words.png
猜测是词典中包含的词语,因为前面已经将句子做了segment,这里估计就是每行读取trans文件,以空格为分隔符,统计词典中的词语数。
-
data/lang/topo
topo.png
可以看出这个文件规定了一个音素的拓扑结构。
4.1 编号2~201为phones.txt中的有意义音素。
4.2 一个音素由三个状态0,1,2组成;3为结束状态。
4.3 每个状态有一个pdf
4.4 每个状态有两种转移状态(自己或别的状态)。初始设置为0.75和0.25分配。
4.5 第二种设置是一个音素由五个状态组成。 - data/lang/L.fst
这个就是重点文件了。WFST还需要看。 - data/lang/L_disambig.fst
- data/lang/oov.txt
文档里只有一个UNK
oov意思是out of vocabulary
local/train_lms.sh & format_lm.sh
purpose
用data/local/dict/lexicon.txt和训练集的text文件生成语言模型。
再生成G.fst。
注:这里用训练集的text生成语言模型,也可以用其他的text生成,只要不包含测试集就行。
data_可执行的G.fst
- data/lang_test/G.fst
- 其他文件和上一步的data_lang里的一样,就多了G.fst
总结
总结.JPG