2018-11-07 10:54:01 yang_daxia 阅读数 2179
  • excel VBA编程番外篇(字典+正则表达式+FSO)

    1.让windows脚本技术中的字典对象结合excel VBA,功能将更大的强大。 2.Microsoft Excel VBA与正则表达式技术的结合应用,将使VBA的数据处理功能更加强大 3.在Scripting 类型库 (Scrrun.Dll)中,在VBA中对FSO对象下的驱动器、文件夹、文件的读取,写入、新建、复制、移动、删除等操作。让excelVBA的功能更加的强大。

    14779 人正在学习 去看看 曾贤志

一、语音识别框架

传统理论重点研究声学模型,发音字典不用关心,语言模型一般用n-gram

预处理:1. 首尾端的静音切除,降低对后续步骤造成的干扰,静音切除的操作一般称为VAD。

 2. 声音分帧,也就是把声音切开成一小段一小段,每小段称为一帧,使用移动窗函数来实现,不是简单的切开,各帧之间一般是有交叠的。

特征提取:主要算法有线性预测倒谱系数(LPCC)和Mel 倒谱系数(MFCC),目的是把每一帧波形变成一个包含声音信息的多维向量;

声学模型(AM):通过对语音数据进行训练获得,输入是特征向量,输出为音素信息;

字典:字或者词与音素的对应, 简单来说, 中文就是拼音和汉字的对应,英文就是音标与单词的对应

语言模型(LM):通过对大量文本信息进行训练,得到单个字或者词相互关联的概率;计算所有可能性的概率,求对应的最大概率值的索引。即输出文本。

语音识别流程的举例(只是形象表述,不是真实数据和过程):

    1. 语音信号:PCM文件等(我是机器人)

    2. 特征提取:提取特征向量[1 2 3 4 5 6 0 ...]

    3. 声学模型:[1 2 3 4 5 6 0]-> w o s i j i q i r n重点

    4. 字典:窝:w o;我:w o; 是:s i; 机:j i; 器:q i; 人:r n;级:j i;忍:r n;

    5. 语言模型:我:0.0786, 是: 0.0546,我是:0.0898,机器:0.0967,机器人:0.6785;

计算所有可能性的概率,求对应的最大概率值的索引。

    6. 输出文字:我是机器人

原文:https://blog.csdn.net/nsh119/article/details/79360778

二、声学模型

声学模型:某音素组合条件下对应声学特征的概率值。反过来也可以通过概率值求索引,即特征到音素的映射。传统的为HMM-GMM模型,发展为NN,深度NN模型。

下图为声学模型框架。

https://blog.csdn.net/abcjennifer/article/details/27346787

声学模型的输入是由特征提取模块提取的特征(MFCC等)。一般来说,这些特征是多维的向量。由于语音信号特征的分布并不能用简单的概率分布,故而常用混合高斯模型方法对语音信号的分布进行拟合。参数由E-M算法求得。对声音序列O,进行GMM拟合,每一个GMM为HMM的一个状态,计算状态的概率值,通过搜索算法求得最大概率值对应的索引即音素序列。

注:状态的理解。状态通过对声音想、特征序列O进行GMM拟合或者DNN等拟合求得。如果声学模型输出的是音素,状态应该理解为比音素更小的级别,如3个状态对应一个音素;

https://blog.csdn.net/T7SFOKzorD1JAYMSFk4/article/details/79069909。如果声学模型输出的是拼音如(zhong),状态应该理解为音素zhong等,或者其他声学单元。即状态为构成输出的更低一级别的单元。

中文音素。

发音单元可以看成单因素加声调、考虑协同发音等等

 

 

 

语言模型:给定输入序列,计算序列的概率。

对于一个服从某个未知概率分布P的语言L,根据给定的语言文字样本估计P的过程被称作统计语言建模。

在语音识别中,如果识别结果有多个,则可以根据语言模型计算每个识别结果的可能性,然后挑选一个可能性较大的识别结果。

 

包含:统计语言模型和神经网络语言模型。统计语言模型将词或者词汇,看成一个个体。神经网络语言模型也可以实现传统的语言模型。最重要的是词向量的提出。

统计语言模型

2元模型:

用最大似然估计计算上述概率

 

问题:

加入开始和结束标志。

数据匮乏(稀疏)(Sparse Data)引起零概率问题 ,如何解决?  数据平滑

