您当前的位置:首页 > 精选知识 > 正文

语音识别技术简介(语音识别技术概述)

语音识别技术简介(语音识别技术概述)

语音是人类最自然的交互方式。计算机发明后,让机器“听懂”人类的语言,理解语言的内在含义,做出正确的回答,成为人们追求的目标。我们都希望能像科幻电影里那些智能高级的机器人助手一样,在人们通过语音相互交流的时候,能让他们明白你在说什么。语音识别技术把人类的这个梦想变成了现实。语音识别就好比“机器的听觉系统”,让机器通过识别和理解,将语音信号转换成相应的文本或命令。

语音识别技术也称为自动语音识别(ASR),旨在将人类语音的词汇内容转换为计算机可读的输入,如按键、二进制代码或字符序列。语音识别就好比“机器的听觉系统”,让机器通过识别和理解,将语音信号转换成相应的文本或命令。

语音识别是一门涉及面很广的交叉学科,与声学、语音学、语言学、信息论、模式识别理论、神经生物学等都有着密切的联系。语音识别技术正逐渐成为计算机信息处理技术中的关键技术。

语音识别技术的发展

语音识别技术的研究始于20世纪50年代。1952年,贝尔实验室开发了10个孤立数字识别系统。自20世纪60年代以来,美国卡内基梅隆大学的Reddy就开展了连续语音识别的研究,但这一时期的发展非常缓慢。1969年,贝尔实验室的Pierce J甚至在一封公开信中将语音识别比作近年来不可能的事情。

自20世纪80年代以来,以隐马尔可夫模型(HMM)为代表的基于统计模型的方法逐渐在语音识别研究中占据主导地位。HMM模型能够很好地描述语音信号的短时平稳特性,将声学、语言学和句法的知识整合到一个统一的框架中。此后,HMM的研究和应用逐渐成为主流。例如,第一个“非特定人连续语音识别系统”是由当时还在卡内基梅隆大学学习的李开复开发的SPHINX系统。其核心框架是GMM-HMM框架,其中GMM(高斯混合模型)用于建模语音的观察概率,而HMM用于建模语音的时间序列。

80年代后期,深度神经网络(DNN)的前身——人工神经网络(ANN)也成为语音识别研究的一个方向。但这种浅层神经网络对语音识别的效果一般,性能不如GMM-HMM模型。

自20世纪90年代以来,语音识别的首次研究和工业应用达到了高潮,这主要得益于基于GMM-HMM声学模型的区分训练准则和模型自适应方法的提出。在此期间,剑桥发布的HTK开源工具包大大降低了语音识别研究的门槛。经过近10年的发展,语音识别的研究进展有限。基于GMM-HMM框架的语音识别系统整体效果远未达到实用水平,语音识别的研究和应用陷入了瓶颈。

2006年,Hinton]提出用受限玻尔兹曼机(RBM)初始化神经网络的节点,即深度信念网络(DBN)。DBN解决了深度神经网络训练容易陷入局部最优的问题,从此深度学习的大潮正式开启。

2009年,Hinton和他的学生Mohamed D将DBN应用于语音识别的声学建模,并在类似TIMIT的小词汇量连续语音识别数据库中获得成功。

2011年,DNN在大词汇量连续语音识别方面获得成功,语音识别效果实现了最近10年来的最大突破。自此,基于深度神经网络的建模方法正式取代GMM-HMM成为主流的语音识别建模方法。

语音识别的基本原理

所谓语音识别,就是把一个语音信号转换成相应的文本信息。该系统主要包括四个部分:特征提取、声学模型、语言模型、词典和解码。为了更有效地提取特征,通常需要对采集的声音信号进行滤波和分帧,以从原始信号中提取待分析的信号。之后,特征提取工作将声音信号从时域转换到频域,为声学模型提供合适的特征向量;在声学模型中,根据声学特征计算每个特征向量在声学特征上的得分。语言模型根据语言学的相关理论计算声音信号对应可能短语序列的概率。最后,根据已有的词典,对短语序列进行解码,得到最终可能的文本表示。

声学信号预处理

作为语音识别的前提和基础,语音信号的预处理非常重要。在最终的模板匹配中,将输入语音信号的特征参数与模板库中的特征参数进行比较。因此,只有在预处理阶段获得了能够代表语音信号本质特征的特征参数,这些特征参数才能匹配出高识别率的语音识别。

