用于文本语音转换处理的变换表和词典的制作方法

文档序号:6378184阅读:222来源:国知局
专利名称:用于文本语音转换处理的变换表和词典的制作方法
技术领域
本发明涉及变换表和词典。本发明特别适用于,但不限于,文本-语音转换(TTS)的处理,更具体地说,对汉字进行这种处理。
背景技术
有时人们希望一种装置能从文本产生语音,也就是说文本-语音转换(TTS)处理。例如当一个司机在其无线电话上接收文本消息时,如果把文本作为语音提供给他,而使其不必在电话屏幕上读出文本,则更安全。还有许多另外更安全的情况。此外,根据用户需要,有时它可以更方便或者简单地是一种优选选择(尤其当用户是盲人时)。
在其最简单形式中,TTS处理包括接收和识别一个字符并且总是将它以相同的方式发音。然而,这是不自然的,在大多数语言中,一个字符根据它所在的词中或语言或上下文的部位而可能有不同的读音音或发音。在某些语言中,结果一般是能理解的,但在另一些语音,尤其具有读音调的语言中,它将不可理解。
解决这个问题的一种显而易见的方法是把每个词的全部发音作为一个分开的信号存储。然而,每个单词的分开发音占用大量存储器空间并且在一部词典中有成千上万的词,如果以任何方式定额存储器,则这种方法就起到了阻止作用。
因此,一种可供选择的方案是提供一种词典,在所述词典里,每个词仍有它如何发音的细节,但共享更多的信息以便减少存储器的使用。尤其是,对词典里的每个词,任何字符的每一种可能的发音都指定一种不同的参考发音。涉及词典中各词的记录每个都存储一个指示符,指示供那个词中每个字符用的参考发音。查找这些参考发音以便提供词的全部发音。
尽管这第二种方法可用于基于字母或拼音字母表(如希腊字母,阿拉伯字母,西里尔字母/或古埃及字母)的文字,但它们在表意文字,如中文,日文或朝文的情况下不那么有用。
有大约21000个不同的汉字,这些汉字之间可以分出大约1400种不同的读音音。存储这些字当中的每个字的每种可能读音音的详细情况占用大量的存储器并且由此产生过多功耗的问题。因此,它使对中文或其它语言进行TTS更难以实施。
发明概述在本说明书包括权利要求书中,术语“包括”,“包含”或类似术语意指非排他的包括,因此,包括一系列元素或部件的方法或装置不是仅仅包括那些元素或部件,而是可以包括未列出的另一些元素或部件。
根据本发明的一个方面,提供了一种存储多个发音记录的存储器,所述发音记录对应于由一个或一个以上字符构成的各单词。所述记录包括涉及对应于那些记录中各字符特定发音的信息。所述记录没有涉及单词内单音字符发音的信息。
这种存储器可以是一个存储各特定词发音信息的词典,但通过只存储涉及每个词内任何多音节发音的信息而节省了空间。
根据本发明的另一方面,提供了一种产生一种供对应于文本的语音信号的方法。该方法包括接收对应于一个词的数据,所述词包括至少一个单音字和至少一个多音字。它还包括产生一种发音选择字符串,所述发音选择字符串包括涉及上述词或每个单音字发音识别符的信息和涉及用于上述词或每个多音字的多个可供选择的发音识别符的信息。另外,该方法检索一个语音属性序列,所述语音属性序列包括上述词中单字特定发音的信息,其中检索的语音属性序列没有涉及上述词内单音字发音的信息。一个词发音字符串是根据所产生的发音选择字符串,利用检索的语音属性序列来选择用于该词或每个多音字的许多可供选择的发音其中特定的一个发音而产生的。
利用这种方法,可以与一个变换表相结合使用一部词典,例如上述的词典,将各字符变换到它们可能的发音,以便产生TTS信号。
根据本发明还有另一个方面,提供了一种存储器存储许多个对应于各个单字的发音识别符的存储器。每个单字都用一独特的代码标识符识别。记录包括多个可供选择的发音识别符,此处对应的字是多音字。记录存储在各独特的地址处,上述地址是由一个散列函数应用到用于单字的代码标识符上得到的。
这种存储器可以是一种变换表(例如如上所述),所述变换表把字符发音识别符存储在与独特地识别各字符的所述代码标识符相关的地址中,上述代码标识符独特地识别各字符。它通过不存储各字符本身及只把存储的发音识别符通过地址链接到各字符上来节省空间。
根据本发明还有另一方面,提供了一种存取一变换表以便得到一个或多个发音识别符的方法,上述一个或多个发音识别符对应于由一独特的代码标识符识别的一个单字。该方法包括利用一个散列函数应用到所述单字的代码标识符上产生一个独特的地址,并检索存储在所产生地址处的一个或多个发音识别符。
利用这种方法,可以快速而方便地存取一个例如如上所述的变换表。
上述不同的方面全都特别适用于表意文字,例如汉字。各发音识别符可以,例如是汉语拼音方案(拼音)音节或在拼音表中规定用于它们的索引。
附图简述为了容易理解本发明并付诸实践,现在将参照