分子加1,分母加词汇量

不管训练语料规模多大,对于二元语法和三元语法而言 ,Kneser-Ney平滑方法和修正的Kneser-Ney平滑方法 的效果都好于其它所有的平滑方法

 

基于缓存的语言模型(cache-based LM) 

基于混合方法的语言模型 

基于最大熵的语言模型

决策树语言模型等

系数由E-M算法求得

评价指标:

具体应用,如语音识别的表现等,

困惑度:基于该语言模型,求得的测试集的概率值的越大越好。对应的困惑度越小越好。

仍然是现今语音识别系统第一遍解码的首选模型研究热点:基于N元文法语言模型平滑算法的研究

N元模型主要研究各种平滑算法。

 

神经网络语言模型:

NN实现统计语言模型。

训练RNN网络计算每一个句子的概率

词向量的提出

 

 

端对端的理解:

中英文的区别:

中英文的音素不同,发音字典不同。如英文的音素k在发音字典可以是c,k;中文的音素组成的拼音shi4可以为世,事,是等。还需要语音模型计算实际的输出。

端对端不用考虑声学模型、发音字典、语音模型等,直接完成声音特征序列到文字序列的转换。

2019-05-13 20:13:41 yibuerbusanbu 阅读数 421
  • excel VBA编程番外篇(字典+正则表达式+FSO)

    1.让windows脚本技术中的字典对象结合excel VBA,功能将更大的强大。 2.Microsoft Excel VBA与正则表达式技术的结合应用,将使VBA的数据处理功能更加强大 3.在Scripting 类型库 (Scrrun.Dll)中,在VBA中对FSO对象下的驱动器、文件夹、文件的读取,写入、新建、复制、移动、删除等操作。让excelVBA的功能更加的强大。

    14779 人正在学习 去看看 曾贤志

1. 概念:

语音识别中的字典也被称为发音字典,顾名思义就是用来描述各个词的发音或者说给出各个词和音素之间的关系;

2.作用:

语音识别系统中所有词的结果均出自于字典,也就是说他是识别系统处理词和音素的集合;通过发音字典得到声学模型的建模单元和语言模型建模单元间的映射关系,从而把声学模型和语言模型连接起来,组成一个搜索的状态空间用于解码器进行解码工作;

3.制作:

以中文识别为例:
step 1:
首先需要确定的是拼音到音素的转换规则/映射关系。
可以有不同的映射关系,如汉字一的拼音 “yi1”可以对应 “ii i1”,也可以对应 “y i1”(前者是清华语音识别使用的规则)。
不同的映射关系会产生不同的识别效果。
step 2:
需要列出尽可能多的中文词及其对应的拼音,有多音字的可列出其不同组合。
step 3:
通过以上两个步骤即可实现中文词-音素的转换,也就是G2P(Grapheme-to-Phoneme Conversion)。
通过脚本可实现输入中文词,输出对应音素的功能。

4.参考文献:
What is G2P? http://www.voxforge.org/home/docs/faq/faq/what-is-g2p

内容转自

2018-08-07 10:28:53 audio_algorithm 阅读数 1239
  • excel VBA编程番外篇(字典+正则表达式+FSO)

    1.让windows脚本技术中的字典对象结合excel VBA,功能将更大的强大。 2.Microsoft Excel VBA与正则表达式技术的结合应用,将使VBA的数据处理功能更加强大 3.在Scripting 类型库 (Scrrun.Dll)中,在VBA中对FSO对象下的驱动器、文件夹、文件的读取,写入、新建、复制、移动、删除等操作。让excelVBA的功能更加的强大。

    14779 人正在学习 去看看 曾贤志

一、语音识别简介

    语音识别的一般框架一般包含几个部分:声学模型、语音模型、以及词典。语音信号(波形)经过前级处理(包括降噪,语音增强,人声检测等)后,提取特征,送入解码模块,进行解析得到识别结果。而解码模块则由 声学模型、语言模型映射、链接组成的网络。目前主流的语音模型一般采用 n-gram 语言模型,声学模型采样隐马尔科夫模型(HMM),这些模型都需要经过预先训练得到。

    上图框架中,发音字典是指系统所能处理的单词的集合,并标明了其发音。通过发音字典得到声学模型的建模单元和语言模型建模单元间的映射关系,从而把声学模型和语言模型连接起来,组成一个搜索的状态空间用于解码器进行解码工作。

