博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Atitit 语音识别的技术原理
阅读量:5340 次
发布时间:2019-06-15

本文共 7040 字,大约阅读时间需要 23 分钟。

 

 

Atitit 语音识别的技术原理

1.1. 语音识别技术,也被称为Automatic Speech Recognition(ASR)

1.2. 模型目前,主流的大词汇量语音识别系统多采用统计

1.3. 基本方法般来说,语音识别的方法有三种:基于声道模型和语音知识的方法、模板匹配的方法以及利用人工神经网络的方法。

1.3.1. 模板匹配的方法

模板匹配的方法发展比较成熟,目前已达到了实用阶段。在模板匹配方法中,要经过四个步骤:、模板训练、模板分类、判决。常用的技术有三种:动态时间规整(DTW)、隐HMM)理论、VQ)技术。

1.4. 一般来说,语音识别的方法有三种:基于声道模型和语音知识的方法、模板匹配的方法以及利用人工神经网络的方法。

1.5. 提及,就不能不说Nuance,Nuance的语音技术是以统计推断方法为基础,着眼于音素(音节的声音)和语境来识别话语

就像提到PC处理器不能跨过intel,SOC不能忽略高通,Nuance有着辉煌的历史,曾经在语音领域一统江湖,就算现在,仍旧是瘦死的骆驼比马大,仍旧是全球最大的语音技术公司,专利数量和市场份额都遥遥领先。苹果iPhone手机的虚拟语音助手Siri(风传放弃)、三星的语音助手S-Voice、各大航空公司和顶级银行的自动呼叫中心和虚拟在线语音助手,都采用了Nuance的技术。Nuance曾经很热门,三星和苹果都和它传过绯闻,都要收购它,不知道为什么,都无疾而终。

科大讯飞是nuance的国内版,同样的一览众山小

 

1.6. 这种技术可使得精确度提升25%以上,这是一个巨大的飞跃,因为这个行业只需要提升5%就具备革命意义

这是一种十分炫酷的技术,将机器学习的方式模仿人类大脑的神经元,当处理的语言越来越多时,这种网络就可以逐渐理解语言。实验结果发现,这种技术可使得精确度提升25%以上,这是一个巨大的飞跃,因为这个行业只需要提升5%就具备革命意义

1.7. 语音信号预处理与特征提取

选择识别单元是语音识别研究的第一步。语音识别单元有单词(句)、音节和音素三种,具体选择哪一种,由具体的研究任务决定。

单词(句)单元广泛应用于中小词汇语音识别系统,但不适合大词汇系统,原因在于模型库太庞大,训练模型任务繁重,模型匹配算法复杂,难以满足实时性要求。

 音素单元以前多见于英语语音识别的研究中,但目前中、大词汇量汉语语音识别系统也在越来越多地采用。原因在于汉语音节仅由声母(包括零声母有22个)和韵母(共有28个)构成,且声韵母声学特性相差很大。实际应用中常把声母依后续韵母的不同而构成细化声母,这样虽然增加了模型数目,但提高了易混淆音节的区分能力。由于协同发音的影响,音素单元不稳定,所以如何获得稳定的音素单元,还有待研究

 

1.7.1. 基于语音学和声学的方法

该方法起步较早,在语音识别技术提出的开始,就有了这方面的研究,但由于其模型及语音知识过于复杂,现阶段没有达到实用的阶段。

 

1.8. PCM文件,也就是俗称的wav文件。

wav文件里存储的除了一个文件头以外,就是声音波形的一个个点了。下图是一个波形的示例。

 

1.9. VAD静音切除

在开始语音识别之前,有时需要把首尾端的静音切除,降低对后续步骤造成的干扰。这个静音切除的操作一般称为VAD,需要用到信号处理的一些技术。

1.10. 要对声音进行分析,需要对声音分帧,也就是把声音切开成一小段一小段,每小段称为一帧。

分帧操作一般不是简单的切开,而是使用移动窗函数来实现,这里不详述。帧与帧之间一般是有交叠的,就像下图这样: 图中,每帧的长度为25毫秒,每两帧之间有25-10=15毫秒的交叠。我们称为以帧长25ms、帧移10ms分帧。  分帧后,语音就变成了很多小段。但波形在时域上几乎没有描述能力,因此必须将波形作变换。常见的一种变换方法是提取MFCC特征

 

一种简单的解决思路是对语音进行分帧,每一帧占有比较短固定的时 长(比如25ms),再假设说这样的一帧既足够长(可以蕴含 足以判断它属于哪个声韵母的信息),又很平稳(方便进行短时傅里叶分析),这样将每一帧转换为一个特征向量,(依次)分别识别它们属于哪个声韵母,就可以 解决问题。识别的结果可以是比如第100到第105帧是声母c,而第106帧到115帧是韵母eng等。 这种思路有点类似微积分 中的『以直代曲』。另外在实际的分帧过程中,还有很多常用技巧,比如相邻两帧之间有所重叠,或引入与临近帧之间的差分作为额外特征,乃至直接堆叠许多语音帧等等

 

 

