2019-05-22 00:45:34 zhinengxuexi 阅读数 1294
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    6089 人正在学习 去看看 杨波

随着AI快速发展的今天,语音识别也成为众多设备的标配,语音识别开始被越来越多人的关注,国外微软、苹果、谷歌,国内的科大讯飞、思必弛、云知声等厂商都在研发语音识别新策略新算法,似乎人类与语音的自然交互渐行渐近。

语音识别是以语音的研究为对象,通过语音信号处理和模式识别让机器自动识别和理解人类口述的语言。

语音识别系统本质上是一种模式识别系统,包括特征提取、模式匹配、参考模式库等三个基本单元。

一套完整的语音识别系统,工作过程分为7步:

1.对语音信号进行分析和处理,除去冗余信息。

2.提取影响语音识别的关键信息和表达语言含义的特征信息。

3.紧扣特征信息,用最小单元识别字词。

4.按照不同语言的各自语法,依照先后次序识别字词。

5.把前后意思当作辅助识别条件,有利于分析和识别。

6.按照语义分析,给关键信息划分段落,取出所识别出的字词并连接起来,同时根据语句意思调整句子构成。

7.结合语义,仔细分析上下文的相互联系,对当前正在处理的语句进行适当修正

语音识别、图像识别均为模式识别中的主要应用,有兴趣的可以多学习一下

人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
人工智能与语音识别技术
http://www.duozhishidai.com/article-3157-1.html
人工智能快速发展的今天,语音识别现在发展到什么阶段了?
http://www.duozhishidai.com/article-2278-1.html
语音的识别过程主要分哪几步,常用的识别方法是什么?
http://www.duozhishidai.com/article-1739-1.html


多智时代-人工智能大数据学习入门网站|人工智能、大数据、物联网云计算的学习交流网站

多智时代-人工智能大数据学习入门网站|人工智能、大数据、云计算、物联网的学习服务的好平台

2016-11-30 18:40:35 attilax 阅读数 4550
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    6089 人正在学习 去看看 杨波

Atitit 语音识别的技术原理

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

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

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

1.3.1. 模板匹配的方法2

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

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

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

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

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

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

1.9. VAD静音切除4

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

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

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

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

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

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

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

1.17. 声学模型建模。7

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

1.19. 历史7

1.20. 声学特征 LPC  MFCC CEP Mel8

1.20.1. LPC8

1.20.2. CEP8

1.20.3. Mel9

1.20.4. MFCC9

1.21. 最新进展9

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

1.23. 参考资料10

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)技术的成熟和不断完善成为语音识别的主流方法。

 

统计方法将研究者的视线从微观转向宏观,不再刻意追求语音特征的细化,而是更多地从整体平均(统计)的角度来建立最佳的语音识别系统。在声学模型方面,以Markov为基础的语音序列建模方法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://blog.csdn.net/attilax

--Atiend

 

2017-10-28 00:49:19 qq_22758367 阅读数 2553
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    6089 人正在学习 去看看 杨波

语音识别发展史、基本原理、应用

语音识别发展史

语音识别作为信息技术中一种人机接口的关键技术,具有重要的研究意义和广泛的应用价值。下面我将介绍语音识别的发展历程,阐述语音识别基本概念、基本原理、声学建模方法等基本知识,并简要介绍语音识别技术在各领域的应用做简要介绍。

语言是人类交流最常用、最有效、最重要、最方便的方式,而语音是语言的声学表现,以语音的形式与机器进行交流是人类一直以来的梦想。随着计算机技术的迅速发展,语音识别技术也取得了突破性进展,人与机器通过自然语言进行对话的梦想正在逐步接近实现。

语音识别技术应用范围极为广泛,不仅仅涉及到日常生活的方方面面,在军事领域页发挥着及其重要的作用。

语音识别技术是人类朝着智能化发展的关键技术之一,它使人们对信息的处理和获取更加便捷,从而提高人们的效率,提高整个社会的运转效率。

 

1:语音识别技术的发展史

语音识别技术的种子起始于20世纪50年代。这一时期,语音识别的研究主要集中在对元音、辅音、数字、孤立词的识别。

20世纪60年代,语音识别研究取得实质性进展。线性预测分析和动态的提出较好地解决了语音信号模型地产生和语音信号不等长两个问题,并通过语音信号地线性预测编码,有效地解决了语音信号地特征提取。

