语音合成方法和设备 本发明涉及一种语音合成方法和设备,尤其涉及一种将文本转换成语音的语音合成方法和设备。
迄今为止,通过连接语音片段来合成语音的语音合成方法使用语音片段数据库中各种重音类型的语音,但并不特别注重重音类型。例如,在电子信息和通信学会技术研究报告书SP96-8中,“用基于VCV波形合成单元的规则进行语音合成”一文对此有所揭示。
但是,如果合成语音的音高频率与存储在数据库中的语音片段的音高频率有很大差异,那么一般的语音合成方法存在一个缺点,即当校正语音片段的音高频率时,音质会劣化。
本发明的一个目的是,提供一种进行语音合成的方法和设备,当校正音高频率时,能使音质劣化降至最低。
因此,本发明提供了一种语音合成方法,该方法包括以下步骤:将多个按0型重音和1型重音发音的单词或音节连同其音位标音累积在波形数据库中;紧挨在元音稳定段或清辅音之前分割单词或音节的语音,以便抽取语音片段;当使语音片段变形并加以连接,以合成语音时,根据波形数据库中该语音片段的音位标音,为待合成语音检索候选语音片段;根据待合成语音的重音类型和待合成语音中使用语音片段的位置,确定使用哪一个被检索到的用0型重音或1型重音发音的语音片段。
依照本发明的语音合成方法,无需进行复杂地计算便可以选择音高频率和波形随时间的变化与合成语音相类似的语音片段,从而把音高频率变化所引起的音质劣化降至最低。由此可以获得高质量的合成语音。
在本发明的语音合成方法中,当从波形数据库为合成语音检索候选语音片段时,可使用最长匹配法。
在本发明的语音合成方法中,波形数据库可以由单词的语音构成,每个单词的语音通过用0型重音和1型重音对双音节序列或三音节序列发音两次来获得。由此,几乎只用VCV或VVCV(V表示元音或拨音,而C表示辅音)的音位单元序列便可以有效地构造波形数据库。
本发明还提供了一种语音合成设备,它包括:语音波形数据库,用于存储:表示以0型重音和1型重音发音的单词或音节之语音片段的重音类型的数据,表示语音片段之音位标音的数据,以及指示语音片段可分割位置的数据;存储装置,用于存储音位标音字符串和合成语音韵律的装置;语音片段候选检索装置,用于根据存储在存储装置中的音位标音的所述字符串,从语音波形数据库中检索候选语音片段;判定装置,用于根据合成语音的重音类型和语音中使用语音片段的位置,在被检索到的候选语音片段中,确定实际使用的语音片段。
根据本发明,可以用少量的计算获得高质量的合成语音。
在本发明的语音合成设备中,波形数据库可以由单词的语音构成,每个单词的语音通过用0型重音和1型重音对双音节序列或三音节序列发音两次来获得。由此,可以有效地构造语音波形数据库并减小其规模。
图1A-1E示出了当根据本发明第一实施例合成语音时选择语音片段的方式。
图2是一方框图,示出了依照本发明第二实施例的语音合成设备的结构。
图3示出了依照本发明第二实施例,图2语音合成设备中的检索规则表;
图4示出了依照本发明第二实施例,被记录在图2语音合成设备中语音波形数据库内的一语音片段的数据结构;
图5示出了依照本发明第二实施例,存储在语音合成设备中一输入缓冲器内的信息结构;
图6是一流程图,示出了依照本发明第二实施例的图2中语音合成设备的工作情况;
图7示出了依照本发明第三实施例,存储在语音波形数据库中的语音片段;
图8A-8C示出了当依照第三实施例合成语音时,选择语音片段的方式;
图9示出了依照第三实施例,一语音片段的发音类型;
图10示出了依照第三实施例的检索表。
现在,将结合附图描述本发明的实施例。(1)第一实施例
图1A-1D示出了依照本发明第一实施例的语音合成方法中,选择语音片段的方式。依照该实施例,将大量的用0型和1型重音发音的单词或短语以及它们的音位标音(音标,罗马字符,假名字符等)累积在波形数据库中。在紧接元音稳定段或清辅音之前,将单词或短语的语音分割成语音片段,以便可以抽取每个语音片段。例如,采用最长匹配法,根据待合成语音的音位标音检索语音片段的音位标音。然后,根据待合成语音的重音类型以及待合成语音中使用已检索到的语音片段的位置,确定是把1型重音还是0型重音施加到已检索到的语音片段上。
参照图1,以下将通过一例子描述依照本发明的语音合成方法。该例说明了当合成“yokohamashi”时选择语音片段的方式。首先,根据图1A所示的“yokohamashi”的音位标音,用最长匹配方法或类似方法在数据库中确定一段语音片段。在该例中,数据库中“yokohamaku”的语音片段“yokohama”可匹配。接着,根据音调起伏,确定是将0型重音还是1型重音施加到语音片段“yokohama”上。图1B画出用1型重音发“yokohamaku”的音高频率的起伏,而图1C画出用0型重音发“yokohamaku”的音高频率的起伏。这里,将罗马字符用作音位标音。如图1A中实线所示,用0型重音发音的“yokohamashi”的音高频率在“yo”处上升。因此,这里使用以具有上升频率的0型重音发音的“yokohamaku”中从第一个音节“yo”至第五个音节“ku”辅音之前的部分。
“ashi”中有一重音核,致使音高频率在此期间下降。因此,不使用图1E所示的用0型重音发音的“ashigara”中的“ashi”,而是使用图1D所示的1型重音。由此,选择了音高频率最接近于待合成语音的语音片段及其匹配音位标音。(2)第二实施例
图2是一方框图,示出了依照本发明第二实施例的语音合成设备的结构。在图2中,标号100表示输入缓冲器,用于存储音位标音所表达的字符串,及其重音类型之类的韵律,字符串和韵律由主计算机提供。标号101表示合成单元选择装置,用于从音位标音中检索合成单元,标号1011表示选择开始指针,用于指示应从存储在输入缓冲器100内的字符串中的哪一位置开始检索一语音片段,使之成为一合成单元。标号102表示合成单元选择缓冲器,用于保持合成单元选择装置101所选择的合成单元的信息,标号103表示所用语音片段选择装置,用于根据检索规则表104确定语音片段,标号105表示语音波形数据库,该数据库由0型重音和1型重音发音的单词或短语构成,标号106表示语音片段抽取装置,用于从存储在语音波形数据库105中的首标信息中抽取语音片段,标号107表示语音片段处理装置,用于将语音片段抽取装置106抽取的语音片段与待合成语音的韵律匹配,标号108表示语音片段连接装置,用于连接语音片段处理装置107处理过的语音片段,标号1081表示连接缓冲器,用于暂时存储将被连接的经处理的语音片段,标号109表示合成语音存储缓冲器,用于存储语音片段连接装置108输出的已合成语音,标号110表示合成语音输出装置,而标号111表示韵律计算装置,用于由存储在输入缓冲器100中的字符串和韵律计算已合成语音的音高频率和音位单元持续期,并将它们输出给语音片段处理装置107。
图3示出了图2所示检索规则表104的内容。根据检索规则表104,在合成单元选择装置101选作候补的语音片段单元中,确定一语音片段。首先,根据待合成语音是1型重音还是0型重音,以及待合成语音中使用相关语音片段的位置,确定将参照哪一列。“开始”列表示开始抽取语音片段的位置。“结束”列表示当抽取语音片段时最长匹配法中检索区的结束位置。
表中的每个数值都由两位数组成。当十位上的数字为0时,从0型重音发音的语音中抽取语音片段。当十位上的数字为1时,从1型重音发音的语音中抽取语音片段。个位上的数字表示语音音节的位置。当个位数字为1时,音节的位置在第一音节。当个位数字为2时,音节的位置在第2音节。顺便说一下,“结束”列中的0表示直到短语最后一个音节都被包含在最长匹配法的检索区中,而“*”表示直到不包括合成语音重音核处的音位标音变成了检索的对象。
图4示出了语音波形数据库105的数据结构。在首标部分1051中存储:数据1052,表示发音的重音类型(0型或1型);数据1053,表示被记录语音的音位标音;和数据1054,表示将语音分割成语音片段的位置。在语音波形部分1055中,存储了在抽取语音片段之前的语音波形数据。
图5示出了输入缓冲器100的数据结构。将音位标音作为字符串输入到输入缓冲器100中。另外,将有关音节延迟度和重音类型的韵律作为数字也输入到输入缓冲器100中。将罗马字符用作音位标音。用两位数表示韵律。十位上的数字表示单词的音节延迟度,而个位上的数字表示重音类型。
接着,以下将参照图6所示的流程图,描述依照该实施例的语音合成设备的工作情况。首先,从主计算机将音位标音字符串及其韵律输入至输入缓冲器100中(步骤201)。然后,用最长匹配法对音位标音进行分割(步骤202)。接下来,检查在单词的哪个位置上使用了经分割的音位标音(步骤203)。如果存储在输入缓冲器100中的音位标音字符串(这里使用罗马字符)为例如“yokohamashi”,那么用合成单元选择装置101,在存储于语音波形数据库105之首标部分1051中的一组音位标音中检索以“yo”开始的单词。在该情况下,例如检索到“yokote”中的“yo”和“yokohamaku”中的“yo”。随后,检查“yokohamashi”字符串的第二个字符“ko”是否与已检索到的单词中的每个“ko”都匹配。这次,选择“yokohamaku”中的“yoko”。用类似的方式继续检索,最后选中“yokohama”作为候选合成单元。由于该“yokohama”是“yokohamashi”的第一语音片段,并且“yokohamashi”的重音类型不是1型重音(是4型重音),所以合成单元选择装置101在检索规则表104中对非1型重音类型检查词头、开始和结束列的内容,并选择用0型重音发音的“yokohamaku”的第一音节至第二音节作为候选对象来抽取。该信息被馈送到所用语音片段选择装置103。所用语音片段选择装置103检查存储在语音波形数据库105首标部分1051中用0型重音发音的“yokohamaku”之第一音节和第四音节的分割位置数据1054,并且在“yo”词头设置波形抽取的开始点,在清辅音之前设置波形抽取的结束点(步骤204)。此时,选择开始指针指向“shi”的“s”。对所有经分割的音位标音进行上述处理(步骤205)。另一方面,韵律计算装置111根据存储在输入缓冲器100中的韵律计算语音片段的音高波形、持续期和功率(步骤206)。将所用语音片段选择装置103选中的语音片段馈送到抽取语音片段波形的语音片段抽取装置106中(步骤207),再馈送到语音片段处理装置107进行处理,以便与韵律计算装置111计算得到的所需的音高频率和音位单元持续期匹配(步骤208),然后馈送到语音片段连接装置108进行连接(步骤209)。如果该语音片段是短语的词头,语音片段不连接任何对象。为此,将语音片段存储在连接缓冲器1081中,准备与下一个语音片段连接,然后输出到合成语音存储缓冲器109(步骤210)。接下来,由于输入缓冲器100的选择开始指针1011指向“shi”的“s”,所以合成单元选择装置101在波形数据库105之首标部分1051中的音位标音组中检索包括“shi”的单词或短语。此后,用类似方式重复上述操作,以便合成语音(步骤211)。(3)第三实施例
接下来,将参照图7至图10描述本发明的第三实施例。根据第三实施例,图2所示的语音波形数据库105存储了用1型重音和0型重音发音两次的词头、元音-辅音-元音(VCV)序列以及元音-鼻音-辅音-元音(VNCV)序列的音节。这里,波形抽取位置仅位于元音稳定段。现在,将参照图8A至8C描述合成“yokohamashi”时选择语音的方式。这里,将罗马字符用作音位标音。
语音波形数据库105中存在用1型重音和0型重音发音的两个音节“yoyo”的序列波形,并且待合成语音的重音类型是4型重音,致使词头具有与0型重音相同的音调起伏。因此,这里选择用0型重音发音的“yoyoyo”第一个音节中的“yo”
关于下一个“oko”,有两种“oko”作为用0型重音和1型重音发音的“okooko”单词的前半部分和后半部分,即共有4种“oko”。待合成语音的音高频率具有在这些语音片段即“yo”和“oko”之间上升的音调起伏,由此,这里选择图9中用0型重音发音的“okooko”的第一个“oko”,它最接近待合成语音的音高频率。
关于下一个“oha”,在此期间音高频率较高。为此,在从0型重音和1型重音发音的“ohaoha”中获得的四种“oha”中,选择音高频率较高的用0型重音发音的“ohaoha”的第二个“oha”(1型),因为它最接近于待合成语音的音高频率。类似于“oha”的情况,选择用0型重音发音的“amaama”中的“ama”.
关于“ashi”,由于“yohohamashi”是4型重音,所以在“ashi”期间音高频率下降。为此,在从0型重音和1型重音发音的“ashiashi”中获得的四种“ashi”中,选择音高频率下降的用1型重音发音的“ashiashi”的第一个“ashi”(2型),因为它最接近于待合成语音的音高频率。处理并连接如上选择的语音片段,以便合成语音。
在该例中,语音波形数据库由单词构成,每个单词通过对两个音节或三个音节发两次音来获得。但是,本发明不限于此例,可以用非0型重音和非1型重音的重音类型来构造数据库,致使用3型重音对两个音节序列的语音发音,从而由前半部分获得0型的语音片段,由后半部分获得1型的语音片段。另外,通过使用从所发语音中抽取合成单元并在两音节序列或三音节序列之前和之后插入合适的语音,也能实现上述实施例。
根据该实施例,通过用0型重音或1型重音对双音节序列或三音节序列构成的单词发音两次,来获得数据库中的语音,从而关于一个VCV音位标音,数据库中总存在着4种图5所示的VCV语音片段。因此,可以准备好覆盖待合成语音音调起伏之变化所需的所有语音片段。同时,关于语音片段选择规则,可以将分段音位标音简化成VCV单元,从而用图10所示的检索表确定语音片段,不再使用最长匹配法。