一个非限制性的优选实施例,在附图中图1是根据本发明的一种无线电话实施例的方框图;图2是具有其代码标识符的某些汉字的列表;图3示出了用于几个字符的拼音实体的实例;
图4是形成一压缩的变换表的流程图;图5是用一压缩的变换表得到汉字拼音实体的流程图;图6A是用于本发明一个方面的实例所用的汉字;图6B是图6A的词中各个字带有它们拼音实体的清单;及图7是当输入的字符流转变成语音时涉及词典和变换表的流程图。
优选实施例详细说明在附图中,不同图上的相同标号始终用来表示相同的元件。参见图1,图1示出了一种根据本发明至少一个实施例的无线电话1。无线电话1具有一个射频通信单元2,所述射频通信单元2与一处理器3耦合通信。一个取屏幕4和小键盘5形式的输入接口也与处理器3耦合通信。
处理器3包括一个编码/解码器6,所述编码/解码器6具有一个相关的只读存储器(ROM)7,存储用于给话音或其它信号编码和译码的数据,上述数据可以用无线电话1发送或接收。处理器3还包括一个微处理器8,所述微处理机8通过一个公用数据和地址总线9耦合到编码/解码器6和一个相关的字符只读存储器(ROM)10,一个随机存取存储器(RAM)11,一个静态可编程存储器12和一个活动的SIM组件13上。静态可编程存储器12和SIM组件13中的每个都可以存储选定的进入的文本消息和一电话号码的电话薄数据库。
微处理器8具有若干用于耦合到小键盘5、屏幕4、一个装有振动电机和有关驱动器的报警组件、话筒和扬读音器16等上的端口。
字符ROM 10存储用于给文本消息编码或译码的代码,上述代码可以由通信单元2接收通过键盘5输入。字符ROM 10还存储用于微处理器8的操作码(OC),其中包括用于文本-语音转换(TTS)处理的操作码,用于汉字的操作码,及用于这种文本-语音转换(TTS)处理的数据。这包括使汉字与发音码有关的变换表,含有对应于发音码读音音信号的发音表,上下文分析软件,尤其是用于把中文文本分开成独立词的软件,及一个含有专用汉语词发音信息的词典。上述这些操作在下面讨论。
射频通信单元2是一种具有共用天线17的组合式收发两用机。通信单元2具有一个通过一射频放大器19耦合到天线17上的收发两用机18。收发机18还耦合到一个组合式调制/解调器20上,上述调制/解调器20将通信单元2耦合到处理器3上。
下面说明的本发明的各个方面和实施例尤其涉及文本-语言转换过程(TTS),但本发明不限于这种情况。
有大约20,000多个不同的汉字,在它们之间可以有大约1400种不同的读音。因此,许多汉字可以用相同的方式发音(亦即,它们实际上是同音异意字)。此外,同样的汉字也可以根据上下文用不同的方式发音。如果一个字符,例如一个汉字在该系统内有一种以上发音,则这里把它称为多音节。另一方面,如果它只有一种发音,则这里把它称为单音。
为了能识别特定的字,在各种系统中已经对汉字集合进行了编码。例如,有Unicode编码,用于简化汉字编码的GB2312(国标)编码,用于繁体汉字的编码的BIG5,包括GB2312的简体汉字和BIG5的繁体汉字的GBK(国标扩展)编码,GB 18030-2000等。在大多数这些系统中,编码提供一种双字节字符集。集内的每个字都具有一独特的2字节编号形式的标识符,通常用16进制表示。本说明书中所用的例子以GBK和GB18030-2000编码为基础(GB 18030-2000包含GBK的定义,但按照所用的字节长度序列(高达4个字节)包括更大的代码空间)。各实例只用2字节序列。
在GBK代码(及GB 18030-2000的2字节代码)中,高位字节范围从129到254(0×81-0×FE),低位字节范围从64到126(0×40至0×TE)和128到254(0×80至0×FE)。因此,识别符范围在十六进制中是从8140到FEFE(但缺少任何结束7F)。因此,这个代码限定了23,940个码点,其中21,886个码点被分配。在这些已被分配的码点中,有20,902个码点被分配给汉字(有另外80个左右码点分配给汉字字根)。为了容易理解,图2列出了某些汉字及其GBK代码识别符。尽管用GBK体现并举例说明了本发明的各种不同情况,但本发明并不限于此。它可以用其它的编码系统,例如上述的那些系统。另外,它不限于只和汉字一起用,显然,它可用于其它表意文字。
拼音是识别汉字发音(或可能的发音)的一种国际上公认的方法。有大约1400种不同的拼音实体(pinyin entity)(音节),其范围从“a1”到“Zuo4”,并包括a1,a2,...a5,ai1,...ai4,an1,...an4...,Zui3,Zui4,Zun1,Zun3,Zuo1...Zuo4其中每个音节内的字母识别一般读音音,而数字可供使用专门的重音字符或音调。因此拼音“a1”发音与拼音“az”不同。
压缩变换表汉字可以用它们的发音存储在一个基准变换表中,同时发音取一个或多个拼音实体明细表的形式存储。图3示出了一些拼音实体的实例,对一个单音字,在GBK(拼音chu 1)中表示为B3F5,一个双读音多音字在GBK(拼音Zhong 4或Chong 2)中表示为D6D8,及一个三读音多音字在GBK(拼音Zhong 4,Zhong 3或Chong 2)中表示为D6D6。拼音实体的顺序代表它们预期的使用频率。在任何序列中左面的实体被认为是第一实体并且是那个字的最常用的发音。
图4示出了一种用于产生汉字发音词典压缩的变换表,尤其是产生一种要求比上述基准变换表存储量减少的压缩变换表的方法。这种方法可以在典型的台式计算机或类似的(适当地编好程序的)机器上进行。
首先,将一个字的计数“i”设定到0(步骤S100)。从一字符数据库中检索出与现有字计数有关的字,并在一拼音字符串中一起检索出其拼音实体(步骤S102)。在这个实施例中,字及其拼音实体从一基准变换表40中检索。然后,对拼音字符串内的每个实体提供一个索引号(步骤S104),以便提供(一个或多个索引号的)索引序列。这是通过搜索包括所有的拼音实体的拼音表42实现的,每个实体都具有一个与它有关的独特的识别索引号,所述索引号在0和约1400之间。
搜索优选的是一种二进制搜索,起初用整个索引号范围的中项,确定目前搜索的实体属于哪一半,然后用那一半范围的中项,确定目前搜索的实体属于这一半范围中的哪一半,并重复该过程,直至找到正确的索引号为止。另一方面,如果字已经用它们的拼音实体索引号存储在变换表或其它源中,则所要做的就是检索那个数据,而不是检索拼音实体本身并将它们转变回到它们的索引号。各索引号与和基准变换表一起使用拼音表42中所用的那些相同。然而,如果不同的拼音表和要产生的压缩变换表一起用,那么不同的索引号将出现在索引序列中。
然后对上述字计算变换表内汇编的地址(步骤S106)。这是利用基于那个字的代码标识符的散列运算实现的。更准确地说,这样计算地址=(标识符高位字节-129)*191+(标识符低位字节-64)。
从标识符高位字节中减去129是因为在GBK代码标识符的情况下,高位字节在129处开始。同样,从低位字节中减去64是因为在GBK代码标识符的情况下,低位字节在64处开始。在其它编码系统情况下,这些编号因而不同。
通过将每个索引号转变成2字节,将(来自步骤S104的)字索引序列编码(步骤108)。由于即使最大的索引号只用其高位字节(十进制中的1400在十六进制中是0578)的4个最小有效位,所以这留下那个字节的4个最大有效位可自由提供其它信息。在本实施例中,用它在一个序列第一索引号的代码中表示在那个序列中各索引号的编号,所述索引号的编号实际上表示所述字的拼音实体的编号。作为一种可供选择的方案,它可以同样的方式用在一个序列每个索引号的代码中。
然后将(来自步骤S108的)索引序列代码存储(步骤S100)在压缩的变换表中(来自步骤S106的)相关的字地址处。在此之后,方法确定是否它已经完成,亦即是否基准变换表中所有的字都用这种方式(步骤112)处理过了。这种确定是基于在这种情况下是否字符计数编号“i”已达到它的最大数23,939。如果过程没有完成,亦即如果还有任何待处理的字,则计数的编号“i”增加1(步骤114),并且过程返回到从基准变换表检索下一个字(步骤102)。字计数“i”在所用的代码空间范围内从0到代码的最大数(考虑从0开始少1)。然而,它可以有其它的范围,例如向上从8140到FEFE(十六进制)(如果希望的话,不考虑低位字节小于40或者是TF(十六进制)的那些数),这取决于在字数据库40中是如何安排或识别的。
如果(在步骤S112中)确定过程已经完成,则过程结束并且压缩的变换表随着存储在图1的无线电话1的只读存储器10中而完成。压缩的变换表只包括地址,其中存储初始拼音表42内涉及索引号的各对字节。
如上所述,对GBK,有23,940个码点,但只有20,902个汉字。从33,088(十六进制8140)到65,278(十六进制FEFE)当中,不是每个值都被一个汉字占据。实际上,最后被占据的码点目前是65,184(十六进制FEAO)。因此,有3038个空格或者非汉字值。当压缩基准表时,这3038个值设定为虚汉字,以便使编码能够继续。然而,由于它们没有相关的拼音实体,所以不存储在压缩的表中。
压缩的变换表的规模约为49KB,用于20,169个单音字和733个多音字(其中有107个具有三个或三个以上索引号)。这是与用于基准变换表的约182 KB的规模相比较,上述基准变换表包括汉字本身。拼音表的规模约为7KB,其中包括所有1381左右拼音实体,长度范围从2到7个字节(比如“a1”-“Zhuang 4”)。
下面是如何在两个不同的字上操作这个过程的实例,这两个不同的字中的一个是单音字,而另一个是多音字。
单音字在步骤S102,当字的计数“i”达到了9780(在字被识别为B3F5处)时,从基准变换表40检索对应于那个字的相关拼音实体字符串。上述字在图2和3中示出。拼音实体字符串是拼音实体“Chu 1”,如图3中所示。
在步骤S104,检索拼音实体字符串中每个拼音实体的索引号。在这种情况下,只有一个这样的实体“Chu 1”,具有索引号为147。因此,索引序列是147。
在步骤S106,检索用于该字的索引序列的地址。其代码标识符是B3F5。因此,它的高位字节=179,它的低位字节=245(十进制)。
地址=(179-129)*191+245-64=9731在步骤S108,给索引序列编码。147(十进制)变成0093(十六进制),然后,加1到高位字节的头4位上,因为索引序列只包含一个数。因此,编码后的索引序列变成1093。
在步骤S110,将索引序列1093存储在地址9731处。
在步骤S112,目前的计数“i”位于9780处,低于24,065。因此,在步骤S114加1到计数上,并且过程转回到步骤S102,当前计“i”为9781。
多音字在步骤S102,当字的计数“i”达到了16279(等效于标识符D6D8)时,从基准变换表40检索相关的拼音实体字符串。字在图2和3中示出。在图3中拼音实体字符串是“Zhong 4 Chong 2”,在左面项“Zhong 4”开始。
在步骤S104,检索拼音实体字符串中每个拼音实体的索引号。在这种情况下,有两个这样的实体,一个等效于具有索引号为1326的音节“Zhong4”,而另一个等效于具有索引号为140的音节“Chong 2”。因此,索引序列为1326 140。
在步骤S106,得到上述字的索引序列地址。其代码标识符是D6D8。因此,它的高位字节=214,和它的低位字节=216(十进制)。
地址=(214-129)*191+216-64=16387在步骤S108,将(来自步骤S104的)索引序列编码。1326(十进制)变成05 2E(十六进制)和140(十进制)变成00 8C(十六进制)。然后,在第一对字节的高位字节头4位上加2,因为索引序列包含2个数字。因此,编好码的索引序列变成25 2E 00 8C。
在步骤S110,将索引序列25 2E 00 8C存储在地址16387处。
在步骤S112,目前的计数“i”位于16279处,低于24,065。因此,在步骤S114处加1到计数上,并且过程转回到步骤S102,当前的计数“i”为16280。
存取压缩表图5示出了根据一个汉字的代码标识符,利用压缩的变换表得到该字拼音实体的过程。
提供第一代码标识符(步骤S202)。利用代码标识符,用与图1的压缩过程(步骤S106)基本相同的方式,计算一个地址(步骤S204)。
地址=(标识符高位字节-129)*191+(标识符低位字节-64)然后用这个地址从压缩的变换表中检测索引序列代码,并将它们解码(步骤S206),这些代码通过序列中第一编码的索引号高位字节的4个最大有效位表示索引序列中索引号的编号(如图1的步骤S108所述)。
用索引序列号来从拼音表中查找拼音实体,由此恢复拼音字符串(步骤S208)。
确定(步骤S210)目前的代码标识符是否是拼音字符串待检索的最后标识符。如果不是,则得到下一个代码标识符(步骤S212)并且过程返回以便计算用于那个代码标识符的相关地址(步骤S204)。如果是最后的代码标识,则这个存取过程结束。
下面是对两个不同的字如何操作这个过程的实例,这两个字中的一个是单音字和另一个是多音字。
假定存取过程是用于存取两个字的拼音实体,上述两个字由代码标识符B3F5和D6D8识别。在步骤S202,过程识别第一个代码标识符B3F5。在步骤S204,产生一个用于它的地址。其高位字节=179且其低位字节=245(十进制)。
地址=(179-129)*191+245-64=9731在步骤S206,过程从压缩的变换表中检索索引序列代码并将它们解码。存储在地址9731处的索引序列代码是10 93。第一个整数“1”表示在序列内只有一个编号,该编号被编码成00 93。将这个代码解码成其十进制等效数147。
在步骤S208,用索引序列来从拼音表中查找相关的拼音实体,从而恢复拼音字符串。对这个序列,只有一个对应于拼音实体“Chu 1”的索引号147。
在步骤210,过程确定B3F5不是最后的代码标识符。因此,在步骤S212处,它检索下一个代码标识符D6D8。
在步骤204,产生用于这下一个代码标识符D6D8的地址。其高位字节=214,其低位字节=216(十进制)。
地址=(214-129)*191+216-64=16387在步骤206,过程从压缩的变换表检索索引序列并将它们解码。存储在地址16387处的索引序列的代码是25 2E 00 8C。第一个整数“2”表示在序列内有2个编号,这两个编号的编码为05 2E和00 8C。将这些解码成它们的十进制等效数为1326和140。
在步骤S208,利用索引序列来从拼音表中查找相关的拼音实体,从而恢复拼音字符串。对这个序列,有2个索引号1326和140,它们分别对应于拼音实体“Zhong 4”和“Chong 2”。
在步骤210,过程确定D6D8是最后的代码标识符,因此,变换表存取过程结束。
词典组织结构变换表存取容易恢复相应于一个汉字的拼音字符串。然而,一个汉字的发音取决于它的上下文环境。因此,试图确定任何字正确发音的一种方法是利用合适的分段软件将任何输入的汉语句子分段成若干分开的词。上述这种软件可以,例如从中国科学技术大学的iFly有限公司公开购买到。
然后,在一部词典中查找每个词,上述词典具有以逐字为基础存储的那个词合适发音细节的发音记录。也就是说,除了如下所述情况之外,当第一个字出现在那个特定词的那个位置时,它存储用于上述第一个字的正确发音的细节,然后当第二个字出现在那个特定词的那个位置时,它存储用于上述第二个字的正确发音的细节,如此类推直到所述词的末尾。
本发明一个方面的词典用下面的格式存储单词的发音记录和发音细节

