具体实施方式
图1例示了一个可在其中实现本发明的合适的计算系统环境100的实例。该计算系统环境100只是合适的计算系统环境的一个实例,而无意对本发明的使用范围或功能作任何限制。该计算系统环境100也不能被解释为对于在操作环境示例100中所示的任一部分或其组合具有任何依赖或要求。
本发明可以在其它多种一般用途或特殊用途的计算系统环境或配置中运作。可以适合与本发明一起使用的众所周知的计算系统、环境和/或配置的例子包括,但不限于,个人计算机、服务器计算机、手持或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、电话系统、包含以上任何系统或设备的分布式计算环境等。
本发明可以在计算机可执行指令的总环境(诸如如由计算机执行的程序模块)中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的过程、程序、对象、组件、数据结构等。本发明也可以在由经通信网络联接的远端处理设备执行任务的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包含记忆存储设备的本地或远端计算机存储媒体上。
参照图1,实现本发明的一个示例系统包含计算机110形式的一般用途的计算设备。计算机110的部件可以包括,但不限于,处理单元120、系统存储器130、把包括系统存储器的多种系统部件连接到处理单元120的系统总线121。系统总线121可以是几种总线结构类型中的任何一种,这几种总线结构类型包括存储器总线或存储器控制器、外围设备总线、使用多种总线体系结构中任何一种的局部总线。举例而言,但非限制,这样的体系结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强ISA(EISA)总线、视频电子产品标准协会(VESA)局部总线,以及也被称为“夹层”总线的外围设备部件互连(PCI)总线。
计算机110一般包含多种计算机可读取媒体。计算机可读取媒体可以是可由计算机110访问的任何可购得的媒体,包括易失的与非易失的媒体、可擦除的与不可擦除的媒体。举例而言,但非限制,计算机可读取媒体可以包括计算机存储媒体和通信媒体。计算机存储媒体包括以任何方法或技术用于存储诸如计算机可读取指令、数据结构、程序模块或其它数据等信息的易失的与非易失的媒体、可擦除的与不可擦除的媒体。计算机存储媒体包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光盘存储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备,或任何可以用来存储所期望信息并可由计算机110访问的其它媒体。通信媒体一般具体表现为某种已调制的数字信号,如某种载波或其它传输机制的计算机可读取指令、数据结构、程序模块或其它数据。术语“已调制的数字信号”是指一种信号,其一个或多个特征以某种方式被设置或变化,以在该信号中编码信息。举例而言,但非限制,通信媒体包括有线媒体如某种有线网络或直接线缆连接,和无线媒体如声音、RF、红外及其它无线媒体。以上所述的任何组合也应包括在计算机可读取媒体的范围内。
系统存储器130包括易失和/或非易失形式的存储器,如只读存储器(ROM)131和随机存取存储器(RAM)132。在ROM131中一般存储基本输入/输出系统(BIOS)133,包含了如在启动的时候帮助在计算机110内的元件间传输信息的基本过程。RAM 132一般包含可立即由处理单元120访问和/或正由处理单元120运行的数据和/或程序模块。举例而言,但非限制,图1例示了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可以包含其它可擦除/不可擦除、易失/非易失的计算机存储媒体。仅举例而言,图1例示了读写不可擦除、非易失磁媒体的硬盘驱动器141、读写可擦除、非易失磁盘152的磁盘驱动器151和读写可擦除、非易失光盘156,如CDROM或其它光媒体的光盘驱动器155。其它可用于例示操作环境的可擦除/不可擦除、易失/非易失的计算机存储媒体包括,但不限于,盒式磁带、闪存卡、数字通用盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141一般经由不可擦除存储器接口,诸如接口140,连接到系统总线121,而磁盘驱动器151和光盘驱动器155一般通过可擦除存储器接口,诸如接口150,连接到系统总线121。
以上所讨论并在图1中例示的驱动器及与之相关的计算机存储媒体为计算机110提供了对计算机可读取指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141被例示为存储了操作系统144、应用程序145、其它程序模块146和程序数据147。请注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与之不同。这里给了操作系统144、应用程序145、其它程序模块146和程序数据147不同的编号,以最小程度地例示出它们是不同的拷贝。
用户可以经由输入设备,如键盘162、话筒163和指点设备161诸如鼠标、跟踪球或触摸板),来将命令和信息输入计算机110。其它的输入设备(来示出)可以包括操纵杆、游戏键盘、卫星碟形天线、扫描仪等。这些及其它的输入设备通常经由接入系统总线的用户输入接口160连接处理单元120,但也可以通过其它接口和总线结构,如并行端口、游戏端口或通用串行总线(USB)来连接。监视器191或其它类型的显示设备也经由诸如视频接口190的接口连接到系统总线121。在监视器以外,计算机还可以包含其它外围输出设备,诸如可以通过外围输出接口190连接的扬声器197和打印机196。
计算机110可以用与诸如远端计算机180的一台或多台远端计算机的逻辑连接在联网环境中运作。远端计算机180可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备或其它普通网络节点,并且一般包括以上关于计算机110所描述的多数或所有元件。在图1中所描述的逻辑连接包括局域网络(LAN)和广域网络(WAN),也可以包括其它网络。这样的联网环境在办公室、企业范围计算机网络、内联网和互联网中是很平常的。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接到LAN 171。当在WAN网络环境中使用时,计算机110一般包含调制解调器172或其它在WAN 173(诸如互联网)上建立通信的手段。调制解调器172,可以是外置的或内置的,可以经由用户输入接口160或其它适当的机制连接到系统总线121。在联网环境中,关于计算机110所描述的程序模块,或其部分,可以存储在远端的记忆存储设备中。举例而言,但非限制,图1将远端应用程序185例示为驻留在远端计算机180上。可以意识到,所示的网络连接是示例性的,还可以使用其它在计算机间建立通信链路的手段。
图2是移动设备200的方框图,这是一个可作替代的示例性计算环境。移动设备200包含微处理器202、存储器204、输入/输出(I/O)部件206,以及用于与远端计算机或其它移动设备通信的通信接口208。在某实施例中,前述这些部件通过合适的总线210互相连接进行通信。
存储器204以非易失电子存储器,如带有电池后备模块(未示出)的随机存取存储器来实现,这样当至移动设备的通用供电关闭时,存储在存储器204中的信息也不会丢失。存储器204的一部分最好被分配成用于程序执行的可寻址存储器,而存储器204的另一部分最好被用于存储,诸如用于模拟在硬盘驱动器上的存储。
存储器204包含操作系统212、应用程序214以及对象库216。在操作过程中,操作系统212最好是由处理器202从存储器204中执行。在一较佳实施例中,操作系统212是Microsoft Corporation的可商用的WINDOWS
CE商标操作系统。操作系统212最好是针对移动设备设计,并实现可由应用214通过一些公开的应用编程接口与方法来利用的数据库特性。在对象库216中的对象由应用214及操作系统212至少部分地响应对公开的应用编程接口与方法的调用而予以维持。
通信接口208代表了可以让移动设备200发送与接收信息的多种设备和技术。这样的设备略举几种,包括有线与无线调制解调器、卫星接收机和广播调谐器。移动设备200还可以直接与计算机相连接。以与之交换数据。在这种情况下,通信接口208可以是能够传输流信息的红外收发器或串行或并行通信连接。
输入/输出部件206包括多种输入设备,如某种可感知触摸的屏幕、按钮、滚轮和话筒,以及多种输出设备,包括音响发生器、振动装置和显示器。上面所列的设备是举例而言的,并不需要统统出现在移动设备200上。此外,在本发明的范围内,其它的输入/输出设备也可以被附属于移动设备200或出现在移动设备200上。
本发明为在多个应用中使用与调试统计学的语言模型及基于类的词典提供了一种手段。统计学的语言模型提供了字词序列在语言中出现的概率。n字列语言模型一般定义字词序列的概率为:
Pr(H)=Pr(w1)*Pr(w2|w1)*...*Pr(wi|wi-(n-1),...,wi-1)*…*Pr(wt|wt-(n-1),...,wt-1)
(方程式1)
其中H是字词序列w1,w2,...,wt,t为该序列中的字词数,n-1为已用于预测下一字词的已过字词的数量,而Pr(wi|wi-(n-1),...,wi-1)为第i个字词在已知前面n-1个字词时的概率。如此在二字列语言模型中n=2,而在三字列语言模型中n=3。
统计学的语言模型的一个问题是它们无法为未知的或罕用的字词,如专有名词提供精确的概率。为克服这一点,本发明使用了一种基于类的语言模型。
在本发明的基于类的语言模型中,该模型对字词类与单个字词的序列进行预测。为做到这一点,当在一个或多个字词处使用一个类时,应修改方程式1。例如,对于一个三字列语言模型,所计算的与一个类记号N相关的概率为:
Pr(H)=...*Pr(wi-1|wi-3,wi-2)*Pr(Ti|Ni)*Pr(Ni|wi-2,wi-1)*
Pr(wi+1|wi-1,Ni)*...Pr(wi+2|Ni,wi+1)*... (方程式2)
其中,为求简化,只显示了类概率附近的那些概率,Ni是在序列中第i个位置的类,Ti是类N中的一个实体,而Pr(Ti|Ni)指提供已知类N时实体T的概率的内部概率。在某实施例中,该内部概率由定义在每个类中所出现字词的类实体词典来提供。在一实施例中,该类实体词典提供了一套定义在特定类中所出现已知字词的语法规则。例如,针对类[名字]的上下文无关语法可以包含“Hank Hanson”规则。外部概率(某个类在前面字词中的概率)由基于类的语言模型提供。
基于类的语言模型有助于克服与某些类的字词(诸如专有名词)相关的稀少问题。这样的字词在训练数据中出现得如此稀少,以至于不使用类的语言模型将总是会倾向于更为普通的字词,而不是这些少用的字词。通过使用类,本发明的语言模型增大了类被识别出来的概率,因为在训练数据中一个字词类比该类中的单个字词发生得更为频繁。
基于类的语言模型或类实体词典在使用前,必须先训练。在一实施例中,基于类的语言模型或类实体词典通过首先标记训练语料库,以根据一套试探法来标识在类范围内的字词,而初始地训练。这套试探法提供了一套根据输入中的其它字词来预测某个类字词位置的规则。例如,如果动词“叫”是一个输入的字词,则试探法规则能指示可以将“叫”的后一个或后两个词考虑成[名字]类的部分(如,“叫Jack Jones”)。
用试探法所标识出的字词将由它们的类来替代,然后用标准训练法来按语料库中的字词和类训练基于类的语言模型。
类实体词典通过将每个类中所标识的字词划分成子部分来初始地训练。然后在标准n字列训练技术中用这些子部分来标识这些字词在类中的概率。这样的概率就构成了类的内部概率。
本发明在另外的方面提供了根据用户的输入而对类实体词典和基于类的语言模型的更新与扩充。特别是,在用户改变某个已译解的字词序列时,类实体词典可得以扩充,这样修改后的序列就包含了某个不在类实体词典中的字词。例如,如果基于类的语言模型和类实体词典译解了字词序列“写一封信给Phil”,而用户将该序列改变为“写一封信给Bill”,则“Bill”如果以前不在类实体词典中,就将会被添加到类实体词典中。
为了在类实体词典中添加一个实体,必须确定该实体的内部概率。如上面所记述,内部概率提供了已知类时实体的概率。这一概率无法准确计算,因为没有足够的数据来确定已知该类时该实体的概率。取而代之的是,在本发明的实施例中,通过假设该实体内部概率和该类的语言模型概率的乘积至少应该等于由译解器所不正确地标识的字词的语言模型概率,来估计这一内部概率。
以一个对三字列语言模型的方程式而言,这一假设为:
Pr(Ti|Ni)*Pr(Ni|wi-2,wi-1)=Pr(pi|wi-2,wi-1) (方程式3)
其中Pr(Ti|Ni)为已修改的实体Ti在类Ni已知时的内部概率,Pr(Ni|wi-2,wi-1)为类Ni在序列中前面两个字词已知时的语言模型概率,而Pr(pi|wi-2,wi-1)为先被译解而后又被修改形成修改后实体Ti的不正确实体pi的语言模型概率。
利用这一假设,就可以估计内部概率为:
(方程式4)
然而,这一估计高度依赖于序列中前面的字词。为减少这一依赖而使估计更为通用,该概率可以重新写为:
(方程式5)
其中Pr(pi|<unknown>i-2,<unknown>i-1)代表pi在任何两个前面字词给定时的概率,而Pr(Ni|<unknown>i-2,<unknown>i-1)代表Ni在任何两个前面字词给定时的概率。请注意,通过以<unknown>标记替代前面的字词,并确定pi和Ni在<unknown>标记给定时的概率,Pr(pi|<unknown>i-2,<unknown>i-1)和Pr(Ni|<unknown>i-2,<unknown>i-1)得以在训练过程中存储入语言模型。
在为所修改的实体估计出概率后,就可以将所修改的实体和所估计的内部概率添加到类实体词典中适当的类下。
用户对所译解字词序列的修改并不总是包含没有出现在类实体词典中的字词。取而代之的是,原来所译解的字词或已修改的字词都可以出现在类实体词典中。图3提供了用于根据用户的修改确定如何来改变类实体词典的步骤的流程图。
总的来看,图3中的过程可以以三种方式来调整内部概率。对于已经在类实体词典中的修改过的字词来说,该字词未得到译解的事实说明其内部概率过低。因此,其概率需要增高。对于已经在类实体词典中的已译解的字词来说,用户修改该字词的事实说明所译解字词的内部概率过高。因此,其概率需要降低。对于不在类实体词典中的已修改的字词来说,所修改的字词需要添加到词典中,并用上面的方程式5来计算其初始概率。
为确定要采取哪种调整,图3中的过程开始于步骤300,在该步骤中检查经过用户修改所产生的字词序列,以判定所修改的字词是否在类实体词典中。如果所修改的字词在类实体词典中,则在步骤320进行所修改的字词是否仅发现在单个类中的判定。
如果所修改的字词发现在多于一个的类中,则利用基于类的语言模型,通过使用单独序列中每一可能的类,并标识出提供最大概率的序列,来选择最为可能的类。在图3中这被显示为步骤322。
如果在步骤320中所修改的字词仅发现在单一类中,或者在步骤322中标识出一个类后,则需要调整所修改字符的内部概率,因为即使所修改的字词在类实体词典中,由于其内部概率过低,译解器也没能从输入中标识出它们。为纠正这一情况,在步骤324中提高存储在类实体词典中的所修改字符的内部概率。在某些实施例中,通过乘以一个1.5的因子来提高该内部概率。
如果在步骤300中所修改的字符不在类实体词典中,则在步骤302中使用一套试探法来确定所修改字符的类。然后用这些类中的每一个来与其它已译解的字词组建单独的序列或词语。而后用基于类的语言模型来标识最为可能的序列,从而标识出所修改字词的最可能的类。
如果在步骤304中可以对所修改的字词标识出类,则在步骤308中用上面的方程式5来确定所修改字词的内部概率,并在步骤310中将所修改的字词及概率添加到类实体词典中。
如果在步骤304中对所修改的字词无法标识出类,则在步骤312中检查已译解并由用户所修改的字词,以判定该已译解的字词是否在类实体词典中。如果在步骤312中该已译解的字词在类实体词典中,则该已译解字词而非所修改字词被标识出来的事实意味着该已译解字词的内部概率被设置得过高。为纠正这一情况,在步骤314中降低该已译解字符的内部概率。在许多实施例中,该内部概率降低1/1.5。(换句话说,就是将该内部概率除以1.5来形成新概率)。
如果在步骤312中该已译解的字词不在类实体词典中,则既然该已译解字词与所修改的字词都不在某个类的范围内,就不需要对类实体词典做任何改变。因此,在步骤318中类实体词典不变。
本发明中的基于类的语言模型及更新基于类的语言模型的方法可以用于许多系统。例如,图4提供了一个可以在图1和2的环境中实现并利用本发明某个实施例的语音一字符转换系统400的方框图。在图5的流程图中显示了这一系统的运作。
在图5的步骤500中,将语音输入402,即出现在基于字符的语言如汉语、日语或朝鲜语中的字符的语音描述,提供给译解器404。在汉语中,语音输入的一种具体形式是拼音输入。在步骤502中,译解器404首先用词典406建立一个可以以该语音输入表示的字词格。然后在步骤504中通过使用类实体词典412和试探法规则416从该格的字词中标识类实体来对该格进行扩充。所标识出的类将作为单独的节点而添加到该格中。
在步骤506中,译解器404利用提供路径上每个字词表示一个语音段的概率的语音模型408、提供类的内部概率的类实体词典、提供字词和/或类的序列发生在语言中的概率的语言模型310,以及上面的方程式2,为经过该格的每条路径确定概率。然后在步骤508中将提供最高概率的路径上的字词序列作为所译解的字词串输出。
在所译解出的序列提供给用户后,系统可以在步骤510中接收用户的修改。这样的修改指示出用户通过其输入所想要的正确字词。在步骤512中,检查这一修改,以确定如何用它来使用图3中的过程改变类实体词典。特别的是,类析取单元422使用试探法416和类实体词典412来为所修改的字词标识类,并判定所译解的字词或所修改的字词是否在类实体词典中。而后一个概率确定单元424如在上面图3中所指示的那样,计算所修改字词(如果它没有出现在词典中)的概率,或为所修改的字词或所译解的字词确定新的概率,以改善译解器的表现。
在第二个实施例中,本发明的基于类的语言模型用于语音识别系统,诸如图6中的语音识别系统。在图6中,来自说话者600的输入语音信号和加性噪声602通过与模数(A/D)转换器606连接的话筒604转换成电信号。
A/D转换器606将来自话筒604的模拟信号转换成一系列数字值。在若干实施例中,A/D转换器606以16kHz与每次采样16比特来对模拟信号进行采样,从而生成每秒32千字节的语音数据。
由A/D转换器606所生成的数字数据供给可任选的降噪模块608,该模块用一种或多种降噪技术来消除该数字信号中的部分噪声。
降噪模块608的输出供给从该数字信号中析取特征的特征析取器600。特征析取模块的实例包括用于执行线性预测编码(LPC)、源于LPC的倒谱、感知线性预测(PLP)、听觉模型特征析取和Mel频标倒谱系数(MFCC)特征析取的模块。请注意,本发明并不限于这些特征析取模块;其它的模块也可以用于本发明的环境中。
特征析取模块从降噪模块接收数字值的流,并生成特征向量的流,其中每一个特征向量都与一帧语音信号相关。在许多实施例中,帧的中央以10毫秒间隔。
请注意,尽管在图6的实施例中降噪模块608被显示在特征析取器600之前,但在其它实施例中,降噪模块608出现在特征析取器600之后。
由析取模块所生成的特征向量流供给译解器612,译解器612根据该特征向量流、特殊词汇614、语言模型616、声学模型618、试探法规则622和类实体词典620来识别出一个最为可能的字词序列。
声学模型618提供了由语言单元如元音素、音素、双音素或三音素的发音来产生某个输入特征向量的概率。
译解器612使用语言模型616、类实体词典620和试探法规则622的方式与译解器404使用语言模型410、类实体词典412和试探法规则416的方式相似。
根据声学模型、语言模型、特殊词汇、类实体词典和试探法规则,译解器612从所有可能的字词序列中识别出一个最为可能的字词序列。具体而言,译解器612使用图5中的步骤500、502、504、506和508来标识该最为可能的字词序列。
然后该最为可能的字词序列要受到可能的用户修改630。如果用户修改了所译解的序列中的字词,则所修改的字词将被提供给类析取单元632和概率确定单元634,其运作方式与图4中的类析取单元422和概率确定单元424相似。而后,利用图3中的过程,就能根据用户对所译解字词的修改来修改类实体词典620。
尽管本发明是参照特殊的实施例所描述,相关技术的熟练工作者将认识到,可以不背离本发明的精神和范围,而在形式与细节上作出改变。