1.11. 一个完整的基于统计的语音识别系统可大致分为三部分:

(1)语音信号预处理与;

(2)与模式匹配;

(3)语言模型与语言处理、

 

1.12. MFCC特征 特征主要用MFCC等等

MFCC特征,根据人耳的生理特性,把每一帧波形变成一个多维向量,可以简单地理解为这个向量包含了这帧语音的内容信息。这个过程叫做声学特征提取。实际应用中,这一步有很多细节,声学特征也不止有MFCC这一种,具体这里不讲。  至此,声音就成了一个12行(假设声学特征是12维)、N列的一个矩阵,称之为观察序列,这里N为总帧数。观察序列如下图所示,图中,每一帧都用一个12维的向量表示,色块的颜色深浅表示向量值的大小。

 

 

 

1.13. 语音识别是怎么工作的呢,识别流程

实际上一点都不神秘,无非是: 第一步,把帧识别成状态(难点)。 第二步,把状态组合成音素。 第三步,把音素组合成单词

 

 

图中,每个小竖条代表一帧,若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。也就是说,只要知道每帧语音对应哪个状态了,语音识别的结果也就出来了。  那每帧音素对应哪个状态呢?有个容易想到的办法,看某帧对应哪个状态的概率最大,那这帧就属于哪个状态。比如下面的示意图,这帧在状态S3上的条件概率最大,因此就猜这帧属于状态S3。

 

1.14. 隐马尔可夫模型(Hidden Markov ModelHMM

HMM声学建模:的概念是一个离散时域有限状态自动机,HMM是指这一马尔可夫模型的内部状态外界不可见,外界只能看到各个时刻的输出值。对,输出值通常就是从各个帧计算而得的声学特征。用HMM刻画语音信号需作出两个假设,一是内部状态的转移只与上一状态有关,另一是输出值只与当前状态(或当前的状态转移)有关,这两个假设大大降低了模型的复杂度。HMM的打分、解码和训练相应的算法是前向算法、Viterbi算法和前向后向算法。

语音识别中使用HMM通常是用从左向右单向、带自环、带跨越的拓扑结构来对识别基元建模,一个音素就是一个三至五状态的HMM,一个词就是构成词的多个音素的HMM串行起来构成的HMM,而连续语音识别的整个模型就是词和静音组合起来的HMM

 

1.15. 路径搜索的算法是一种动态规划剪枝的算法,称之为Viterbi算法,用于寻找全局最优路径。

 

1.16. 这里所说的累积概率,由三部分构成, 观察概率 转移概率 语言概率

分别是: 观察概率:每帧和每个状态对应的概率 转移概率:每个状态转移到自身或转移到下个状态的概率 语言概率:根据语言统计规律得到的概率 其中,前两种概率从声学模型中获取,最后一种概率从语言模型中获取。语言模型是使用大量的文本训练出来的,可以利用某门语言本身的统计规律来帮助提升识别正确率。语言模型很重要,如果不使用语言模型,当状态网络较大时,识别出的结果基本是一团乱麻。

 

 

1.17. 声学模型建模。

当我们有了分帧后的语音特征之后,下一步常用的处理是使用某种分类器将之分类成某种跟语音内容相关的类别,如声韵母,这一步通常称作声学模型建模。

对于分类目标的选取,最简单的选择可以是词组,或者是组成词组的汉字所对应的音节。但这样的选择方式通常会对训练模型的语音数据提出过高的要求,带来『数据稀疏』的问题,即数据中 很难包含汉语中的所有词组,同时每个词组也很难具有充足的训练样本以保证统计声学模型的可靠性。由于一个词组通常由多个音素的连续发音 构成,常见的音素都包含在国际音标表中,它们具有恰当的数目(通常几十个),以及清晰的定义(由特定的发声器官运动产生),于是音素成了各种语言中的语音识别中都最为常见的 建模选择(汉语的声韵母也是由一到三个音素构成), 识别中再结合词组到音素的发音字典使用。使用音素也方便对混合语言(如汉语种夹杂英语词汇)进行识别

目前最广泛使用的仍然是基于隐式马尔科夫模型的建模方法,即对每个三音子分别建立一个模型

 

·  声学模型(acoustic model):用于识别语音向量;可用GMMDNN等方法来识别向量,用DTWHMMCTC来对齐(alignment)识别结果的输出(单词从何时开始,何时结束)

·  字典(dictionary):多数模型并不是以单词,而是以音素为识别单位。当识别出æ p l这三个音素时,

 

 

1.18. 连续语音识别中的搜索,就是寻找一个词模型序列以描述输入语音信号,Viterbi

从而得到词解码序列。搜索所依据的是对公式中的声学模型打分和语言模型打分。在实际使用中,往往要依据经验给语言模型加上一个高权重,并设置一个长词惩罚分数。

Viterbi:基于动态规划的Viterbi算法在每个时间点上的各个状态,计算解码状态序列对观察序列的后验概率,保留概率最大的路径,并在每个记录下相应的状态信息以便最后反向获取词解码序列。Viterbi算法在不丧失最优解的条件下,同时解决了连续语音识别中HMM模型状态序列与声学观察序列的非线性时间对准、词边界检测和词的识别,从而使这一算法成为语音识别搜索的基本策略。

 

1.19. 历史

最早的基于电子计算机的语音识别系统是由AT&T贝尔实验室开发的Audrey语音识别系统,它能够识别10个英文数字。其识别方法是跟踪语音中的共振峰。该系统得到了98%的正确率。到1950年代末,伦敦学院(Colledge of London)的Denes已经将语法概率加入语音识别中。

1960年代,人工神经网络被引入了语音识别。这一时代的两大突破是线性预测编码Linear Predictive Coding (LPC), 及动态时间弯折Dynamic Time Warp技术。 语音识别的最重大突破是隐含马尔科夫模型Hidden Markov Model的应用。从Baum提出相关数学推理,经过Labiner等人的研究,李开复最终实现了第一个基于隐马尔科夫模型的大词汇量语音识别系统Sphinx,他也凭借此发明获得1988 美国商业周刊最重要发明奖。此后严格来说语音识别技术并没有脱离HMM框架,可以说现在手机上的语音拨号就脱胎于李开复的语音识别系统。
这一时期所取得的重大进展有:

HMM)技术的成熟和不断完善成为语音识别的主流方法。

 

