语音段制作方法及语音合成方法

文档序号:2821168阅读:377来源:国知局
专利名称:语音段制作方法及语音合成方法
技术领域
本发明涉及语音段制作方法、语音合成方法及其装置。上述这些可应用于电话问讯服务,语音信息指导系统。个人计算机的语音规则合成装置等。
背景技术
语音规则合成技术可用于将文本变换成语音,如一边在个人计算机上执行其它任务等一边听解说或电子信箱的留言,或可听阅并校对字处理器所写的稿件。再有,将使用语音合成的接口接入如电子书那样的装置。也可不用液晶显示等阅读存储在软盘、CD-ROM等中的文本。
为上述目的使用的语音合成装置要求其体积小且价格便宜。作为这类应用,至今已采用了参数合成法,压缩记录和再现法等等,但是在这类传统语音合成方法中,由于要使用专门的硬件如DSP(数字信号处理器)和大容量的存储器,所以这类应用难以继续开拓。
为将文本变换成语音,有这样两种方法。一种方法是借助模型(model)制做音素链的规则,且当按该规则使参数根据目的文本变化时进行合成。另一种方法是按照一个小的音素链单元如CV单元和VCV单元(C代表辅音,V代表元音)分析语音,将实际语音的全部必需音素链收集起来作为段存储,并按照目的文本连接这些段进行合成,这里,将前者称为参数合成法,而后者称为连接合成法。
一种代表性的参数合成法是峰段(formant)合成法。该方法是将语音形成过程分为声带振动的语音源模型和声道的传输函数模型,并借助两模型的参数时间变化来合成需要的语音。峰段合成法中使用的典型参数是称为峰段的语音振动频率轴上的波峰位置。通过使用语音学成果方面的规则和存储典型参数值的表来参生这些参数。
参数合成法要有如计算声道传输函数那样高的计算费用,且DSP等需要实时合成。而且,参数控制涉及大量的规则,因此难以改进语音质量。但另一方面,表格和规则具有小的数据量,因此,小存储量就足够了。
相比之下,根据语音段的存储格式,连接合成法可采用下面两种形式。即,通过使用语音模型将语音段变换成PARCOR系数或LSP参数的参数连接法,和不使用已知的语音模型将语音波形直接累加的波形连接法。
参数连接法,将语音按CV、CVC、VCV(C表示辅音,V表示元音)等分成段,并变换成如PARCOR系数那样的参数,存储在存储器中,当需要时再现。此方法中,存储格式是语音参数,因此,当合成时,很容易改变音高(pitch)或时间长度,使这些段能平滑连接。此外,所需存储器容量相当小。但其缺点是合成时的计算处理量相当大。因此,需要一个如DSP(数字信号处理器)那样的专用硬件。再有,因语音模型化不充分,由参数再现的语音质量上受到制约。
另一方面,作为波形连接法,已知其中有直接将语音累积在存储器中的方法,和对要累积在存储器中的语音进行压缩和编码且需要时再现的方法。对于压缩编码,可使用μ律编码,ADPCM等。这样能以比参数连接法更高的保真度合成语音。
当要合成的语音内容限于少量变化时,可按句子单元、字节单元、或词单元记录并适当编辑该内容。然而对于一个任意的文本,要求如同参数连接法那样,以更小的语音段累加。不同于参数合成的是,难以改变音高或时间长度,因此,对于高质量的合成,必须制作具有各种音高和时间长度的段。
这样,每个段的存储容量为参数连接法的10倍,当要求质量高时,所需存储容量更大。增大存储容量的因素受控于用在段中的音素链单元的复杂程度和各种音高和时间长度段的制作。
作为音素链单元,如上所述,可以认为是CV单元或VCV单元。CV单元是一对辅音和元音的组合,对应于日语的一个音素。假定辅音26个元音5个,则CV单元可用于130种组合。由于不能表达从前置元音至辅音的连续波形变化,所以损失了自然度。VCV单元是一种在CV单元中包含一前置元音的单元。这样,VCV单元可有650种,5倍于CV单元。
关于音高和时间长度,波形连接法不同于参数连接法,语音段一制作,就难以改变段的音高和时间长度。因此,预先制作的段必须包括以各种音高和时间长度发出的语音的变化,这导致增大存储容量。
因此,波形连接法要求大的存储容量用以合成高质量的语音,这种存储容量为参数合成法中所用的几倍到20倍那么大。然而,从原理上说,使用大容量存储装置能合成极高质量的语音。
因此,波形连接法在高质量语音合成法中是相当不错的,但问题在于不能控制内在语音段音高和时间长度,而且需要大容量的存储装置。
为解决这些问题,提出了一种PSOLA(音高同步叠加)法(日本专利公开号3-501896)。其中,语音波形用与音高同步的窗函数截取,当合成时叠加到所需的音高周期。
该方法中的截取位置部分有窗函数中心闭合声门带来的激励脉冲波峰。该窗函数的形状应在其两端衰减到零(如,Hanning窗)。当合成音高周期短于语音波形的原有音高周期时,则窗长度为合成音高周期的两倍那么长,相反,当合成音高周期较长时,则为原有音高周期的两倍。通过削减或重复切割音高波形就能控制时间长度。
因此,用一个语音段能合成任意音高和时间长度的波形,从而能以小存储容量获得高质量的合成声音。
然而,在该方法中,问题在于合成语音时计算量大。这是因为合成时必须用窗函数截取音高波形,而且还需进行频繁的三角函数和乘法计算。
如,合成一个样本波形所需操作如下。为了产生一个样本音高波形,读出语音段要读一次存储器,计算Hanning窗函数要计算其所需三角函数一次,并作加法一次(使该三角函数直流偏置),计算给该三角函数的角度要作乘法一次,使用该三角函数的值对语音波形加窗要作乘法一次。由于通过叠加两个音高波形产生合成波形,所以需两次访问存储器,计算三角函数两次,四次乘法和三次加法(见图19)。
另外,为避免增加音素链单元,人们提出了一种混合方法(日本专利申请号No.6-050890)。该方法中,段基本上仅由CV单元构成,且从元音到辅音的变化部分用参数合成法产生。因此,音素链单元的变化有130种,且参数合成部分的运算速率较低,与纯参数合成法相比,计算费用可降低。
然而,在混合法中,参数合成部分的计算费用仍旧高,而且,在实时参数合成或参数高速变化情况下,由于计算精度或合成传输函数(所谓滤波器)的暂态特性的影响可能会产生有害的噪声。因此,在合成声音的中间可能产生“扑通”声或“噼啪”声,且声音质量变坏。

