文本到语音转换方法和系统、及其计算机程序产品的制作方法

文档序号:2821482阅读:281来源:国知局
专利名称:文本到语音转换方法和系统、及其计算机程序产品的制作方法
技术领域
本发明涉及文本到语音转换技术,即允许书写的文字被转换成可理解的语音信号的技术。
背景技术
根据所谓的“单元选择可串联合成”,文本-语音转换系统是已知的。这要求包括由讲母语者发音的预先记录的句子的数据库。元音数据库是单语言,所有句子都以说话者语言书写和发音。
该类型的文本-语音转换系统可以如此正确地只“读取”以说话者的语言书写的文本,而可以以可理解的方式读出文本中可能包括的任何外语单词,只有在包括在作为对文本-语音转换系统的支持提供的词典中(与它们正确的语音一起)的情况下才可以。因此,只通过在语言中存在变化的情况下改变说话者声音,多语言文本可以正确地读入这样的系统。这就产生了一般而言不愉快的效果,当在高频下语言中产生变化并且时间非常短暂时,越来越明显。
此外,必须读出他或她自己的语言的文本中包括的外语单词的当前说话者一般习惯于以这样的方式读出这些单词,可能不同于-也大大地不同于相同单词在包含在对应的完全的外语的文本中时的正确发音。
作为示例,必须读出英语文本中包括的意大利人名字或姓的英国或美国说话者,与母语为意大利语的说话者在读出相同名字和姓时的发音有相当的不同。相应地,收听相同口头文本的说英语的主题,一般将发现,如果按预期的那样发音,被讲英语者“扭曲”,而不是用正确的意大利语发音读出,则比较容易理解(至少大致)意大利语名字和姓。
类似地,通过采用正确的英国英语或美国英语发音来读出由讲意大利语者读出的意大利语文本中包括的英国或美国城市的名称,一般将被视为不适当的复杂化,并为此,在一般的使用中被拒绝。
过去通过采用本质上两种不同的方法,已经处理了读取多种语言文本的问题。
一方面,进行了通过借助于双语或多语言说话者产生多语种元音数据库的尝试。C.Traber等人所著的文章″From multilingual topolyglot speech synthesis″Proceedings of the Eurospeech,pages835-838,1999是这样的方法的示例。
此方法基于假设(本质上,是否有多种语言说话者),这种说话者是难以遇到的,也难以复制。此外,这样的方法一般没有解决一般与文本中包括的外语单词关联的问题,希望外语单词以与对应的语言的正确的发音不同的方式(可能显著不同)读出。
另一种方法是,对于外语,采用记录器,在其输出端产生的音素,为了发音,被映射到说话者声音的语言的音素中。此后一种方法的示例有W.N.Campbell″Foreign-language speech synthesis″Proceedings ESCA/COCSDA ETRW on Speech Synthesis,JenolanCaves,Australia,1998 and″Talking Foreign.Concatenative SpeechSynthesis and Language Barrier″,Proceedings of the EurospeechScandinavia,pages 337-340,2001。
Campbell的工作本质上旨在根据从单语种日语数据库开始生成的声音,合成双语文本,如英语和日语。如果说话者声音是日语,而输入文本是英文的,则激活英语记录器,以产生英语音素。语音映射模块将每一个英语音素映射到对应的类似的日语音素中。根据语音发音类别来评估相似性。通过搜索提供了日语和英语音素之间的对应关系的查询表来进行映射。
作为随后的步骤,根据与当利用英语声音合成相同文本时生成的信号的声音相似性,从日语数据库中选择用于制作日语声音读物的各种声音单元。
Campbell提议的方法的核心是表达了两种语言中的音素之间的对应关系的查询表。可以通过调查两种语言的特征手动创建这样的表。
原则上,这样的方法适用于任何其他语言对,但是,每一个语言对都要求对它们之间的对应关系的显式的分析。这样的方法相当麻烦,事实上,在实践中,在包括两种以上的语言的合成系统的情况下是不可行的,因为要考虑的语言对的数量将很快变得非常大。
此外,一般有一个以上的说话者用于每一种语言,至少具有稍有不同音韵系统。为了使任何说话者声音能够说所有可用的语言,对于每一个声音-语言对,都需要相应的表。
在包括N种语言和M种说话者声音(显然,M等于或大于N)的合成系统的情况下,在将查询表用于第一语音映射步骤的情况下,如果将一个说话者声音的音素映射到每一种外语的单一声音的那些音素中,那么,对于每一个说话者声音,必须生成N-1不同的表,如此,累加到总共N*(M-1)个查询表。
在利用十五种语言以及每一种语言都有两个说话者声音(对应于在本申请的受让人开发的Loquendo TTS文本-语音转换系统中所采用的当前配置)操作的合成系统的情况下,将需要435个查询表。该图相当有效,特别是在考虑到可能要求手动生成这样的查询表的情况下。
扩展这样的系统以包括一个新的说话者声音只说一种新的语言,将需要添加M+N=45个新表。在这方面,必须考虑到,对于一个或多个语言,常常有新的音素添加到文本-语音转换系统,当添加的新的音素是系统中已经存在的音素的音位变体时,这是常见的情况。在该情况下,需要检查和修改属于正在向其中添加新的音素的语言的所有查询表。