统计方法将研究者的视线从转向宏观,不再刻意追求语音特征的细化,而是更多地从(统计)的角度来建立最佳的语音识别系统。在方面,以为基础的语音序列建模方法HMM(隐式Markov链)比较有效地解决了语音信号短时稳定、长时时变的特性,并且能根据一些基本建模单元构造成连续语音的句子模型,达到了比较高的建模精度和建模灵活性。在语言层面上,通过统计真实大规模语料的词之间同现概率即N来区分识别带来的模糊音和同音词。另外,人工神经网络方法、基于文法规则的语言处理机制等也在语音识别中得到了应用。

1.20. 声学特征 LPC  MFCC CEP Mel

1.20.1. LPC

线性预测分析从人的发声机理入手,通过对声道的短管级联模型的研究,认为系统的传递函数符合全极点的形式,从而n 时刻的信号可以用前若干时刻的信号的线性组合来估计。通过使实际语音的采样值和线性预测采样值之间达到均方差最小LMS,即可得到线性预测系数LPC。对 LPC的计算方法有自相关法(德宾Durbin法)、协方差法、格型法等等。计算上的快速有效保证了这一声学特征的广泛使用。与LPC这种预测参数模型类似的声学特征还有线谱对LSP、反射系数等等。

1.20.2. CEP

利用同态处理方法,对语音信号求离散傅立叶变换DFT后取对数,再求反变换iDFT就可得到倒谱系数。对LPC倒谱(LPCCEP),在获得滤波器的线性预测系数后,可以用一个递推公式计算得出。实验表明,使用倒谱可以提高特征参数的稳定性。

1.20.3. Mel

不同于LPC等通过对人的发声机理的研究而得到的声学特征,Mel倒谱系数MFCC和感知线性预测 PLP是受人的听觉系统研究成果推动而导出的声学特征。对人的听觉机理的研究发现,当两个相近的音调同时发出时,人只能听到一个音调。临界指的就是这样一种令人的主观感觉发生突变的带宽边界,当两个音调的差小于临界带宽时,人就会把两个音调听成一个,这称之为屏蔽效应。Mel刻度是对这一临界的度量方法之一。

1.20.4. MFCC

首先用FFT将时域信号转化成频域,之后对其对数能量谱用依照Mel刻度分布的三角滤波器组进行卷积,最后对各个滤波器的输出构成的向量进行DCT,取前N个系数。PLP仍用德宾法去计算LPC参数,但在计算自相关参数时用的也是对听觉激励的对数能量谱进行DCT的方法。

1.21. 最新进展

近几年来,特别是2009年以来,借助机器学习领域深度学习研究的发展,以及大数据语料的积累,语音识别技术得到突飞猛进的发展。

1、技术新发展

