基于字建模(中文字英文词)
。。。
分析以下原因
- core/decoder/ctc_wfst_beam_search.cc里未做am出来相同类merge规整,修改代码后会提升一些
1 | // 函数:void CtcWfstBeamSearch::Search(const std::vector<std::vector<float>>& logp) { |
lexicon标注有误,像“买LV” 这种,lexicon标注为 L ▁V的,但是am出来▁L概率很高,L的概率很小,但是加上语言分数,语言模型概率P(V|买) 高于P(V|L),加上声学分就是只出来了L,因此要想避免这种情况,一个是训练语言模型的文本”L V”这种分开的要比较多,使得P(V|L)高,一个是lexicon要人工挑选,尽量声学分数不要太低了。
训练声学模型时,带LV的单词易拆成** L ▁V,L在单词中间,(L没有空格)L的建模多是L在单词中间的发音的建模,而L单独的发音建模是▁L,因此虽然LV经过声学模型bpe拆分成 L ▁V,也是建模单元▁L的概率高;
CTC prefix beam search,带TLG优于不带TLG的结果,说明TLG是有效的(CTC不带语言模型),而attention rescore后TLG作用不明显,说明TLG建模能力没有transoformer的建模能力强(带语言模型了),而且他们的训练文本很接近,这是可以理解的。