发明内容
鉴于上述情况,需要除去了上文所考虑的现有技术配置的缺点的改进的文本-语音转换系统。具体来说,本发明的目标是提供多语言的文本-语音转换系统,该系统
-可以不需要依赖懂多种语言的说话者,以及-可以通过借助于简单体系结构来实现,存储器要求适度,同时也不需要生成(可能手动)相关数量的查询表,特别是当改进了系统,外加了一个或多个语言的新音素的情况下。
根据本发明,该目标可以通过具有随后的权利要求中所阐述的特征的方法来实现。本发明还涉及对应的文本-语音转换系统和可加载到至少一个计算机的存储器中的,并包括用于执行本发明的方法的步骤的软件代码部分的计算机程序产品。如这里所使用,这样的计算机程序产品相当于对包含用于控制计算机系统以协调本发明的方法的性能的指令的计算机可读的介质。“至少一个计算机”显然强调了以分布式方式实现的本发明的系统的可能性。
如此,本发明的优选实施例是包括至少一个使用第二语言的部分的第一语言的文本的文本-语音转换系统的方案,包括-用于将所述第二语言的所述部分转换为所述第二语言的音素的字形/音素记录器,-映射模块,被配置为将所述第二语言的所述音素的至少一部分映射到所述第一语言的音素集中,-语音-合成模块,向该模块提供包括作为所述映射结果产生的所述第一语言的所述音素集的结果音素流,以及代表所述文本的所述第一语言的音素流;以及从所述结果音素流生成语音信号;映射模块被配置为-在正在被映射的所述第二语言的每个所述音素和所述第一语言的一组候选映射音素之间执行相似性测试,-给所述测试的结果指定相应的分数,以及-将所述第二语言的每一个所述音素作为所述分数的函数映射到从所述候选映射音素中选出的所述第一语言的一组映射音素中。
优选情况下,映射模块被配置为将所述第二语言的所述音素映射到从下列各项中选出的所述第一语言的一组映射音素-所述第一语言的一组音素,包括所述第一语言的三个、两个或一个音素,或-空集,其中,在所述第二语言的所述音素的所述结果流中没有包括音素。
通常,将其任何所述分数不能达到所述阈值的所述第二语言的那些音素映射到所述第一语言的音素的所述空集中。
如此,通过所述第一语言的说话者声音读出结果音素流。
基本上,这里所描述的配置基于语音映射配置,其中,系统中包括的每一个说话者声音能够读取多语言文本,而不修改元音数据库。具体来说,这里所描述的配置的优选实施例在存在于表中的音素之中搜索说话者声音的语言,接收最类似于外语音素的音素作为输入。可以根据如根据国际标准IPA所定义的语音-发音特征,表达两个音素之间的相似度。语音映射模块量化了语音类别的关系/相似性的程度和它们在音素之间的比较中的意义。
这里所描述的配置不包括说话者声音语言的数据库中包括的段和借助讲外语者声音所合成的信号之间的任何“声音”比较。因此,从计算观点来看,整个配置不太麻烦,省去了具有可用于“外语”的说话者声音的系统只需字形-音素记录器就足够了。
此外,语音映射是独立于语言的。音素之间的比较排他地引用了与每一个音素关联的语音特征的矢量,这些特征事实上是独立于语言的。如此,映射模块“不知道”涉及的语言,这意味着,对于系统中的每一个语言对(或每一个声音-语言对),对于要执行(可能手动)的任何特定活动,没有任何要求。此外,将新的语言或新的音素集成到系统中将不要求对语音映射模块进行修改。
在不损失效率的情况下,这里所描述的配置与现有技术系统相比,导致明显的简化,相对于以前的解决方案,还涉及高度的一般化。
所进行的实验显示,完全实现了使单语种说话者声音能够以可理解的方式说外语的目标。