首先,需要对声音信号进行滤波和采样。这个过程主要是消除除人声和50Hz电流频率以外频率的信号之间的干扰。这个过程一般是通过使用带通滤波器,设置上下环频进行滤波,然后对原始离散信号进行量化来实现的。之后需要对信号的高频和低频部分的连接段进行平滑处理,这样就可以在相同的信噪比下求解频谱,使得分析更加方便快捷。帧加窗操作是为了使原始的具有时变频域的信号具有短期稳定性,即把连续信号分成独立的具有不同长度采集窗口的频域稳定部分,以便于分析。这个过程主要采用预加重技术;最后需要端点检测,即对输入语音信号的起止点做出正确的判断,主要依据短时能量(同一帧内信号变化的幅度)和短时平均过零率(同一帧内采样信号过零的次数)。

声学特征提取

信号预处理完成后,接下来的操作是整个过程中关键的特征提取。识别原始波形并不能达到很好的识别效果。频域变换后提取的特征参数用于识别,而可用于语音识别的特征参数必须满足以下要求:

1、特征参数能尽可能描述语音的根本特征;

2、尽量减少参数分量之间的耦合,压缩数据;

3、要让计算特征参数的过程更简单,让算法更高效。诸如基音和共振峰之类的参数可以用作表征语音特征的特征参数。

目前主流研究机构最常用的特征参数是线性预测倒谱系数(LPCC)和梅尔倒谱系数(MFCC)。两个特征参数在倒谱域中作用于语音信号。前者以探测模型为出发点,利用LPC技术计算倒谱系数。后者模拟听觉模型,把语音通过滤波器组模型的输出作为声学特征,然后用离散傅里叶变换(DFT)进行变换。

所谓基音周期,是指声带振动频率(基频)的振动周期。由于基音周期检测能有效地表征语音信号的特征,所以自语音识别研究开始,基音周期检测就是一个至关重要的研究点。所谓共振峰是指语音信号中能量集中的区域。因为它代表了声道的物理特征,是发音质量的主要决定条件,所以也是一个非常重要的特征参数。此外,目前许多研究者已经开始将深度学习的一些方法应用到特征提取中,并取得了快速的进展。

声学模型

通常,动态时间规整(DTW)分类器是语音识别中一种非常成功的匹配算法,因为它识别效果好、识别速度快、系统开销低。但是,当使用大词汇量进行非特定人语音识别时,DTW的识别效果会急剧下降,而用隐马尔可夫模型(HMM)训练的识别效果会明显改善。由于传统语音识别中一般采用连续高斯混合模型(GMM)来描述状态输出密度函数,因此也称为GMM-HMM框架。

同时,随着深度学习的发展,深度神经网络被用来完成声学建模,形成了所谓的DNN-HMM框架来代替传统的GMM-HMM框架,在语音识别方面也取得了不错的效果。

高斯混合模型

对于一个随机向量X,若其联合概率密度函数符合公式2-9,则称其服从高斯分布,记为X ^ n(,)。

其中是分布的期望值和分布的协方差矩阵。高斯分布具有很强的逼近真实世界数据的能力,且易于计算,因此被广泛应用于各个学科。然而,仍有许多类型的数据不能用高斯分布很好地描述。这时候我们可以用多个高斯分布的混合分布来描述这些数据,多个分量负责不同的潜在数据源。此时,随机变量符合密度函数。

其中m是组件的数量,通常由问题的规模决定。

我们把数据服从高斯混合分布的模型称为高斯混合模型。高斯混合模型广泛应用于语音识别系统的许多声学模型中。考虑到语音识别中向量的维数相对较大,我们通常假设高斯混合分布中的协方差矩阵 m是对角矩阵。这不仅大大减少了参数的数量,而且提高了计算效率。

利用高斯混合模型对短期特征向量进行建模有以下优点:第一,高斯混合模型建模能力强,只要分量总数足够,高斯混合模型就能以任意精度逼近一个概率分布函数;此外,EM算法可以很容易地使模型收敛于训练数据。为了解决计算速度和过拟合问题,发展了参数绑定GMM和子空间高斯混合模型(子空间GMM)。除了使用EM算法进行最大似然估计,我们还可以使用与单词或音素错误率直接相关的判别误差函数来训练高斯混合模型,这样可以大大提高系统性能。因此,在声学模型中使用深度神经网络的技术出现之前,高斯混合模型是短期特征向量建模的最佳选择。

然而,高斯混合模型也有一个严重的缺点:高斯混合模型在向量空间附近的非线性流形上建模数据非常差。例如,假设一些数据分布在一个球体的两侧,并且离球体非常近。如果我们使用适当的分类模型,我们可能只需要几个参数来区分球体两侧的数据。然而,如果用高斯混合模型来描述它们的实际分布,我们需要大量的高斯分布分量来足够精确地描述它们。这促使我们寻找一种能够更有效地利用语音信息进行分类的模型。

隐马尔可夫模型