20世纪70年代,语音识别技术取得突破性进展。基于动态规划地动态时间规整(Dynamic Time Warping,DWT)技术基本成熟,特别提出了矢量量化(Vector Quantization,VQ)和隐含马尔科夫模型(Hidden Markov Model,HMM)理论。

20世纪80年代,语音识别任务开始从孤立词识别转向大词汇量、非特定人、连续语音的识别,识别算法也从传统的基于标准模板匹配的方法转向基于统计模型的方法。在声学模型方面,由于HMM能够很好地描述语音时变性和平稳性,开始被广泛应用于大词汇量连续语音识别的声学建模;在语言模型方面,以N元文法为代表的统计语言模型开始广泛应用于语音识别系统。在这一阶段,基于HMM/VQ、HMM/GMM、HMM/ANN的语音建模方法开始广泛应用于LSVCSR系统,语音识别技术取得新的突破。

20世纪90年代以后,伴随着语音识别系统走向实用化,语音识别在细化模型设计,参数提取、优化、系统的自适应方面取得较大进展。同时,人们更多的关注说话人自适应、听觉模型、快速搜索识别算法以及进一步的语言模型的研究课题。此外。语音识别技术开始与其他领域相关技术进行结合,以提高识别的准确率,便于实现语音识别技术的产品化。

 

21世纪初,随着人工深度学习在语音识别中的应用,语音识别率获得突破性进展,识别的错误率从原来的85%迅速提高到高于人耳的识别率的96%。至此,语音识别技术开始走向大规模商业化阶段,开始迅速进入生活和生产的方方面面。

 

语音识别基本概念

 

语音识别是将人类的声音信号转化为文字或指令的过程。语音识别以语音为研究对象,它史语音信号处理的一个重要研究方向,是模式识别的一个分支。语音识别的研究设计微机技术、人工智能、数字信号处理、模式识别、声学、语言学、语音学、认知科学等许多学科领域,是一个多学科综合性研究领域。

根据在不同限制条件下的研究任务,产生了不同的研究领域:根据对说话人说话方式的要求,可分为鼓励次、连接词和连续语音是被系统;根据对说话人的依赖程度,可以分为特定人和非特定人语音识别系统;根据词汇量的大小,可分为小词汇量、中词汇量、大词汇量和无限词汇量语音识别系统。

 

语音识别基本原理

从语音识别的模型角度来讲,主流语音识别系统是建立在统计模式识别基础之上。语音识别的目标是利用语音学与语言学信息,把输入的语音特征向量序列X=x1,x2,x3,......xT转化成词序列W=w1,w2,

W3,......wN,并输出。基于最大后验概率的语音是被模型如下所示:

 

 

 

语音识别基本原理

 

从语音识别模型的角度讲,主流的语音识别系统理论是建立在统计模式识别基础之上的。语音识别的目标是利用语音学与语言学信息,把输入的语音特征向量序列X=x1x2……xT转化成词序列W=w1w2……wN并输出。基于最大后验概率的语音识别模型如下式所示:

 

    上式表明,要寻找的最可能的词序列语音识别基本原理,应该使P(X|W)P(W)的乘积达到最大。其中,P(X|W)是特征矢量序列X在给定W条件下的条件概率,由声学模型决定。P(W)W独立于语音特征矢量的先验概率,由语言模型决定。由于将概率取对数不影响W的选取,第四个等式成立。logP(X|W)logP(W)分别表示声学得分与语言得分,且分别通过声学模型与语言模型计算得到。A是平衡声学模型与语言模型的权重。从语音识别系统构成的角度讲,一个完整的语音识别系统包括特征提取、声学模型、语言模型、搜索算法等模块。语音识别系统本质上是一种多维模式识别系统,对于不同的语音识别系统,人们所采用的具体识别方法及技术不同,但其基本原理都是相同的,即将采集到的语音信号送到特征提取模块处理,将所得到的语音特征参数送入模型库模块,由声音模式匹配模块根据模型库对该段语音进行识别,最后得出识别结果 。

    语音识别系统基本原理框图如图1所示,其中:预处理模块滤除原始语音信号中的次要信息及背景噪音等,包括抗混叠滤波、预加重、模/数转换、自动增益控制等处理过程,将语音信号数字化;特征提取模块对语音的声学参数进行分析后提取出语音特征参数,形成特征矢量序列。语音识别系统常用的特征参数有短时平均幅度、短时平均能量、线性预测编码系数、短时频谱等。特征提取和选择是构建系统的关键,对识别效果极为重要。

 

    由于语音信号本质上属于非平稳信号,目前对语音信号的分析是建立在短时平稳性假设之上的。在对语音信号作短时平稳假设后,通过对语音信号进行加窗,实现短时语音片段上的特征提取。这些短时片段被称为帧,以帧为单位的特征序列构成语音识别系统的输人。由于梅尔倒谱系数及感知线性预测系数能够从人耳听觉特性的角度准确刻画语音信号,已经成为目前主流的语音特征。为补偿帧间独立性假设,人们在使用梅尔倒谱系数及感知线性预测系数时,通常加上它们的一阶、二阶差分,以引入信号特征的动态特征。

    声学模型是语音识别系统中最为重要的部分之一。声学建模涉及建模单元选取、模型状态聚类、模型参数估计等很多方面。在目前的LVCSR系统中,普遍采用上下文相关的模型作为基本建模单元,以刻画连续语音的协同发音现象。在考虑了语境的影响后,声学模型的数量急剧增加,LVCSR系统通常采用状态聚类的方法压缩声学参数的数量,以简化模型的训练。在训练过程中,系统对若干次训练语音进行预处理,并通过特征提取得到特征矢量序列,然后由特征建模模块建立训练语音的参考模式库。

