为什么语音输入不准怎么回事法不智能老师输入错误的同音字?

outline:1、背景2、通俗易懂版3、进阶版4、多音字的处理能力------------------------------------1、背景GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个。对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBK及GB 18030汉字字符集的出现。汉语的声母共有23个,韵母24个。普通话的读音共有420个左右,即使考虑声调,总数也远小于汉字的个数。汉字中的同音字现象这里也无需多费口舌来介绍,直接呈上我国著名语言学家、“现代语言学之父”赵元任先生的两篇文章。《施氏食狮史》石室诗士施氏,嗜狮,誓食十狮。施氏时时适市视狮。十时,适十狮市。是时,适施氏适市。施氏视十狮,恃矢势,使是十狮逝世。氏拾是十狮尸,适石室。石室湿,施氏使侍拭石室。石室拭,施氏始试食十狮尸。食时,始识十狮实十石狮尸。试释是事。《季姬击鸡记》季姬寂,集鸡,鸡即棘鸡。棘鸡饥叽,季姬及箕稷济鸡。鸡既济,跻姬笈,季姬忌,急咭鸡,鸡急,继圾几,季姬急,即籍箕击鸡,箕疾击几伎,伎即齑,鸡叽集几基,季姬急极屐击鸡,鸡既殛,季姬激,即记《季姬击鸡记》。(网图,侵删)这两篇文章通篇都是同音字,尽管只有声调的差异,但是想通畅的读下来,还是需要认真练习几遍。下面我们就来聊聊这样的同音字文章,语音识别是否可以搞定。2、通俗易懂版语音识别处理同音字的方法,一句话来概括就是根据上下文关系。下面举例来说明这个过程。比如有一段语音,共有四个字,我们依次来看每个字的发音。a)首先我们听到第一个音“wǔ”。人来判断的话,这个字的可能性也是很多的,可以是{五、午、舞、武、吾、捂}等等等等,实在不好做出选择。b)听到第二个音之后,语音变成“wǔ·rén”的时候,选择就发生了变化。有些字开头从来没见过这种组合,所以就被排除了。现在组合可能是{五人、武人、舞人、五仁}等等等等。这个时候如果非要给出一个选择,我们可能会选择一个最常见的,比如“五人”。c)当这段语音的第三个音出现的时候,语音变成了“wǔ·rén·yuè”。这时候选择又发生了变化,一些不大可能的组合被排除掉,一些可能性更大的组合被放到了前面。现在组合可能是{舞人月、无人月、无人约、武人月、伍仁月}等等。有些组合可能声调不对却仍然被列在了候选中,这是因为识别的时候其它声调也有一些可能性,不能完全排除,万一是人发错了音呢。d) 这段语音所有的字都给出之后,语音变成“wǔ·rén·yuè·bìng”。这时候,大多数人的第一反应大概就是“五仁月饼”。当然其它的可能性也不是没有,但要比这个汉字组合的可能性小。如果用拼音输入法,依次输入上述拼音的时候,可以看到候选项的变化如下。当然每个人的候选是不相同的,它会根据个人的习惯改变候选排序。使用语音输入法,通常给出的都是可能性最大的一个结果,所以看不到候选。但可以通过输入的语音,观察随着语音长度变化,识别结果的变化。3、进阶版先祭出公式:上式中W表示汉字序列,Y表示语音输入。公式1表示语音识别的目标是在给定语音输入的情况下,找到可能性最大的汉字序列。根据Baye’ Rule,可以得到公式2,其中分母表示出现这条语音的概率,它同要求解的汉字序列没有参数关系,可以在求解时忽略,进而得到公式3。公式3中第一部分表示给定一个汉字序列出现这条音频的概率,它就是语音识别中的声学模型;第二部分表示出现这个汉字序列的概率,它就是语音识别中的语言模型。声学模型可以理解为是对发声的建模,因此它能够把语音输入转换成声学表示的输出,或者简单的理解成拼音的输出。如果给定了唯一的拼音序列,要求解汉字序列,那么这个问题就简化成了同拼音输入法类似的问题。当然声学模型的输出不是唯一的拼音序列,而是很多种拼音序列组成的网格(lattice),所以声学模型的解码要比输入法的设计复杂。抛开声学模型,我们假定已经知道了唯一的拼音序列,现在只需求解汉字序列,问题简化成了通俗易懂版本。下面我们来看语言模型如何在发挥作用,排除多音字的干扰。关于语言模型,目前最常见的是N-Gram语言模型和基于RNN的语言模型,这里先介绍下N-gram的语言模型。首先考虑给定一句话:s=w_1w_2w_3...w_m其中 w_i
是统计基元,可以是字、词、短语等。这个句子的概率有下面的公式来计算:P(s)=&P(w_1)\times P(w_2|w_1)\times P(w_3|w_1w_2)\times ... \times P(w_m|w_1w_2...w_{m-1})\\ &=\prod _{i-1} ^mP(w_i|w_1...w_{i-1})从公式中可以看到 w_i
的概率由 w_1...w_{i-1}
决定,由特定的一组 w_1...w_{i-1}
构成的序列,称为 w_i
的历史。随着历史基元数量的增加,不同的“历史”(路径)按指数级增长。对于第 i ( i >1 ) 个统计基元,历史基元的个数 , i-1,如果共有 L 个不同的基元,如词汇表,理论上每一个单词都有可能出现在1到 i-1的每一个位置上,那么, i 基元就有 L^{i-1}
种不同的历史情况。我们必须考虑在所有的 L^{i-1}
种不同历史情况下产生第 i 个基元的概率。那么中有 L^m
个自由参数。 如果 L=5000, m = 3, 自由参数的数目为 1250 亿。这个参数量显然是无法接受的。为了减少参数,我们考虑n阶马尔科夫链,即认为当前词只跟它之前出现的n个词有关系,那么对于单个词的概率则由 P(w_m|w_1...w_{m-1}) 变成 P(w_m|w_{m-n+1}...w_{m-1})。a)当 n=1 时,即出现在第 i 位上的基元 wi 独立于历史, n-gram 被称为一阶马尔柯夫链(uni-gram 或monogram)b)当 n=2 时, n-gram 被称为2阶马尔柯夫链(bi-gram)c)当 n=3 时, n-gram 被称为3阶马尔柯夫链(tri-gram)。。。。。。为了保证条件概率在 i=1 时有意义,同时为了保证句子内所有字符串的概率和为 1,可以在句子首尾两端增加两个标志:<BOS> w1 w2 … wm <EOS>。据此,对于n>2 的 n-gram,上述整句的概率就简化成了如下面的形式:P(s)=\prod_{i=1} ^{m+1}P(w_i|w_{i-n+1}^{i-1})利用bi-gram来计算前面例子中“五仁月饼”的概率:P(五仁月饼)=P(五|<BOS>)×P(仁|五)×P(月|仁)×P(饼|月)×P(<EOS>|饼)同理,其他汉字序列的概率也可以由此公式计算得到。最终在输入法的列表中给出概率最大的几个选项即可。对于识别也是一样,如果识别结果只有一个,那么就给出概率最大的一个结果;如果识别结果是N-best那么就根据概率给出可能性最大的N个识别结果。对于RNN的语言模型,参数量并不会随着句子序列长度的增加而发生变化,因此不需要马尔柯夫链的前提假设。因此它是对整句进行的概率计算:P(s)=\prod_{i=1}^mP(w_i|w_1...w_{i-1})其中每一次概率计算 p(w_m|w_1...w_{i-1})
都是一次RNN的前向计算。对于如何计算P(仁|五)就是语言模型的构建的问题了,这里就不再详细介绍,感兴趣的同学可以自行学习。对N-gram语言模型感兴趣的同学,可以参考宗成庆老师的《统计自然语言处理》;对RNN语言模型感兴趣的同学可以阅读这篇文章[Rafal Jozefowicz, 2016]。4、多音字的处理能力最后我们回到背景介绍中的问题。现在的语音识别系统能否识别汉字中的多音字问题呢?答案是在一定程度上可以,比如正常的说话通常可以正确识别。但结果是依据统计学给出的概率上最可能的结果。对于赵元任老先生的这2篇文章是否可以识别呢?还是直接来看讯飞手机输入法的识别结果。普通话好的各位同学自行尝试。参考文献:1、信息交换用汉字编码字符集:http://baike.baidu.com/item/信息交换用汉字编码字符集/80742722、普通话音节表:http://humanum.arts.cuhk.edu.hk/Lexis/lexi-mf/mandarin_syllables.php3、《统计自然语言处理》宗成庆4、Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, Yonghui Wu,
Exploring the Limits of Language Modeling, 2016想知道更多关于语音识别、机器学习的研究成果应用。未经允许,请勿转载

我要回帖

更多关于 语音输入不准怎么回事 的文章

 

随机推荐