您现在的位置:首页 >> 技术文章 >> 图像语音处理 >> 内容

MATLAB代做|大词汇量连续语音识别

时间:2014-11-2 23:45:33 点击:

  核心提示:MATLAB代做|MATLAB代写|MATLAB有偿编程 - MATLAB代做FPGA代做|FPGA代写|FPGA有偿编程 - FPGA代做QQ: 1224848052...
最具有挑战性的研究课题是大词汇量、非特定人的连续语音识别。大词汇量、非特定人的连续语音识别系统的词误识率大体为小词汇量、特定人的孤立词识别词误识率的50倍左右。
下面两个问题是孤立词识别中没有的:
1.切分。对整个短语进行识别显然是不可能的,因为语言中短语的数量太大,所以必须把输入的语流切分为更小的组成部分,人类感知语音也是这样做的。由于连续语音中间没有间歇,所以在识别前必须先把各字分开,这就需要系统必须能够识别单词之间的边界。但这是非常困难的,因为确定单词间的边界位置还没有现成的方法。尽管有时候可以采用能量最低点作为边界,但是通常要根据发音信息加以验证。
2.发音变化
连续语音的发音比孤立词的发音跟随便,受协同发音的影响也更为严重。另外,连续语音识别系统中的很多问题都与语言学知识有关,特别是大词汇量识别系统要跟多地强调运用语言学知识。虽然进行大词汇量连续语音识别面临各种困难,但有进展,这一进展依赖于在识别系统中采用HMM算法的统一框架,以及非常细致地将声学、语音学、语言学的知识引入到这一框架中。现在统一的做法是将整个识别系统分为3层:声学-语音层、词层、句法层。声学-语音层是识别系统的底层,他接受输入语音,并以一种子词单位作为其识别输出,每个子词单位对应一套HMM结构和参数。词层规定词汇表中每个词是由什么因素-音子串接而成的。最后的句法层中规定词按照什么规则合成句子。最近的很多研究都采用概率式句法结构,她的优点是可以采用HMM框架,从而与其他层次构成一个统一的结构。
在最高层即句法层中,每个句子由若干词条组成,每一个词条都选自词汇表。句子中一个要选择的词条以一定的概率出现,而选择第二个词条的概率与前一个词条出现的概率有关,以此类推,直到句子的结束。在此框架的第二层-词层,每一个词条由若干个音子串接而成。第三层声学-语音层,每一个音子用一个HMM模型以及一套参数来表示。每一个HMM模型中最基本的构成单位是状态与状态之间的转移弧。这样,从状态出发逐层扩大到音子、词、句子。每一个句子是包含许多状态的复杂的状态图,该句子就是用所有状态形成的结构、状态之间的转移概率,以及每个转移弧产生某个特征输出的概率来描述。对于特定的词表和句法,所有可能出现的句子构成一个更大的状态图。在完成识别任务的时候,要根据一个输入语音特征矢量序列来确定一个最可能的句子。这就需要在这个大的状态图中搜索一条路径,该路径上产生上述特征矢量的概率最大,有路径可以进一步确定句子中的每一个词。
大词量连续语音识别,语音信号先经过分析后形成特征矢量,并按字典要求和子词模型结合串接成的词模型进行识别;然后根据语言模型的句法限制在句子级进行输入语音与参考模板间的匹配;最后识别出相应的句子。
声学模型
语音识别系统的底层,声学-语音学层是系统的瓶颈,这一部分需要细致的设计相应的HMM子词单元模型,充分吸取有关声学和语音学的知识,并建立一套有效的训练算法。
基本声学单元的选择
孤立词语音识别中和连接词语音识别,词或者短语作为一个基本的语音单元,由于连续语音中词与词之间的相互影响比起词内音素或者音节的相互影响还是小得多,依词作为基本单元建立模型,对于简化识别系统的结构和训练过程是很有效的。但对大词汇量连续语音识别系统来说,采用词作为基本单元建模就不合理,在连续语音识别中,以词作为基本单元,各种音联关系可能得不到充分的训练;并且以词为基本单元构成的系统,需要的存储量很大,计算复杂度很高;由于词内的各音素重复出现,造成大量不必要的冗余存储和计算,因此在大词汇量连续语音识别中,一般采用比词小的子词识别基元,如音节、半音节等。一般来说,声学单元越小,其数量也就越少,训练模型的工作量越小,但是另方面,单元越小,对上下文的敏感性越大,越容易受到前后相邻的影响而产生变异,因此其类型设计和训练样本的采集更困难。
由子词单元构成词的方法
声学-语音学层之上有一个词层,词层中有一部字典来规定词表中每一个词是那些子词单元以何种方式构筑而成的。最简单实用的方案是每个词用若干子词单元串接而成。但是,每个词的发音可能有多重变化方式,因而串接也有相应的困难。发音的变化有两个方面:第一方面称为替换,即词中的某个音子可能被用其他相似而略有差异的子词单元所替换,这种替换具有一定的随机性。第二方面,插入和删除错误,即词中有时候增加一个不是本词成分的子词单元,有时又将本次成分中的某个子词删除了,何时插入以及何时删除也是随机的。针对这些问题有以下的几种方案:第一种方案是在词典中为每一个词建立多套子词单元串接规则,以代替单一的规则,这样可以表现同一个词的不同发音变异。这种方案词典容量扩充很大,识别效果收效甚微。第二种方案将子词单元构成词的规则用一个网络图来描述,其中包含替代和插入、删除等各种变化。
基于子词单元的HMM训练
子词单元的HMM一般采用从左到右的结构,状态数固定为2-4个。训练看起来困难,实际上在一个足够大的训练集内,每个子词单元可以出现很多次,而每个连续语音段中包含有很多个子词单元。因此可以用一种很粗糙的方法进行初始分段,例如等长分段,形成初始模型,然后采用前向后向算法或分段K均值算法进行多次迭代,最终会自动收敛于一个最佳模型估计,同时达到合理的子词分段。
分段K均值算法
首先假定每一个训练语句中经过特征提取,且每个句子对应的词是已知的,那么根据字典或其他工具,就可以知道每个句子最终所对应的子词单元序列,这样分段K均值算法可以描述如下:
1.初始化,将每个训练语句线性分割成子词单元,将每个子词单元线性分割成状态,即假定在一个语句中,子词单元及其及其内部的状态驻留时间是均匀的。
2.聚类:对每个给定子词单元的每一个状态,其在所有训练语句中的特征矢量用K均值算法聚类
3.参数估计:根据聚类的结果计算均值、各维方差和混合权值系数。
4.分段:根据上一步得到的新的子词单元模型,通过Viterbi算法对所有训练语句再分成子词单元和状态,重新迭代聚类和参数估计,知道收敛。
 