搜索是在指定的空间当中,按照一定的优化准则,寻找最优词序列的过程。搜索的本质是问题求解,广泛应用于语音识别、机器翻译等人工智能和模式识别的各个领域。它通过利用已掌握的知识(声学知识、语音学知识、词典知识、语言模型知识等),在状态(从高层至底层依次为词、声学模型、HMM状态)空间中找到最优的状态序列。最终的词序列是对输入的语音信号在一定准则下的一个最优描述。在识别阶段,将输入语音的特征矢量参数同训练得到的参考模板库中的模式进行相似性度量比较,将相似度最高的模式所属的类别作为识别中间候选结果输出。为了提高识别的正确率,在后处理模块中对上述得到的候选识别结果继续处理,包括通过Lattice重打分融合更高元的语言模型、通过置信度度量得到识别结果的可靠程度等。最终通过增加约束,得到更可靠的识别结果。

 

声学建模方法

    常用的声学建模方法包含以下三种:基于模式匹配的动态时间规整法(DTW);隐马尔可夫模型法(HMM);基于人工神经网络识别法(ANN)等。

    DTW 是较早的一种模式匹配的方法。它基于动态规划的思想,解决孤立词语音识别中的语音信号特征参数序列比较时长度不一的模板匹配问题 在实际应用中,DTW通过计算已预处理和分帧的语音信号与参考模板之间的相似度,再按照某种距离测度计算出模板间的相似度并选择最佳路径。

    HMM是对语音信号的时间序列结构所建立的统计模型,是在马尔可夫链的基础上发展起来的,它是一种基于参数模型的统计识别方法。HMM可模仿人的言语过程,可视作一个双重随机过程:一个是用具有有限状态数的马尔可夫链来模拟语音信号统计特性变化的隐含的随机过程,另一个是与马尔可夫链的每一个状态相关联的观测序列的随机过程。

ANN以数学模型模拟神经元活动,将人工神经网络中大量神经元并行分布运算的原理、高效的学习算法以及对人的认知系统的模仿能力充分运用到语音识别领域,并结合神经网络和隐含马尔可夫模型的识别算法,克服了ANN在描述语音信号时间动态特性方面的缺点,进一步提高了语音识别的鲁棒性和准确率。其中成功的方法就是在混合模型中用ANN替代高斯混合模型估计音素或状态的后验概率。2011年,微软以深度神经网络替代多层感知机形成的混合模型系统大大提高了语音识别的准确率。

 