现在,我们考虑一个离散随机序列。如果转移概率符合马尔可夫性质,即进来的状态和过去的状态是独立的,则称之为马尔可夫链。如果转移概率与时间无关,则称为齐次马尔可夫链。马尔可夫链的输出与预先定义的状态一一对应。对于任何给定的状态,输出是可观测的,没有随机性。如果扩展输出,马尔可夫链的每个状态输出都是一个概率分布函数。在这种情况下,马尔可夫链的状态是无法直接观察到的,只能通过受状态变化影响且符合概率分布的其他变量来推断。我们把这种利用隐马尔可夫序列假设对数据建模的模型称为隐马尔可夫模型。

对应于语音识别系统,我们使用隐马尔可夫模型来描述一个音素的内部子状态变化,从而解决特征序列与多个基本语音单元的对应问题。

在语音识别任务中使用隐马尔可夫模型需要计算该模型在一个语音片段上的可能性。训练时需要使用Baum-Welch算法[23]来学习隐马尔可夫模型的参数,进行最大似然估计(MLE)。Baum-Welch算法是EM(期望最大化)算法的一个特例,它利用前后项的概率信息迭代执行计算条件期望的E步和最大化条件期望的M步。

语言模型

语言模型主要刻画人类语言表达的方式和习惯,侧重于词语之间的内在联系和词语排列结构。在语音识别和解码过程中,一个好的语言模型不仅可以提高解码效率,而且通过词与词之间的参考发音词典和参考语言模型的传递,可以在一定程度上提高识别率。语言模型分为两类:规则模型和统计模型。统计语言模型通过概率统计来描述语言单位的内在统计规则。其设计简单实用,取得了良好的效果。它被广泛应用于语音识别、机器翻译、情感识别等领域。

最简单但最常用的语言模型是N元语言模型(N-gram LM)。N元语言模型假设当前单词的概率只与给定上下文中的前N-1个单词相关。因此,概率p (w1,wm ),WM可以近似为

为了得到上面给出的公式中每个单词的概率,我们需要一定数量的语言文本来估计。可以通过使用包含上述单词的单词对在所有上述单词对中的比率来直接计算概率,即

对于文本中没有出现的词对,我们需要使用平滑方法来近似它们,比如Good-Turing估计或Kneser-Ney平滑。

解码和字典

解码器是识别阶段的核心部件,通过训练好的模型对语音进行解码,得到最可能的词序列,或者根据识别中间结果生成识别格,供后续部件处理。解码器的核心算法是动态规划算法Viterbi。由于解码空间巨大,在实际应用中通常使用搜索宽度有限的令牌传递。

传统的解码器会动态生成解码图,比如著名的语音识别工具HTK(HMM工具包)中的HVite和HDecode。这种实现占用内存较少,但考虑到各个组件的复杂性,整个系统流程比较繁琐,不便于高效地将语言模型和声学模型结合起来,同时扩展起来也比较困难。目前主流的解码器实现在一定程度上会使用预生成的有限状态转换器(FST)作为预加载的静态解码图。在这里,我们可以将语言模型(G)、词汇(L)、上下文相关信息(C)和隐马尔可夫模型(H)这四个部分构造为标准的有限状态转换器,然后通过标准的有限状态转换器将它们组合起来,构造一个从上下文相关音素子状态到单词的转换器。这种实现方法使用了一些额外的内存空间,但使解码器的指令序列更加整齐,更容易构建一个高效的解码器。同时可以对预先构建的有限状态转换器进行预优化,合并和砍掉不必要的部分,使搜索空间变得更加合理。

语音识别技术的工作原理

首先,我们知道声音其实是一种波。常见的mp3格式都是压缩格式,必须转换成未压缩的纯波形文件进行处理,比如Windows PCM文件,也就是俗称的wav文件。除了文件头之外,wav文件还存储声音波形的所有点。下图是波形的一个例子。

图中每帧长度为25ms,每两帧之间有25-10=15ms的重叠。我们称之为帧长25ms,帧移位10ms的成帧。

分帧后,讲话变成许多小段。但是波形在时域上几乎没有描述能力,所以必须对波形进行变换。常见的变换方法是提取MFCC特征,根据人耳的生理特点,将每一帧波形变成一个多维向量。可以简单理解为这个向量包含了这一帧语音的内容信息。这个过程被称为声学特征提取。

此时,声音变成一个12行(假设声学特征为12维)N列的矩阵,称为观察序列,其中N为总帧数。观察顺序如下图所示。图中每一帧用一个12维向量表示,色块的色深表示向量值。

接下来,我们将介绍如何将这个矩阵转换为文本。首先,我们要介绍两个概念:

音位:单词的发音由音位组成。对于英语,一个常用的音素集是卡内基梅隆大学的39个音素的集合。一般汉语中所有的声母和韵母都直接作为音素集。另外,中文识别分为有声调和无声调,就不详细描述了。

状态:可以理解为比音位更细致的语音单位。通常,一个音位分为三种状态。

语音识别是如何工作的?其实一点都不神秘。无非是:

第一步是将帧标识为状态。

第二步是将状态组合成音素。

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

如下图所示:

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

每个音素对应哪种状态?有一种简单的方法可以看出一个帧最有可能对应哪个状态,以及该帧属于哪个状态。例如,在下图中,该帧在S3州的条件概率最高,因此猜测该帧属于S3州。

你从哪里读到这些概率的?有个东西叫“声学模型”,里面储存了很多参数。通过这些参数,我们可以知道相应帧和状态的概率。获取大量参数的方法称为“训练”,需要海量的语音数据。

但是有一个问题:每一帧都会得到一个状态号,最后整个演讲都会得到一堆乱七八糟的状态号,相邻两帧之间的状态号基本不一样。假设有1000帧语音,每帧对应一个状态,每三个状态组合成一个音素,大概会组合成300个音素,但是这个语音根本没有那么多音素。如果这样做了,所获得的状态号可能根本不被组合成音素。实际上,相邻帧的状态应该大部分相同是合理的,因为每个帧都很短。

解决这个问题的常用方法是使用隐马尔可夫模型(HMM)。这个东西听起来很深奥,其实用起来很简单:

第一步是建立一个国家网络。

第二步是找到与来自州网络的声音最匹配的路径。

这样结果就限定在预置的网络内,避免了刚才提到的问题。当然,这也带来了一个局限性。比如你设置的网络只包含“今天是晴天”和“今天是雨天”这两个句子的状态路径,那么不管你说什么,识别的结果一定是这两个句子中的一个。

如果你想识别任何文本呢?建立一个足够大的网络来包含任何文本的路径。但是网络越大,越难达到更好的识别准确率。因此,应根据实际任务要求合理选择网络规模和结构。

构建一个状态网络就是将一个词级网络扩展成一个音素网络,再扩展成一个状态网络。语音识别的过程其实就是在状态网络中搜索最佳路径,语音对应于该路径的概率最高,这就是所谓的“解码”。路径搜索算法是一种动态规划剪枝算法,称为维特比算法,用于寻找全局最优路径。

这里所说的累积概率由三部分组成,即:

观察概率:每一帧每一状态的概率。

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

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

其中,前两个概率是从声学模型中得到的,最后一个概率是从语言模型中得到的。语言模型是利用大量文本进行训练的,可以利用语言本身的统计规律来帮助提高识别准确率。语言模型非常重要。如果不使用语言模型,当状态网络较大时,识别结果基本是一塌糊涂。

这样就基本完成了语音识别过程,这就是语音识别技术的工作原理。

语音识别技术的工作流程

一般来说,一个完整的语音识别系统的工作过程分为七个步骤:

1、分析和处理语音信号以去除冗余信息。

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

3、坚持特征信息,识别最小单位的词。

4、根据不同语言各自的语法按顺序识别单词。

5、将上下文作为辅助识别条件,有利于分析识别。

6、根据语义分析,把关键信息分成段落,把识别出的单词拿出来连接起来,根据句子意思调整句子成分。

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

语音识别有三个原则:

1、根据幅度谱的时间变化对语音信号中的语言信息进行编码;

因为语音是可读的,也就是说,声信号可以由许多不同的和离散的符号来表示,而不考虑说话者的语音所传达的信息内容;

3、语音交互是一个认知过程,一定不能脱离语法、语义、术语。

预处理包括对语音信号进行采样,克服混叠滤波,去除一些由于个体发音差异和环境造成的噪声,考虑语音识别和端点检测基本单元的选择。重复训练是让说话人多次重复语音后再进行识别,去除原始语音信号样本中的冗余信息,保留关键信息,然后按照一定的规则对数据进行整理,形成模式库。再者,模式匹配是整个语音识别系统的核心部分,它是根据一定的规则和输入特征与股票模式的相似性来判断输入语音的含义。

在前端,首先对原始语音信号进行处理,然后进行特征提取,消除噪声和不同说话人发音差异的影响,使处理后的信号更完整地反映语音的本质特征提取,消除噪声和不同说话人发音差异的影响,使处理后的信号更完整地反映语音的本质特征。

编辑:李倩

标签:语音模型信号


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: iphone解锁工具(App store被锁怎么解锁)

下一篇: 樱花抽油烟机是日本的吗(日本樱花油烟机和台湾樱花油烟机有什么区别都不知道樱花还有日本和台湾的)



推荐阅读