语音识别模型训练时,多音字是怎么处理的?
通过词典(lexicon)和语言模型(language model)来解决。本质上是把多音字的每个读音(以及它们所组成的每个词)当成不同的词。例如,「行」字有 háng、xíng 两种读音,都可以单独成词,也可以组成「银行」「行列」「进行」等词。那么,词典的内容就会是这样的(为简便起见,省略声调;音素划分不重要,仅为示意):行(1) h a ng行(2) x i ng银行 i n h a ng行列
通过词典(lexicon)和语言模型(language model)来解决。本质上是把多音字的每个读音(以及它们所组成的每个词)当成不同的词。
例如,「行」字有 háng、xíng 两种读音,都可以单独成词,也可以组成「银行」「行列」「进行」等词。那么,词典的内容就会是这样的(为简便起见,省略声调;音素划分不重要,仅为示意):行(1) h a ng
行(2) x i ng
银行 i n h a ng
行列 h a ng l i e
进行 j i n x i ng
注意「行(1)」和「行(2)」在语音识别系统看来就是完全不一样的词。
这些词在语言模型中会有不同的概率,比如在「不」字后面,「行(2)」的概率就比「行(1)」大得多。
这样,当输入语音说的是「到中国银行买白银行不行」的时候,识别器认为概率最高的单词串就会是:到 中国 银行 买 白银 行(2) 不 行(2)
在最终的后处理阶段,会把括号、空格等乱七八糟的符号去掉,输出「到中国银行买白银行不行」。
上面说的是以词为单位的识别系统。如果是以字为单位,那么词典里就只会有「行(1)」和「行(2)」这样的单字,没有「银行」「行列」「进行」等词。那么怎么知道「银行」的「行」念 háng,「进行」的「行」念 xíng 呢?还是靠语言模型。在「银」字后面,「行(1)」的概率会远高于「行(2)」;在「进」字后面,「行(2)」的概率会远高于「行(1)」。这样,还是对于上面那句话,识别器认为概率最高的单字串就是:到 中(1) 国 银 行(1) 买 白 银 行(2) 不 行(2)
(注意「中」字也是多音字,词典里会有「中(1)」和「中(2)」两个条目)
在后处理阶段,上面的单字串被处理成「到中国银行买白银行不行」。
除了多音字,同音字也是用同样的方法处理的。语音识别系统并不需要知道这些多音、同音的关系,只需要按照数学,综合声学模型和语言模型的概率,去挑选最可能的单词或单字串。
更多推荐
所有评论(0)