二、语音识别开源项目

                                           

    CMU Sphinix,显而易见,从它的名字就能看出来是卡内基梅隆大学的产物。它已经以某些形式存在了 20 年了,现在它在 Github(C (https://github.com/cmusphinx/pocketsphinx) 版本和 Java (https://github.com/cmusphinx/sphinx4) 版本)和 SourceForge (https://sourceforge.net/projects/cmusphinx/) 上都开源了,而且两个平台上都有活动。Github 上的 Java 版本和 C 版本都只有一个贡献者,但是这并不影响此项目的历史真实性(在 SourceForge repo 上有 9 个管理人员还有很多开发者)

    Kaldi 从 2009 年的研讨会起就有它的学术根基了,现在已经在 GitHub (https://github.com/kaldi-asr/kaldi) 上开源,有 121 名贡献者。HTK 始于 1989 年的剑桥大学,已经商用一段时间了,但是现在它的版权又回到了剑桥大学并且已经不是开源软件了。它的版本更新于 2015 年 12 月,先前发布于 2009 年。Julius (http://julius.osdn.jp/en_index.php) 起源于 1997 年,最后一个主要版本发布于 2016 年 9 月,有些活跃的 Github repo 包含三个贡献者,现在已经不大可能反应真实情况了。ISIP 是第一个型的开源语音识别系统,源于密西西比州立大学。它主要发展于 1996 到 1999 年间,最后版本发布于 2011 年,但是这个项目在 Github 出现前就已经不复存在了。

三、PocketSphinx编译运行

3.1.准备

操作系统:windows 7 64Bit SP1

编译器:Viual Studio 2013

pocketsphinx版本:5prealpha

在Sphinx官网下有如下几个下载目录:

  • Pocketsphinx — lightweight recognizer library written in C  (C语言开发的轻量级语音识别引擎)
  • Sphinxtrain — acoustic model training tools (声学模型训练工具)
  • Sphinxbase — support library required by Pocketsphinx and Sphinxtrain (Pocketsphinx和Sphinxtrain的基础类库 )
  • Sphinx4 — adjustable, modifiable recognizer written in Java (Java语言开发的可调节、可修改的语音识别引擎)

这里我们下载Pocketsphinx和Sphinxbase,下载地址:

   https://sourceforge.net/projects/cmusphinx/files/sphinxbase/5prealpha/

   https://sourceforge.net/projects/cmusphinx/files/pocketsphinx/5prealpha/

3.2.编译

1)pocketsphinx依赖于sphinxbase,因此需要先编译sphinxbase。

使用VS2013打开sphinxbase.sln,直接点击生成解决方案即可

 

输出结果

 

2)使用VS2013打开pocketsphinx.sln,直接点击生成解决方案,结果报错了。。。

 

将sphinxbase的头文件目录以及.lib文件目录加入工程中,看错误估计是路径不对,继续编译就通过了。

至此,pocketsphinx的编译工作结束了

 

3.3.运行

将sphinxbase.dll复制到pocketsphinx运行目录下,不然会报缺少DLL的错误。

 

如果有麦克风可以运行一下命令:

pocketsphinx_continuous.exe -inmic yes -hmm model\en-us\en-us -lm model\en-us\en-us.lm.bin -dict model\en-us\cmudict-en-us.dict

 

也可以用文件来运行:

pocketsphinx_continuous.exe -infile C:\Users\Administrator\Desktop\pocketsphinx-5prealpha-win32\pocketsphinx\test\data\speech61-70968-0017.wav  -backtrace yes -hmm C:\Users\Administrator\Desktop\pocketsphinx-5prealpha-win32\pocketsphinx\model\en-us\en-us -lm C:\Users\Administrator\Desktop\pocketsphinx-5prealpha-win32\pocketsphinx\model\en-us\en-us.lm.bin -dict C:\Users\Administrator\Desktop\pocketsphinx-5prealpha-win32\pocketsphinx\model\en-us\cmudict-en-us.dict

运行结果:

截图中倒数第7行,即为识别结果,输入音频文件的原句如下:

   I COULD NOT SEE MY BOY INJURED EXCELLENCE FOR BUT DOING HIS DUTY AS ONE OF CUMBERLAND'S SONS

四 、模型的获取

1、在线生成语言模型和词典的工具 http://www.speech.cs.cmu.edu/tools/lmtool-new.html 

2、已经训练好的模型下载地址:https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/

  其中Mandarin为中文普通话,下载下来之后我们可以看到
  声学模型:zh_broadcastnews_16k_ptm256_8000.tar.bz2
  语言模型:zh_broadcastnews_64000_utf8.DMP
  拼音字典:zh_broadcastnews_utf8.dic


zh_broadcastnews_ptm256_8000目录结构
├── feat.params   //HMM模型的特征参数
├── mdef   //模型定义文件(为每个即将进行训练的HMM的每一状态定义一个独特的数字标识)
├── means  //混合高斯模型的均值
├── mixture_weights   //混合权重
├── noisedict    //噪声也就是非语音字典
├── sendump  //用来从声学模型中获取mixture_weights文件的?
├── transition_matrices  //HMM模型的状态转移矩阵
└── variances  //混合高斯模型的方差

其他的中文声学模型还有tdt_sc_8k,该模型可以在pocketsphinx-0.8-win32中找到。

2018-05-31 16:20:00 nsh119 阅读数 2110
  • excel VBA编程番外篇(字典+正则表达式+FSO)

    1.让windows脚本技术中的字典对象结合excel VBA,功能将更大的强大。 2.Microsoft Excel VBA与正则表达式技术的结合应用,将使VBA的数据处理功能更加强大 3.在Scripting 类型库 (Scrrun.Dll)中,在VBA中对FSO对象下的驱动器、文件夹、文件的读取,写入、新建、复制、移动、删除等操作。让excelVBA的功能更加的强大。

    14779 人正在学习 去看看 曾贤志

所谓字典,就是发音字典的意思,中文中就是拼音与汉字的对应,英文中就是音标与单词的对应,其目的是根据声学模型识别出来的音素,来找到对应的汉字(词)或者单词,用来在声学模型和语言模型建立桥梁,将两者联系起来。

字典形式:

                    

字典的大小:

字典的大小一般根据自己识别的方向,尽可能多的覆盖所有的字词,但也要尽可能多的抛弃不需要的字词,以提高检索效率和识别性能。

字典的获得:

现在许多公司都有卖字典的,当然一般公司在做语音识别项目的时候也会去买字典或者去下载一些现用的开源字典进行开发。还有使用工具来生成字典。可以参考一下这边文章:https://blog.csdn.net/sparkexpert/article/details/51732786





2019-01-14 20:49:41 qq_14962179 阅读数 122
  • excel VBA编程番外篇(字典+正则表达式+FSO)

    1.让windows脚本技术中的字典对象结合excel VBA,功能将更大的强大。 2.Microsoft Excel VBA与正则表达式技术的结合应用,将使VBA的数据处理功能更加强大 3.在Scripting 类型库 (Scrrun.Dll)中,在VBA中对FSO对象下的驱动器、文件夹、文件的读取,写入、新建、复制、移动、删除等操作。让excelVBA的功能更加的强大。

    14779 人正在学习 去看看 曾贤志
  1. 语音识别系统结构
    noisy channel model 噪声通道模型
    在这里插入图片描述
    W^=argmaxwP(WO)=argmaxwP(OW)P(W)P(O)=argmaxwP(OW)P(W)\hat{W}=\mathop {\arg \max }\limits_w P(W|O) = \mathop {\arg \max }\limits_w \frac{{P(O|W)P(W)}}{{P(O)}} = \mathop {\arg \max }\limits_w P(O|W)P(W)
    W^=argmaxWP(OW)likelyhoodθP(W)prior\hat{W}=\mathop {\arg \max }\limits_W \overbrace {P(O|W)}^{likelyhood}\theta \overbrace {P(W)}^{prior}
    LM表示所给字符串作为语音源句的可能性,可由N-gram语法求的。
    N-gram计算一个句子的概率:
    P(w1n)=k=1nP(wkwkN+1k1)P(w_1^n) = \prod\limits_{k = 1}^n {P({w_k}|w_{k - N + 1}^{k - 1})}
    在这里插入图片描述
    通过剪枝、快速匹配、树形词典构建来加速解码。
  2. 语音识别中HMM的应用
    在这里插入图片描述
    HMM组成:
    在这里插入图片描述
    Q=q1q2q...qNQ=q_1q_2q...q_N 一系列状态集
    A 转移概率矩阵
    O 观察序列,每个O对应一个词序列V
    B 观察似然度,也叫做发射概率,是观察序列oto_t由状态i产生的概率
    q0,qendq_0,q_end 初始状态和结束状态,与观察序列无关
    Viterbi算法用于HMM解码,Baum_Welch/Forward-Backward算法用于训练HMMs。
    在语音识别中,隐含状态是音素、子音素或字词;观察序列是某一时刻波形的能量或频谱;解码就是将声学信息和字词序列相匹配。
    声学特征矢量:一般是每10ms为一帧,1s中包含100帧,每一帧用一个长度为39的实值特征来表示频谱信息。
    对于小词汇语音识别,可以以word直接建模,比如数字识别,yes_no识别。对于大词汇量语音识别,可以用音素建模,中文识别可用声韵母进行建模。
    以音素状态建模six:a basic phone HMM for the word six
    在这里插入图片描述
    在语音识别hmm中,状态只能进行自转移或连续转移,不能进行随意转移。
    Bakis network:left-to-right HMM结构,只有左右状态转移和self-loops。
    一般情况下一帧为10ms,一个音素持续时间一般为20ms,但有时候有些音素甚至持续1s,也就是100帧的数据。
    在LVASR中,通常使用3个HMM状态对一个因素建模,分别表示开始状态,中间状态,结束状态。用3个emitting状态和2个non_emittting状态(为初始状态和结束状态)如图9.7。静音一般采用5个状态进行建模。
    通常对word model或phone model 5状态建模,采用word HMM状态。
    在这里插入图片描述
    语音识别的HMM模型参数化为:
    在这里插入图片描述
  3. 特征提取:MFCC
    AD模数转换两个步骤:采样和量化
    采样率一般为8kHz或16kHz。
    奈奎斯特采样定理:采样率应该大于等于信号最大频率的2倍,才能DA数模转换无损恢复原始信号。
    在人类语言中,大多数语音信号的频率低于10kHz。
    量化:8位(-128~127),16位(-32768——32767)
    MFCC特征提取步骤
    在这里插入图片描述
    a.Preemphasis预加重
    b.Windowing加窗
    c.DFT(离散傅里叶变换)
    d.Mel filter bank and log梅尔滤波器组和取对数
    e.
  4. computing acounstic likelihoods计算声学似然度
    a.vector quantization矢量量化
    b.Guassian PDFs 高斯概率密度函数

    Univariate Guassians一维高斯
    用高斯概率密度函数作为一位声学矢量的观察似然度函数。
    用Guassian pdf计算似然度bj(ot)b_j(o_t)
    bj(ot)=12πσj2exp((xμj)22σj2){b_j}({o_t}) = \frac{1}{{\sqrt {2\pi {\sigma _j}^2} }}\exp ( - \frac{{{{(x - {\mu _j})}^2}}}{{2{\sigma _j}^2}})
    训练时计算均值和方差:
    μ^i=1Tt=1Tot s.t. qt is state i{{\hat \mu }_i} = \frac{1}{T}\sum\limits_{t = 1}^T {{o_t}\ s.t.\ {q_t}}\ is\ state\ i
    σ^j2=1Tt=T(otμi)2 s.t. qt is state i\hat \sigma _j^2 = \frac{1}{T}\sum\limits_{t = `}^T {({o_t}} - {\mu _i}{)^2}\ s.t.\ {q_t}\ is\ state\ i
    用Baum_Welch算法更新后的μ^\hat \muσ^2\hat \sigma^2:
    μ^i=t=1Nξt(i)ott=1Nξt(i){{\hat \mu }_i} = \frac{{\sum\limits_{t = 1}^N {{\xi _t}(i){o_t}} }}{{\sum\limits_{t = 1}^N {{\xi _t}(i)} }}
    σ^j2=t=1Nξt(i)(otμi)2t=1Nξt(i)\hat \sigma _j^2 = \frac{{\sum\limits_{t = 1}^N {{\xi _t}(i){{({o_t} - {\mu _i})}^2}} }}{{\sum\limits_{t = 1}^N {{\xi _t}(i)} }}
    multivariate Gaussians 多元高斯
    pdf:
    f(xμ,Σ)=1(2π)D2Σ12exp(12(xμ)TΣ1(xμ))f(\vec x|\vec \mu ,\Sigma ) = \frac{1}{{{{(2\pi )}^{\frac{D}{2}}}{{\left| \Sigma \right|}^{\frac{1}{2}}}}}\exp ( - \frac{1}{2}{(x - \mu )^T}{\Sigma ^{ - 1}}(x - \mu ))
    协方差矩阵Σ\Sigma表示每一维的方差和任意两维之间的协方差。
    两个随机变量X和Y之间的协方差为:
    Σ=E[(XE(X)(YE(Y)]=i=1Np(XiYi)(XiE(X))(YiE(Y))\Sigma = E[(X - E(X)(Y - E(Y)] = \sum\limits_{i = 1}^N {p({X_i}{Y_i})} ({X_i} - E(X))({Y_i} - E(Y))
    多元高斯观察概率估计为:
    bj(ot)=1(2π)D2Σ12exp(12(otμj)TΣj1(otμj)){b_j}({o_t}) = \frac{1}{{{{(2\pi )}^{\frac{D}{2}}}{{\left| \Sigma \right|}^{\frac{1}{2}}}}}\exp ( - \frac{1}{2}{({o_t} - {\mu _j})^T}{\Sigma _j}^{ - 1}({o_t} - {\mu _j}))
    在这里插入图片描述
    在这里插入图片描述
    对角协方差矩阵多元高斯:[{({o_t} - {\mu _i})^T}]
    bj(ot)=d=1D12πσjd2exp(12[(otdμjd)2σjd2]){b_j}({o_t}) = \prod\limits_{d = 1}^D {\frac{1}{{\sqrt {2\pi \sigma _{jd}^2} }}} \exp ( - \frac{1}{2}[\frac{{{{({o_{td}} - {\mu _{jd}})}^2}}}{{\sigma _{jd}^2}}])
    用Baum_Welch算法更新后的μ^\hat \muσ^2\hat \sigma^2:
    μ^i=t=1Tξt(i)ott=1Tξt(i){{\hat \mu }_i} = \frac{{\sum\nolimits_{t = 1}^T {{\xi _t}(i){o_t}} }}{{\sum\nolimits_{t = 1}^T {{\xi _t}(i)} }}
    σ^i2=t=1Tξt(i)(otμi)(otμi)Tt=1Tξt(i)\hat \sigma _i^2 = \frac{{\sum\nolimits_{t = 1}^T {{\xi _t}(i){{({o_t} - {\mu _i})}}{({o_t} - {\mu _i})^T}} }}{{\sum\nolimits_{t = 1}^T {{\xi _t}(i)} }}
    Gaussian Mixture Models高斯混合模型
    GMM PDF:
    f(xμ,Σ)=k=1Mck12πΣkexp((xμk)TΣ1(xμk))f(x|\mu ,\Sigma ) = \sum\limits_{k = 1}^M {{c_k}\frac{1}{{\sqrt {2\pi \left| {{\Sigma _k}} \right|} }}} \exp ({(x - {\mu _k})^T}{\Sigma ^{ - 1}}(x - {\mu _k}))
    在这里插入图片描述
    bj(ot)=m=1Mcjm12πΣjmexp[(otμjm)TΣjm1(otμjm)]{b_j}({o_t}) = \sum\limits_{m = 1}^M {{c_{jm}}\frac{1}{{\sqrt {2\pi \left| {{\Sigma _{jm}}} \right|} }}} \exp [{({o_t} - {\mu _{jm}})^T}{\Sigma _{jm}}^{ - 1}({o_t} - {\mu _{jm}})]
    ξtm(j)\xi_{tm}(j) mean the probability of being in state j at time t with mth mixture component accounting for the output observation oto_t
    ξtm(j)=i=1Nαt1(j)aijcjmbjm(ot)βt(j)αT(F){\xi _{tm}}(j) = \frac{{\sum\nolimits_{i = 1}^N {{\alpha _{t - 1}}(j){a_{ij}}{c_{jm}}{b_{jm}}({o_t}){\beta _t}(j)} }}{{{\alpha _T}(F)}}
    c.probilities,log probilities and distance functions
    (1)数值下溢,概率值都非常小,因此语音识别中通常使用对数概率。
    (2)加速计算,概率连乘取对数后可变为相加。
  5. 字典和语言模型
  6. search and decoding搜索解码
    解码问题可描述为:给定一系列声学观察序列,我们应该如何选择具有最高后验概率的单词序列。
    使用贝叶斯规则,最优单词序列是最大化语言模型先验概率和声学模型似然度乘积的概率。
    贝叶斯公式得到最优字词序列:
    W^=argmaxWP(OW)likelyhoodP(W)prior\hat W = \mathop {\arg \max }\limits_W \overbrace {P(O|W)}^{likelyhood}\overbrace {P(W)}^{prior}
    加入语言模型分数,language model scaling factor LMSF,大于1(对于许多系统在5-15之间),用于降低语言模型概率值。
    W^=argmaxWP(OW)P(W)LMSF\hat W = \mathop {\arg \max }\limits_W P(O|W)P{(W)^{LMSF}}
    word insertion penalty WIP:字插入补偿,加入WIP之后公式为
    W^=argmaxWP(OW)P(W)LMSFWIPN\hat W = \mathop {\arg \max }\limits_W P(O|W)P{(W)^{LMSF}}WIP^N
    WIP是一个常数,N是文字长度。
    取对数概率后,解码公式为:
    W^=argmaxWlogP(OW)+LMSF×logP(W)+N×logWIP\hat W = \mathop {\arg \max }\limits_W \log P(O|W) + LMSF \times \log P(W){\rm{ + }}N \times \log WIP
    语音识别HMM模型参数:
    在这里插入图片描述
    每个单词的HMM结构来自发音词典。一般使用现成的字典,每个音素由3个子音素组成,两个转移部分,是自环和转下下一子音素(转移概率分别为0.5)。在每个字的结束部分有一个静音音素来将字分隔开。
    A和B矩阵在嵌入式训练(embeded training)过程中由Baum-Welch算法训练得到。

在这里插入图片描述
用前向算法和维特比算法进行解码:
前向算法计算观察序列似然度,
αt(j)\alpha_t(j)前向概率,表示看到前t个观察值,第t个状态为j的概率。
αt(j)=P(o1,o2...ot,qt=jλ)\alpha_t(j)=P(o_1,o_2...o_t,q_t=j|\lambda)
αt(j)=i=1Nαt1aijbj(ot)\alpha_t(j)=\sum\limits_{i=1}^N\alpha_{t-1}a_{ij}b_j(o_t)
在这里插入图片描述
在这里插入图片描述
Viterbi算法返回最有可能的状态序列。
在这里插入图片描述
在这里插入图片描述
在Viterbi算法中,vt(j)v_t(j)表示看到前t个观察值并且最有可能状态序列为q1q2...qt1tjq_1q_2...q{t-1}时第t个状态为j的概率
vt(j)=P(q0,q1...qt1,o1,o2...ot,qt=jλ)v_t(j)=P(q_0,q_1...q_{t-1},o_1,o_2...o_t,q_t=j|\lambda)
vt(j)=maxi=1Nvt1(i)aijbj(ot)v_t(j)=\max\limits_{i=1}^Nv_{t-1}(i)a_{ij}b_j(o_t)
在这里插入图片描述
viterbi算法与前向算法类似,只不过前向算法时求和,而viterbi算法时求最大值。
在这里插入图片描述
在这里插入图片描述
跨字解码需要加入语言模型,一般用N-Gram.
在这里插入图片描述
用于数字识别任务的二元语法语言网络。二元语法给出从一个单词的结尾到下一个单词的开头的过渡概率。
多字解码任务的HMM网格的示意图:
在这里插入图片描述
字内转移概率由A矩阵得到,字间转移概率由语言模型得到。
一旦整个维特比网格计算出话语,我们就可以从最后时间步的最可能状态开始,然后向后跟踪回溯指针以获得最可能的状态序列,从而得到最可能的字符串。
在这里插入图片描述
Pruning剪枝:用于加速解码。在大词汇量识别的实践中,我们并不考虑所有算法将路径从一个状态列扩展到下一个状态列时可能的单词。 相反,每次PRUNING步骤都会修剪低概率路径,而不会扩展到下一个状态列。
7. embedded training
在这里插入图片描述
8. evaluation评估:WER,SER

语音识别概述

阅读数 11016

语音识别之发音字典

阅读数 11279

没有更多推荐了,返回首页