现在将参考下面的附图,只作为示例,对本发明进行描述
-图1是用于集成了这里所描述的改善的文本-语音转换系统的方框图,以及-图2到8是图1的文本-语音转换系统的可能的操作的示范性流程图。
具体实施例方式
图1的方框图描述了多语言型文本-语音转换系统的总体体系结构。
基本上,图1的系统可以作为其输入接收基本上可以算是“多语言”文字的文字。
在本发明的上下文中,定义“多语言”的意义是双重的首先,输入文字是多语言的,它对应于以多种不同的语言T1...,Tn(例如,十五种不同的语言)中的任何一种语言书写的文字,以及其次,每一个文本T1,...,Tn本身是多语言的,它可以包括以不同于文本的基本语言的一种或多种语言书写的单词或句子。
文本T1,..,Tn以电子文本格式被提供到系统(一般表示为10)。
通过例如OCR扫描读取之类的技术,可以轻松地将不同形式的文本(例如,打印文本的硬拷贝)转换为电子格式。这些方法已为大家所熟知,如此,没有必要在这里提供详细描述。
系统10中的第一框通过语言识别模块20来表示,该模块识别输入到系统的文本的基本语言以及包括在基本文本中的任何“外语”单词或句子的语言。
再者,用于自动地执行这样的语言识别功能的模块已为大家所熟知,(例如,从字处理系统的正字法校正器),从而,没有必要在这里提供详细描述。
在下面,在描述本发明的示范性实施例时,将参考这样的情况基本输入文本是意大利语文本,其中,包括以英语书写的单词或短语。还将假设说话者声音为意大利语。
有三个模块30、40和50与语言识别模块20连接。
具体来说,模块30是字形/音素记录器,用于将作为输入接收到的文本分段为字形(例如,字母或字母组),并将它转换为对应的音素流。模块30可以是任何已知类型的字形/音素记录器,如包括在上文已经引用的Loquendo TTS文本-语音转换系统中的那种类型。
基本上,来自模块30的输出将是包括输入文本的基本语言(例如意大利语)的音素的音素流,在其中分散有包括在基本文本中的外语单词或短语所用语言(例如英语)的音素“脉冲”。
参考40表示映射模块,下面将详细描述其结构和操作。基本上,模块40将从模块30输出的混合音素流-包括输入文本的基本语言(意大利语)的音素以及外语(英语)的音素-转换为只包括第一种基本语言(即在示例中为意大利语)的音素的音素流。
最后,模块50是语音-合成模块,该模块由从模块40输出的(意大利语)音素流生成合成语音信号,被馈送到说话者60,以生成可以被人感觉、听到和理解的对应的声音语音信号。
诸如这里所显示的模块60之类的语音信号合成模块是任何文本到语音转换信号的基本组件,如此,没有必要在这里提供详细描述。
下面是模块40的操作的描述。
基本上,模块40包括分别表示为40a和40b的第一和第二部分。
第一部分40a基本上被配置为向模块50传递已经是基本语言(在本示例中为意大利语)的音素的那些音素。
第二部分40b包括说话者声音(意大利语)的音素表,并作为输入接收将映射到说话者声音(意大利语)的语言的音素中的外语(英语)的音素流,以便允许这样的声音发音。
如上文所指出的,模块20向模块40指出,在给定语言的文字的范围内,何时外语的字或句子出现。通过经过线路24从模块20发送到模块40的“信号开关”信号,发生这种情况。
再者,再强调一遍,将意大利语和英语作为涉及文本-语音转换系统的两种语言只是举例而已。事实上,这里所描述的配置的基本优点位于,在模块40的部分40b中执行的语音映射是独立于语言的。映射模块40不知道涉及的语言,这意味着,对于系统中的每一个语言对(或每一个声音-语言对),对于要执行(可能手动)的任何特定活动,没有任何要求。
基本上,在模块40中,将每一个“外语”语言音素与表中所存在的所有音素进行比较(可以包括本身不是基本语言的音素的音素)。
因此,输出音素的变数可以对应于每一个输入音素例如,三个音素、两个音素,一个音素或根本没有音素。
例如,将外语双元音与说话者-声音以及元音对相比较。
将分数与执行的每一个比较进行关联。
最后选择的音素将是具有最高分数和高于阈值的值的那些音素。如果在说话者声音中没有音素达到阈值,则将外语音素映射到零音素中,因此,对于该音素,不产生声音。
通过可变长度的n个语音发音类别的矢量,以意义明确的方式定义每一个音素。根据IPA标准定义的类别如下-(a)两个基本类别“元音”和“辅音”;-(b)类别“双元音”;-(c)元音(即元音)特征无重音的/带重音的,非音节、长音、鼻音化、r音化、圆唇音;-(d)元音类别“舌前音”、“央元音”、“舌根音”;-(e)元音类别“闭塞音”、“闭塞音-闭塞音-半开元音”、“闭塞音-半开元音”、“半开元音”、“开元音-半开元音”、“开元音-开元音-半开元音”、“开元音”;-(f)辅音模式类别“爆破音”、“鼻音”、“颤音”、“触音/闪音”、“摩擦音”、“舌边音-摩擦音”、近似音、“舌边音”、“塞擦音”;-(g)辅音位置类别“双唇音”、“唇齿音”、“齿音”、“齿槽音”、“后齿槽音”、“卷舌音”、“上腭音”、“软腭音”、“小舌音”、“咽喉音”、“声门音”;以及-(h)其他辅音类别“浊音”、“长音”、“音节”、“送气音”、”不除阻”、“清音”、“半辅音”。
实际上,类别“半辅音”不是标准IPA特点。此类别是冗余类别,以便简明地表示近似/齿槽音/上腭音辅音或近似音-软腭音辅音。
类别(d)和(e)还描述了双元音的第二组件。
如果音素是元音,则每一个矢量都包含一个类别(a),一个或无类别(b),如果音素是元音,至少一个类别(c),如果音素是元音,一个类别(d),如果音素是元音,一个类别(e),如果音素是辅音,则一个类别(f),如果音素是辅音,则至少一个类别(g),如果音素是辅音,则至少一个类别(h)。
通过比较对应的矢量,向所述按矢量的比较分配相应的分数,执行音素之间的比较。
通过比较对应的类别,向所述按类别比较分配相应的分数值,所述相应的分数值被相加以生成所述分数。
每一个按类别的比较都关联了微分的权重,以便不同的按类别的比较都可以在生成对应的分数时具有不同的权重。
例如,通过比较(f)类别获得的最大分数值始终低于通过比较(g)类别获得的分数值(即,与类别(f)比较关联的权重高于与类别(g)比较关联的权重)。结果,与类别(g)之间的相似性相比,矢量(分数)之间的关系将主要受类别(f)之间的相似性的影响。
下面描述的过程使用了具有下列值的一组常数-MaxCount=100-Kopen=14-Sstep=1-Mstep=2*Lstep-Lstep=4*Mstep-Kmode=Kopen+(Lstep*2)-Thr=Kmode-Kplace3=1-Kplace2=(Kplace3*2)+1-Kplace1=((Kplace2)*2)+1
-DecrOPen=5现在将通过引用图2到8的流程图,通过假设向模块40输入单音素,描述这里所示范的系统的操作。如果作为模块40的输入提供多个音素,对于每一个输入的音素,将重复下面所描述的过程。
下面将具有类别“双元音或塞擦音”的音素表示为“可分的音素”。
当定义音素的模式和位置类别时,它们是单义的,除非特别指明。
例如,如果给定外语音素(例如,PhonA)被称为“摩擦音-小舌音”,这意味着,它具有单模式类别(摩擦音)和单位置类别(小舌音)。
通过首先参考图2的流程图,在步骤100中,扫描说话者声音语言的表的索引(Indx)(下面表示为TabB)被设置为零,即,位于表中的第一音素中。
与变量MaxScore、TmpScrMax、FirstMaxScore、Loop和Continue的情况相同,分数值(Score)被设置为零初始值。在nil音素中,设置音素BestPhon、FirstBest和FirstBestCmp。
在步骤104中,将外语音素(PhonA)的类别的矢量与说话者声音语言(PhonB)的音素的矢量进行比较。
如果两个矢量相同,则两个音素相同,在步骤108中,分数(Score)被换至值MaxCount,随后的步骤是步骤144。
如果矢量不同,则在步骤112中,比较基础类别(a)。
存在三种情况两个音素都是辅音(128),两者都是元音(116)或不同(140)。
在步骤116中,就PhonA是否为双元音作出判断。如果是肯定回答,则在步骤124中,如下面详细描述的,激活图4的流程图中所描述的功能。
如果它不是双元音,则在步骤120中,激活图5的流程图中所描述的函数,以将元音与元音进行比较。
可以理解,两个步骤120和124都可能导致分数被修改,如下面所详细描述的。
随后,处理进入步骤144。
在步骤128中(辅音之间的比较),就PhonA是否为塞擦音进行检查。如果是肯定回答,则在步骤136中,激活图7的流程图中所描述的功能。或者,在步骤132中,激活图6中所描述的功能,以便比较两个辅音。
在步骤140中,如下面详细描述的,激活图8的流程图中所描述的功能。
类似地,在下面详细描述了在步骤132和136中可以修改分数所根据的那些标准。
随后,系统进入步骤144。
比较的结果汇集到步骤144,在该步骤中,读取分数值(Score)。
在步骤148中,将分数值与表示为MaxCount的值进行比较。如果分数值等于MaxCount,则终止搜索,这意味着,为PhonA查找到了说话者声音语言中的对应的音素(步骤152)。
如果分数值低于MaxCount(在步骤148中所检查的),则在步骤156中,过程如图3的流程图所描述的那样进行。
在步骤160中,将与值Continue与值1进行比较。在肯定回答的情况下(即,Continue等于1),在将值Loop设置为值1并将Continue、Indx和Score复位为零值之后,系统回到步骤104。或者,系统进入步骤164。
从这里,如果PhonA是鼻音或r音,所选择的音素不是这些类型中的任何一种类型,系统进入步骤168,在该步骤中,通过来自TabB的辅音补充所选择的音素,其语音-发音特征允许模拟PhonA的鼻音化或r音化的声音。
在步骤172中,所选择的音素(或多个音素)被发送到输出语音映射模块40,以便提供到模块50。
从图2的流程图的步骤156中到达图3的步骤200。
从步骤200中,如果满足下列两个条件之一,系统进入步骤224-PhonA是将要映射到两个元音中的双元音;
-PhonA是塞擦音,PhonB是非塞擦音辅音,但是,可以是塞擦音的组件。
参数Loop表示自顶到底扫描表TabB多少次。其值可以是0或1。
只有在PhonA是双元音或塞擦音的情况下,Loop才被设置为值1,从而不可能在Loop等于1的情况下到达步骤204。在步骤204中,检查Maximum Condition。如果分数值(Score)高出MaxScore或者如果相等,并且PhonB的n个语音特征的集比BestPhon的集,则可以满足此条件。
如果满足该条件,则系统进入步骤208,在该步骤中,MaxScore被延至分数值,PhonB变为BestPhon。
在步骤212中,将Indx与TabLen(TabB中的音素的数量)进行比较。
如果Indx高于或等于TabLen,则系统进入下面将描述的步骤284。
如果Indx是较低,那么,PhonB不是表中的最后一个音素,系统进入步骤220,在该步骤中,Indx被增大1。
如果PhonB是表中的最后一个音素,那么,终止搜索,BestPhon(与分数MaxScore关联)是替代PhonA的候选音素。
在步骤224中,检查Loop的值。
如果Loop等于0,那么,系统进入步骤228,在该步骤中,就PhonB是双元音还是塞擦音作出检查。
在肯定回答的情况下(即,如果PhonB是双元音或塞擦音),随后的步骤是步骤232。
此时,在步骤232中,在Score和MaxScore之间检查最大条件(Maximum Condition)。
如果满足该条件(即,Score高于MaxScore),则在步骤236中,MaxScore被延至Score的值,PhonB变为BestPhon。
在步骤240(如果步骤228的检查显示了,PhonB既不是双元音,也不是塞擦音,则到达该步骤),则就在Score和TmpScrMAX之间是否存在maximum condition进行检查(以FirstBestComp代替BestPhon)。如果满足这一条件(即,Score高于TmpScrMAX),则在步骤244中,TmpScrMax通过Score延迟,FirstBestComp通过PhonB延迟。
在步骤248中,就PhonB是否为TabB中的最后一个音素作出判断(那么,Indx等于TabLen)。
在肯定回答的情况下(252),作为变量FirstMaxScore存储了MaxScore的值,作为FirstBest存储了BestPhon,随后,在步骤256中,Indx被设置为0,而continue被设置为1(以便还将搜索PhonA的第二个组件),以及Score被设置为0。
如果Loop等于1,即,如果判断PhonB为PhonA的可能的第二组件,则从步骤224中到达步骤260。在步骤260中,则就在Score和MaxScore(属于BestPhon)之间的比较中是否满足maximum condition作出判断。
在步骤264中,在满足最大条件(maximum condition)的情况下,Score存储在MaxScore中,PhonB存储在BestPhon中。在步骤266中,就PhonB是否为表中的最后一个音素作出判断,在肯定回答的情况下,系统进入步骤272中。
在步骤272中,根据是否满足FirstMaxScore大于或等于(TmpScrMax+MaxScore)的条件,可以在可分的音素或说话者语言声音中的一对音素之间选择最类似于PhonA的音素。作为MaxScore存储了该关系的两个成员的较高值。在选择落在一对音素的情况下,这将是FirstBestCmp和BestPhon。否则,只考虑FirstBest。
值得指出的是,BestPhon(在第二次迭代中查找到)不能是双元音或塞擦音。在步骤276中,Indx增大1,Score被设置为0。
系统从步骤280回到步骤104。
当完成搜索时,从步骤272(或步骤212)到达步骤284。在步骤284中,在MaxScore和阈值常量Thr之间进行比较。如果MaxScore较高,那么,候选音素(或音素对)是PhonA的替代。在否定回答的情况下,将PhonA映射到nil音素中。
图4的流程图是图2的图表的方框124的详细描述。
如果PhonA是双元音,则到达步骤300。
在步骤302中,就PhonB是否为双元音,Loop是否等于0作出判断。在肯定回答的情况下,系统进入步骤304中,在该步骤中,在判断PhonA的特点之后,如果PhonA是将要映射到单元音中的双元音,则系统进入步骤306。
此种类型的双元音具有第一组件,该第一组件是半开元音和央元音,第二组件,该第二组件是闭塞音-闭塞音-半开元音和舌根音。
系统从步骤306进入步骤144。
在步骤308中,调用比较两个双元音的函数。
在步骤310中,通过该函数,比较两个音素的类别(b),对于查找到的每一个共同的特点,Score增大1在步骤312中,比较两个双元音的第一组件,在步骤314中,对于两个组件,调用叫做F_CasiSpec_Voc的函数。
此函数执行下列情况下满足的三个判断,如果-两个双元音的组件似乎是开元音、或开元音-开元音-半开元音、舌前音而不是圆唇音,或开元音-半开元音,舌根音,而不是圆唇音;-PhonA的组件是半开元音和央元音,在TabB中,没有表现了两种类别的音素存在,PhonB是闭塞音-半开元音和舌前音;-PhonA的组件是闭塞音、舌前音和圆唇音,或闭塞音-闭塞音-半开元音,舌前音和圆唇音,在TabB中,没有具有这样的特点的音素存在,而PhonB是闭塞音、舌根音,以及圆唇音或闭塞音-闭塞音-半开元音,舌根音和圆唇音。
如果满足了三个条件中的任何条件,在步骤316中,通过增加(KOpen*2),延迟Score的值。
否则,在步骤318中,对于两个组件,调用函数F_ValPlace_Voc。
这样的函数比较类别“舌前音、央元音和舌根音”(类别(d))。
如果相同,Score增大Kopen;如果它们不同,则将一个值增加到Score,如果两个类别之间的距离是1,则该Score包括KOpen减去常数DecrOpen,而如果距离是2,则Score不增大。
在央元音和舌前音之间和在央元音和舌根音之间存在等于1的距离,而在舌前音和舌根音之间存在等于2的距离。
在步骤320中,对于比较双元音的两个组件,调用函数F_ValOpen_Voc。具体来说,通过在两个连续迭代中比较第一组件和第二组件,F_ValOpen_Voc以循环方式操作。
该函数比较类别(e),并将小于类别之间的距离的值的常数KOpen添加到Score中,如下面的表1中所报告的。
矩阵是对称的,其中,只报告了上部。
通过作数字示例,如果PhonA是闭元音,PhonB是闭塞音-半开元音,则将等于(KOpen-(6*Lstep))的值添加到Score,在考虑到常数的值之后,Score等于8。
在步骤322中,如果组件都具有圆唇音特点,则将常数(KOpen+1)添加到Score中。相反,如果两个中只有一个是圆唇音,那么,Score被降低KOpen。
如果已经比较了开头两个组件,系统从步骤324中回到步骤314;相反,当也比较了第二组件时,则进入步骤326。
在步骤326中,终止两个双元音的比较,系统回到步骤144。
在步骤328中,就PhonB是否为双元音,Loop是否等于1作出判断。如果是这种情况,系统进入步骤306。
在步骤330中,就PhonA是否为将要映射到单元音中的双元音作出判断。如果是这种情况,则在步骤331中,检查Loop,如果判断它等于1,则到达步骤306。
在步骤332中,创建音素TmpPhonA。
TmpPhonA是元音,而没有双元音特征,并具有“闭塞音-半开元音”、“舌根音”和“圆唇音”特点。
随后,系统进入步骤334中,在该步骤中,比较TmpPhonA和PhonB。通过在没有双元音类别的两个元音音素之间调用比较函数,来执行比较。
在图5中详细描述了也在图2的流程图中的步骤120中调用了该函数。
在步骤336中,调用该函数,以在PhonA和PhonB的组件之间执行比较因此,在步骤338中,如果Loop等于0,则将PhonA的第一组件与PhonB进行比较(在步骤344中)。相反,如果Loop等于1,则将PhonA的第二组件与PhonB进行比较(在步骤340中)。
在步骤340中,对于查找到的每一个身份,通过将Score增大1,对鼻音化和r音化的类别进行引用。
在步骤342中,如果PhonA在其第一组件上带有重音,PhonB是带重音的元音,或者,如果PhonA是无重音的或在其第二组件中带有重音,PhonB是无重音的元音,则Score增大2。在所有其他情况下,它都缩小2。
在步骤344中,如果PhonA在第二组件上带有重音,PhonB是带有重音的元音,或者,如果PhonA在第一辅音中带有重音或者是无重音的双元音,PhonB是无重音的元音,那么,Score增大2;相反,在所有其他情况下,它都缩小2。
在步骤348中,将PhonA的第一或第二组件的类别(d)和(e)与PhonB进行比较(分别取决于Loop是等于0还是等于1)。
根据在步骤314到322所描述的相同原理,执行特征矢量的比较并更新Score。
步骤350标志着返回到步骤144。
图5的流程图详细描述了图2的图表的步骤120,即,不是双元音的两个元音之间的比较。
在步骤400中,就PhonB是否为双元音作出判断。在肯定回答的情况下,系统直接进入步骤470。
在步骤410中,对于被发现相同的每一个类别,通过将Score增大1,根据类别(b),进行比较。
相反,在步骤420中,调用上文中已经描述的函数F_CasiSpec_Voc,以便判断是否满足该函数的其中一个条件。
如果是这种情况,在步骤430中,Score增大数量(KOpen*2)。
在否定回答的情况下,在步骤440中,调用函数F_ValPlace_Voc。
随后,在步骤450中,调用函数F_ValOpen_Voc。
在步骤460中,如果两个元音具有圆唇音类别,则Score增大一个常量(KOpen+1);如果,相反,发现只有一个音素具有圆唇音类别,那么,Score降低KOpen。
步骤470标志着比较结束,此后,系统回到步骤144。
图6的流程图详细描述图1的图表中的方框132。
在步骤500中,比较两个辅音,而变量TmpKP被设置为0,在步骤504中调用函数F_CasiSpec_Cons。
该函数判断是否满足下列条件中的任何条件;1.0PhonA是小舌音-摩擦音,在TabB中,没有具有这些特征的音素,PhonB是颤音-齿槽音;1.1PhonA是小舌音-摩擦音,在TabB中,没有具有这些特征的音素,PhonB是近似音-齿槽音;1.2PhonA是小舌音-摩擦音,在TabB中,没有具有这些特征的音素,PhonB是小舌音-颤音;1.3PhonA是小舌音-摩擦音,在TabB中,没有具有这些特征的音素,或具有1.0、或1.1或1.2的PhonB的那些特征的音素,PhonB是舌边音-齿槽音;2.0PhonA是声门-摩擦音,在TabB中,没有具有这些特征的音素,PhonB是摩擦音-软腭音;
3.0PhonA是摩擦音-软腭音,在TabB中,没有具有这些特征的音素,PhonB是摩擦音-声门音或爆破音-软腭音;4.0PhonA是颤音-齿槽音,在TabB中,没有具有这些特征的音素,PhonB是摩擦音-小舌音;4.1PhonA是颤音-齿槽音,在TabB中,没有具有这些特征的音素,PhonB是近似音-齿槽音;4.2PhonA是颤音-齿槽音,在TabB中,没有具有这些特征的音素,或具有4.0和4.1的PhonB的那些特征的音素,PhonB是舌边音-齿槽音;5.0PhonA是鼻音-软腭音,在TabB中,没有具有这些特征的音素,PhonB是鼻音-齿槽音;5.1PhonA是鼻音-软腭音,在TabB中,没有具有这些特征的音素,或具有5.0的PhonB的那些特征的音素,PhonB是鼻音-双唇音;6.0PhonA是摩擦音-齿音-非浊音,在TabB中,没有具有这些特征的音素,PhonB是近似音-齿音;6.1PhonA是摩擦音-齿音-非浊音,在TabB中,没有具有这些特征的音素,或具有6.0的PhonB的那些特征的音素,PhonB是爆破音-齿音;6.2PhonA是摩擦音-齿音-非浊音,在TabB中,没有具有这些特征的音素,或具有6.0的PhonB的那些特征的音素,PhonB是爆破音-齿槽音;7.0PhonA是摩擦音-齿音-浊音,在TabB中,没有具有这些特征的音素,PhonB是近似音-齿音;7.1PhonA是摩擦音-齿音-浊音,在TabB中,没有具有这些特征的音素,或具有7.0的PhonB的那些特征的音素,PhonB是爆破音-齿音;7.2PhonA是摩擦音-齿音-浊音,在TabB中,没有具有这些特征的音素,或具有7.0的PhonB的那些特征的音素,PhonB是爆破音-齿槽音;8.0PhonA是摩擦音-上腭音-齿槽音-非浊音,在TabB中,没有具有这些特征的音素,PhonB是摩擦音-后齿槽音;8.1PhonA是摩擦音-上腭音-齿槽音-非浊音,在TabB中,没有具有这些特征的音素,或具有8.0的PhonB的那些特征的音素,PhonB是摩擦音-上腭音;9.0PhonA是摩擦音-后齿槽音,在TabB中,没有具有这些特征或摩擦音-卷舌音的音素,PhonB是摩擦音-齿槽音-上腭音;10.0PhonA是摩擦音-后齿槽音-软腭音,在TabB中,没有具有这些特征的音素,PhonB是摩擦音-齿槽音-上腭音;10.1PhonA是摩擦音-后齿槽音-软腭音,在TabB中,没有具有这些特征的音素,PhonB是摩擦音-上腭音;10.2PhonA是摩擦音-后齿槽音-软腭音,在TabB中,没有具有这些特征的音素,或10.0或10.1的那些特征的音素,PhonB是摩擦音-后齿槽音;11.0PhonA是爆破音-上腭音,在TabB中,没有具有这些特征的音素,PhonB是舌边音-上腭音;11.1PhonA是爆破音-上腭音,在TabB中,没有具有这些特征或PhonB di 11.0的那些特征的音素,PhonB是摩擦音-上腭音或近似音-上腭音;12.0PhonA是摩擦音-双唇音齿音-浊音,在TabB中,没有具有这些特征的音素,PhonB是近似音-双唇音-浊音;13.0PhonA是摩擦音-上腭音-浊音,在TabB中,没有具有这些特征的音素,PhonB是爆破音-上腭音-浊音或近似音-上腭音-浊音;14.0PhonA是舌边音-上腭音,在TabB中,没有具有这些特征的音素,PhonB是爆破音-上腭音;14.1.PhonA是舌边音-上腭音,在TabB中,没有具有这些特征的音素,或14.0的PhonB的那些特征的音素,PhonB是摩擦音-上腭音或近似音-上腭音;
15.0PhonA是近似音-齿音,在TabB中,没有具有这些特征的音素,PhonB是爆破音-齿音或爆破音-齿槽音;16.0PhonA是近似音-双唇音,在TabB中,没有具有这些特征的音素,PhonB是爆破音-双唇音;17.0PhonA是近似音-软腭音,在TabB中,没有具有这些特征的音素,PhonB是爆破音-软腭音;18.0PhonA是近似音-齿音,在TabB中,没有具有这些特征的音素,PhonB是颤音-齿槽音或摩擦音-小舌音或颤音-小舌音;18.1PhonA是近似音-齿槽音,在TabB中,没有具有这些特征的音素,或18.0中的PhonB的那些特征的音素,PhonB是舌边音-齿槽音。
如果满足这些条件中的任何一个,则系统进入步骤508中,在该步骤中,在比较的整个过程中,用TmpPhonB代替PhonB,直到步骤552中。
如果不满足上述条件中的任何一个条件,则系统直接进入步骤512中,在该步骤中,比较模式类别(f)。
如果PhonA和PhonB具有相同类别,那么,Score增大KMode。
在步骤516中,调用函数F_CompPen_Cons,以控制是否满足下列条件-PhonA是摩擦音-后齿槽音,PhonB(或TmpPhonB)是摩擦音-后齿槽音-软腭音。
如果满足条件,那么,Score缩小Kplace1。
在步骤520中,调用函数F_ValPlace_Cons,以根据表2中报告的内容增大TmpKP。
在该表中,PhonA的类别位于垂直轴中,而PhonB的类别位于水平轴中。每一个单元都包括被添加到Score中的红利值。
通过假设PhonA只有类别“唇齿音”,PhonB只有齿音类别,那么,通过扫描该行,以便查找唇齿音,交叉列,以查找齿音,可以发现,值Kplace2必须被添加到Score中。
在步骤524中,就PhonA是否为近似音-半辅音并且PhonB(或TmpPhonB)是近似音作出判断。如果是肯定的结果,则系统进入步骤528中,在该步骤中,对TmpKP进行测试。
进行这样的测试,以便确保,在正在被比较的两个音素都是近似音,并具有相同的位置类别的情况下,它们的Score高于任何比较辅音-元音的情况。
如果这样的变量大于或等于Kplace1,那么,在步骤532中,TmpKP增大KMode。在否定回答的情况下,TmpKP在步骤536中被设置为零。
在步骤540中,数量TmpKP被添加到Score中。
在步骤544中,就Score是否高于KMode作出判断。
如果是这种情况,则在步骤548中,比较类别(h),半辅音类别除外。对于查找到的每一个身份,Score都增大1。
步骤552标志着比较结束,此后,系统回到图1的步骤144。
图7的流程图引用了在PhonA是塞擦音辅音(图2的步骤136)的情况下音素之间的比较。
在步骤600中,开始比较,并在步骤604中,就PhonB是否为塞擦音并且Loop是否等于0作出判断。
如果是这种情况,则系统进入步骤608,该步骤又使系统回到步骤132。
在步骤612中,就PhonB是否为塞擦音以及Loop是否等于1作出判断。
如果是这种情况,则直接到达步骤660。
在步骤616中,就PhonB可以被视为由塞擦音组成作出判断。
如果Loop等于1并且PhonB具有类别摩擦音-后齿槽音-软腭音,就不是这种情况。
如果是这种情况,则系统进入步骤660。
在步骤620中,对Loop的值进行判断如果该值等于0,则系统进入步骤642。
在该步骤中,PhonA在与PhonB的比较中被TmpPhonA临时替代;它与PhonA具有相同特征,但它不是塞擦音,而是爆破音。
在步骤628中,就TmpPhonA是否具有唇齿音类别作出判断;如果在步骤636中是这种情况,齿音类别被从类别的矢量中删除。
在步骤632中,就TmpPhonA是否具有后齿槽音类别作出判断;在肯定回答的情况下,在步骤644中这样的类别被齿槽音类别代替。
在步骤640中,就TmpPhonA是否具有类别齿槽音-上腭音作出判断;如果是这种情况,则去除上腭音类别。
在步骤652中,PhonA在与PhonB的比较中被TmpPhonA临时替代(直到到达步骤144);它与PhonA具有相同特征,但它是摩擦音,而不是塞擦音。
通过将TmpPhonA与PhonB与比较,步骤656标志着进入步骤132的比较。
步骤660标志着返回到步骤144。
图8的流程图详细描述了图2的流程图的步骤140。
如果PhonA是辅音,PhonB是元音,或者,如果PhonA是元音,PhonB是辅音,则到达步骤700。音素TmpPhonA被设置为零音素。
在步骤705中,就phona是否为元音以及PhonB是否为辅音作出判断。在肯定回答的情况下,下一个步骤是步骤780。
在步骤710中,就PhonA是否为近似音-半辅音作出判断。
在否定回答的情况下,系统直接进入步骤780。
在步骤720中,就PhonA是否为颚音作出判断。如果是这种情况,则在步骤730中,将TmpPhonA被转换成无重音-舌前音-闭元音,并在TmpPhonA和PhonB之间执行步骤120的比较。
在步骤740中,就PhonA是否为双唇音-软腭音作出判断。如果是这种情况,则在步骤750中,将TmpPhonA转换成无重音-闭塞音-舌根音-圆唇元音,并在TmpPhonA和PhonB之间执行步骤120(图2)的比较。
在步骤760中,就PhonA是否为双唇音-上腭音作出判断。如果是这种情况,则在步骤770中,将TmpPhonA转换成无重音-闭塞音-舌根音-圆唇元音,并在TmpPhonA和PhonB之间进行步骤120的比较。
步骤780标志着系统回到步骤144中。
下面报告了上文中反复引用的两个表1和2。

