目前最成功的语音识别系统采用被称为隐含马尔可夫模型(HMMS)的概率模型。隐含马尔可夫模型包括多个状态,其中给每个从一种状态转移到另一种状态包括转移到同一种状态的转换定义一个转移概率。一个观测值在概率上是同每一个唯一的状态相关。在状态之间的转移概率(一个观测值将从一种状态转移到另一种状态的概率)不是完全相同的。因此,在给定了状态和观测值概率之间的转移概率的情况下,利用寻优技术例如Viterbi算法来确定一个全局概率是最大值的概率最大的状态序列。
一个状态转移序列能够被用一种已知的方式表示为通过一种格子图的一条路径,这种格子图代表了通过一系列的观测次数的HMM的所有状态。因而,在给定了一个观测序列的情况下,经过格子图的一条概率最大的路径(即,由HMM代表的概率最大的状态序列)能够利用Viterbi算法来确定。
在目前的语音识别系统中,语音一直被认为是由隐含马尔可夫过程来产生的。因而,HMM一直被用于构造被观测到的语音谱序列的模型,而特定的谱概率上是与HMM中的一个状态相关的。换句话说,对于一个已给定的被观测到的语音谱序列,在一个对应的HMM中,存在一个概率最大的状态序列。
因此,这个对应的HMM是与被观测到的序列相关的。这种技术能够被推广,以致于如果在HMM中的每个不同的状态序列是与一个诸如音素子字单元相关的,那么,能够找出一个子字单元的概率最大的序列。而且,利用子字单元如何被组合起来构成字的模型,以及利用字如何被组合起来构成句子的语言模型,能够实现完全的语音识别。
当实际地处理一个声信号时,该信号通常按照被称之为帧的时间间隔序列来抽样。这些帧通常包含许多样本,而且可能是相互重叠的和相关的。每一帧是与该语音信号的唯一一个部分相关。每一帧所代表的该语音信号的这一部分被分析来给出一个对应的声矢量。在语音识别期间,对状态序列进行搜索,找出与声矢量序列相关的概率最大的状态序列。
为了找出与一个声矢量的序列相关的概率最大的状态序列,一个声模型被访问并且Viterbi算法被采用。Viterbi算法按照时间同步的方式执行计算,该计算从第一帧开始,每次一帧。为被考虑的状态序列(即,HMM)中的两个状态计算出一个概率值。因此,当Viterbi算法根据声模型一帧一帧地分析声信号时,为每一个可能的状态序列连续地计算出一个累加概率值。到讲话结束时,由Viterbi算法所计算出的具有最大概率值的状态序列(或HMM或一系列HMM)给出整个讲话的概率最大的状态序列。然后,这个最大可能的状态序列被转换成一个对应的被说的子字单元、字或字序列。
Viterbi算法把指数运算转化成模型中的状态和转移的数量与讲话的长度比值的运算。然而,对于一个词汇很广的讲话,状态和转移的数量是很大的,而且对于所有的可能状态序列,被要求在每一帧中的每一个状态中修改概率值的运算所花费的时间比一帧的持续时间,通常为大约10毫秒的持续时间要长许多倍。
因此,一种被称为删减或定向搜索的技术已被开发,它大大地简化了用于确定概率最大的状态序列的运算。这种技术减少了计算极不可能的状态序列的概率值的需求。这通常由把每帧中所考虑的每个剩余状态序列(或潜在的序列)同与此帧相关的最大概率值进行比较来实现。如果一个特定的潜在序列的状态的概率值是相当低的(当与对那一时刻点上的其它潜在的序列所计算出的概率值的最大值相比较时),那么,删减算法假定,这样一个概率值很低的状态序列全是已有的概率最大的状态序列的一部分,将是不可能的。它通常利用最低的门限值加以实现。概率值低于最低门限值的潜在的状态序列被从搜索过程中去掉。门限值可以设置为任意想要的水平,设置时主要根据所需要的存储器和计算存储器以及一个想要的由存储器和计算存储器引起的差错率的增量来进行。
进一步降低语音识别所要求的计算难度的另一种传统的技术涉及前缀树的使用。前缀树将语音识别系统的词典表示成一个树结构,其中该系统所遇到的可能的所有的字被表示在这个树结构中。
在这样一个前缀树中,每个子字单元(例如一个音素)通常由一个与特定音素模型(例如一个HMM)相关的树枝来表示。这些音素树枝在节点上与其后面的音素树枝相连接。在词典中所有共享相同的第一个音素的字共享相同的第一个树枝。所有的具有相同的第一个和第二个音素的字共享相同的第一个和第二个树枝。反之,具有相同的第一个音素但具有不同的第二个音素的字共享前缀树中的相同的第一个树枝以及具有前缀树中在第一个节点分枝了的第二个树枝,如此等等。树结构按照这种方式扩展下去以致被该系统所遇到的所有的可能的字能由该树的末端节点(即,树中的叶子)来表示。
显而易见,上面所述的几种技术是试图简化语音识别系统中的计算和提高其计算的效率。然而,为了在执行语音识别任务中获得相当高的精确度和实时响应,仍然需要一种高强度运算的计算机系统。
语音识别系统中要求一个高强度的计算资源的一个部分是声模型以及为了确定一个输入讲话所对应的一个可能的输出,这个声模型被访问的处理过程。
过去一直所使用的一个声模型包含大量的语素。有关语素的研究在Hwang.M和Huang,X.的“SUBPHO-NETIC MODELING WITHMARKOV-STATES SENONE”,IEEE International Conference onAcoustics,Speech,and Signal Processing,Vol.Ⅰ,1992,pp33-36文章,以及Hwang,M.、Huang,X.和Alleva,F.的“PREDICTINGTRIPHONES WITH SENONES”,IEEE International Conference onAcoustics,Speech,and Signal Processing,vol.Ⅱ,1993,pp.311-314文章中被详细地描述。
简而言之,在用来构造一个语音单元的每个隐含马尔可夫模型中,为每个马尔可夫状态生成一个语素(Senone)树。在与每个马尔可夫状态相关的声模型中的这些参数根据许多语言问题的答案按照一种树形式排列的层次来被分组或聚类。最终的结果树包含了被称作语素s的已被分组了的或被聚类的参数的叶子。对于每个音素(或其他语音子字单元)中的每个隐含的马尔可夫状态中,通常在语音识别系统中可能存在一个语素树。这样常常可能导致大约120个语素树。
当使用离散的隐含马尔可夫模型或者半连续的隐含马尔可夫模型时,语素树中的每个叶子使用单个的、离散的具有n个输入的输出分布来表示。对于具有高斯密度函数的连续的隐含马尔可夫模型,在语素树中的每个叶子被使用m加权的高斯密度函数来表示。每个高斯密度函数依次被它的均值向量和它的协方差矩阵加以参数比。声模型通常使用一种最大似然训练技术例如使用一组训练数据的Baum-Welch技术来被训练。
在一个相当大的、高精确度的研究语音识别系统中,声模型中的语素包含了大约120K高斯(包括均值和协方差),它们占用了大约30兆字节的存储器容量。
然而,这种声模型通常太大了,在许多传统的桌面型计算机中不能实际地被实现。为了提供一个实际大小的、根据存储器和速度的要求能满足实际的计算资源的语音识别系统,一些较小型的和较简单的声模型已被提供。这些较小型的和较简单的声模型通常已经从原始训练组中被重新训练,然后提供给用户。这通常由语音识别系统的开发人员实现,而这些较小型的和较简单的声模型按照它最后的方式被提供给最终用户。它通常由开发人员实现的原因是原始训练组是一个非常大的数据组。而且,根据这样一个数据组来训练一个声模型可能计算量是非常大的。因此,一个通常的用户系统并不会被配置来处理这样一个庞大的原始训练组或者根据那个训练组来处理声模型的整个重新训练过程。
然而,让开发人员训练较小型的声模型并将它提供给最终用户却降低了灵活性。例如,许多用户可能希望给语音识别任务分配一个更高比例的他们可以使用的计算资源。而且,根据可以使用的存储器容量和处理器速度,最终用户通常并不都具有相同的或者也许甚至是不相似的系统配置。因此,具有许多计算资源并且希望用这些资源换取增加了的语音识别精确度的用户不可能这样做。同样地,具有非常有限的计算资源并且为了保留可以使用的计算资源,希望用精确度加以折衷的用户也不会这样做。
本发明给一个语音识别系统提供了一种动态地可重配置的声模型。该声模型能够根据与语音识别系统所运行的计算机上相关的计算资源被重新配置。而且,该声模型能够根据一个代表了由用户和/或操作系统为语音识别任务所分配的计算资源的用户输入来动态地被重新配置。
图1及其相关的描述给出了一个简单的、常用的、可以实现本发明的一个适用的计算环境的描述。尽管未被要求,但是本发明将至少部分地结合着计算机可执行的指令的常用上下文,例如由个人计算机所执行的程序模块来加以描述。通常,程序模块包括执行指定任务或实现特定的抽象数据类型的子程序、对象、构件和数据结构等。而且,精通本领域的那些人将赞同本发明可以被应用于包含手持式设备、多处理器系统、基于微处理器或可编程的用户电子装置、网络PC机、微型计算机和大型计算机等的其他计算机系统配置中。本发明也可被应用于利用通信网所连接的远程处理设备来执行任务的分布式计算环境中。在分布式计算环境中,程序模块既可以被存储在本地存储器存储设备中,又可以被存储在远程存储器存储设备中。
参照图1,用来实现本发明的一个实验系统包括一个以传统的个人计算机20的形式表示的一般用途的计算设备,该设备包括处理单元21、系统存储器22和把各种系统元件包括系统存储器与处理单元21耦合在一起的系统总线23。系统总线23可以是几种总线结构类型中的任意一种,包括存储器总线或存储控制器、外设总线以及使用各种总线结构的任意的一种本地总线。系统存储器包括只读存储器(ROM)24、随机存取存储器(RAM)25。一个基本输入1输出26(BIOS),例如在启动过程中包含了在个人计算机20中的各元件之间辅助传递信息的基本例程,被存储在ROM24中。个人计算机20还包括一个读写硬盘(未被给出)的硬盘驱动器27,一个读写可移去磁盘29的磁盘驱动器28,以及一个读写可移去光盘31例如CD ROM或其它光媒质的光盘驱动器30。硬盘驱动器27、磁盘驱动器28和光盘驱动器30分别地通过硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34与系统总线23连接起来。这些驱动器及其相关的计算机可读媒质为个人计算机20提供了计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。
尽管在这里所描述的实验环境使用了一个硬盘、一个可移去硬盘29和一个可移去光盘31,但是能够用来存储一个计算机可访问的数据的其它类型的计算机可读媒质,例如磁带、快速存储卡,数字视频盘、Bernoulli盒式磁盘、随机存取存储器(RAM)、只读存储器(ROM)等等,也可以被用在实验操作环境中,这一点应该被精通本领域的那些人所认同。
一些程序模块包括操作系统35、一个或多个应用程序36、其它程序模块以及程序数据38可以被存储在硬盘、磁盘29、光盘31、ROM24或RAM25中、用户可以利用输入设备,例如键盘40、点击设备42和麦克风62,将命令和信息输入到个人计算机20中。其它输入设备(未给出)可以包括一个操纵杆、游戏控制器、卫星盘、扫描仪等等。这些输入设备及其它的输入设备通常利用一个与系统总线23耦合在一起的串行端口46来与处理单元21相连接,而串行端口46可以与其它的接口例如声卡、并行端口、游戏端口或通用串行总线(USB)相连接。监视器47或其它类型的显示设备也可以通过一个接口,例如视频适配器48与系统总线23相连接。除了监视器47以外,个人计算机通常可以包括其它的外部输出设备,例如扬声器45和打印机(未给出)。
个人计算机20利用与一个或多个远程计算机,例如一个远程计算机49的逻辑连接可以运行在一个网络环境中。远程计算机49可以是另一台个人计算机,或一台服务器、一方路由器、一台网络PC机,一个与之对等的设备或其它的网络节点,尽管图1中只给出了一个存储器存储设备50,但是通常远程计算机49包括与个人计算机20有关的上述所描述的许多或所有的元件。图1中所描述的逻辑连接包括局域网(LAN)51和广域网(WAN)52。这些联网环境普遍存在于办公室、企业级计算机网络内部网和互联网中。
当个人计算机20被应用于LAN联网环境中时,它通过网络接口或适配器53与局域网51相连接。当个人计算机20被应用于WAN联网环境中时,它通常包含一个调制解调器54或其它设备,用来与广域网例如互联网建立通信连接。内部调制解调器54或外部调制解调器54通过串行端口46与系统总线23相连接。在网络环境中,与个人计算机20有关的程序模块或程序模块的各个部分可以被存储在远程存储器存储设备中。应该承认图中所示的网络环境是实验性的,而且可以使用其它设备建立计算机之间的通信链路。
根据本发明的一个方面,图2描绘了语音识别系统60的一个方框图。语音识别系统60包括麦克风62、模拟-数字(A/D)转换器64、训练模块65、特征抽取模块66、词典存储模块70、声模型(如语素树)72、树搜索引擎74、语言模型75、输出设备76、聚类模块80以及I/O设备82(可以包含一个或多个在图1中所述的I/O设备或者可以用设备76或键盘40加以实现)。
应该注意到,整个系统60或系统60的部分能够在图1所示的环境中加以实现。例如,麦克风62通过一个合适的接口和A/D转换器64可以被优先作为个人计算机20的输入设备。训练模块65和特征抽取模块66要么是计算机20中的硬件模块,要么是被存储在图1所示的信息存储设备的任意一个设备中的软件模块,并且能被CPU21或另一个合适的处理器加以访问。此外,词典存储模块70、声模型72和语言模型75也最好存储在图1所示的任意合适的存储设备中。另外,树搜索引擎74最好在CPU21中加以实现(CPU21可以包括一个或多个处理器)或者可以由个人计算机20所使用的一个专用语音识别处理器加以实现。此外,在一个图示的实施例中,输出设备76和82可以作为键盘40、监视器47或一个打印机,或者任何其它合适的输入/输出设备被实现。
无论如何,在语音识别过程中,语音以用户提供给麦克风62的音频信号的形式输入到系统60中。麦克风62将音频语音信号转换为模拟电信号以提供给A/D转换器64。A/D转换器64将模拟语音信号转换为一个数字信号序列以提供给特征抽取模块66。在一个优选实施例中,特征抽取模块66是一个普通的阵列处理器,该处理器对数字信号进行谱分析,同时计算出频谱的每个频带的幅值。在一个图示的实施例中,这些信号以大约16kHZ的抽样速率由A/D转换器64提供给特征抽取模块66。A/D转换器可以是商业中所使用的、众所周知的A/D转换器。
特征抽取模块66将A/D转换器64所接收到的数字信号分成包含多个数字样本的帧。每一帧的持续时间大约是10毫秒。然后,这些帧由特征抽取模块66优先编码为特征矢量,该特征矢量代表了多个频带的谱特征。在离散的和半连续的隐含马尔可夫模型的情况下,特征抽取模块66利用矢量量化技术和从训练数据所获得的代码簿优先把特征矢量是编码为一个或多个代码字。因此,特征抽取模块66在其输出时为每个所讲的文字提供特征矢量(或代码字)。特征抽取模块66以大约每隔10毫秒一个特征矢量(或代码字)的速率优先提供特征矢量(或代码字)。
然后,针对隐含马尔可夫模型,利用正在被分析的指定帧的特征矢量(或代码字)计算出输出概率分布。这些概率分布被用干后面所执行的维特比或类似的技术。
当从特征抽取模型66接收到代码字时,树搜索引擎74访问存储在声模型72中的信息。模型72存储着表示由系统60所检测到的语音单元的声模型,例如隐含马尔可夫模型。在一个实施例中,声模型72包含一个在隐含马尔可夫模型中与每个马尔可夫状态有关的语素树。在一个图示的实施例中,隐含马尔可夫模型代表了音素。根据声模型72中的语素,树搜索引擎74确定从特征抽取模块66所接收到的特征矢量(或代码字)其所代表的概率最大的音素,因此,它代表了从系统的用户所接收到的讲话。
树搜索引擎74也访问模块70中所存储的词典。根据树搜索引擎74对声模型72的访问,由树搜索引擎74接收到的信息被用来搜索词典存储模块70以确定一个字,该字极可能代表了从特征抽取模块66接收到的代码字或特征矢量。而且,搜索引擎74优先访问语言模型75,该语言模型75是从北美商业新闻文集中获得的包含60,000字的一个示例性的三元语言模型,并且该语言模型75的更详细的内容被发表在University of Penn.,1994出版的题目为CSR-Ⅲ Text LanguageModel的期刊上。语言模型75被用来识别由输入数据所表示的一个概率最大的字或字序列。因此,这个被确定的字或字序列极可能代表了由用户所接收到的讲话。然后,这个字或字序列被树搜索引擎74输出到输出设备76。
语音模型72的动态配置
在执行语音识别之前,声模型72先动态地被配置成具有能满足它正在运行的计算机上的约束要求的大小。在一个图示的例子中,一个非常详细的、高精确度的声模型首先被提供给计算机系统。然后,利用声模型中的组合参数来调整声模型的大小(例如减小),直到声模型的大小达到一个理想的水平。
图3示出了代表声模型72的一部分的一个简化了的语素树的实施例。在语素树中的圆圈代表了语素树中的节点。正方形代表了语素树中的深处的语素。三角形代表近处的语素,而带有阴影的三角形代表了语素树中的深处及近处的语素。在一个图示的实施例中,语素树首先被扩展到它的最深级以获得最深处的语素。换句话说,在给定训练集的情况下,语素树不可能再被扩展以致它能更好地被训练。这通常可以利用几个实验在开发测试集的基材上,给出一个错误率与参数大小的直方图。这种语素树被扩展到代表了一个语音单元(例如音素)的隐含马尔可夫模型中的每个状态。
其次,根据语音识别系统将被运行的计算机上的约束条件,将语素树中的深处的语素上的参数组合或聚类在某个以前被选择的父节点之下以减少声模型中的整个参数的个数。正如将在后面的详述中所描述的一样,这种参数的合并能够只在给定语素树中所提供的统计信息的情况下被实现,不用参考原始训练集。
当隐含的马尔可夫模型是离散的隐含马尔可夫模型或半连接的隐含马尔可夫模型时,每一个深处的语素由一个具有n个入口的单个的、离散的输出分布来表示。从一个公共的浅处的父节点延伸下来的两个被选中的深处的语素的输出分布被与一个对应于这个浅处的语素的输出分布组合起来。
当隐含的马尔可夫模型是具有连续的密度函数的连续的隐含马尔可夫模型时,这种密度函数是直观的高斯密度函数。在那种情况下,每个深处的语素由权重为m的高斯密度函数表示。每个高斯密度函数依次由它的均值矢量和一个协方差矩阵来参数化。因此,对于每个被选中的浅处的语素,在每个派生的语素中存在m个高斯。为了减少参数的整个数量,在每个派生的语素中的这m个高斯被组合成一个较少数量的高斯。在一个图示的实施例中,均值和协方差被合并或聚类,而在另一个图示的实施例中,只有协方差被聚类。
聚类模块80
图4是一个描绘聚类模块80的整个操作的流程图。首先,高精确度的、详细的声模型被提供给它将所使用的计算机。这由方框82所描述。
然后,聚类模块80获取代表着语音识别系统所运行的计算机上的约束条件的系统信息。在一个实施例中,聚类模块80仅仅访问计算机操作系统中的相关信息以确定在计算机中有多少存储器可以使用,以及确定将正在执行语音识别任务的计算机中所使用的处理器的操作速度。在另一个首选实施例中,聚类模块80通过输入/输出(I/O)设备82与用户进行交互。在执行这种操作时,聚类模块80要求用户输入或者代表了计算机上可使用的资源、或者代表了用户希望给语音识别任务分配的资源,或者两者都输入。例如,聚类模块80可能要求用户输入计算机中的存储器的数量、处理器的速度、用户希望在任何时间运行的程序的数量、计算机中可使用的存储器的数量、以及用户希望给语音识别器分配的存储器的数量等。不管怎样,聚类模块80接收系统信息,该系统信息表示被放置在为语音识别任务所分配的资源上的这些约束条件。这由方框84所描述。
根据这种信息,聚类模块80确定一个大小合适的声模型。在一个图示的实施例中,聚类模块80根据声模型中所使用的参数的数量确定这个大小。这由方框86所描述。
然后,聚类模块80开始进行参数选择和将参数聚类以获得理想的数量。在执行这种操作时,聚类模块80首先选择一个浅处的语素S,例如在图3中所标明的某个浅处的语素。这由方框88所描述。然后,聚类模块80找出那些由浅处的语素S派生出来的深处的语素Des(s)。这由方框90所描述。接着,聚类模块80把来自深处的语素Des(s)的参数进行分类或合并。为了执行这种操作,聚类模块80首先找到在深处的语素Des(s)中所有参数中最近的一对参数。因为这两个参数最接近,所以组合它们就意味着会产生生成与那些参数相对应的训练数据集的似然性的最小衰减量。这个更为详细的描述可参照图5,这由方框92所描述。
一旦最近的一对参数被识别出来,那些参数便被聚类或合并。这由方框94所描述。此时,声模型中的参数被减少1。这由方框96所描述。
然后,聚类模块80判断参数的个数是否小于或等于声模型的理想大小。如果是,那么聚类就完成了。如果不是,那么聚类模块80选择另一个带阴影的语素并且重复执行这个过程以便聚类或合并其它的参数。这由方框98所描述。
发现最近的参数对
图5是一个流程图,它根据在图4中方框92所描述的,示出了聚类模块80如何找出用于聚类或合并的最近的一对参数。在识别出于语素Des(s)后,聚类模块80从子语素Des(s)中选出两个参数。这由方框100所描述。然后,聚类模块80在合并这两个参数之前,确定生成与这两个参数相对应的训练数据集的似然性。这由方框102所描述。其次,聚类模块80在生成训练数据集的过程中确定由于合并这些参数而引起的一个衰减量。这由方框104所描述。由方框102和104所描述的步骤在图示的实施例中根据所使用的隐含马尔可夫模型是离散的还是半连续的隐含马尔可夫模型亦或均是连续的隐含马尔可夫模型而可以修改它。
对于离散的和半连续的隐含马尔可夫模型,每个深处的语素由一个具有n个输入的离散输出分布来表示。为了确定两个离散的输出分布之间的距离,首先假设在一个输出分布中占有计数输入是{ai}且满足:
方程式1
同样地,对于第二个参数(或输出分布)假设占有计数输入是{bI}且满足:
方程式2
那么,生成对应于第一个输出分布的所有数据的似然性如下:
方程式3
其中,H(A)是分布A的熵。
同样地,生成对应于输出分布B的所有数据的似然性如下:
方程式4
在把分布A和B合并后,所产生的分布为具有总计数是A+B的计数输入{ai+bi}。因此,如果把A和B合并,那么在生成对应于深处的语素A的所有数据相对应于深处的语素B的所有数据的似然性中的损失量或衰减量是:
方程式5 ΔL=LA+LB-LA+B=(A+B)H(A+B)-AH(A)-BH(B)≥0
ΔL越小,似然性中的衰减量越小,两个分布越近。
对于具有高斯密度函数的连续隐含马尔可夫模型,可以使用两种不同的合并技术。第一种是把高斯密度函数的均值和协方差合并起来,而第二种是仅合并协方差,或者合并某些均值及较多的协方差。例如,当协方差太小时,模型的拖尾对训练数据来说变得太长,因此在引入新的试验数据时鲁棒性很差。而且,它已经被发现语音识别的精确度受协方差合并的影响要比受均值合并的影响小得多。
在第一个图示的实施例中,均值和协方差均被合并。因此,令X是对应于具有如下参数的第一个高斯密度函数(高斯1)的语音数据集:
方程式6 N(μ1,∑1)
且占有率为γ(x);
∑1其中μ1=高斯1的均值;
=高斯1的协方差。
现在,假设
方程式7
它等于在训练数据中高斯1的总占有率。
而且,假设高斯参数以最大似然方式例如Baum-Welch算法来被训练。那么用高斯1生成的数据X的似然性是:
方程式8
其中,d是特征矢量x的维数。
同样地,对于具有数据集y的高斯2,利用高斯2生成的数据y的似然性为:
方程式9
当把两个高斯合并时,而且假如又使用了一个最大似然训练技术时,那么数据x+y的模型由下列具有数据占有计数为A+B的高斯函数构成:
方程式10
和
方程式11
其中,T是矩阵转置。
因此,当把两个高斯合并时,似然性的衰减量是:
方程式12
注意,∑由方程式11计算出来且受μ1和μ2的影响。ΔL越小,生成数据的似然性中的衰减量越小,而两个高斯函数越近。
在另一个图示的实施例中,除去合并均值以外,还合并协方差。而在另一个图示的实施例中,只有协方差被合并,这些图示的实施例中的每一个都获得了相对于减少均值的个数在没有降低精确度的情况下(通过合并协方差参数)减少声模型大小的益处。
当两个协方差都合并但均值并不被合并时(即,当数据X的模型为N(μ1,∑)和数据y的模型为N(μ2,∑),由此产生的最大似然协方差被计算如下:
方程式13
其中,A+B是频率权。
应该注意到,在方程式13中所计算出的协方差不受均值的影响,因为均值是完全独立的。因此,对应于具有合并了的协方差的高斯密度函数,所生成的数据集的似然性中的一个衰减量仍用方程式12来计算。这通常表明,当合并或共享协方差时,只需要找到最近的一对协方差,不管数据的中心位于何处(即不考虑均值)。
再次参照图5,一旦根据参数的合并确定了所生成的数据的似然性中的衰减量,以及为了找出两个要被合并的最近的参数,则聚类模块80判断在方框104中所计算出的衰减量是否小于为合并以前的最近的一对已经过检测的参数所获得的衰减量。这由方框106所描述。如果是小于,那么判定正在被检测的当前这对参数比以前最近的那对参数实际更近一些,当前这对参数(即两个被选出的参数)被存储为最近的参数。这由方框108所描述。
如果在方框106中,由于合并两个当前所选出的参数而引起的似然性中的衰减量大于等于基于以前的最近的一对参数而引起的似然性中的衰减量,那么当前所选出的参数比以前的最近的一对参数要远,这对当前的这对参数就不能简单地被合并。
然后,聚类模块80判断是否需要检测用于合并的任何其它参数。如果需要,聚类模块80选出两个其它的参数并重复图5中所示的步骤。如果没有留下更多的参数要检测,那么聚类模块80通过聚类最近的一对参数又继续执行。这由图5中的方框110所描述。
检测结果表明了在不参照原始训练数据和不重新训练一个更小的声模型的情况下,根据系统约束条件而动态地减少声模型中的参数个数的本发明提供了比重新训练系统更高的精确度。例如,一个使用包含了6400个相关上下文的语素及每个语素包括12个高斯的最大似然受训声模型所建造的基线系统。另一个使用根据原始训练数据训练一个简化的声模型而开发的系统。这个简化的声模型包括一个具有3000个相关上下文的语素和每个语素包含8个高斯的最大似然受训声模型。当这个简化的系统遇到与基线系统相同的检测数据时,这个简化的系统在误码率上显示出比基线系统提高了16%。
与之对应,按照本发明也开发了一个系统,在该系统中,不用重新训练、不必提供对原始训练数据的访问就可从基线声模型中生成一个更小的声模型。这个较小的声模型与被重新训练的声模型一样具有3000个语素而每个语素包含8个高斯。然而,与被重新训练的声模型显示出的误码率增加了16%相对比,按照本发明所开发的声模型只显示出了比基线系统增加了11%的误码率。
因此,本发明为动态地减小语音识别系统的声模型的大小提供了一个有效的和精确的系统,以满足用户资源的需要。本发明也提供了一个共享式的协方差模型,该模型要么能够在不增加识别误码率的情况下减少存储器需求,要么能够通过给更多的高斯均值和混和权重重新分配空间来提高性能。本发明通过使用似然损失量和语素决策树结构对参数执行聚类或合并以指导聚类操作。不用重新训练、不必提供对原始训练数据的访问就可提供更小的、被重新配置过的声模型。
尽管参照首选的实施例已经对本发明进行了描述,但是精通本领域的人们应认识到,在没有违背本发明的宗旨和范围的情况下,在形式和细节上的修改是可能的,例如使用其他类型的密度函数用于CHMM输出分布。