语音识别的应用

    语音识别技术有着非常广泛的应用领域和市场前景。在语音输入控制系统中,它使得人们可以甩掉键盘,通过识别语音中的要求、请求、命令或询问来作出正确的响应,这样既可以克服人工键盘输入速度慢,极易出差错的缺点,又有利于缩短系统的反应时间,使人机交流变得简便易行,比如用于声控语音拨号系统、声控智能玩具、智能家电等领域。在智能对话查询系统中,人们通过语音命令,可以方便地从远端的数据库系统中查询与提取有关信息,享受自然、友好的数据库检索服务,例如信息网络查询、医疗服务、银行服务等。语音识别技术还可以应用于自动口语翻译,即通过将口语识别技术、机器翻译技术、语音合成技术等相结合,可将一种语言的语音输入翻译为另一种语言的语音输出,实现跨语言交流。

    语音识别技术在军事斗争领域里也有着极为重要的应用价值和极其广阔的应用空间。一些语音识别技术就是着眼于军事活动而研发,并在军事领域首先应用、首获成效的,军事应用对语音识别系统的识别精度、响应时间、恶劣环境下的顽健性都提出了更高的要求。目前,语音识别技术已在军事指挥和控制自动化方面得以应用。比如,将语音识别技术应用于航空飞行控制,可快速提高作战效率和减轻飞行员的工作负担,飞行员利用语音输人来代替传统的手动操作和控制各种开关和设备,以及重新改编或排列显示器上的显示信息等,可使飞行员把时间和精力集中于对攻击目标的判断和完成其他操作上来,以便更快获得信息来发挥战术优势。

 结语

    语音识别的研究工作对于信息化社会的发展,人们生活水平的提高等方面有着深远的意义。随着计算机信息技术的不断发展,语音识别技术将取得更多重大突破,语音识别系统的研究将会更加深入,有着更加广阔的发展空间。

 

 

 

2019-11-04 11:19:36 qq_36333309 阅读数 133
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    6089 人正在学习 去看看 杨波

语音识别(Automatic Speech Recognition)是以语音为研究对象,通过语音信号处理和模式识别让机器自动识别和理解人类口述的语。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。语音识别是一门涉及面很广的交叉学科,它与声学、语音学、语言学、信息理论、模式识别理论以及神经生物学等学科都有非常密切的关系。

语音识别的基本原理

语音识别系统本质上是一种模式识别系统,包括特征提取、模式匹配、参考模式库等三个基本单元,它的基本结构如下图所示:

                                              

上面这个图其实很好理解,就是把语音输入,我们首先就是要对输入的语音进行预处理,然后提取语音的特征,在此基础上建立语音识别所需的模板。而计算机在识别过程中要根据语音识别的模型,将计算机中存放的语音模板与输入的语音信号的特征进行比较,根据一定的搜索和匹配策略,找出一系列最优的与输入语音匹配的模板。然后根据此模板的定义,通过查表就可以给出计算机的识别结果。显然,这种最优的结果与特征的选择、语音模型的好坏、模板是否准确都有直接的关系。

 

语音识别系统构建过程整体上包括两大部分:训练和识别训练通常是离线完成的,对预先收集好的海量语音、语言数据库进行信号处理和知识挖掘获取语音识别系统所需要的“声学模型”和“语言模型”;而识别过程通常是在线完成的,对用户实时的语音进行自动识别识别过程通常又可以分为“前端”和“后端”两大模块:“前端”模块主要的作用是进行端点检测(去除多余的静音和非说话声)、降噪、特征提取等;“后端”模块的作用是利用训练好的“声学模型”和“语言模型”对用户说话的特征向量进行统计模式识别(又称“解码”),得到其包含的文字信息,此外,后端模块还存在一个“自适应”的反馈模块,可以对用户的语音进行自学习,从而对“声学模型”和“语音模型”进行必要的“校正”,进一步提高识别的准确率。


语音识别的技术原理

首先,我们知道声音实际上是一种波。常见的mp3等格式都是压缩格式,必须转成非压缩的纯波形文件来处理,比如Windows PCM文件,也就是俗称的wav文件。wav文件里存储的除了一个文件头以外,就是声音波形的一个个点了。下图是一个波形的示例。

                                                

 其实语音识别的声音预处理与声纹识别的声音预处理有很大一部分是相似的。在开始语音识别之前,有时需要把首尾端的静音切除,降低对后续步骤造成的干扰。这个静音切除的操作一般称为 VAD。

要对声音进行分析,需要对声音分帧,也就是把声音切开一小段一小段,每小段称为一帧。分帧操作一般不是简单的切开,而是使用移动窗函数来实现。帧与帧之间一般是有交叠的,就像下图:

                                                                     

图中,每帧的长度为25毫秒,每两帧之间有 25-10=15 毫秒的交叠。我们称为以帧长25ms、帧移10ms分帧。

分帧后,语音就变成了很多小段。但波形在时域上几乎没有描述能力,因此必须将波形作变换。常见的一种变换方法是提取MFCC特征。