“词”-这是作为一个2字节代码标识符序列存储的词本身。
“词性索引”-每个汉语词都具有一个或一个以上词性,所述词性可以帮助词分段和确定发音;这个字段具有1个字节。
“语音属性字节X”-每个都是1个字节。用高位4位作为字索引,也就是说,用来表示它所涉及的特定词内的哪个字,因为在这部词典中的词决不会有任何多于16个字的词。
用低位4位作为拼音索引,也就是用来表示那个字的发音,因为没有一个汉字有6个以上的可能发音(因此,它们全都具有5个或少于5个的有关拼音实体)。拼音索引还涉及恢复的拼音字符串中相关拼音实体的位置,上述恢复的拼音字符串从如上所述的压缩变换表中存取,从任何这种字符串的左端处开始。
“分割标志”-这可以用来确定词边界。
然而,这种结构也能减少词典的规模。因为单音总是具有同样的发音,所以不必存储每个词是如何发音的细节。只需要对多音字做到这点。因此,“语音属性字节”只对多音字存储;记录缺少各个单音字发音的信息。例如,如果有一个7个字的词,其中只有第二,四,五和七个字是多音字,则在该词的情况下,只存储4个“语音属性字节”,第一个开始是0001(二进制),第二个开始是0011(二进制),第三个开始是0100(二进制)和第四个开始是0110(二进制)。
以图6A中所示的汉语词作为一个例子。它含有3个单音字和3个多音字,它们具有如图6B所示的代码标识符和可能的拼音实体。在用于这个词的相关词典记录内,把词存储如下

