通常情况下,我们在做语音识别的时候,一般是以下的一个流程:
这里最主要的是依靠两个模型:声学模型和语言模型,声学模型接收我们说话的音频,输出的结果为拼音,而从拼音转换到文字,这个就需要语言模型来进行操作。也就是这一篇文章的核心,基于马尔可夫的拼音文字转换方法。
一:拼音到文字的Markov模型推导
Markov模型的特点是某一状态的发生概率仅其以前的状态有关,而和其他状态无关
,这一点在语言学中称为左语境约束,左语境约束这一点很好理解,因为我们的文字读写习惯都是从左到右,因此你现在读到的文字语境会受到你刚刚读到的文字的约束。
前提假设:
综上所述:可以通过下边的图片来解释这个流程,其中方块表示输入的拼音,圆形表示同音字,箭头表示对外转移概率(没有箭头表示转移概率为0)
二:动态规划的算法求解
包括最大似然估计,很多方法都可以解决寻找路径的问题。需要通过对观察到的数据来进行概率判断下一时刻最可能的状态,从拼音到汉字的转换过程可以看做是在一个有向图中,求解概率最大路径的问题。可以用维特比(Viterb)算法:
假设:我们观察到的是拼音:
但是观测序列中序列排序很复杂,比如wo可能有三种可能:喔、我、沃,如下图所示:
现在变成了最大概率问题,把概率最大的理解为路径最短,转换为了求解最短路径问题:
算法求解:
1:A->B
2:A->B->C
3:A->B->C->D
4:A->B->C->D->E
最终就得到了A->E的最短路径A->B1->C2->D2->E1,至此,找到了wo ai zhong guo对应的概率最大的中文汉字组合为:我爱中国。
三:系统结构
参考https://github.com/letiantian/Pinyin2Hanzi项目代码。罗列系统结构:
用户输入拼音串后,会学习语料库,然后通过维特比算法去求解最大解,,并
将形成最大值的状态串接起来作为输出 。
四:实验结果
代码学习部分放在下一篇
五:参考文章
1:基于词词同现概率的拼音汉字自动转换方法。马少平老师
2:如何通俗地讲解 viterbi 算法?
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。