一种语音合成方法和系统与流程
本申请涉及自然语言处理技术领域,尤其涉及一种语音合成方法和系统。
背景技术:
语音合成是指人工合成人类语音的技术。在计算领域,语音合成可以通过软件程序和/或硬件组成的语音合成系统实现。语音合成系统一般以文本作为输入,输出文本对应的语音。通俗来说,语音合成系统可以实现让计算机像人类一样朗读文字。
目前,一些基于神经网络构建的语音合成系统在训练时需要对训练数据,例如文本以及文本对应的语音数据进行对齐标注,对齐标注过程一般通过人工或者辅助对齐工具实现,其一致性和准确性得不到保证,存在原始训练数据固有偏差,降低了语音合成系统的准确性,且该对齐处理需要一定的工作量。另外,一些基于序列到序列sequence-to-sequence神经网络构建的语音合成系统虽然可以不需要对训练数据进行对齐标注,但是其采用了递归的解码方式,导致语音合成系统无法实现并行预测,效率很低,无法满足实时合成的需求,并且对计算机处理能力有很高的要求。
技术实现要素:
本申请实施例提供了一种语音合成方法和系统,以提高语音合成系统的准确性和语音合成效率。
第一方面,本申请实施提供了一种语音合成方法,该方法包括:获取训练数据,训练数据包括成对设置的文本发音单元序列和语音频谱单元序列,文本发音单元序列包含至少一个文本发音单元,语音频谱单元序列包含至少一个语音特征帧;将文本发音单元序列进行编码,得到对应的编码序列,编码序列包含至少一个元素,每个元素对应文本发音单元序列中的一个文本发音单元;将编码序列中的每个元素复制目标次数,并按照各个元素在编码序列中的先后顺序对所有复制后的元素进行排列,得到扩增编码序列;将扩增编码序列进行解码,得到语音频谱单元预测序列,语音频谱单元预测序列与语音频谱单元序列的损失距离作为训练语音合成系统的监督信号;当语音合成系统训练收敛后,将语音频谱单元预测序列耦合至声码器,声码器用于根据语音频谱单元预测序列生成语音信号数据并输出。
本申请实施例提供的技术方案,构建并训练了一种语音合成系统,该语音合成系统在训练时,不需要对训练数据进行文本发音单元-音频特征帧的对齐标注处理,消除了由于数据标注稳定性和准确性差导致的语音合成系统的训练偏差,另外,本申请实施例的语音合成系统的编码和解码过程都是非递归的,预测生成的特征帧不基于历史依赖,因此可以实现并行预测,提高了语音合成效率,满足实时语音合成的需求。
在一种实现方式中,语音频谱单元序列通过以下步骤获取:去除训练语音的首部和尾部包含的无声音内容;在去除无声音内容后的训练语音的首部和尾部增加预设时长的静音内容;对增加了静音内容的训练语音进行频谱转换,得到语音频谱单元序列。
在一种实现方式中,将文本发音单元序列进行编码,得到对应的编码序列,包括:对文本发音单元序列进行独热onehot编码;使用全连接网络对文本发音单元序列的onehot编码结果进行向量化,得到词嵌入序列;使用具备上下文视野的编码器encoder对词嵌入序列进行编码,得到编码序列。
在一种实现方式中,目标次数通过以下方法确定:将语音频谱单元序列包含的语音特征帧的数量除以文本发音单元序列的文本发音单元的数量,并对结果取整作为目标次数。
在一种实现方式中,将扩增编码序列进行解码,得到语音频谱单元预测序列,包括:使用具备上下文视野的解码器decoder对扩增编码序列进行解码,具备上下文视野的解码器以当前元素的信号以及当前元素周围的元素的信号作为输入信号;对扩增编码序列进行解码结果使用后处理网络得到语音频谱单元预测序列,后处理网络包括多层卷积网络或者全连接网络。
在一种实现方式中,语音频谱单元预测序列与语音频谱单元序列的损失距离使用动态规划算法确定。
在一种实现方式中,具备上下文视野的编码器encoder包括多头自注意力网络multiheadattentionnetwork、长短期记忆网络lstm、门控循环单元gru和卷积神经网络cnn中的一种或者多种或者多层网络的堆叠;具备上下文视野的编码器以所述词嵌入序列的位置编码作为额外输入。
在一种实现方式中,具备上下文视野的解码器decoder包括多头自注意力网络multiheadattentionnetwork、长短期记忆网络lstm、门控循环单元gru和卷积神经网络cnn中的一种或者多种或者多层网络的堆叠;具备上下文视野的解码器以所述词嵌入序列的位置编码作为额外输入。
在一种实现方式中,语音特征帧的时长为预设固定值。
第二方面,本申请实施例提供了一种语音合成系统,该系统包括:存储器和处理器,存储器存储有程序指令,当程序指令被处理器执行时,使得语音合成系统执行如下程序步骤:获取训练数据,训练数据包括成对设置的文本发音单元序列和语音频谱单元序列,文本发音单元序列包含至少一个文本发音单元,语音频谱单元序列包含至少一个语音特征帧;将文本发音单元序列进行编码,得到对应的编码序列,编码序列包含至少一个元素,每个元素对应文本发音单元序列中的一个文本发音单元;将编码序列中的每个元素复制目标次数,并按照各个元素在编码序列中的先后顺序对所有复制后的元素进行排列,得到扩增编码序列;将扩增编码序列进行解码,得到语音频谱单元预测序列,语音频谱单元预测序列与语音频谱单元序列的损失距离作为训练语音合成系统的监督信号;当语音合成系统训练收敛后,将语音频谱单元预测序列耦合至声码器,声码器用于根据语音频谱单元预测序列生成语音信号数据并输出。
在一些实现方式中,当程序指令被处理器执行时,使得语音合成系统执行第一方面各个实现方式中的方法步骤。
第三方面,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法步骤。
第四方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法步骤。
第五方面,本申请实施例还提供了一种芯片系统,该芯片系统包括处理器,用于支持上述系统或系统实现上述方面中所涉及的功能,例如,生成或处理上述方法中所涉及的信息。
附图说明
图1是该语音合成系统的逻辑结构图;
图2是本申请实施例提供的一种语音合成方法的流程图;
图3是语音频谱单元序列的训练语音的对应关系图;
图4是本申请实施例提供的获得语音频谱单元序列的流程图;
图5是本申请实施例提供的一种语音合成方法步骤s102的流程图;
图6是本申请实施提供的编码器encoder的结构示意图;
图7是本申请实施例提供的一种语音合成系统的意图;
图8是本申请实施例提供的一种语音合成系统的意图。
具体实施方式
语音合成是指人工合成人类语音的技术。在计算领域,语音合成可以通过软件程序和/或硬件组成的语音合成系统实现。语音合成系统一般以文本作为输入,输出文本对应的语音。通俗来说,语音合成系统可以实现让计算机像人类一样朗读文字。
目前,语音合成系统可以基于各类神经网络构建,神经网络构建之后需要通过训练数据进行训练,才能够具备语音合成的能力。训练数据包含大量的数据对,一组数据对包含一段文本以及这段文本对应的语音数据。一般来说,由于录音人员朗读文本以录制语音数据的过程存在不稳定性,例如:语音数据起始时的无声音的空白长度不确定、发音单元之间的停顿时间不确定、以及部分强调语气的发音单元拖长音的时间不确定等,导致通过文本无法直接推算出每个发音单元在实际语音数据中的精确位置和持续时间。因此,传统的训练语音合成系统的方法需要对训练数据对进行标注,以使得文本中的文本单元能够对应到语音数据的有声音的开始位置和声音持续的片段。
本申请实施例的技术方案可以应用在中文语境或者非中文语境,根据语境的不同,文本单元可以是音节或者音素。示例地,在中文语境中,音素是根据语音的自然属性划分出来的细粒度语音单位,在中文中音素包含声母、韵母以及静音;例如,文本“我爱你”对应的拼音wo3ai4ni3中(数字表示声调)的〔ni〕包含有〔n〕〔i〕两个音素。示例地,在英文语境中,音节是构成英文语音序列的一种单位,一个音节可能有元音和/或辅音组成;例如,英语单词“water”
目前,对训练数据标注可以通过人工听音标注的方式或者一些辅助对齐工具实现。其中,人工听音标注就是通过人工听语音数据的方式确定语音数据的有声音的开始位置和声音持续的片段等,并进行标注。辅助对齐工具例如可以是使用如语音识别技术或者自回归的语音合成系统等的对齐功能。然而,目前这些数据标注方法的稳定性和准确性都存在问题,不利于消除语音合成系统的训练偏差。
随着自然语言处理技术的发展,通过一些序列到序列sequence-to-sequence神经网络,例如tacotron合成系统架构等,可以实现在不预先标注数据对的情况下对文本和语音数据进行自动对齐。以tacotron为例,其实现自动对齐的原理是将文本先编码成固定程度的向量,然后以文本编码后的向量作为神经网络的输入,进行递归的解码。递归是指在解码时,先解码向量的第一个时间帧,然后解码向量的第二个时间帧,其中,解码第二个时间帧需要依赖第一个时间帧的解码结果作为解码器的另一个输入,从而使神经网络学习时间帧之间的排列关系。基于上述递归的方式,为了使神经网络学习到无声音的空白片段、发音单元之间的停顿、以及发音长短的抖动等特征,神经网络在训练时采用录制的真实的语音数据作为前述依赖进行输入,从而使得当前t帧的预测结果以真实语音数据的t-1帧作为基础,并且结合发音短时平稳等发音机理实现文本到语音的对齐。在神经网络的使用阶段,由于要根据文本生成语音,在生成语音之前不存在真实的语音数据,因此可以以预测得到的语音的t-1帧作为预测t帧的依赖。
可以理解的是,使用上述sequence-to-sequence神经网络虽然省去了标注过程,但是,由于上述神经网络在解码阶段使用的递归方法,因此语音帧的预测只能一帧一帧的串行完成,无法实现并行预测,效率很低,无法满足实时合成的需求,特别是在文本内容很长的时候,即使借助高性能的计算机硬件执行预测所需的运算,也很难在短时间内合成出语音结果。另外,上述神经网络在训练时使用的是真实的语音数据作为依赖,而在使用时使用的是预测的语音数据作为依赖,因此训练时和使用时的数据输入并不匹配,导致神经网络在实际应用中表现不佳。
为了解决上述问题,本申请实施例提供了一种语音合成方法。
本申请实施例提供的语音合成系统是基于多层神经网络实现的。图1是该语音合成系统的逻辑结构图。其中,语音合成系统从输入到输出的数据流整体上从图1的下方向上方传递。具体来说,该语音合成系统从输入侧到输出侧依次包括词嵌入层embedding、编码器encoder、重复编组层repeat、解码器decoder和后处理网络,其中,在上述各层网络中,前一层网络的输出与后一层网络的输入耦合。另外,该语音合成系统还包括发送持续时间预测网络sentdurationpredictnet,发送持续时间预测网络sentdurationpredictnet的输入耦合至词嵌入层embedding的输出,发送持续时间预测网络sentdurationpredictnet的输出耦合至重复编组层repeat的输入。
下面结合图1示出的语音合成系统的逻辑结构,对本申请实施例提供的语音合成方法进行具体说明。
图2是本申请实施例提供的语音合成方法的流程图。在一个实施例中,该方法如图2所示可以包括以下步骤:
步骤s101,获取训练数据。
其中,训练数据包括成对设置的文本发音单元序列和语音频谱单元序列,文本发音单元序列包含至少一个文本发音单元,语音频谱单元序列包含至少一个语音特征帧。
在中文语境中,文本发音单元可以由拼音和声调组成,每个文本发音单元对应一个汉字的发音,多个文本发音单元排列起来则形成文本发音单元序列,文本发音单元序列对应多个汉字的发音,例如一句话或者一个词组的发音。
例如,wo3就是一个文本发音单元,其中,wo是拼音,3是声调,即三声,wo3拼读起来的发音为“我”。
进一步地,如果将多个发音单元排列起来,例如:wo3ai4ni3,则形成文本发音单元序列,该文本发音单元序列包含3个文本发音单元分别为“wo3”“ai4”“ni3”,对应三个汉字发音分别为“我”“爱”“你”,因此该文本发音单元序列对应的发音为“我爱你”。
为便于描述,本申请实施例以x来表示文本发音单元序列,例如x:wo3ai4ni3。
需要补充说明的是,在上述示例的中文语境中,文本发音单元是由音素组合而成的,这仅仅是文本发音单元的一种可能的实现方式,在其他的实现方式或者其他语境中,文本发音单元还可以由音节、音标、注音等元素构成,本申请实施例对此不作具体限定。
语音特征帧是将语音片段以频谱格式表达的一种形式,每一个语音特征帧对应一段时间长度的语音片段,在语音单元频谱序列中,多个语音特征帧按照时间顺序先后排列。
示例地,一个语音特征帧的时长可以是10ms、20ms等,语音特征帧的时长需要预先确定为固定值,并且所有的语音特征帧的时长相等,以便于进行数据处理,本申请实施例对语音特征帧的时长的具体数值不做限定。
为便于描述,本申请实施例以y来表示语音频谱单元序列,以t表示语音频谱单元序列中的语音特征帧,例如y:t0t1…tn,其中,t后面的数字0~n(n为正整数)表示语音特征帧在语音频谱单元序列中的顺序。
通常,人们在朗读文字时,每个文字的发音都需要占用一定的时间,那么,当一个文字的发音的时长大于语音特征帧的时长时,这个文字的发音就会对应多个语音特征帧。
另外,用户在录制训练语音时,不会在开始录制的时刻就立刻开始朗读,也不会在结束朗读时就立刻结束录制,因此,训练语音的开始和结束位置会各有一段无声音的部分;相应地,训练语音对应的语音频谱单元序列的开头和结尾也会包含一些无声音部分对应的语音特征帧。
另外,人类在朗读文字时,字与字之间都会有停顿,也会形成训练语音中的无声音部分;相应地训练语音对应的语音频谱单元序列中,每隔一段时间就会有一些无声音部分对应的语音特征。
基于训练语音的上述特点,语音频谱单元序列的训练语音之间可以具有如图3所示的对应关系。示例地,当用户录制的训练语音是“我爱你”时,对应语音频谱单元序列y:t0t1…tn,其中,t0~t10对应“我”之前的无声音部分,t11~t20对应发音“我”,t21~t23对应发音“我”和发音“爱”之间的无声音部分,t24~t33对应发音“爱”,t34~t38对应发音“爱”和发音“你”之间的无声音部分,t39~t50对应发音“你”,t51~t60对应“你”之后的无声音部分。
一般来说,语音频谱单元序列可以是通过对训练语音进行频谱转换得到,语音频谱单元序列例如可以是频谱序列,例如梅尔倒谱(mel-frequencycepstrum,mfc)等,本申请实施对此不作限定。
在一种实现方式中,语音频谱单元序列可以通过如图4所示的步骤s201-步骤s203获得:
步骤s201,去除训练语音的首部和尾部包含的无声音内容。
其中,训练语音的首部和尾部包含的无声音内容例如可以通过训练语音的声音波形来识别,如果声音波形的开头或者结尾存在没有波动或者波动很小的部分,那么这部分一般是无声音内容对应的波形,因此可以将这部分去除。
可以理解的是,本申请实施例也可以使用其他的方式去除训练语音的首部和尾部包含的无声音内容,此处不做限定。
步骤s202,在去除无声音内容后的训练语音的首部和尾部增加预设时长的静音内容。
示例地,预设时长例如可以是10ms、20ms等。对于多个训练语音,本申请实施例优选预设时长相同,从而使得多个训练语音的首部和尾部具有相同时长的静音内容,提高训练语音的一致性,使用一致性高的训练语音有利于提高语音合成系统训练时的收敛速度。
步骤s203,将增加了静音内容的训练语音生成频谱,得到语音频谱单元序列。
具体实现中,可以基于以非线性的梅尔刻度(melscale)表示的对数频谱(spectrum)及其线性余弦转换(linearcosinetransform)等将增加了静音内容的训练语音转换成梅尔倒谱的语音频谱单元序列。
对语音内容生成频谱特征可以通过多种方式实现,本申请实施例中不做具体展开说明。
可以理解的是,由于本申请实施例在步骤s202得到了首部和尾部具有相同时长的静音内容的训练语音,因此生成的语音频谱单元序列的开头和结尾处的无声音部分的语音特征帧的数量也相同或者接近,因此作为训练数据的语音频谱单元序列的一致性更好,意味着训练数据的质量更高,有利于提高语音合成系统的收敛速度。增加静音内容的预处理仅为了加快收敛速度,非必要过程。
步骤s102,将文本发音单元序列进行编码,得到对应的编码序列。
其中,编码序列包含至少一个元素,每个元素对应文本发音单元序列中的一个文本发音单元。其中,编码序列元素可以是经过编码后的词向量的形式体现。
本申请实施例中,步骤s102主要基于语音合成系统中的编码器encoder来实现,编码器encoder优选使用具备上下文视野的编码器,所谓上下文视野指的是解码器的输入的信号为当前元素的信号以及当前元素周围(前后一定范围内)的元素的信号,如可以在编码器中引入局部或者全局注意力机制来实现,本申请实施对上下文视野编码器的具体方案选择不作限定。
在一种实现方式中,步骤s102具体可以通过如图5所示的步骤s301-步骤s303实现:
步骤s301,对所述文本发音单元序列进行独热onehot编码。
一般来说,神经网络无法直接处理非数字类的数据,而文本发音单元序列,例如x则属于非数字类数据。因此,步骤s301的目的是通过onehot编码将文本发音单元序列转换成统一的数字格式,方便机器学习的算法进行处理及计算。onehot编码是一种对信息进行离散编码的方法,在本申请实施例中,假设文本发音单元序列一共可能存在n种不同的文本发音单元,则每个文本发音单元可以被一个n维的one-hot向量代表,在n维的one-hot向量中,每个维度对应一个文本发音单元,因此一个n维的one-hot向量只有一个维度的值为1,其余都是0。示例地:假设文本发音单元序列一共可能存在3种不同的文本发音单元:wo3ai4ni3,那么one-hot向量的维度为3维,其中,wo3=[1,0,0]、ai4=[0,1,0]、wo3=[0,0,1]。
步骤s302,使用全连接网络对所述文本发音单元序列的onehot编码结果进行向量化处理,得到词嵌入序列。
从one-hot向量的特点可以看出,文本发音单元序列的onehot编码结果是相对离散的数据,无法在神经网络中表征单元之间的距离度量,因此需要对文本发音单元序列的onehot编码结果进行向量化处理,得到可以用于训练神经网络的词嵌入序列。
步骤s302可以在语音合成系统的词嵌入层embedding中实现,词嵌入层可以包含一个全连接网络,全连接网络全称为全连接神经网络(fullyconnected,fc),也称多层感知机(multilayerperceptron,mlp),全连接网络所执行的核心操作是矩阵乘法,能够把一个特征空间(例如,onehot编码)线性变换到另一个特征空间,例如词嵌入序列,减小特征空间的维度。也可以使用预先训练的词嵌入模型将发音单元序列的onehot编码转换成词嵌入序列。
步骤s303,使用具备上下文视野的编码器encoder对所述词嵌入序列进行编码,得到所述编码序列。
具备上下文视野的编码器在训练过程中能够学习词嵌入序列的上下文信息,这些上下文信息可能对应着训练语音中的语速、停顿、长短音、语气、情绪等信息,因此学习了上下文信息之后,有利于提高语音合成系统在使用中生成语音的质量。编码序列的长度为其包含的元素的数量,每个元素可以包括一个向量或者矩阵维度。本申请实施例中,编码序列的长度优选等于文本发音单元序列中的文本发音单元的数量。
图6是本申请实施提供的编码器encoder的结构示意图,该编码器包含至少一个如图6所示的结构,多个结构可以串行或者并行使用,这里不做具体限定。如图6所示,该结构包括多头注意力层multi-headattention、add&norm模块、前馈全连接网络(feedforwardnetwork、ffn)和另一个add&norm模块。其中,多头注意力层可以是多个自注意力self-attention结构的结合,每个自注意力结构可以具有不同的权重,从而以不同的侧重点学习词嵌入序列的上下文特征,最后将结果连接在一起。add&norm模块中的add实际上是一个残差连接,是为了解决多层神经网络训练困难的问题,通过将前一层的信息无差的传递到下一层,使神经网络仅关注特征的差异部分。add&norm模块中的norm表示层归一化layernormalization,能够将当前输出结果的各个维度值归一化到0~1的区间内,可以加速模型的训练过程,使其更快的收敛。前馈全连接网络可以通过特征空间的变换对当前结果进行降维,使得编码器encoder最终输出的编码序列的长度等于文本发音单元序列中的文本发音单元的数量。
本申请实施例中,编码器encoder和解码器decoder的结构可以相同,此后不再对解码器decoder的结构进行展开说明。另外,在一些其他的实现方式中,编码器encoder和解码器decoder也可以使用长短期记忆网络(longshort-termmemory,lstm)、门控循环单元(gaterecurrentunit,gru)、卷积神经网络(convolutionalneuralnetwork,cnn)或者其他具备上下文视野的神经网络实现,本申请实施例对此不作限定。
步骤s103,将编码序列中的每个元素复制目标次数,并按照各个元素在编码序列中的先后顺序对所有元素进行排列,得到扩增编码序列。
本申请实施例中,优选扩增编码序列中的元素的数量与语音频谱单元序列中的语音特征帧的数量相同,为达到这一优选目的,目标次数通过以下方法确定:将语音频谱单元序列的语音特征帧的数量s除以文本发音单元序列的文本发音单元的数量count(x),并对结果取整作为目标次数r,即:
r=[s/count(x)]
其中,取整方式可以是向上取整,也可以是向下取整,也可以是四舍五入等取整方式,本申请实施例对此不作限定。
示例地,当语音特征帧的数量s=52,文本发音单元的数量count(x)=10时,s/count(x)=5.2,向上取整得到r=6,向下取整得到r=5,四舍五入取整得到r=5。
需要补充说明的是,上述确定目标次数的过程可以由语音合成系统的发送持续时间预测网络sentdurationpredictnet执行,或者由其他模块执行,发送持续时间预测网络的作用是预测根据文本发音单元序列预测其对应的语音频谱单元序列中的语音特征帧的总数量从而确定s的值,并且可以使用任意公知的简单网络如多层双向lstm即可获得很高的预测准确度,本申请实施例对此不作限定。
进一步地,步骤s103可以由语音合成系统的重复编组层repeat执行。示例地,假设编码序列enc=[e1,e2,e3,e4],r=4,那么将编码序列中的每个元素(即e1~e4)复制目标次数(即r次),并按照各个元素在编码序列中的先后顺序对所有元素进行排列,得到扩增编码序列enc-dec=[e1,e1,e1,e1,e2,e2,e2,e2,e3,e3,e3,e3,e4,e4,e4,e4]。由于语音特征帧的数量s通常文本发音单元的数量count(x)大很多倍,因此倍数取整后进行扩增的扩增编码序列enc-dec中的元素的数量与语音频谱单元序列中的语音特征帧的数量一般相同或者非常相近,且因存在首尾无实际内容的静音段,若有差别可忽略不计,本申请实施例中以其中较短的序列为准将较长的序列尾部截去以使得两个序列元素(帧)数量相等。如前所述,为了表征元素在序列中的位置,可将位置编码信号叠加于enc-dec的每个元素中,以获得更好的效果,位置编码和信号叠加方法为公知技术,本申请实施例对此不做具体描述和限定;在解码阶段也可实施类似的过程,不再赘述。
步骤s104,将扩增编码序列进行解码,得到语音频谱单元预测序列。
具体实现中,可以使用具备上下文视野的解码器decoder对所述扩增编码序列进行解码。解码器decoder例如可以与图6示出的与编码器encoder的结构相同,此处不再赘述。然后,可以使用后处理网络对扩增编码序列进行解码结果进行处理,以得到语音频谱单元预测序列(如图1中的y’)。
其中,后处理网络的目的是将扩增编码序列进行解码结果处理成与语音频谱单元序列格式相同的包含语音特征帧的语音频谱单元预测序列,语音频谱单元预测序列通过声码器解码之后可以形成语音。
在一些实现方式中,后处理网络例如可以是postnet模型,postnet模型可以使用多层卷积网络组成,例如,conv1d卷积层等,另外后处理网络也可以使用其他的模型构建,例如全连接层等。
进一步地,为了使后处理网络输出的语音频谱单元预测序列向着语音频谱单元序列(即训练目标)收敛,本申请实施例基于动态规划算法(dynamicprogramming,dp)构建语音频谱单元预测序列与语音频谱单元序列的损失距离dploss,该损失距离作为训练语音合成系统的监督信号,以监督语音合成系统内各个神经网络层的维度的迭代方向,有利于语音合成系统快速收敛。在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音技术领域表现为不同人的语速不同,同一个发音单元内的不同音素的发音速度也不同,比如有的人会把‘a’这个音拖得很长,或者把‘i’发的很短,即使是同一人因发音上下文环境不同发音单元的持续时间也不确定。在这些复杂情况下,使用传统的欧几里得距离无法有效地求的两个时间序列之间的距离(或者相似性)。dp算法通过把时间序列进行延伸和缩短,来计算两个时间序列性之间的相似性和最大可能的对应关系。在本实施例中,通过dp算法获得预测语音频谱序列和真实语音频谱序列的对应关系后,计算语音频谱帧对应的目标频谱帧的损失距离作为监督信号,也可以直接使用dp算法计算出总的损失距离,该损失距离可以是l1loss、l2loss或它们的smooth变体等,本实施例不做限定。
在具体实现方式中,动态规划算法dp例如可以是动态时间规整算法(dynamictimewarping,dtw)、ctc(connectionisttemporalclassification)算法或者其他动态规划算法,本申请实施例对此不做限定。
步骤s105,当语音合成系统训练收敛后,将语音频谱单元预测序列耦合至声码器。
其中,声码器用于根据语音频谱单元预测序列合成语音并输出。
当语音合成系统训练收敛后,语音合成系统就具备了根据输入的文本生成相应地语音频谱单元预测序列的能力,这时,可以将语音频谱单元预测序列耦合至声码器,使得声码器根据语音频谱单元预测序列合成语音并输出,实现语音合成。
这里需要补充说明的是,以中文语境为例,在语音合成系统的实际使用阶段,语音合成系统输入的文本可以是文字,也可以是文本发音单元序列,如果输入的是文字,那么语音合成系统可以通过文字编码识别或者光学字符识别的方式将文字转换成文本发音单元序列之后,作为语音合成系统的输入。
本申请实施例提供的技术方案,构建并训练了一种语音合成系统,该语音合成系统在训练和实际使用时,不需要对训练数据进行文本发音单元-音频特征帧的对齐标注处理,消除了由于数据标注稳定性和准确性差导致的语音合成系统的训练偏差,另外,本申请实施例的语音合成系统的编码和解码过程都是非递归的,预测生成的特征帧不基于历史依赖,因此可以实现并行预测,提高了语音合成效率,满足实时语音合成的需求。
上述实施例对本申请提供的语音合成方法的各方案进行了介绍。可以理解的是,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件、软件或硬件和软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
图7是本申请实施例提供的一种语音合成系统的意图。在一个实施例中,该系统可以通过硬件结构实现相应的功能。如图7所示,该系统可以包括:存储器401、处理器402、输入设备403和输出设备404。
其中,处理器402例如可以包括系统芯片(systemonachip,soc),中央处理器(centralprocessingunit,cpu)应用处理器(applicationprocessor,ap),图形处理器(graphicsprocessingunit,gpu),神经网络处理器(neural-networkprocessingunit,npu)或者其他处理器中的一种或者多种的配合。输入设备403例如可以包括键盘、手写板、通用串行总线(universalserialbus,usb)接口或者其他输入设备中的一种或者多种的配合,输入设备403用于在语音合成系统训练阶段接收用户输入的训练数据,或者,用于在语音合成系统的使用阶段接收用户输入的文本等。输出设备404例如可以包括声码器、扬声器、功率放大器(poweramplifier,pa)、数字模拟转换器(digitaltoanalogconverter,dac)或者其他输出设备的一种或者多种的配合,用于在语音合成系统的使用阶段将预测得到的语音频谱单元预测序列输入为语音。
存储器401存储有程序指令,当程序指令被处理器执行时,使得训练系统执行如下程序步骤:获取训练数据,训练数据包括成对设置的文本发音单元序列和语音频谱单元序列,文本发音单元序列包含至少一个文本发音单元,语音频谱单元序列包含至少一个语音特征帧,;将文本发音单元序列进行编码,得到对应的编码序列,编码序列包含至少一个元素,每个元素对应文本发音单元序列中的一个文本发音单元;将编码序列中的每个元素复制目标次数,并按照各个元素在编码序列中的先后顺序对所有复制后的元素进行排列,得到扩增编码序列;将扩增编码序列进行解码,得到语音频谱单元预测序列,语音频谱单元预测序列与语音频谱单元序列的损失距离作为训练语音合成系统的监督信号;当语音合成系统训练收敛后,将语音频谱单元预测序列耦合至声码器,声码器用于根据语音频谱单元预测序列生成语音信号数据并输出。
图8是本申请实施例提供的一种语音合成装置的意图。在一个实施例中,该装置通过软件模块实现相应的功能。如图8所示,该装置可以包括:
输入模块501,用于获取训练数据,训练数据包括成对设置的文本发音单元序列和语音频谱单元序列,文本发音单元序列包含至少一个文本发音单元,语音频谱单元序列包含至少一个语音特征帧;
编码模块502,用于将文本发音单元序列进行编码,得到对应的编码序列,编码序列包含至少一个元素,每个元素对应文本发音单元序列中的一个文本发音单元;
扩增模块503,用于将编码序列中的每个元素复制目标次数,并按照各个元素在编码序列中的先后顺序对所有复制后的元素进行排列,得到扩增编码序列;
解码模块504,用于将扩增编码序列进行解码,得到语音频谱单元预测序列,语音频谱单元预测序列与语音频谱单元序列的损失距离作为训练语音合成装置的监督信号;
输出模块505,用于当语音合成装置训练收敛后,将语音频谱单元预测序列耦合至声码器,声码器用于根据语音频谱单元预测序列生成语音信号数据并输出。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法。
本申请实施例还提供了一种芯片系统,该芯片系统包括处理器,用于支持上述系统实现上述方面中所涉及的功能,例如,生成或处理上述方法中所涉及的信息。在一种可能的设计中,芯片系统还包括存储器,用于保存长连接系统必要的计算机指和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
以上的具体实施方式,对本申请实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本申请实施例的具体实施方式而已,并不用于限定本申请实施例的保护范围,凡在本申请实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请实施例的保护范围之内。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除