由于有3个多音字,所以有3个语音属性字节;3个单音不需要它们。第一个语音属性字节的高位4位是0000,意指它涉及第一个字。第一个语音属性字节的低位4位是0000,意指它涉及这个字的第一发音,所述第一发音对应于“bu 4”(从图6B中可看出)。第二语音属性字节的高位4位是0001,意指它涉及第二个字。第二语音属性字节的低位4位是0000,意思是指它涉及该字的第一发音,所述第一发音对应于“de 2”(从图6B可看出)。第三语音属性字节的高位4位是0100,意指它涉及第四个字。第三语音属性字节的低位4位是0001,意指它涉及这个字的第二发音,所述第二发音对应于“Wei 2”(从图6B中可看出)。
在另一个优选实施例中,词典不仅不包括用于单音的语音属性字节,而且还不包括它打算用多音节第一发音的地方。实际上,这意味着对所有的字,打算用的发音是索引序列中第一个发音,除非有一个语音属性字节。
此外,为了进一步节约空间,在形成词典时,去除所有词共用的开头汉字,将每个词记录存储在基于它的前头汉字的一部分中。这样记录中的“词”字段只从词的第二个字延伸。
因此,在这种优选的词典组织情况下,例如上面所给出的,具有图6A中所示的词,则词记录变成

