1、语音识别很牛吗?来试试施氏食狮史和季姬击鸡记语音识别如何处理汉字中的同音字现象?lambertFan,RokidA-lab,语音识别,机器学习,深度学习outline:1、背景2、通俗易懂版3、进阶版4、多音字的处理能力1、背景GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个。对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK及GB18030汉字字符集的出现。汉语的声母共有23个,韵母24个。普通话的读音共有420个左右,即使考虑声调,总数也远小于汉字的个数。汉字中的同音字现象这里也无需
4、要给出一个选择,我们可能会选择一个最常见的,比如“五人”。c)当这段语音的第三个音出现的时候,语音变成了“wu-ren-yue:这时候选择又发生了变化,一些不大可能的组合被排除掉,一些可能性更大的组合被放到了前面。现在组合可能是舞人月、无人月、无人约、武人月、伍仁月等等。有些组合可能声调不对却仍然被列在了候选中,这是因为识别的时候其它声调也有一些可能性,不能完全排除,万一是人发错了音呢。d)这段语音所有的字都给出之后,语音变成“wu-rcn-yueblng”。这时候,大多数人的第一反应大概就是“五仁月饼”。当然其它的可能性也不是没有,但要比这个汉字组合
5、的可能性小。如果用拼音输入法,依次输入上述拼音的时候,可以看到候选项的变化如下。当然每个人的候选是不相同的,它会根据个人的习惯改变候选排序。使用语音输入法,通常给出的都是可能性最大的一个结果,所以看不到候选。但可以通过输入的语音,观察随着语音长度变化,识别结果的变化。3、进阶版先祭出公式:表示其中3中上式中W表示汉字序列,Y表示语音输入。公式1语音识别的目标是在给定语音输入的情况下,找到可能性最大的汉字序列。根据BayeRule,可以得到公式2,分母表示出现这条语音的概率,它同要求解的汉字序列没有参数关系,可以在求解时忽略,进而得到公式3。公式第一部分
6、表示给定一个汉字序列出现这条音频的概率,它就是语音识别中的声学模型;第二部分表示出现这个汉字序列的概率,它就是语音识别中的语言模型。声学模型可以理解为是对发声的建模,因此它能够把语音输入转换成声学表示的输出,或者简单的理解成拼音的输出。如果给定了唯一的拼音序列,要求解汉字序列,那么这个问题就简化成了同拼音输入法类似的问题。当然声学模型的输出不是唯一的拼音序列,而是很多种拼音序列组成的网格(lattice),所以声学模型的解码要比输入法的设计复杂。抛开声学模型,我们假定已经知道了唯一的拼音序列,现在只需求解汉字序列,问题简化成了通俗易懂版本。下面我们来看语言模型如何在发挥作用,
7、排除多音字的干扰。关于语言模型,目前最常见的是N-Gram语言模型和基于RNN的语言模型,这里先介绍下N-gram的语言模型。首先考虑给定一句话:其中是统计基元,可以是字、词、短语等。这个句子的概率有下面的公式来计算:从公式中可以看到的概率由决定,由特定的一组构成的序列,称为的历史。随着历史基元数量的增加,不同的“历史”(路径)按指数级增长。对于第i(i>1)个统计基元,历史基元的个数,i-1,如果共有L个不同的基元,如词汇表,理论上每一个单词都有可能出现在1到i-1的每一个位置上,那么,i基元就有种不同的历史情
8、况。我们必须考虑在所有的种不同历史情况下产生第i个基元的概率。那么中有个自由参数。如果L=5000,m=3,自由参数的数目为1250亿。这个参数量显然是无法接受的。为了减少参数,我们考虑n阶马尔科夫链,即认为当前词只跟它之前出现的n个词有关系,那么对于单个词的概率则由变成。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)
9、。为了保证条件概率在i=1时有意义,同时为了保证句子内所有字符串的概率和为1,可以在句子首尾两端增加两个标志w1w2,wm。据此,对于n>2的n-gram,上述整句的概率就简化成了如下面的形式:利用bi-gram来计算前面例子中“五仁月饼”的概率:P(五仁月饼)=P(五|)XP(仁I五)XP(月I仁)XP(饼|月)Xp(|饼)同理,其他汉字序列的概率也可以由此公式计算得到。最终在输入法的列表中给出概率最大的几个选项即可。对于识别也是一样,如果识别结果只有一个,那么就给出概率最大的一个结果;如果识别结果是N-best那么就根据概率给出可能性