赞
踩
在本次记录中主要记录的是发音词典以及声学模型的数据准备,语言模型仅仅简单介绍。
发音词典数据准备的阶段主要目的是生成L.fst,在此之前首先进行准备发音词典
发音词典一般包含以下6个文件
在文件中,SIL静音 SPN口语噪声 NSN非口语噪声 LAU笑声
文件 | 内容 |
---|---|
lexicon.txt | 包含概率的字典文件(词语 音素1 音素2 …) |
silence_phones.txt | 默认静音音素 |
optional_silence.txt | 默认静音音素 |
nonsilence_phones.txt | 静音/非静音 音素,每行代表相同的base phone, 但是会用不同的音调,例如 a a1 a2 a3 a4 |
extra_questions.txt | 构建决策树的问题集(可以为空) |
lexiconp.txt | 字典文件(词语 音素1 音素2 …) |
lexicon.txt 文件的部分内容如下,其中的内容包含了所有的内容包括 假音素。
龢 p_h p_e_2
龣 p_j p_iao_3
龤 p_x p_ie_2
龥 p_y p_v_4
<UNK> spn
silence_phones.txt:默认静音音素 sil
echo sil > $dict_dir/optional_silence.txt
optional_silence.txt 默认静音音素
echo sil > $dict_dir/optional_silence.txt
nonsilence_phones.txt:静音/非静音 音素,每行代表相同的base phone, 但是会用不同的音调,例如 a a1 a2 a3 a4
l
m
n
o
p
p_a_1 p_a_2 p_a_3 p_a_4 p_a_5
p_ai_1 p_ai_2 p_ai_3 p_ai_4 p_ai_5
p_an_1 p_an_2 p_an_3 p_an_4 p_an_5
lexiconp.txt
嗀 1.0 p_g p_u_3
嗀 1.0 p_h p_u_4
礼 1.0 p_l p_i_3
﨨 1.0 p_x p_ing_4
<UNK> 1.0 spn
extra_questions 构建决策树的问题集
sil
' . a b c w x y spn z
p_a_4 p_ai_4
p_a_1 p_ai_1
p_a_3 p_ai_3
p_a_2 p_ai_2
p_a_5 p_ai_5
之后使用脚本转换为将dict转化为L.fst
utils/prepare_lang.sh --position-dependent-phones false \
data/dict "<UNK>" data/local/lang data/lang
通过utils/prepare_lang.sh将词典生成为L.fst。文件 L.fst 是 FST 形式的发音词典, 其中输入是音素,输出为词。
以下树形结构为使用 utils/prepare_lang.sh生成的文件结构。
Usage: utils/prepare_lang.sh \<dict-src-dir> \<oov-dict-entry> \<tmp-dir> \<lang-dir> data/lang ├── L_disambig.fst ├── L.fst ├── oov.int ├── oov.txt ├── phones.txt ├── topo ├── words.txt └── phones ├── align_lexicon.int ├── align_lexicon.txt ├── context_indep.csl ├── context_indep.int ├── context_indep.txt ├── disambig.csl ├── disambig.int ├── disambig.txt ├── extra_questions.int ├── extra_questions.txt ├── nonsilence.csl ├── nonsilence.int ├── nonsilence.txt ├── optional_silence.csl ├── optional_silence.int ├── optional_silence.txt ├── roots.int ├── roots.txt ├── sets.int ├── sets.txt ├── silence.csl ├── silence.int ├── silence.txt ├── wdisambig_phones.int ├── wdisambig.txt └── wdisambig_words.int
文件 | 文件内容 |
---|---|
L.fst & L_disambig.fst | FST形式的发音字典 |
words.txt | 为训练数据和测试数据分词之后,和起来的所有去重之后的词 |
phones.txt | 根据lexicon生成的所有的音素集合 |
topo | 文件指明 HMM 模型拓扑结构 |
oov.txt | 映射词汇表之外的词为一个“垃圾音素”,该音素会与口语噪声对齐。SIL静音 SPN口语噪声 NSN非口语噪声 LAU笑声 |
oov.int | SPN的数字形式(从words.txt中提取) |
phones目录下的文件内容
文件 | 文件内容 |
---|---|
phones.txt&words.txt | 符号表文件,音素符号的文本形式和数字形式 |
phones | 包含音素集合的各种信息,分别为三个版本(.txt .int数字 .csl列表) |
phones/align_lexion.txt | |
phones/context_indep.txt | 包含所有音素的一个列表,用于建立文本无关的模型 |
phones/disambig.txt | 包含所有用于消除歧义的符号的列表 |
phones/extra_questions.txt | 包含那些自动产生的问题集之外的一些问题 |
phones/nonsilence.txt | 包含非静音音素列表 |
phones/optional_silence.txt | 含有一个音素,在需要的时候出现在词之前 |
phones/sets.txt | 包含一系列的音素集,在聚类音素时被分组(被当做同一个音素),以便建立文本相关问题集 |
phones/silence.txt | 包含静音音素列表 |
phones/word_boundary.txt | 解释音素与词位的关联情况 |
词汇表中不一定包含text中出现的词汇,词汇表中没有的词汇被写入lang/oov.txt 文件中(lang/oov.int 文件为其 SPN 的数字形式,从 words.txt 中提取)。
文件名称 | 内容格式 |
---|---|
text | < uttid > < word > |
wav.scp | < uttid > < utter_file_path > |
utt2spk | < uttid > < speakid > |
feats.scp | < uttid > <extended-filename-of-features> |
– | – |
spk2utt | < speakid > < uttid > |
segments | <uttid> <recid> <segbegin> <segend> |
上文中标记说明:
标记名称 | 说明 |
---|---|
utterance-id | 发音编号, 可以是任意的文本字符串,唯一性 |
speaker-id | 说话人编号, 常作为发音编号的前缀 |
record-id | 和在“wav.scp”中使用的是同一个标识字符串, 与 uttid 一样 |
word.txt | 单词列表 |
segment-begin/segment-end | 以秒为单位。它们指明了一段发音在一段录音中的时间偏移量 |
语言模型的数据准备由于我之前仅仅简单使用ngram进行训练语言模型,因此在此不进行记录。训练工具可以通过kaldi/tools 下面 install_srilm.sh进行安装。
使用以下脚本进行训练语言模型。
ngram-count -order $lm_order -wbdiscount \
-text $local/corpus.txt -lm $local/tmp/lm.arpa
上述的语言工具基于第三方工具,为ARPA-format,脚本的作业是将其转换为fst,方便与之前的字典fst(L.fst)结合,发挥fst的优势。脚本最后会检测G.fst中是否存在没有单词的空回环,如果存在会报错,因为这会导致后续HLG determinization的出现错误,因此使用脚本去进行检测。
脚本utils/format_lm.sh解决把ARPA格式的语言模型转换成OpenFST格式类型。脚本用法如下:
Usage: utils/format_lm.sh <lang_dir> <arpa-LM> <lexicon> <out_dir>
E.g.: utils/format_lm.sh data/lang data/local/lm/foo.kn.gz data/local/dict/lexicon.txt data/lang_test
之后再使用 arpa2fst 装换为fst
lang=data/lang_new
arpa2fst --disambig-symbol=#0 --read-symbol-table=$lang/words.txt \
$local/tmp/lm.arpa $lang/G.fst
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。