语言学模型
从一个词表中任意选择若干词所构成的序列不一定能构成自然语言中的句子,只有合乎句法者才能算是句子。人在识别和理解语句中,充分利用了这种约束,在语音识别中可以利用语言模型实现这种约束。语言模型分为基于文法的语言模型和基于统计的语言模型。基于文法的语言模型是总结出语法规则乃至语义规则,然后用这些规则排除声学识别中不合语法和语义的语音的结果。基于文法的语言模型在特定任务系统中获取很好的应用,可以较大幅度地提高系统的识别率。在大词汇量的语音识别系统中,统计语言模型由于可以克服文法规则难以处理真实文本的局限性,因而获得了越来越广泛的应用。
统计模型的基本原理是,采用大量的文本资料,统计各个词的出现概率及其相互关联的条件概率,并将这些知识与声学模型匹配相结合进行结果判决,以减小声学模型不够合理而产生的误识。然而可靠地估计一种语言所有词在所有序列长度下的条件概率几乎是不可能的事,有几种常用的简化模型。
1.N元文法模型:条件概率假定只考虑与前N-1个词相关,即为N元文法模型,N元文法统计语言模型的建立,一般是通过相对频率计数得到。在N较小的情况下,统计的条件概率也是一个非常大的数字,因而常常会出现词串在训练数据中为0或接近于0的情况。这样得到的结果不可靠。解决这种训练数据稀疏的方法是用三元、二元和一元相对频率做插值。
2.词对模型。是对二元文法模型的简化,用一个二值函数代替概率值。
3长距离文法模型:反映语言中较长距离的词之间的相关性。
4.N元词类文法模型
词类的划分有很多种方法,可以采用语法意义上的划分方法,也可以采用语义意义上的划分方法。词类的数目要远小于词的数目,因而N元词类模型可靠程度要比N元文法模型高很多。
最优路径搜索
对大词汇量连续语音识别的最终目的是,从各种可能的子词序列形成的一个网络中找出一个或多个最优的子词序列。由于连续语音流中没有合适的算法检查各个子词及音节、单词的准确始末点,路径的搜索应从每个可能成为句子开始的子词单元开始。
Viterbi Beam搜索算法
是一个宽度优先的帧同步算法。核心为一嵌套循环,观察特征矢量,每往后推移一帧,对语言的每一层次的每个节点做Viterbi算法。可以可以把声学和语言学模型结合在一起。对于新的一帧数据,语言模型和字典层控制子词间的扩展和转移,同一个HMM内部的状态与孤立词的VIterbi算法无异。裁剪路径指的是放弃不可能或者得分低的路径。判断得分低有几种方式,一种简单的方法为:该路径与最优路径得分的差大于一定门限。Viterbi Beam算法是一个次优算法,最优路径有可能在开始时隐得分过低而被裁减掉。
基于前向搜索和后向回溯的N-best算法。
Bean算法尽管减少了计算量,但是他只是一个次优算法,而且只能得到一条最优路。一种两部搜索算法,他能保证全局最优,而且能依次得到全局得分最高的N条候选路径。算法的一部分是从初始帧到最末帧的帧同步前向格点搜索,另一部分是从最末帧到初始帧的帧异步后向搜索。从初始帧开始,采用Viterbi算法记录所有局部路径的得分值。接着用改进的算法进行帧异步后向搜索,一边扩展局部路径,所有被扩展的路径都是依据存放在堆栈中的全局路径的得分值进行排序的,而这些全局路径得分值是由两部分相加组成的。一部分是回溯到目前节点为止的局部路径分值,另一部分是在做相应的前向搜索时,到达目前节点的路径中获得的最高得分,这些得分值被存放在栈顶,进行搜索时,搜索是从当前节点向最高得分路径对应的节点扩展。
N——best算法,首先输入连续语音的特征矢量序列,然后用各基元模型的各个状态概率密度函数计算输出概率,即似然度映像图;接着进行帧同步格点搜索,产生路径映像图的所有局部路径(截止到任意语法节点),在节点内用传统的Viterbi算法进行计算。后一部分采用A*算法进行帧异步树搜索。用这种匹配方法每次只能得到一条当前的最优路径,最优的N个候选路径假设是顺次输入到高层处理模块,最后整个系统的识别结果是N个候选路径假设。

作者:不详 来源:网络
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|python代做|matlab淘宝代做|matlab代写(www.hslogic.com) © 2019 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment