语音识别算法原理文档整理(七)

如何使用kaldi系统

Kaldi运行流程

前提: 你已经有了一定数量的包含不同说话人的的数字音频数据, 每一个音频文件是一个完整的句子。我们以清华30小时为例。
目的: 你想把你的音频数据分成训练部分和测试部分,搭建一个ASR系统并且对它进行训练和测试,得到一些解码结果。
首要任务:首先在 kaldi/egs/目录下创建一个名为 thchs30/s5 的文件夹,这是你存放有关你工程的所有文件的地方。
接下来,讲解一下运行流程:

1数据准备

1)首先我们要把录制的音频文件我们所说的语料.wav文件放入/kaldi//thchs30-openslr/data_thchs30/,我们要把数据分成train和test两个文件夹,用于训练和测试用。
2)然后需要准备声学数据
数据一般放在egs/thchs30/s5/data文件夹,里面如下所示:
dev dict dict_phone fbank graph graph_phone lang lang_phone local mfcc test test_phone train
数据分成test和train两个文件夹,两个文件夹里面需要准备一样的东西,如下所示:
phone.txt spk2utt text utt2spk wav.scp word.txt
(1) train文件夹里面的需要手动准备的4个文件
a.)wav.scp这个文件连接每一句话,就是语音号后面接着对应的wav文件的绝对路径,需注意如果“segments”文件不存在,“wav.scp”每一行的第一项就是发音编号。
PATTERN:
A11_000 /home/hujianhua/kaldi//thchs30-openslr/data_thchs30/train/A11_0.wav
A11_001 /home/hujianhua/kaldi//thchs30-openslr/data_thchs30/train/A11_1.wav
A11_010 /home/hujianhua/kaldi//thchs30-openslr/data_thchs30/train/A11_10.wav
A11_100 /home/hujianhua/kaldi//thchs30-openslr/data_thchs30/train/A11_100.wav
A11_102 /home/hujianhua/kaldi//thchs30-openslr/data_thchs30/train/A11_102.wav
b.)text文件包含每段发音的标注。
每行的第一项是发音编号(utterance-id),可以是任意的文本字符串,但是如果在你的设置中还包含说话人信息,你应该把说话人编号(speaker-id)作为发音编号的前缀。
发音编号后面跟着的是每段发音的标注,你不用保证这里出现的每一个字都出现在你的词汇表中。词汇表之外的词会被映射到data/lang/oov.txt中。
PATTERN:
这里写图片描述
c.) utt2spk 这个文件夹告诉 ASR 系统哪一个句子属于哪个特定的说话人
PATTERN:
A11_000 A11
A11_001 A11
A11_010 A11
A11_100 A11
A11_102 A11
d.) spk2utt这个文件夹告诉 ASR 系统哪个特定的说话人说了哪些句子,这个可以通过脚本文件生成。
PATTERN:
A11 A11_000 A11_001 A11_010 A11_100 A11_102
(2)train里面另外其他2个文件,可以通过脚本生成。
a.)phone.txt文件包含着每个文件里面的文字对应的音素标注
这里写图片描述
b.)word.txt文件包含每个文件的文字表示的意思,其实跟text文件里面内容一样。
这里写图片描述
3)准备语言数据
任务:在egs/thchs30/s5/data/目录下,创建一个新的文件夹’dict’。
在 egs/thchs30/s5/data /dict 在创建如下文件:
extra_questions.txt lexiconp.txt lexicon.txt nonsilence_phones.txt optional_silence.txt silence_phones.txt
a.) lexicon.txt 这个文件包含你的字典里的每一个单词的音素
PATTERN: …

这里写图片描述
b.) nonsilence_phones.txt 这个文件列出了你工程中的所有的非静音音素
PATTERN:
—– exemplary nonsilence_phones.txt starts —–
a1
a2
a3
a4
a5
aa
ai1
ai2
ai3
ai4

—- exemplary nonsilence_phones.txt ends —–
c.) silence_phones.txt 这个文件列出了静音音素
PATTERN:
—– exemplary silence_phones.txt starts —–
sil
—– exemplary silence_phones.txt ends —–
d.) optional_silence.txt 这个文件列出了可选择的静音音素
PATTERN:
—– exemplary optional_silence.txt starts —–
sil
—– exemplary optional_silence.txt ends —–
还有两个文件extra_questions.txt lexiconp.txt
1) 文件 extra_questions.txt 包含那些自动产生的问题集之外的一些问题,
$ head /egs/thchs30/s5/data/dict/extra_questions.txt
sil
a1 ai1 an1 ang1 ao1 e1 ei1 en1 eng1 i1 ia1 ian1 iang1 iao1 ie1 in1 ing1 iong1 iu1 ix1 iy1 o1 ong1 ou1 u1 ua1 uai1 uan1 uang1 ueng1 ui1 un1 uo1 v1 van1 ve1 vn1
a2 ai2 an2 ang2 ao2 e2 ei2 en2 eng2 er2 i2 ia2 ian2 iang2 iao2 ie2 in2 ing2 iong2 iu2 ix2 iy2 o2 ong2 ou2 u2 ua2 uai2 uan2 uang2 ui2 un2 uo2 v2 van2 ve2 vn2
a3 ai3 an3 ang3 ao3 e3 ei3 en3 eng3 er3 i3 ia3 ian3 iang3 iao3 ie3 in3 ing3 iong3 iu3 ix3 iy3 o3 ong3 ou3 u3 ua3 uai3 uan3 uang3 ueng3 ui3 un3 uo3 v3 van3 ve3 vn3
a4 ai4 an4 ang4 ao4 e4 ei4 en4 eng4 er4 i4 ia4 ian4 iang4 iao4 ie4 in4 ing4 iong4 iu4 ix4 iy4 iz4 o4 ong4 ou4 u4 ua4 uai4 uan4 uang4 ueng4 ui4 un4 uo4 v4 van4 ve4 vn4
a5 ai5 an5 ang5 ao5 e5 ei5 en5 eng5 er5 i5 ia5 ian5 iang5 iao5 ie5 in5 ing5 iong5 iu5 ix5 iy5 iz5 o5 ong5 ou5 u5 ua5 uai5 uan5 uang5 ueng5 ui5 un5 uo5 v5 van5 ve5 vn5
aa b c ch d ee f g h ii j k l m n oo p q r s sh t uu vv x z zh
2) 注意:lexicon.txt 中,如果一个词有不同发音,则会在不同行中出现多次。如果你想使用发音概率,你需要建立 exiconp.txt 而不是 lexicon.txt。 lexiconp.txt 中第二区域就是概率值。注意,一个通常的做法是,对发音概率进行归一化,使最大的那个概率值为1,而不是使同一个词的所有发音概率加起来等于 1。这样可能会得到更好的结果。

猜你喜欢

转载自blog.csdn.net/bvngh3247/article/details/80786804