至此,声音就成了一个12行(假设声学特征是12维)、N列的一个矩阵,称之为观察序列,这里N为总帧数。观察序列如下图所示,图中,每一帧都用一个12维的向量表示,色块的颜色深浅表示向量值的大小。

                                                         

接下来就要把这个矩阵变成文本了。首先要介绍两个概念:

音素:单词的发音由音素构成。对英语,一种常用的音素集是卡内基梅隆大学的一套由39个音素构成的音素集,参见The CMU Pronouncing Dictionary。汉语一般直接用全部声母和韵母作为音素集,另外汉语识别还分有调无调等等,有兴趣的可以自己去了解一下哈。

状态:这里理解成比音素更细致的语音单位就行啦。通常把一个音素划分成3个状态

下面我们来看看语音识别的工作流程: 

第一步,把帧识别成状态(难点)。

第二步,把状态组合成音素。

第三步,把音素组合成单词。

 如下图 :

                                 

在上图中,每个小竖条代表一帧若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。也就是说,只要知道每帧语音对应哪个状态,语音识别的结果就出来了。 

那每帧音素对应哪个状态呢?有个容易想到的办法,看某帧对应哪个状态的概率最大,那这帧就属于哪个状态。比如下面的示意图,这帧在状态S3上的条件概率最大,因此就猜这帧属于状态S3。

                                                         

那这些用到的概率从哪里读取呢?有个叫“声学模型”的东西,里面存了一大堆参数,通过这些参数,就可以知道帧和状态对应的概率。获取这一大堆参数的方法叫做“训练”,需要使用巨大数量的语音数据,训练的方法比较繁琐,现在有很多训练模型的工具(如:CMUSphinx Open Source Speech Recognition ,Kaldi ASR)。

 

但这样做有一个问题:每一帧都会得到一个状态号,最后整个语音就会得到一堆乱七八糟的状态号,相邻两帧间的状态号基本都不相同。假设语音有1000帧,每帧对应1个状态,每3个状态组合成一个音素,那么大概会组合成300个音素,但这段语音其实根本没有这么多音素。如果真这么做,得到的状态号可能根本无法组合成音素。实际上,相邻帧的状态应该大多数都是相同的才合理,因为每帧很短。

解决这个问题的常用方法就是使用隐马尔可夫模型(Hidden Markov Model,HMM)。这东西听起来好像很高深的样子,实际上用起来很简单:首先构建一个状态网络,然后从状态网络中寻找与声音最匹配的路径。

这样就把结果限制在预先设定的网络中,避免了刚才说到的问题,当然也带来一个局限,比如你设定的网络里只包含了“今天晴天”和“今天下雨”两个句子的状态路径,那么不管说些什么,识别出的结果必然是这两个句子中的一句。那如果想识别任意文本呢?把这个网络搭得足够大,包含任意文本的路径就可以了。但这个网络越大,想要达到比较好的识别准确率就越难。所以要根据实际任务的需求,合理选择网络大小和结构

搭建状态网络,是由单词级网络展开成音素网络,再展开成状态网络。语音识别过程其实就是在状态网络中搜索一条最佳路径,语音对应这条路径的累积概率最大,这称之为“解码”。路径搜索的算法是一种动态规划剪枝的算法,称之为Viterbi算法,用于寻找全局最优路径。

这里所说的累积概率,由三部分构成,分别是:

观察概率:每帧和每个状态对应的概率

转移概率:每个状态转移到自身或转移到下个状态的概率

语言概率:根据语言统计规律得到的概率

其中,前两种概率从声学模型中获取,最后一种概率从语言模型中获取。语言模型是使用大量的文本训练出来的,可以利用某门语言本身的统计规律来帮助提升识别正确率。语言模型很重要,如果不使用语言模型,当状态网络较大时,识别出的结果基本是一团乱麻。


语音识别的工作流程

                           

语义识别流程图

预处理:

1. 首尾端的静音切除,降低干扰,静音切除的操作一般称为VAD。              

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

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

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

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

语言模型(LM):通过对大量文本信息进行训练,得到单个字或者词相互关联的概率;

解码:就是通过声学模型,字典,语言模型对提取特征后的音频数据进行文字输出;

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

1、语音信号:我是机器人

2、特征提取:我是机器人  >  [123456....]

3、声学模型:[123456....]  >  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、 输出文字:我是机器人;

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