开始的代码标识符B2BB被去掉;而把这个记录存储在用于那个字开头的词的一部分中。
这个词中只有第五个字不是按照它的索引序列中的第一发音进行发音。因此,只有一个字需要语音属性字节。如果第一个字不是按照它的索引序列中的第一发音进行发音,则即使它不再在这个记录开始处的字标识符字符串中出现,它也仍有一个语音属性字节。
这个词典大约有80,000词,总计有197,442个汉字,其结构能将规模从约1.6MB减少到395KB。这包括去除所有词的共用开头汉字,这样能节省约160KB(80,000词乘以2个字节)。此外,采用拼音索引号代替实际拼音实体,这样能节省约700KB。另外,把194个词性索引符号转变成1个字节索引并放在一个表中,能节省340KB。
而且,利用散列运算和近似二分法搜索,这种类型的词典支持快速搜索以检索词的属性(对应于这个词的词性和语音属性)。
在上述优选实施例中,各部分都是基于共用的前头字。然而,如果有许多词以一个以上字的特定字符串开始,则某些部分可以基于共用的开头字符串而不仅仅是共用的开头字。
图7是一个涉及词典和变换表的流程图,当一输入的字符流待转变成语言时,一起使用上述词典和变换表。
接收一个取2字节代码标识符的字符串形式的字符串(步骤S302)。把最初的字符串分段成若干词(步骤S304)。对每个词,检索该词内每个字的索引序列(步骤S306)。这实际上是一个发音选择字符串,因为它包括字是多音节时的不同选择。这是通过对每个字按顺序,如参照图5的流程图所述,存取变换表产生的,只是在每次通过过程时不包括步骤S208。在词典中找出每个词的发音(步骤S308),以便检索零或者更多语音属性的序列。然后,从检索的索引序列(步骤S306)和检索的零或多个语言属性(步骤S308)产生一个拼音索引字符串(步骤S310)。逐字查找词,如果没有语言属性对应于一个字,则选择相关拼音序列中第一拼音索引号作为一种系统默认。否则,代之以由一个属性(如果存在)表示的拼音索引号。
利用(在步骤S310中产生的)选定的拼音索引字符串和拼音表,产生一个最终选定的拼音实体字符串(步骤S312)。
结果和词典是完整时一样,而不是明显地不包括更多信息。尤其是,对每个单音字,最终选定的拼音实体字符串在对应于那个单音字的拼音字符串的字符串中,只含有拼音实体。对于每个多音字,最终选定的拼音实体字符串包含通过拼音索引从那个字“语音属性字节”中识别的拼音实体。
然后,可以在图1的无线电话的扬读音器16上播放(步骤S314)之前处理这个最终选定的字符串(如果需要的话)。
在上面所表明的词典结构的另一种可供选择的方案中,其中只省去单音(和所有的多音都具有语音属性的字节),不用“语音属性字节”高位4位中的字符索引。步骤S306产生一索引序列的序列。在步骤S310,过程按顺序通过各索引序列的那个序列。在当索引序列只包含一个拼音索引(亦即字是单音)时,选择那个索引。在一个索引序列只包含一个拼音索引(亦即字是单音)时,利用在步骤S308中从词典检索的下一个语音属性来指出哪一种可供选择的方案是待选定的。
在这个流程图中,检索拼音索引序列的步骤(步骤S306)在检索语音属性(步骤S308)之前进行。这些过程的定时可以相反(亦即在步骤S306之前进行步骤S308),或者可以同时进行。一种可供选择的可能颠倒次序是拼音索引顺序列的检索(步骤S306)和字符串的分段(步骤S304)。
在图7的过程中,在产生拼音索引的最终序列(步骤S310)之前,不检索拼音实体本身。在另一个可供选择的实施例中,检索拼音索引序列的步骤(步骤S306)不是刚好在检索每个字符的索引时停止;它检索它们的拼音字符串。实际上,这意味着重复图5的整个过程,其中包括步骤S208(且如上所述不排除它)。这使步骤S310和S312结合,因为语音属性和系统默认是直接从拼音字符串的序列,而不是通过拼音字符串选择拼音实体。
尽管通过产生一个压缩的变换表和存取该变换表来得到所希望的发音对上述实施例进行了说明,但本发明的这些方面可以相互独立地使用。也就是说,语言信号的产生可以将压缩的变换表与一不同的词典一起使用,或是可以将这个词典与一不同的变换表一起使用。
几乎仅就汉字和拼音对本发明进行了说明。然而,它可以用于汉字但使用一不同于拼音的发音系统一起使用,或甚用于不同的语言,尤其是带表意文字的那些语言。或者,它可以用于只有部分使用表意文字的语言,如英语中的数字。
上面已经就在电话上使用说明了本发明,其中由于有限的存储空间,所以它特别有用。然而,它可以同等地用在其它电子设备,如个人数字助理(PDA),全球定位系统(GPS)接收器,个人计算机等上。
上述详细说明只提供了一种优选的示范性实施例,并且不打算限制本发明的范围、应用、或结构。相反,优选示范性实施例的详细说明给本领域的技术人员提供了能用于实施本发明优选示范性实施例的说明。应该理解,在不脱离所附权利要求所述的本发明的精神和范围的情况下,在各元件的功能和安排上可以进行各种改变。
权利要求
1.一种存储多个发音记录的存储器,上述记录对应于由一个或一个以上字符组成的单词,其中所述记录包括与对应于所述记录的各单词中各个字符特定发音有关信息;以及所述记录缺少涉及单词内各单音字发音的单个信息。
2.根据权利要求1的存储器,其中所述记录包括与对应于词中多音字发音的信息;并且涉及一个字发音的信息表明该字多个发音中的哪一个要用于所述词。
3.根据权利要求1的存储器,其中所述记录包括与相应词中那些不按照系统默认的发音进行发音的字的发音有关的信息。
4.根据权利要求1的存储器,还在一单一数据字节中包括一字符指示,所述与发音有关的信息被加到该指示上,所述单一数据字节具有所述信息。
5.根据权利要求1的存储器,其中所述记录还包括它们对应的单个的词。
6.根据权利要求1的存储器,其中所述各字符包括表意文字。
7.一种产生用于提供相应于文本的语音信号的方法,包括接收相应于一个词的数据,其中包括至少一个单音字和至少一个多音字;产生一种发音选择字符串,所述发音选择字符串包括与所述词或每个单音字发音识别符有关的信息和与所述字符串或每个多音字的多个可供选择的发音索引有关的信息;检索一个语音属性序列,所述语音属性序列包括与所述词中各个单字特定发音有关的信息,其中检索的语音属性序列缺少上述词内单音字发音的信息;及产生一个基于所产生的发音选择字符串的词发音字符串,用检索的语音属性序列来选择用于字符串或每个多音字的多个可供选择的发音中的特定发音
8.根据权利要求7的方法,其中所述检索的语音属性序列包括与相应词中那些不按照系统默认的发音进行发音的字的发音有关的信息。
9.根据权利要求7的方法,其中所述字包括表意文字。
10.根据权利要求7的方法,其中接收对应于一个词的数据还包括接收文本的一个字符串,并将接收的字符串分段成所述词的一个字符串。
11.一种存储器,用于存储多个相应于单个字的发音识别符,其中每一单个字符都由一个独特的代码标识符识别;记录包括多个相应的字是一种多音字时可供选择的发音识别符;及记录存储在一独特的地址中,该地址是由散列函加到用于各单个字的代码标识符上数导出的。
12.根据权利要求11的存储器,其中由散列函数导出的地址包括一个用于所有上述字的邻接区。
13.根据权利要求11的存储器,其中所述记录包括相应的各字都是单音字时的单一发音识别符。
14.根据权利要求11的存储器,其中,当相应字是多音字时,各发音识别符的至少其中之一包括一用于上述字的可供选择的发音的编号指示。
15.根据权利要求14的存储器,其中在信息的一个或多个字节中提供发音识别符,并且在与其所包括的发音识别符相同的一个或多个字节内,提供所述字的可供选择的发音编号指示。
16.根据权利要求11的存储器,其中各单字是表意文字。
17.一种存取变换表以便得到对应于一个单字的一个或多个发音识别符的方法,所述单字用一独特的代码标识符识别,上述方法包括利用加到用于单字的代码标识符上的一散列函数产生一个独特的地址;及检索存储在所产生地址处的一个或多个发音识别符。
全文摘要
本发明涉及用于文本语音转换处理的变换表和词典。将一部汉语词典与一种变换表结合使用,上述变换表把各种字变换到它们可能的拼音发音,以便产生特定的发音和一种文本-语言转换信号。交换表将字发音识别符存储在独特地识别字的代码标识符的地址中。它通过不存储字本身和只利用地址把存储的发音识别符连接到各字上节约空间。词典存储特定词的发音信息,而且通过只存储每个词内多音字发音的信息而节省了空间。
文档编号G06F17/28GK1591413SQ0315634
公开日2005年3月9日 申请日期2003年9月4日 优先权日2003年9月4日
发明者陈桂林 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1