发明内容
针对普通语音合成中的问题,本发明的目标是提供语音段处理方法、语音合成方法及其装置,其音质失真度较小并能减少语音合成时的计算量。
按照本发明,在语音波形特定间隔内每个音高周期内的每个峰位上,利用长度小于每个峰位相邻两个峰位距离的窗函数截取音高波形,在语音波形的基础上制作用于所有需要的语音波形的语音段数据,存储语音段数据,从所存储的语音段数据中读取所需语音段数据的所需音高波形,并按叠加至所需音高周期间隔的方式排列,再对它们求和以产生一个语音波形。
本发明还提供语音合成方法用于产生控制信号串,该信号串作为一串控制信号包含时间信息、表示特定函数的函数信息以及任意数目的对应特定函数的参数,该语音合成方法还利用控制信号内的函数信息和参数按时间信息所表示的定时对语音段进行控制。
本发明进一步提供语音合成装置,其包含控制部件用于产生控制信号串,该信号串作为一系列控制信号包含时间信息、表示特定函数的函数信息以及任意数目的对应特定函数的参数,该部件还利用控制信号内的函数信息和参数对按时间信息所表示的定时对语音段进行控制。
在本发明中,用特殊的连接合成代替了迄今为止一直利用参数合成完成的从元音到辅音的波形变化部分。即预先采用参数合成方法合成波形变化部分生成中要用的语音段。因此普通参数合成部分对应的从辅音到元音的波形变化部分的计算成本几乎与其它连接合成部分的相同,而且与现有技术相比合成的计算量较小,另外还可以减小用于吸收计算速度变化的缓冲存储器的容量。并且由于波形变化部分用的语音段预先采用静态参数合成,所以从理论上讲不会出现因在合成时参数变化而引起的异常声音问题。
显而易见,本发明的优点是可以在不影响音质的前提下减少语音合成的计算量。
本发明另一个优点是可以通过计算音高波形差异来压缩语音段从而减小所需存储器容量。
按照本发明,现有技术参数合成部分对应的从辅音到元音的波形变化部分的计算成本与其它连接合成部分的相似,从而可以将整个计算成本降至极低。
此外,还可以减小吸收计算速度变化所需缓冲存储器的容量。
此外从理论上讲解决了在参数合成中产生异常声音的问题。