表1元音特点的距离(e)

表2要添加到Score中的值当然,在不违背本发明的基本原理的情况下,实施例可以变化,相对于所描述的内容,可以有显著不同,这里的描述只作为示例,而不偏离如所附的权利要求所定义的本发明的范围。
权利要求
1.对包括至少一个使用第二语言的部分的第一语言的文本(T1,...,Tn)进行文本-语音转换的方法,其特征在于,该方法包括下列步骤-将所述第二语言的所述部分转换(30)为所述第二语言的音素,-将所述第二语言的所述音素的至少一部分映射(40;40b)到所述第一语言的音素集中,-将作为所述映射结果的所述第一语言的所述音素集包括在代表所述文本的所述第一语言的音素流中,以产生结果音素流,以及从所述结果音素流生成(50)语音信号,其中,所述映射(40)步骤包括下列操作-在正在被映射的所述第二语言的每个所述音素和所述第一语言的一组候选映射音素之间执行相似性测试,-给所述测试的结果指定相应的分数,以及-将所述第二语言的每一个所述音素映射(40b)到从所述候选映射音素中选出的所述第一语言的一组映射音素中,作为所述分数的函数。
2.根据权利要求1所述的方法,其特征在于,该方法包括将所述第二语言的所述音素映射(40b)到从下列各项中选出的所述第一语言的一组映射音素中的步骤-所述第一语言的一组音素,包括所述第一语言的三个、两个或一个音素,或-空集,其中,在所述第二语言的所述音素的所述结果流中没有包括音素。
3.根据权利要求2所述的方法,其特征在于,所述映射(40)的步骤包括下列操作-为所述测试的结果定义阈值(Th),以及-将其任何所述分数不能达到所述阈值的所述第二语言的任何音素映射到所述第一语言的音素的所述空集中。
4.根据权利要求1所述的方法,其特征在于,该方法包括将所述第二语言的所述音素和所述第一语言的所述候选映射音素表示为语音类别矢量,其中,将代表所述第二语言的每一个所述音素的语音类别的矢量与代表所述第一语言的所述候选映射音素的语音类别的一组语音类别矢量进行比较。
5.根据权利要求4所述的方法,其特征在于,通过向所述按类别的比较分配相应的分数值,按类别地执行所述比较,所述相应的分数值被相加以生成所述分数。
6.根据权利要求5所述的方法,其特征在于,该方法包括在将所述相应的分数值相加时,向所述分数值分配微分的权重以生成所述分数的步骤。
7.根据权利要求4所述的方法,其特征在于,该方法包括从包括下列各项的组中选择所述语音类别的操作-(a)两个基本类别“元音”和“辅音”;-(b)类别“双元音”;-(c)元音特征无重音的/带重音的,非音节、长音、鼻音化、r音化、圆唇音;-(d)元音类别“舌前音”、“央元音”、“舌根音”;-(e)元音类别“闭塞音”、“闭塞音-闭塞音-半开元音”、“闭塞音-半开元音”、“半开元音”、“开元音-半开元音”、“开元音-开元音-半开元音”、“开元音”;-(f)辅音模式类别“爆破音”、“鼻音”、“颤音”、“触音/闪音”、“摩擦音”、“舌边音-摩擦音”、”近似音”、“舌边音”、“塞擦音”;-(g)辅音位置类别“双唇音”、“唇齿音”、“齿音”、“齿槽音”、“后齿槽音”、“卷舌音”、“上腭音”、“软腭音”、“小舌音”、“咽喉音”、“声门音”;以及-(h)其他辅音类别“浊音”、“长音”、“音节”、“送气音”、”不除阻”、“清音”、“半辅音”。
8.根据权利要求1所述的方法,其特征在于,该方法包括通过所述第一语言的说话者声音发出(50,60)音素的所述结果流的步骤。
9.对包括至少一个使用第二语言的部分的第一语言的文本(T1,...,Tn)进行文本-语音转换的系统,其特征在于,该系统包括用于将所述第二语言的所述部分转换为所述第二语言的音素的字形/音素记录器(30),映射模块(40;40b),被配置为将所述第二语言的所述音素的至少一部分映射到所述第一语言的音素集中,-语音-合成模块(50),该模块被提供有包括作为所述映射结果产生的所述第一语言的所述音素集的结果音素流,以及代表所述文本的所述第一语言的音素流,并从所述结果音素流生成(50)语音信号,其中,所述映射模块(40)被配置为-在正在被映射的所述第二语言的每个所述音素和所述第一语言的一组候选映射音素之间执行相似性测试,-给所述测试的结果指定相应的分数,以及-将所述第二语言的每一个所述音素映射(40b)到从所述候选映射音素中选出的所述第一语言的一组映射音素中,作为所述分数的函数。
10.根据权利要求9所述的系统,其特征在于,所述映射模块(40)被配置将所述第二语言的所述音素映射(40b)到从下列各项中选出的所述第一语言的一组映射音素-所述第一语言的一组音素,包括所述第一语言的三个、两个或一个音素,或-空集,其中,在所述第二语言的所述音素的所述结果流中没有包括音素。
11.根据权利要求10所述的系统,其特征在于,所述映射模块(40)被配置为-为所述测试的结果定义阈值(Th),以及-将其任何所述分数不能达到所述阈值的所述第二语言的任何音素映射到所述第一语言的音素的所述空集中。
12.根据权利要求9所述的系统,其特征在于,所述第二语言的所述音素和所述第一语言的所述候选映射音素被表示为语音类别矢量,其中,所述映射模块(40)被配置为将代表所述第二语言的每一个所述音素的语音类别的相应的矢量与代表所述第一语言的所述候选映射音素的语音类别的一组语音类别矢量进行比较。
13.根据权利要求12所述的系统,其特征在于,所述映射模块(40)被配置为,通过向所述按类别的比较分配相应的分数值,按类别地执行所述比较,所述相应的分数值被相加以生成所述分数。
14.根据权利要求13所述的系统,其特征在于,所述映射模块(40)被配置为,在将所述相应的分数值相加时,向所述分数值分配微分的权重以生成所述分数。
15.根据权利要求12所述的系统,其特征在于,所述映射模块(40)被配置为基于包括下列各项的组中的语音类别进行操作(a)两个基本类别“元音”和“辅音”;(b)类别“双元音”;(c)元音特征无重音的/带重音的,非音节、长音、鼻音化、r音化、圆唇音;(d)元音类别“舌前音”、“央元音”、“舌根音”;(e)元音类别“闭塞音”、“闭塞音-闭塞音-半开元音”、“闭塞音-半开元音”、“半开元音”、“开元音-半开元音”、“开元音-开元音-半开元音”、“开元音”;(f)辅音模式类别“爆破音”、“鼻音”、“颤音”、“触音/闪音”、“摩擦音”、“舌边音-摩擦音”、近似音、“舌边音”、“塞擦音”;(g)辅音位置类别“双唇音”、“唇齿音”、“齿音”、“齿槽音”、“后齿槽音”、“卷舌音”、“上腭音”、“软腭音”、“小舌音”、“咽喉音”、“声门音”;以及(h)其他辅音类别“浊音”、“长音”、“音节”、“送气音”、”不除阻”、“清音”、“半辅音”。
16.根据权利要求8所述的系统,其特征在于,所述语音-合成模块(50)被配置为通过所述第一语言的说话者声音发出(50,60)音素的所述结果流。
17.可加载到至少一个计算机的存储器中,并包括用于执行权利要求1到8的任何权利要求的方法的步骤的软件部分的计算机程序产品。
全文摘要
用于对包括第二语言的某些部分的第一语言的文本(T1,...,Tn)文本进行操作的文本-语音转换系统(10),包括用于将所述第二语言的所述部分转换为第二语言的音素的字形/音素记录器(30);映射模块(40;40b),被配置为将第二语言的所述音素的至少一部分映射到第一语言的音素集中;以及语音-合成模块(50),该模块被提供有包括作为所述映射结果产生的所述第一语言的所述音素集的结果音素流,以及代表所述文本的所述第一语言的音素流,并从所述结果音素流生成(50)语音信号。
文档编号G10L13/08GK1879147SQ200380110846
公开日2006年12月13日 申请日期2003年12月16日 优先权日2003年12月16日
发明者莱奥纳多·巴迪诺, 克劳迪亚·巴罗洛, 西尔维娅·夸扎 申请人:洛昆多股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1