1)将机器学习领域深度学习研究引入到语音识别声学模型训练,使用带RBM预训练的多层神经网络,极大提高了声学模型的准确率。在此方面,微软公司的研究人员率先取得了突破性进展,他们使用深层神经网络模型(DNN)后,语音识别错误率降低了30%,是近20年来语音识别技术方面最快的进步。

2)目前大多主流的语音识别解码器已经采用基于有限状态机(WFST)的解码网络,该解码网络可以把语言模型、词典和声学共享音字集统一集成为一个大的解码网络,大大提高了解码的速度,为语音识别的实时应用提供了基础。

 今年10月底,微软宣布语音识别实现了历史性突破,词错率仅 5.9%,英语的语音转录达到专业速录员水平,微软的此次突破是机器的识别能力在英语水平上第一次超越人类。微软的这条消息发布之后在业内引起了极大的关注。语音识别一直是国内外许多科技公司重点发展的技术之一,百度首席科学家吴恩达就发推特恭贺微软在英语语音识别上的突破,同时也回忆起一年前百度在汉语语音识别上的突破,其Deep Speech 2 的短语识别的词错率已经降到了3.7%,Deep Speech 2 转录某些语音的能力基本上是超人级的,能够比普通话母语者更精确地转录较短的查询。

 

1.22. 电脑模拟人脑的思路是不对的,飞机也不是模范鸟闪动翅膀

早期的20多年,即从20世纪50年代到70年代,是科学家们走弯路的阶段,全世界的科学家对计算机完成语音识别这类只有人才能做的事情,认为必须先让计算机理解自然语言,这就局限在人类学习语言的方式上了,也就是用电脑模拟人脑,这20多年的研究成果近乎为零。

 

贾里尼克的贡献

  直到1970年后,统计语言学的出现才使语音识别重获新生,并取得了今天的飞凡成就。推动这个技术路线转变的关键人物是德里克·贾里尼克(Frederick Jelinek)和他领导的IBM华生实验室(T.J.Watson),开始使用统计方法。采用统计的方法,IBM将当时的语音识别率从70%提升到90%,同时语音识别的规模从几百单词上升到几万单词,这样语音识别就有了从实验室走向实际应用的可能

 

在贾里尼克之前,科学家们把语音识别问题当作人工智能和模式匹配问题,而贾里尼克将它当作通信问题,并用两个隐含马尔可夫模型(声学模型和语言模型)把语音识别概括得清清楚楚

 

在大数据时代到来后,隐马尔可夫模型出现了局限,即数据量提升时,它带来的表现提升没有深度神经网络那么大,但其实都属于统计模式识别。在语音识别发展的过程中,深度学习是同时发生的一件事,如果没有深度神经网络,但是有大数据和涟漪效应,隐马尔可夫模型也可以做到实用

 

深度神经网络由Geoffrey Hinton与微软的邓力研究员最先开始做,谷歌是最早在全球范围内大规模使用深度神经网络的公司,谷歌的Voice Search也在最早开创了用互联网思维做语音识别。在这方面,科大讯飞受到谷歌的启发,迅速跟进成为国内第一个在商用系统里使用深度神经网络的公司。

1.23. 参考资料

语音识别_百度百科.html

(2 条消息) 语音识别的技术原理是什么? - 知乎.html

语音识别64年大突破-搜狐科技!!!.html

语音识别技术_百度百科.html

 

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 

汉字名:艾提拉(艾龙)   EMAIL:1466519819@qq.com

转载请注明来源:attilax的专栏   http://www.cnblogs.com/attilax/

--Atiend

 

 

转载于:https://www.cnblogs.com/attilax/p/6119213.html

你可能感兴趣的文章
adb命令
查看>>
SQL自定义排序 ORDER BY
查看>>
Modal模态框scrolltop保留上次位移的解决方案
查看>>
python 函数(一)
查看>>
我说我在总结谁会信。。
查看>>
数据库索引的作用和长处缺点
查看>>
Laravel 安装代码智能提示扩展「laravel-ide-helper」
查看>>
java开发配套版本
查看>>
MySQL的 Grant命令权限分配
查看>>
非阻塞的c/s,epoll服务器模型
查看>>
YII框架安装过程总结
查看>>
HDOJ(HDU) 1862 EXCEL排序(类对象的快排)
查看>>
Codeforces Round #381 (Div. 2) 复习倍增//
查看>>
Money类型转化为String去除小数点后0解决方法
查看>>
ArcScene 高程不同的表面无法叠加
查看>>
[ONTAK2010] Peaks
查看>>
DLL 导出函数
查看>>
windows超过最大连接数解决命令
查看>>
12个大调都是什么
查看>>
angular、jquery、vue 的区别与联系
查看>>