图1是本发明第一实施例中语音合成装置的框图;图2是第一实施例整个处理(主要是控制单元的)的流程图;图3是表示第一实施例中音节缓冲器数据结构的示意图;图4是解释第一实施例中音节缓冲器内音节ID、词组长度以及重音级设置模式的示意图;图5是解释第一实施例中音节缓冲器内韵律设置模式的示意图;图6是表示第一实施例中事件表数据结构的示意图;图7是表示第一实施例中语音段DB内语音段数据结构的示意图;图8是解释第一实施例中产生一个音节“才”的事件表模式的示意图;图9是第一实施例中事件读取和合成控制单元的流程图;图10是解释第一实施例中包含所需音高的合成语音模式示意图;图11是第一实施例中触发器处理的流程图;图12是解释第一实施例中语音波形的语音段创建模式示意图;图13是表示原始声音波形频谱的示意图;图14是表示当窗长度等于2乘以音高周期时的波形频谱示意图;图15是表示当窗长度等于1.4乘以音高周期时波形谱的示意图;图16是本发明第二实施例中语音合成装置的框图;图17是表示第二实施例中被压缩的语音段DB内的语音段数据结构示意图;图18是表示第二实施例样本读取单元处理的流程图;图19是表示计算量比较的示意图;图20是本发明第三实施例中语音合成装置的框图;图21是第三实施例中从音素符号串分析单元1输出至控制单元2的信息的框图;
图22是第三实施例中存储在语音段DB内的数据格式图;图23是表示利用取自自然语音波形的窗的音高波形截取模式的波形图;图24是第三实施例中存储在语音段DB4内的数据格式图;图25是表示第三实施例中存储在语音段DB4内的音高波形生成算法的流程图;图26是表示自然语音段索引实例和自然语音段通道波形合成模式的波形图;图27是表示合成语音段ID实例和合成语音段通道波形合成模式的波形图;图28是第三实施例混合控制信息实例的曲线图;图29是表示本发明第四实施例中合成语音段通道实例的框图。
具体实施例方式
现借助附图详述本发明较佳实施例。
图1是本发明第一实施例中语音合成装置的框图。在该语音合成装置中,提供了作为控制部件的控制单元1,其输出连接至作为管理部件的管理单元2、多个状态保持单元3以及振幅控制单元4。管理单元2与多个状态保持单元3相连,而多个状态保持单元3又逐个与作为音高波形读取单元的多个样本读取单元5相连。多个样本读取单元5的输出与叠加单元6的输入相连,而叠加单元6的输出又与振幅控制单元4相连。振幅控制单元4的输出接至输出单元8,从而将电信号转换为声振动,并以声音形式输出。作为语音段数据存储器部件的语音段DB7与多个样本读取单元5相连。
在这种结构的语音合成装置中,利用流程图来描述其操作。图2是表示整个处理(主要是控制单元1)流程的流程图。
首先,控制单元1接收诸如结合有重音和分隔信息的罗马字母号或片假名之类的发音符号作为输入数据(步骤S1)。随后进行分析,其结果按每个音节存储在缓冲器内(步骤S2)。图3表示音节缓冲器的数据结构。每个音节包括音节参考号(ID)、词组长度、重音级、持续时间、始部音高、中部音高等数据域,经安排后其长度足以存储同时输入的多个音节(例如一行中的某一部分)。
控制单元1对输入数据进行分析并设定音节ID、词组长度和重音级。音节ID是用来定义诸如“あ”和“か”音节之类的号码。词组长度表示由输入的分隔符所限定的范围内的音节数,该值在词组开始的音节域处设定。重音级即重音强度,每个词组的重音级不是0就是1。
例如对于词语“音声合成”的语言处理结果,输入的符号行为“オ()ン(η)ヤ(Se)エ(e)/ゴ(go>1オ()ヤ(Se)エ(e)”C/为分隔符,而1为重音级,音节ID、词组长度以及重音级的设置模式示于图4。词组长度在词组开始音节处设置。
因此根据词组长度和重音级的设置信息设定好韵律(步骤S3)。韵律的设定分为持续时间的设定(这里即音节持续时间)和音高的设定。持续时间根据预先确定的语速和考虑其前后音节及其它关系的规则来确定。音高按诸如Fujisaki(藤崎)模型之类的音高生成方法产生,并用在音节始部和中部的数值表示。在上述实例的“オンセエ/ゴ”1オセエ”的输入符号行中的韵律设定模式示于图5。
这样生成的音节缓冲器被依次逐个读取,并生成一张事件表(步骤S5)。如果没有剩余的音节缓冲器(步骤S4),则处理结束。事件表是一列称之为事件的信息,事件提供了用于向语音波形合成单元直接发出指令的功能信息,其结构示于图6。每个事件包含与下一事件间隔的’事件间隔”作为时间信息,因此事件表用作沿时间轴的控制信息。
事件类型包括SC(段变化)和TG(触发器)。SC是一条将语音段改变为与音节ID表示的音节类型对应的语音段的指令。
根据每种事件的类型提供数据。SC包含作为参数的语音段ID,而TG包含作为数据的音高ID。语音段ID是一个表示对应每个音节的语音段的号码,而音高ID是一个表示在每个语音段上的每个音高周期内被截取的波形(音高波形)的号码。
读取一个音节缓冲器指的是读取音节ID,并设置相应的语音段ID数据,产生SC事件。事件间隔可以是0。
接着产生TG事件。下面描述存储在语音段DB7中的语音段数据结构。
图7是语音段数据结构的示意图。语音段分为一个初始波形和多个音高波形。例如,在音节‘カ’的开始,存在没有声带振动和音高的无声(清音)部分。该部分是辅音‘K’的谐振音。此处在合成时不必控制音高,并直接保持作为波形。这种波形和之为初始波形。
这种初始波形不仅用于诸如k.s.t之类清辅音,而且还用于诸如g、z、d之类浊辅音。例如对于“z”,由于噪音较强,并且在其它浊辅音的起始处音高也不稳定,所以难以截取音高波形。因此开始的短暂部分被截取为初始波形。
当‘K’的这部分结束时,声带开始振动从而进入发声部分。在该部分,通过利用位于音高周期所对应波形峰位中央附近的汉宁(Hanning)窗进行截取按每一音高周期将该部分隔开并保持。这称之为音高波形。
每个语音段的数据结构由“初始波形长度”、“初始波形指针”、“音高波形数目”和多个“音高波形”组成。音高波形大小应足以容纳上述Hanning窗的窗长度。如下文所述,窗长度值小于音高周期的两倍,并且不需要精确确定其大小。对于所有语音段上的所有音高波形该窗可以设定为都是相同的,或者可以对每个语音段设定得不同,或者也可以对每个音高波形设定得不同。在任何一种方法中,窗长度的变化都比较小。因此汇集多个音高波形的二维布局有助于有效利用存储区域。
现形成上述结构的阵列,并将所有必要的语音(音节)的语音段累加起来。初始波形分开存储于不同的区域。由于初始波形的长度随语音段不同而不同,所以当它们包含在语音段结构中时,就浪费了存储器容量,因此比较好的是将它们以一维布局存储在另一连续区域内。
假设已制作好这种语音段,现回过头来解释TG事件的生成。
在TG事件的数据中,设定了音高ID。在第一个TG事件数据中,设定0表示初始波形。事件间隔等于“初始波形长度”减去1/2个窗长度。
接着生成TG事件。在该TG事件数据中,设置1表示、第一音高波形、事件间隔即在用于合成的音高波形处的音高周期。通过按音节缓冲器的音高信息始部音高和中部音高)内插来确定音高周期。
同样也对一个音节部分生成TG事件。选取作为每个TG事件数据的音高ID,使得原始语音波形中音高波音位置与合成中的音节中的位置之间距离最短。也就是,当原始语音波形的音高与合成中的音高等同时,音高ID按0、1、2等逐个增加,但当合成中的音高较高时,对同一号码重复数次,如0、1、1、2、3、3等等。相反,当合成中的音高较低时,则按类似01、3、4、6等的次序进行,跳过了中间的号码。这种方式设计成防止合成中音高控制引起的语音段时间长度的变化。图8表示音节“オ”的事件表创建模式。
当创建了一个音节的件列表时,即转入下一步骤进行事件读取和合成控制(步骤S7)。该过程用图9的流程图具体解释。在图9中,读取一个事件(步骤S11),判断事件类型是否为SC(步骤S12),如果是SC,执行语音段变化处理(步骤S13),如果不是SC,则判断事件类型是否为TG(步骤S14),如果是TG则执行触发器处理(步骤S15)。此后,判断是否到达读取下一个事件的时间(步骤S8),并重复语音波形合成处理直到该时间到达(步骤S9),然后重复从读取事件到语音波形合成的处理直到事件表结束。
以下解释图9中的语音段变化处理和触发器处理。这些处理是根据诸如音高控制之类的时间信息来进行的,这是因为每个事件处理要按照事件间隔进行。也就是说,当读取某一事件时,如果事件间隔为20,接下来的语音合成波形就执行20次,随后读取下一事件。在语音波形合成过程中,合成一个样本的语音波形。由于TG事件的事件间隔就是音高周期,所以通过按照TG事件读取音高波形,合成了包含所需音高周期的语音波形。具有所需音高的语音合成模式示于图10。
以下描述语音波形合成过程细节。管理单元2管理语音段ID,并且还管理用来表示接下来在多个状态保持单元3和样本读取单元5的组合(和之为组件)中采用哪一个组件的组件ID。每个组件的状态保持单元3保存当前的音高ID、音高波形的开始地址和结束地址以及表示当前读取地址的读地址。样本读取单元5从状态保持单元3读取读地址,当其不超出目的地址时,就从语音段DB7的相应地址读取语音段的一个样本。此后,状态保持单元3的读地址加1。叠加单元6将所有组件的样本读取单元5的输出叠加并输出。该输出由振幅控制单元4进行振幅控制,并通过输出单元8转换为声振动后以话音形式输出。
在图9的语音段变化处理中,管理单元2的语音段ID转换为与给定音节ID对应的号码。
在触发器过程中,管理单元2的组件ID循环更新。即,如图11所示,首先对组件ID加1(步骤S21),并判断其是否等于组件编号(步骤S22),如果相等则清0(步骤S23)。由此从事件数据中读取音高ID(步骤S24),并进一步从管理单元2提取语音段ID(步骤S25),得到相应语音段的相应音高波形开始地址(步骤S26),并将其改入状态保持单元3的开始地址。而且,利用音高波形开始地址初始化读地址(步骤S27),并利用预先改定音高波形的长度改定结束地址(步骤S28)。
图12表示本实施例中制作语音段的方法。第一行的图表示作为语音段基础的语音波形。PS为开始标记,P0、P1…为附于对应音高峰位的音高标号,而W0,W1…表示截取窗长度。S0、S1…为截取波形。S1及其后面的S2和S3表示每个音高周期内被截取的波形,而S0为初始波形,其截取长度自开始记号到P0后W0/2的长度。P0之后所示为Hanning窗的后半部分,而之前为正方形窗。S1之后的段用Hanning窗截取。
Hanning窗长度Wn(n=0,1,2,...)可以用所有语音波形的音高周期代表值(如平均值)统一确定,例如方程式(1)所示[1]Wn=Ta11×R(Ta11是所有语音的音高周期平均值,或用每个语音波形中音高周期代表值(例如平均值)确定,例如方程式(2)所示[2]Wn=Tind×R(Tind为单个语音的音高周期平均值),或可以用每个音高波形相邻的音高周期各个确定,如方程式(3)或(4)所示[3]Wn=((Tn+Tn+1)/2)×R,n≥1[4]Wo=T1×R。
式中,R是窗长度与音高周期之比,例如约为1.4左右。这样做的理由如下。
图13表示某个语音的时间波形(上图)和它的FFT(快速傅里叶变换)频谱及其LPC(线性预测编码)频谱包络下图)。取样频率fs如方程式(5)所示[5]fs=10KHz分析窗口长度W如方程式(6)所示[6]W=512线性预测阶数M如方程式(7)所示[7]M=12窗函数为Hanning窗。该语音的音高周期T如方程式(8)所示,而分析对象部分从时间波形的点2478到点2990。
T=108FFT频谱的谐波成分较多,因而具有作为音高检测的梳状周期结构。LPC频谱包络形状平滑,近似于将FFT频谱的峰位链接起来,并由这种形状检测出音素。
图14表示同一语音的时间波形(上图)和W=2T(窗长度等于2乘以音高周期)时的FFT频谱(下图)。从时间波形点2438到点2653的部分为分析对象部分。此时FFT频谱丧失了梳状结构并以频谱包络线表示。这是因为Hanning窗的频率特性卷积入原始频谱的缘故。
也就是图13所示原始频谱具有一个间隔为fs/T的梳状周期结构。另一方面,在窗长度为W的Hanning窗的频率特性中,主波瓣的带宽B如方程式(9)所示。
B=2fs/W在W=2T处,B如方程式(10)所示,并且通过将其与语音频谱一起卷积,可以充分填满高次谐波的间隙。
B=fs/T由于这个原因,由W=2T处的Hanning窗截取的音高波形频谱接近原始语音频谱的包络线。通过重排和叠加这种具有新的音高周期T′的截取波形,可以合成具有所需音高周期的语音。
如果W<2T,则有B>fs/T,所以当将其与语音频谱一起卷积时会使频谱包络线变形。如果W>2T,则有B<fs/T,并且当将其与语音频谱一起卷积时,不能充分填满高次谐波之间的缝隙,因而频谱中就包含了原始语音的谐波结构。在这种情况下,如果在所需的音高周期内重排和叠加,则会由于留有包含原始语音波形的音高信息而产生类似回音的声。
利用上述性质,在现有技术(日本专利公报平成3-501896)中通过在原始语音音高周期T小于所需音高周期T′时定义W=2T而在T>T′时定义W=2T′实现了高质量的音高变换。当T>T′,即音高升高时,为了保持合成波形功率的均匀性,窗长度等于2乘以合成音高周期而不是原始语音的音高周期。即两个Hanning窗值的和总是1并且不发生功率变化。
如上所述,当W<2T时,截取的音高波形包含了对原始语音频谱的失真。但是除非W与2T比较起来非常小,否则这种失真是允许的。如果所有合成音高的范围都可以被固定的W覆盖,则只要在合成时制作具有前述窗的语音段(而不必如现有技术那样在合成时截取窗)并进行音高波形叠加处理即可,这样就可以减少计算量。
当采用固定窗W时,功率随着合成音高的变化而变化。即,合成波形的功率正比于合成音高的频率。幸运的是这种功率变化与自然语音的音高与功率的变化关系接近。在自然语音中,观察到的这种关系是当音高较高时功率较大,当音高较低时功率较小。因此,利用固定的W获取了性质接近于自然语音的合成声音。
因此假定W=2T,则截取的音高波形频谱中不含谐波结构,预期可以获得高质量的音高变换。
再来看图14,虽然已基本上去除了谐波结构。但仍有轻微的特征存在。原因就在于方程式(10)中Hanning窗主瓣的带宽只是近似的,实际上应更小一些。
在时域中,从窗化后的波形中留有以间隔T重复的波形的事实可以直观地理解这一点。在采用W=2T的窗的波形中,窗化部分中央区域以外其它部分的波形具有较高的间隔为T的相关度,这是在频域内留下谐波结构的原因。
因此,在W=2T的窗长度处,原始语音的音高很少对合成语音有影响,并且可能产生回音。
因此通过略微减小窗长度W可以避免这个问题。此外,当在截取所有音高波形中采用同一窗长度时,考虑到原始语音的音高的微小变化,可以将W定义得小一些来防止发生W>2T的情况。例如,假定所有波形的平均音高周期为Tavr,则可以考虑设定W=1.6Tavr。
局部采用这种窗长度,其值可以取得非常小,例如W=1.4T。图15表示W=1.4T时截取的音高波形频谱。图13的原始频谱的包络线得到充分的表达,而且频谱形状极佳,与图14中W=2T的情形相比并不差,况且频谱的包络线更好。
在本方法中,实际上合成计算只包含加法,而且可以只进行极少量的算术处理得到高质量的合成语音。
合成一个合成波形样本所需操作如下。为了产生音高波形的一个样本,需要读出一次存储器以该读取语音段。用于将组件输出叠加起来的加法运算的次数为组件个的减1。因此,假设组件个数为n,合成波形的一个样本需要n次访问存储器并进行(n-1)次加法。假定n=4,操作包括4次存储器访问和3次加法。
以下描述本发明的第二个实施例。图16是本发明第二个实施例中语音合成装置的结构图。该语音合成装置包括控制单元1(它的输出连到管理单元2),多个状态保持单元3,以及振幅控制单元4。管理单元2连到多个状态保持单元3,这些状态保持单元3又一一连到相同数量的样本读取单元5。还有波形保持单元9,数量与样本读取单元5一样多,逐一相互连接。多个样本读取单元5的输出合在一起后馈入叠加单元6。叠加单元6的输出馈给振幅控制单元4,振幅控制单元4的输出馈入输出单元8。备有连到所有样本读取单元5的压缩语音段数据库(DB)10。
在压缩语音段DB10中,语音以图17中示出的形式存贮。即,和图7一样存贮初始波形的长度、初始波形的指针,以及音高波形的数量,但不是存储音高波形,而是存储第一音高波形和多个差分波形。初始波形存贮区与图7中相同。
差分波形是图7中相邻峰值波形的差值。因为所有的音高波形都在波峰中心截取,它们的差表示相邻音高之间的波形变化。在语音波形中,因为相邻音高之间的相关性大,所以差分波形的振幅极小。因此,存贮区中分配给每个字的二进制位数可减少几位。或者,依据编码方法,可把位数减少到原来的1/2甚至1/4。
以下用以此形式存贮的压缩语音段DB,说明实际读出波形和合成语音波形的过程。为了合成的一个样本,相继在所有的组件中进行样本读出。
首先,假定样本读取进程就接在语音段变化进程和触发进程后开始。在图18中判断是否为初始波形(步骤S101),如果初始波形终止了,则处理第一音高波形(步骤S102,S103),如果没有终止(步骤S102),则状态保持单元3中音高ID指初始波形,因此从初始波形中读出一个样本(步骤S104),并输出到叠加单元6(步骤S105)。同时,在状态保持单元3中读出地址加1(步骤S106)后,处理结束。然后,除非读数地址超过最终地址,否则一直进行同样的处理,如果超过了则结束。
然后,假定样本读取进程接着后来的触发(TG)事件开始。状态保持单元3中的音高ID当然不指初始波形。开始时,示出第一音高波形(步骤S107)。于是,从第一音高波形中读出一个样本(步骤S110)。如果第一音高波形结束了,则处理差分波形(步骤S109)。地址更新的进行与上文所述相同,但读出值暂时存在波形保持单元9中(步骤S111)。波形保持单元9是一个音高波形部分的存贮区,从第一音高波形的开始算起第n个位置上读出的值存贮在从波形保持单元6的开始算起第n个位置中。该值输出到叠加单元6(步骤S112)后,下一个样本的处理开始(步骤S113)。
如果音高ID指差分波形(步骤S114),则从差分波形中读出一个样本(步骤S116)。这里,如果一个差分波形终止,则处理下一个差分波形(步骤S115)。地址更新的进行同上。在差分波形的情况下,把读出值与存贮在波形保持单元9中的值相加(步骤S117)。结果,可从差分波形恢复原始波形。这个值再存入波形保持单元9中(步骤S117),也输出到叠加单元6(步骤S118)。然后操作进入下一个样本的处理(步骤S119)。
这样,通过以差分波形的格式累积音高波形,可明显减少所需的存贮容量。顺便说,与第一个实施例相比此结构所需的备分组件和计算量很少。即,每个组件一个一音高波形存贮器,一次样本读出处理只要分别进行一次加法运算、存贮器读出一个字和存储器存入一个字。
以下说明合成一个合成波形的样本所需的计算。为产生一个音高波形样本,读出差分波形需要一次存贮器读数,把该读出值与波形保持单元9的值相加并恢复原始波形需要存储器读出和作加法各一次,把所得值再存入波形保持单元9需要存储器写入一次。假定组件数为n,合成波形的一个试样本需要3n次访问存贮器,以及n+(n-1)次加法运算(用于叠加n个组件的输出的加法需要n-1次)。假定n=4,合成波形的一个样本需12次访问存贮器和15次加法运算。在图19中比较已有技术和本发明的计算量。
在上述实施例中,把Hanning窗用作窗函数,但不限于此,可使用其它形式。
在示出的实施例中,事件类型只使用SG(语音段变化)和TG(触发),但也可用其他振幅控制信息、把信息变成由其它说话人语音产生的语音段集等类型。
此外,在实施例中,对语音段采用叠加法改变音高,但不限于此,也可使用峰段合成中的声带源波形改变音高。
还有,这样,通过在制作语音段时完成加窗(我们把它叫做先行加窗法),合成中的计算量可急剧减少,因此可把音质变坏抑制得很低。此外,通过计算音高波形的差,可有效地压缩语音段,它可在小于已有技术的存贮量中进行。此外,通过压缩语音段,合成中的计算量和装置的规模增加可变得极小。
于是,计算量非常小且装置规模也很小,可用于高质量小型语音合成装置。
这里,为实现小的存贮容量和低的计算成本,可考虑把本发明的先行加窗法与通常的混合法结合起来(先行加窗混合法)。然而,作为先行加窗混合法的特性0,在连接合成部分的计算成本和参数合成部分的计算成本之间有极大的差别,合成中的计算量周期性地波动。这意味着当先行加窗混合法用于实时合成中时,需要足够的计算量,以便连接合成部分吸收参数合成部分的庞大计算成本,还意味着需要足够的缓冲存贮器以吸收计算速度的波动。为解决这个问题,以下参考附图描述本发明的第三个实施例。
图20是示出本发明中第三个实施例中语音合成装置的方框图。此语音合成装置包括音素符号串分析单元101,它的输出连到控制单元102。还备有信息单体DB110,它与控制单元102相互连接。此外,又有一自然语音通道102和一合成语音段通道111,在自然语音通道112中配备语音段DB106和语音段读取单元105。在合成语音段通道111中也有语音段DB104和语音段读取单元103。语音段读取单元105与语音段DB106互连,语音段读取单元103与语音段DB104互连。语音段读取单元103和语音段读取单元105的输出连到混合器107的两个输入端,且混合器107的输出馈入振幅控制单元108。振幅控制单元108的输出馈给输出单元109。
从控制单元102输出自然语音段参考号、合成语音段参考号、混合控制信息,以及振幅控制信息。这些控制信息中,自然语音段参考号馈入合成语音段通道111的语音段读取单元103。混合控制信息馈入混合器107,振幅控制信息馈入振幅控制单元108。
图22示出存在语音段DB106中的数据格式。例如,段ID是记录在每个音节中区别每个自然语音段的值。每个段ID有多个音高ID。音高ID的值用来从0开始依次区分窗函数由自然语音段中的首段起分别截取的音高波形。
图23示出由窗函数截取音高波形的方法。图23中第一行的图形是受截取的原始波形。其中音高ID相应于0的波形可包含图23中示出的辅音的开始部分,因此用不对称长窗截取该部分。当音高ID为1后,用大约为那时音高周期的1.5至2.0倍的Hanning窗截取。这样,产生了具有一段ID部分的自然语音段。同样,在多个波形中如此操作,就创建了语音段DB106。
接着,图24示出语音段DB104中贮存的数据格式。音高波形排列于图中所示座标轴上分别标有F1和F2参考号的平面上。
F1参考号和F2参考号分别相应于语音的第一峰段频率和第二峰段频率。随着F1参考号按0,1,2增大,第一峰段频率变高。这在F2参考号中也一样。即,贮存在语音段DB104中的音高波形可由F1参考号和F2参考号来设定。
于是,通过预先进行峰段合成可产生由F1参考号和F2参考号表示的波形。这项处理的算法在以下参考图25中流程图加以说明。
首先,确定第一和第二峰段频率的最小值和最大值。当记录自然语音段时,这些值由说话人的各数据决定。然后,决定F1和F2参考号的级数。这个值以20左右为宜(至此为步骤S6001)。
从步骤S6001确定的值,可决定第一和第二峰段频率的步长(步骤S6002)。然后,F1参考号和F2参考号初始化到0(步骤S6003和S6004),依据在步骤S6005中的公式计算第一和第二峰段频率。用这样获得的峰段参数,在步骤S6006合成峰段,并从此波形中截取音高波形。
然后,对F2参考号加1(步骤S6007),并重复步骤S6005后的处理。当F2参考号大于级数时(步骤S6008),对F1参考号加1(步骤S6009)。然后,重复步骤S6004后的处理。如果F1参考号大于级数,则处理结束。
于是,等分第一和第二峰段频率的范围,通过合成包含这两个值的所有组合的波形,建立语音段DB104。
以下是步骤S6006进行的处理。首先,由自然语音段说话人的各个数据决定第一和第二峰段频率以外的参数。这些参数包括第一峰段带宽、第二峰段带宽、第三到第六峰段频率和带宽及其中的音高频率。
作为参数,可使用说话人的方式。特别是,第一和第二峰段频率根据元音的种类明显变化,第三和更高峰段频率的变化较小。第一和第二峰段带宽因元音而明显改变,但对听觉的影响没有峰段频率的影响大。即,如果第一和第二峰段频率有偏离,则音位性能(听到作为具体音素的语音的难易度)下降得很明显,但第一和第二峰段带宽将不会使音位性能下降这样多。因此,确定第一和第二峰段频率以外的参数。
用步骤S6005算得的第一和第二峰段频率及上述确定的参数,对几个音高周期合成语音波形。从这样合成的波形中,通过使用相同于图23中截取自然语音段音高值波形的窗函数截取音高波形。这里,只截取一个音高波形。每执行一次从步骤S6005到S6008的循环,产生一个相应于F1参考号和F2参考号组合的合成语音段。
在声源波形用于峰段合成的同时,可使用一般函数,但最好使用由声道反向滤波器从记录自然语音段时说话人的语音中提取的波形。声道反向滤波器使用已有技术中所述声道传输函数的反函数,获得从声音波形中去掉传输特性作为其结果的波形。此波形表示声带的振动波形。通过把此波形直接用作峰段合成的声源,合成波形以极高的逼真度再现说话人的各个特性。这样,建立起语音段DB104。
以下说明如此构成的语音合成装置的工作。首先,当音素符号串输入音素符号串分析单元101时,相应于输入的音素信息、时间长度信息和音高信息输出到控制单元102。图21示出在音素符号串分析单元101中分析并输出到控制单元102的信息的例子。在图21中,音素符号串是一串输入字符。在此例中,它以片假名表示。音素信息是表示音素符号串所对应音素的值。在此例中,相应于片假名的每个字符(即在音节单元中),决定这个值。时间长度是每个音节的保持时间。在此例中,它以毫秒表示。由每个语音的发音速度、统计数据及自然语音段的标号信息决定这个值。始部音高和中部音高是位于音节的始端和音节的中部并在此例中以赫兹(Hz)表示的音高。
控制单元102根据上述信息和信息单体DB110中所存的自然语音段参考号、合成语音段参考号、混合控制信息、及振幅控制信号等信息单体,产生控制信息。在信息单体DB110的每个自然语音段中存有元音的第一和第二峰段频率、开始部分辅音的类型等。自然语音段参考号是指出相应于音素信息的特定自然语音段的信息。例如,相应于图21中第一音素信息/a/,输出指示由声音“あ”产生的自然语音段的值。
同时,自然语音段参考号也包括音高ID信息,并通过对始部音高和中部音高进行插入产生平滑的音高变化。用于在适当时间从信息中读取音高值波形的信息输出到语音段读取单元105。语音段读取单元105根据此信息相继从语音段DB106中读出波形,并使波形交叠以产生自然语音段通道112中的合成波形。图26中示出自然语音段参考号的一个例子,以及读出自然语音段的方式,相应的自然语音段通道112的波形合成。
合成语音段参考号是指出相应于音素信息的特定合成语音段的信息。该信息的要素有第一和第二峰段频率。峰段频率信息实际转变成相应的峰段参考号。峰段参考号用于图25,并由公式11和12表示。F1idx是第一峰段参考号,F2idx是第二峰段参考号。
F1idx=(F1-F1min)/(F1max-F1min)*nF1idx[12]F2idx=(F2-F2min)/(F2max-F2min)*nF2idx其中,F1min和F2min分别是第一和第二峰段频率的最小值。而F1max和F2max分别是第一和第二峰段频率的最大值。F1idx和F2idx分别是F1和F2参考号,nF1idx和nF2idx分别是F1idx和F2idx的级数,dF1和dF2分别是第一和第二峰段频率的步长。F1和F2分别是第一峰段频率和第二峰段频率,它们由此时合成的自然语音段元音的第一和第二峰段频率及后续辅音的种类来决定。参考信息单体DB110获取这些信息。具体地说,在元音到辅音的过渡区中,从信息单体DB110中选出元音的峰段频率,从这个值开始,用一规则产生峰段频率向辅音变化的模式,相应地画出峰段频率的轨迹。在由该轨迹和音高信息决定的各语音段时间,计算那时的峰段频率。图27中相应地示出如此产生的合成语音段参考号信息的一个例子,以及合成语音段通道111的波形合成方式。
图28中示出混合控制信息的生成。即,混合比从每个音节的始端到中部完全在自然语音段通道112中控制,从中部到末端则控制逐渐转移到合成语音段通道111。从一音节末端到下一个音节的始端,在比较短的时间内控制又回到自然语音段通道112。于是,每个音节的主要部分为自然语音段,而变化到下一个音节的部分由合成语音段平滑地连接。
最后,由振幅控制信息控制整个波形的振幅,并从输出单元109输出语音波形。振幅控制信息用于在句子结束处使振幅下降平滑。
如上文所述,用于连接音节的合成语音段必须用已有技术实时合成,但在本实施例中,通过读出每个音高时逐个瞬间连接波形变化,能以低成本产生。在另一已有技术中,因为这种拼接部分包含在自然语音段方面,所以需要大容量的语音段DB,但在本实施例中,自然语音段的数据基本上做成CV单元,所需容量就很小。为此,必须保持合成语音段,在本实施例中所需的容量只够保持400个音高波形(假定F1参考号和F2参考号均为20),因而所需的存贮容量极小。
图29示出第四个实施例中合成语音段通道111的例子。这里,具有第一语音段读取单元113和第二语音段读取单元115。第一语音段DB114连到第一语音段读取单元113,第二语音段DB116连到第二语音段读取单元115。还具有混合器117,它的两个输入端分别连接第一语音段读取单元113和第二语音段读取单元115的输出端。混合器117的输出即合成语音段通道111的输出。
存在第一语音段DB114和第二语音段DB116中的合成语音段分别由相同F1参考号和F2参考号构成,但使用不同的声源波形合成。即,用于第一语音段DB114中的声源从以普通形式发出的语音中抽取,而用于第二语音段DB116中的声源从发出的微弱语音中抽取。
声源的这种差别是频谱的一般趋势。当出强音时,声源波形包含许多高达高频的谐波,且频谱斜率很小(几乎为水平的)。另一方面当发出弱音时,声源波形中的高次谐波少,而频谱斜率很大(向较高频率端向下降)。
在实际语音中,发音时声源的频谱斜率逐渐改变。为了模拟这种特性,可考虑改变两个声源波形的比率,同时进行混合。在此实施例中,因为合成语音段通道使用事先合成的波形,通过事后混合由具有两种特性的声音源波形合成的合成波形可获得同样的效果。用此结构,可模拟从句子的开头到结束或由鼻音等的频谱斜率的变化。
在第三和第四实施例中,用峰段合成来产生合成语音段,但也可以用LPC合成、PARCOR合成及LSP合成等任一种参数合成的合成方法。此时,除了使用由声道反向滤波器提取出的声源波形外,还可用LPS剩余波形。
在合成的语音段中,段设计为相应于F1参考号和F2参考号的所有组合,但第一峰段频率和第二峰段频率之间也存在实体上不同的组合,而且还有出现概率低的组合,所以不需要这类的段。结果,存贮容量可大大减少。此外,通过研究出现概率,用矢量量化或其他技术,可将第一峰段和第二峰段所占空间分成不均匀,从而可更有效地使用存贮器,提高合成质量。
在第三实施例中,作为合成语音段的参数轴,使用第一峰段频率和第二峰段频率,在第四个实施例中,使用声源的频谱斜率,但如果存贮容量有额外余量,则还可增加参数。例如,除第一和第二峰段频率外还可加第三峰段频率,从而划分成三维空间,并建立合成语音段。或者,当希望改变声源特性而不是频谱斜率时,例如改变腔声音和假声时,可从不同声源构成分开的合成语音段,并在合成时混合。
在第三和第四实施例中,提供了信息单体DB110,通过使用语音段DB106的自然语音段峰段频率可产生合成语音段参考号,但判为元音时通常峰段频率也确定,所以可通过配备每个元音的峰段频率表来代替。
权利要求
1.一种语音段制作方法,该方法利用生成参数的参数生成单元,根据所述参数生成单元生成的参数生成合成波形的语音合成单元,存储合成波形的波形存储单元以及存储对应于该合成波形的参数值的参数存储单元,制作语音段,其特征在于,包括下列步骤由所述参数生成单元将由N个参数构成的参数矢量P建立的N维空间S分成M个区域A0到AM-1,并对从0变到M-1的所有整数i产生对应于区域Ai中所需位置的参数矢量Pi,其中N、M均为正整数;由所述语音合成单元根据该参数矢量Pi产生一个合成波形;由所述波形存储单元存储该合成波形;以及由所述参数存储单元存储对应于该合成波形的参数矢量Pi。
2.如权利要求1所述的语音段制作方法,其特征在于,所述参数生成单元将由N个参数组成的参数矢量P建立的N维空间S按照P的概率分布分成M个区域A0至AM-1。
3.如权利要求1所述的语音段制作方法,其特征在于,所述语音合成单元,在根据音高周期中波峰中心的参数所合成的波形的适当位置上,产生由具有单一音高周期波形的窗函数所截取的音高波形,所述波形存储单元存储该音高波形。
4.如权利要求1所述的语音段制作方法,其特征在于,参数矢量P中的一个组成参数是一个或多个语音峰段的中心频率和声带振动频谱倾角的一个或任意个组合。
5.如权利要求1至4中任一项所述的语音段制作方法,其特征在于,所述语音合成单元使用峰段合成方法。
6.如权利要求5所述的语音段制作方法,其特征在于,所述语音合成单元,从自然语音波形中提取声道传输特性,构成一个具有反向声道传输特性的声道反向滤波器,用该声道反向滤波器从自然语音波形中滤除该声道传输特性,由此,用所获得的振动波形作为振动声源波形。
7.一种语音段制作方法,该方法利用生成参数的参数生成单元,根据所述参数生成单元生成的参数生成合成波形的语音合成单元,存储合成波形的波形存储单元以及存储对应于该合成波形的参数值的参数存储单元,制作语音段,其特征在于,包括下列步骤由所述参数生成单元将由N个参数构成的参数矢量P建立的N维空间S分成M个区域A0到AM-1,并对从0变到M-1的所有整数i产生对应于区域Ai中所需位置的参数矢量Pi,其中N、M均为正整数;由所述语音合成单元根据该参数矢量Pi产生一个合成波形;由所述波形存储单元存储该合成波形;以及由所述参数存储单元存储对应于该合成波形的参数矢量Pi,其中,参数矢量P中的一个组成参数是一个或多个语音峰段的中心频率和声带振动频谱倾角的一个或任意个组合。
8.一种语音合成方法,其特征在于,包括下列步骤由一自然语音段存储单元存储通过截取各个特定音节链中经过预先记录的语音波形而制作出的自然语音段;通过下列步骤存储先前制作出的语音段将由N个参数构成的参数矢量P建立的N维空间S分成M个区域A0到AM-1,并对从0变到M-1的所有整数i产生一对应于区域Ai中所需位置的参数矢量Pi,其中N、M均为正整数;并且根据该参数矢量Pi产生一经过合成的波形;以及在一连接合成单元中在连接自然语音段和经过合成的语音段的同时进行语音合成。
全文摘要
一种语音段制作方法、语音合成方法及其装置。其特征在于所述语音合成方法对语音波形特定部分中的各基音周期的波峰用一在波峰两端收敛于零附近的窗函数对全部波峰截取音高波形,并对语音波形产生语音段数据,使窗函数长度短于波峰至两端的长度。存储语音段数据,从所存储的语音段数据读出音高波形,叠加排列成所需音高周期间隔,并把这些波形加给输出部分作为一个语音波形。
文档编号G10L13/00GK1495703SQ20031010286
公开日2004年5月12日 申请日期1995年12月6日 优先权日1994年12月6日
发明者釜井孝浩, 松井谦二, 原纪代, 二 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1