Kaldi(A1)语音识别原理

Ref

语音识别的原理 https://www.zhihu.com/question/20398418
HTK Book http://www.ee.columbia.edu/ln/LabROSA/doc/HTKBook21/HTKBook.html
如何用简单易懂的例子解释隐马尔可夫模型? https://www.zhihu.com/question/20962240/answer/33438846
《统计学习方法》第10章 隐马尔可夫模型

强烈建议先看完以上资料


语音识别的原理

语音识别的过程可以理解为找路:
一个朋友告诉你他从杭州站走到杭州东经过了水、桥、广场,想让你猜猜他走的是哪条路,你该怎么办呢?

那我们就找这些特征所对应的建筑吧,分别是公园、高架桥、娱乐广场,啊,在图上最可能的就是蓝色的这条线了! 于是我们就从朋友的特征描述得到了他的行走路径,这就相当于从音频得到了发出这些音频的文字,即语音识别。


上述过程有几个问题,包括

  • 这些特征对应的建筑有很多,水可以是公园也可以是池塘、湖、海等等;朋友也不可能先跑到火星再坐飞船到杭州东,所以我们找的时候是在较为可能的范围内找的,这对应了语音识别中的语言模型,它限定了我们语音识别的范围。
  • 包含上述水、桥、广场特征的路径有很多,我们需要将特征最可能对应的建筑给找出来,这对应了语音识别中的声学模型,它描述了我们发特定音对应某个单词的概率,例如我发音是 偷猫肉 ,显然,对应的单词是tomorrow的概率比tomato更大。

Observe值

在语音识别中,朋友告诉你的特征被称作Observe值,观测值,其提取的流程如下图所示


流程示意

音频波形 => (每一帧的)频域特征序列 => (每一帧的)Observe值

上图中这些圈圈是什么意思呢?

HMM:发音可能的路径

举一个具体的例子,比如我发了Hi这个单词(在计算机里面使用音素phone来表明这个单词是如何发音的,Hi对应于sil-h-ay-sil,sli指silence),下图为计算发音为sil-h-ay-h-ay-sil-h-ay-sil的概率


首先我们需要规定发音可能的路径,对Hi这个单词而言,发音只可能是(sil-h)-(ay-sil)的组合,比如我把H拖得比较长,说的是HHHHHHi那就是(sil-h)(sil-h)(sil-h)…-(ay-sil)啦,前面一长串的重复对应于上图中箭头指向自己,Hiiiiiiiii~~~同理。使用上图这种链式的HMM就可以表示出这种发音的路径。真正的识别当然不止Hi这一条路径,还有Hello,Hey,Apple等等,是所有可能的状态路径的集合,语音识别就是从中找出一个对应于Observe序列最可能的状态路径出来(这里的状态相当于找路中的建筑)。那么怎么知道哪个是最可能的呢?这里先提出HMM相关的3个问题。

关于HMM的3个问题

问题1:已知模型和状态序列,求产生特定观测序列的概率

计算过程

解释一下上图中符号的含义:

  • π表示进入到这条路径的概率,朋友已经告诉你是从杭州站出发了,所以π=1
  • o表示观测值,即朋友告诉你的特征,“水”,“广场”等等;b(o)则代表这个特征属于某个建筑的概率,如在公园里出现水的概率比较大,则b公园(水)=0.8b公园(广场)=0.2
  • a则表示从一个状态走到下一个状态的概率,如公园之后更容易走到广场去,则a公园->广场=0.7

回到这个问题本身。最简单的,直接根据概率相乘计算;然后,其实这个直接算的过程可以优化,于是有了Forward Algorithm,向前算法,或者 Backward Algo,向后算法。后续的Baum-Welch Algo也会用到这个算法。

问题2:已知模型和观测序列,求这个观测序列对应的状态序列

相当于语音中的解码问题。最简单的,暴力破解,根据问题1算出所有状态序列产生这个观测序列的概率,找一个最大的。采用动态规划优化之后的算法为Viterbi Algo,维特比算法。

问题3:已知多个观测序列,求模型(即求模型的a b π参数)

若已知对应的状态序列,则为监督算法,根据频数进行估计。


监督学习

若并不知道对应的状态序列,则为无监督算法,Baum-Welch Algo。

GMM:特定Observe值对应于某一状态的概率b(o)

GMM对应于上图中的函数曲线b(o),是多个正态分布的叠加(如虚线所示),应用GMM进行计算的过程如下图所示(这里是问题1:已知模型和状态序列,求产生特定观测序列的概率):

计算过程

注意这里的0.7 0.4(就是a啦)对应于HMM部分中状态转移的概率(箭头上的概率),通过以上计算过程我们就能分别计算出Hi,Hello,Hey这些单词的概率来了,概率最大的就是识别出来的文本啦。
这里仅仅展示了Hey这一个单词的计算过程,而不同的单词概率密度函数(pdf)是不同的,如HTK Book里面的这张图所示:
不同的单词

针对所有待识别的单词需要都构建这样的一串函数(即图中的模型)然后才能选出最大概率的作为最终识别结果。
再来一个总体的图方便大家理解。
Yes对应的概率计算

HMM-GMM如何被构建出来?

以上过程有两个问题:

  • 路径是如何画出来的?
  • 函数是如何拟合出来的?

这里便对应问题3:已知多个观测序列,求模型,需要我们通过语料库里的语音进行训练,由Baum-Welch Algo得到整个模型的参数。它也是个EM算法,需要先设定一个初始值,HTK里面的做法是先将观测值均分,和整个句子的所有状态近似对应,计算出初始值,然后进行迭代得到更好的值,使在该模型下产生这个观测值的概率提高,最终状态值和观测值就能更好地对齐在一起(句子里面每个单词的状态对准到了相应的语音特征)。其中迭代优化的值包括π a b,还有一个中间参数Lj(t),他表示t时刻观测值对应于状态j的概率,这就和对齐alignment联系上啦。更详细的介绍参考HTK Book。

维特比(Viterbi)解码

当训练过程完成之后,要使用这个模型便对应问题2:已知模型和观测序列,求这个观测序列对应的状态序列,亦即已知wav文件对应的特征序列,求其对应的状态,而状态是单词的更小级别的展开,最终可以转换为单词实现语音识别。
Viterbi解码的算法如下图所示,

Viterbi算法

1代表开始的状态,6代表结束的状态,我们的任务就是沿着一条最可能发生的路径从1走到6,而路径上每个黑点的概率都是知道的,Viterbi算法便可以通过动态规划的方式找出这条道路。不过Kaldi里面有另外一种解码的方式,Lattice,这个后续再说。

总结

一张图作为收尾和下一章的开始:

HMM结构

b(o)特定观测值对应某一状态的概率不仅可以用GMM的方式计算,还可以通过DNN的方式,这就是声学模型。而Kaldi里用到的转移模型便是WFST,这又究竟是个什么呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,158评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,600评论 1 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,785评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,655评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,075评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,002评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,146评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,918评论 0 211
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,671评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,838评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,318评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,636评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,343评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,187评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,982评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,126评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,934评论 2 279

推荐阅读更多精彩内容