一种双层自回归解码的序列到序列语音合成方法及系统与流程
2021-01-28 15:01:55|335|起点商标网
本发明属于语音信号处理领域,具体涉及一种双层自回归解码的序列到序列语音合成方法及系统。
背景技术:
:语音合成(speechsynthesis)旨在使机器像人类一样流畅自然地说话,它使许多语音交互应用受益,例如智能个人助理和机器人。当前,统计参数语音合成(statisticalparametricspeechsynthesis,spss)是其中一种主流的方法。统计参数语音合成利用声学模型来建模文本特征和声学特征之间的关系,并利用声码器(vocoder)在给定预测声学特征的情况下得到语音波形。尽管这种方法可以产生清晰的声音,但由于声学模型和声码器的局限性,合成语音的质量始终会有所下降。最近,wang和shen等人提出了基于神经网络的序列到序列(sequence-to-sequence)语音合成声学模型,并证明了直接从文本中预测梅尔谱的出色性能。它解决了传统spss方法的诸多不足,例如需要大量领域内的专业知识、spss每个模块独立训练导致可能出现的累计误差等。这种序列到序列的语音合成方法对人工参与的依赖度低,只需要在配对的文本和语音上进行训练。但是由于序列到序列语音合成方法将声学模型与时长模型统一在一个模型之内,并且由于tacotron模型的加性注意力机制(additiveattention)不够鲁棒,这可能会导致预测的声学特征出现一些错误,尤其是在输入复杂的域外文本时更是如此。为了缓解这个问题,人们对注意力机制提出了一些改进,例如前向注意力,逐步单调注意力(sma)和位置相对注意力等机制。其中前向注意力机制提出了一种在每步解码时仅考虑满足单调条件的对齐路径;逐步单调注意力机制(stepwisemonotonicattention,sma)进一步限制了对齐的路径并且解决了注意力坍塌的问题。不过这些方法始终是在帧层面进行自回归的,不具有长时建模声学特征从而让模型自然地获得鲁棒性的能力。目前基于神经网络的序列到序列语音合成方法都是基于帧级自回归解码结构进行设计的,存在长时相关性建模能力的不足,此外模型所采用的注意力机制的鲁棒性也不够理想,在合成复杂文本时存在重复、漏读、无法停止等合成语音错误。技术实现要素:为了解决上述问题,本发明提出了一种双层自回归解码的序列到序列语音合成方法及系统。该系统的解码器使用音素和帧两级自回归结构进行声学特征序列的预测,同时利用训练数据中明确的音素边界信息以及通过可解释的音素转移概率,代替传统模型中的注意力机制,来实现声学特征序列与文本特征序列间的对齐。本发明提出的模型在保证合成语音自然度的前提下,可以有效减少声学特征预测错误,提高语音合成的鲁棒性。本发明综合利用神经网络、统计参数语音合成两个
技术领域:
的特性,针对合成文本的鲁棒性不足,采用预测音素间转移概率的方法去取代注意力机制;针对只在帧层面进行的自回归难以建模特征间长时依赖性的问题,引入了音素级的自回归方法并重新设计了解码器。本发明的技术方案如下:一种双层自回归解码的序列到序列语音合成系统,包括编码器和解码器,所述解码器包括:音素级表征模块、音素级预测模块、帧级预测模块;所述编码器输入是一个句子中音素的语言表征,即将音素名、音调和韵律短语边界信息用向量表征,然后使用卷积神经网络和双向长短时记忆网络将这些信息编码融合得到句子中每个音素的上下文单元表征;所述音素级表征模块,输入是一个音素内帧级的声学特征,通过帧一级的长短时记忆网络(即lstm)和池化处理获得每个音素单元的声学单元表征;所述音素级预测模块,输入是历史所有音素的声学单元表征以及当前音素的上下文单元表征,音素级预测模块采用音素级自回归结构来预测当前音素的声学单元表征并建立连续音素之间的依赖关系;所述帧级预测模块,其输入有两部分,一部分是音素级预测模块预测出的当前单元的声学单元表征,另一部分是音素级表征模块中作用在帧一级lstm的隐藏状态;最终通过解码器lstm来预测帧级的声学特征。根据本发明的另一方面,提出一种双层自回归解码的序列到序列语音合成方法,包括如下步骤:步骤1:语言表征编码,利用编码器,将待合成音素序列对应的语言表征转换为上下文单元表征;步骤2:声学特征预测,利用解码器,从步骤1中得到上下文单元表征中预测文本对应的梅尔谱特征,具体包括几个子步骤:步骤2.1:音素级表征生成,通过音素表征模块将音素内帧级的声学特征编码为该音素的声学单元表征;步骤2.2:音素级表征预测,利用步骤2.1得到的历史音素的声学单元表征和当前音素的上下文单元表征,预测当前音素的声学单元表征;步骤2.3:帧级特征预测,利用步骤2.2预测的当前音素的声学单元表征以及当前帧的声学特征,预测下一帧的声学特征。进一步的,所述步骤1如下:将长度为n的音素序列对应的语言表征序列输入编码器,通过三个1维的卷积神经网络和双向长短时记忆网络(bidirectionallongshort-termmemory,bilstm)获得上下文单元表征序列bilstm由一个前向lstm和反向lstm拼接而成,将bilstm沿着两个方向的隐藏状态向量连接起来以获得上下文单元表征序列h,其中对于第n个单元的上下文单元表征函数concat表示向量拼接,和分别是前向和后向lstm对应第n个单元的隐藏状态。进一步的,所述步骤2.1包括:音素级表征模块通过汇总一个音素中所有的帧级声学特征以获得其音素级的声学单元表征;在合成阶段,该音素级表征模块的输入是上一帧对应的预测梅尔谱;在训练阶段,输入是上一帧对应的自然梅尔谱;上一帧的梅尔谱首先经过全连接预处理网络,然后采用帧一级lstm来建模音素中帧级声学特征序列间的依赖性;根据已知的音素边界在音素的开始帧位置重置lstm状态;最后为了得到单元对应的定长的音素级声学单元表征使用池化方法将lstm得到的隐藏状态序列转换为声学单元表征向量进一步的,所述步骤2.1中,在训练阶段,为了将上下文单元表征和声学单元表征联系起来,采用注意力机制来获得每个音素的声学单元表征的识别概率,进而计算音素识别损失;假设一句话包含n个音素,在这里对于第n个音素,询问值(query)是声学单元表征键值(keys)是上下文单元表征序列注意力机制中第n个键值对应的权重被用作第n个音素识别概率的估计值,训练阶段通过交叉熵函数将其与句中音素的独热编码进行比较,以得到音素识别损失。进一步的,所述音素识别损失的计算步骤如下:第一步、将询问值与上下文单元表征拼接,再与矩阵相乘,经tanh函数计算后再与向量的转置进行点积运算得到每个键值对应的能量第二步使用softmax函数将所有键值对应的能量e={e1,e2,…,en}归一化得到键值对应的概率值α={α1,α2,…,αn};第三步通过计算多分类的交叉熵将当前第n个音素对应的概率值αn转换为音素识别损失其中向量va和矩阵wa是待训练的模型参数,d是单元表征的维度,h是注意力机制中隐层的维度,代表实数域空间,concat代表向量拼接的函数。进一步的,所述步骤2.2包括所述音素级预测模块采用音素级自回归结构来预测当前的声学单元表征并描述连续音素间的依赖性,该音素级预测模块包括音素一级lstm和循环预测器gc,其中音素一级lstm将历史音素单元的声学单元表征转换为声学历史向量采用如下公式:其中,被设置为零向量;循环预测器gc是一个全连接网络,它的输入是声学历史向量和当前音素的上下文单元表征它的输出是当前音素的预测的声学单元表征采用如下公式:之后再将预测的声学单元表征上采样到帧级送至下一个帧级预测模块;为了保证构成音素级的自回归结构,在训练阶段,需要计算一致性损失函数,定义为预测的声学单元表征与真实的声学单元表征之间的均方误差。进一步的,所述帧级预测模块通过解码器lstm预测帧级声学特征;该帧级预测模块的输入有两部分组成,一个是由音素级预测模块预测出的当前音素的声学单元表征另一个是音素级表征模块中帧一级lstm在当前帧上对应的隐藏状态;这两个部分拼接之后进入解码器lstm,其隐藏状态经一个全连接预测当前帧的梅尔谱,待预测完毕后使用后处理网络生成残差以细化预测的梅尔谱;在训练网络时,需要计算梅尔谱的重构误差损失;定义为经过后处理网络前后的预测梅尔谱与自然梅尔谱之间的均方误差的和;解码器lstm的隐藏状态再经另一个全连接,通过注意力机制去预测描述当前帧属于下一音素首帧的可能性,即该帧的转移概率;使用一个基于注意力机制的模块计算转移概率,若当前帧属于第n个音素,注意力机制的键值(key)是当前音素和下一音素的上下文单元表征和询问值(query)是解码器当前帧lstm隐藏状态的线性变换;利用对应的注意力权重作为转移概率。进一步的,在训练阶段除了需要梅尔谱和语义表征序列之外,也需要语料库中的音素边界作为输入,通过基于hmm的强制对齐来获得;为了隐式建模时长,在训练时需要计算转移损失,它定义为预测的转移概率与由音素边界确定的真实转移概率之间的交叉熵;考虑到跳转帧和非跳转帧之间数量的不平衡,采用加权策略来增强跳转帧在转移损失中的影响。进一步的,计算此转移损失的步骤如下:第一步将询问值与上下文单元表征拼接,再与矩阵相乘,经tanh函数计算后再与向量的转置进行点积运算得到非跳转帧对应的能量ej的计算使用上下文单元表征其余与es的计算相同;第二步使用softmax函数将两个键值对应的能量e={es,ej}归一化得到键值的概率值α={αs,αj};第三步通过计算交叉熵将其与句中由音素边界确定的真实转移概率y={ys,yj}(对于跳转帧{ys=0,yj=1},对于非跳转帧{ys=1,yj=0})进行比较,以得到音素识别损失其中vb、wb是待训练的模型参数,d是单元表征的维度,h是注意力机制中隐层的维度,代表实数域空间,concat代表向量拼接的函数。有益效果本发明的优点在于:第一,在解码器中使用音素和帧两级自回归结构进行声学特征序列的预测,以更好建模声学与文本特征间的长时依赖关系;第二,利用训练数据中明确的音素边界信息并预测可解释的音素转移概率,代替传统模型中的注意力机制,来实现声学特征序列与文本特征序列间的对齐。实验结果表明,该模型与传统序列到序列语音合成方法相比,在保证合成语音自然度的前提下,有效减少了声学特征预测错误,提高了语音合成的鲁棒性。综上,传统的基于注意力机制的序列到序列神经网络缺乏鲁棒性,对复杂的文本易合成出错,另外它们基于帧级自回归模型预测声学特征,对于特征间长时依赖关系的建模能力不足。本发明提出的双层自回归解码的序列到序列语音合成方法能在帧级和音素级两个层面建立自回归模型,可更充分的挖掘文本至语音间的映射关系,提高语音合成的鲁棒性。附图说明图1:本发明的一种双层自回归解码的序列到序列语音合成方法流程图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅为本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域的普通技术人员在不付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。根据本发明的一个实施例,提出一种一种双层自回归解码的序列到序列语音合成系统,包括编码器和解码器。所述编码器结构与tacotraon2模型相同,其解码器又包括音素级表征、音素级预测、帧级预测三个模块。另外,总共四个损失函数被提出用于指导模型训练。1.编码器模块。该模块的输入是一个句子中音素的语言表征,即将音素名、音调和韵律短语边界信息用向量表征,然后使用卷积神经网络(convolutionalneuralnetwork,cnns)和双向长短时记忆网络(bidirectionallongshort-termmemory,bilstm)将这些信息编码融合得到句子中每个音素的上下文单元表征。2.音素级表征模块。这个模块的输入是一个音素内帧级的声学特征,通过帧一级的长短时记忆网络(longshort-termmemory,lstm)和池化处理获得每个音素单元的声学单元表征。3.音素级预测模块。这个模块的输入是历史所有音素的声学单元表征以及当前音素的上下文单元表征,此模块采用音素级自回归结构来预测当前音素的声学单元表征并建立连续音素之间的依赖关系。4.帧级预测模块。这个模块的输入有两部分,一个是音素级预测模块预测出的当前单元的声学单元表征,另一个是音素级表征模块中作用在帧一级的lstm的隐藏状态。最终通过解码器lstm来预测帧级的声学特征。5.该模型在训练阶段总共使用了四个损失函数。1)重构误差,用于计算预测的梅尔谱和自然梅尔谱之间的差异;2)转移损失,通过建模帧对应音素的转移概率对音素时长进行隐式建模;3)一致性损失,用于构成音素级的自回归结构;4)音素识别损失,用来约束声学单元表征和上下文单元表征之间的差异。到此为止,多模块协同的语音合成神经网络结构已搭建完毕。通过随机梯度算法或者其改进算法,比如sgd,adam,adadelta等,最小化神经网络模型在训练集的损失函数的加权和来进行神经网络参数的训练。最后,在合成阶段,测试文本的上下文特征序列输入至已经训练好的上述训练好的模型预测梅尔谱,再通过声码器重构语音波形。根据本发明的一个实施例,如图1,编码器的输入是句子的音素序列对应的语言表征,对于第n个单元其文本语义经过编码器编码后输出上下文单元表征解码器的音素级表征模块的输入是第n个单元其音素内所有的帧级声学特征,输出是声学单元表征解码器的音素级预测模块的输入是两部分,一个是当前音素的上下文单元表征另一个是历史音素对应的声学单元表征输出是当前音素的预测的声学单元表征解码器的帧级预测模块输入是两部分,一个是当前音素的预测的声学单元表征另一个是解码器中音素级表征模块内的帧级特征,输出是相应文本对应的梅尔谱。根据本发明的一个实施例,编码器模块具体为:为了更好的利用上下文信息,本发明将长度为n的音素序列对应的语言表征序列输入编码器,通过三个1维的卷积神经网络和双向长短时记忆网络(bidirectionallongshort-termmemory,bilstm)获得上下文单元表征序列由于bilstm由一个前向lstm和反向lstm拼接而成,将bilstm沿着两个方向的隐藏状态向量连接起来以获得上下文单元表征序列h,其中对于第n个单元的上下文单元表征函数concat表示向量拼接,和分别是前向和后向lstm对应第n个单元的隐藏状态。进一步的,所述的音素级表征模块通过汇总一个音素中所有的帧级声学特征以获得其音素级的声学单元表征。在合成阶段,该音素级表征模块的输入是上一帧对应的预测梅尔谱;在训练阶段,输入是上一帧对应的自然梅尔谱。上一帧的梅尔谱首先经过全连接预处理网络,然后采用帧一级lstm来建模音素中帧级声学特征序列间的依赖性。为了只考虑音素内的帧序列而忽略相邻音素的影响,本发明根据已知的音素边界在音素的开始帧位置重置lstm状态。最后为了得到单元对应的定长的音素级声学单元表征使用通用池化方法将lstm得到的隐藏状态序列转换为声学单元表征向量在训练阶段,为了将上下文单元表征和声学单元表征联系起来,这里采用注意力机制来获得每个音素的声学单元表征的识别概率,进而计算音素识别损失假设一句话包含n个音素,在这里对于第n个音素,询问值(query)是声学单元表征键值(keys)是上下文单元表征序列注意力机制中第n个键值对应的权重被用作第n个音素的识别概率的估计值。训练阶段通过交叉熵函数将其与句中音素的独热编码进行比较,以得到音素识别损失音素识别损失有助于限制两种单元表征的空间,可以让声学单元表征融入更多偏文本方面的信息,有助于减小发音的错误。计算此音素识别损失损失的步骤如下:第一步将询问值与上下文单元表征拼接,再与矩阵相乘,经tanh函数计算后再与向量的转置进行点积运算得到每个键值对应的能量第二步使用softmax函数将所有键值对应的能量e={e1,e2,…,en}归一化得到键值对应的概率值α={α1,α2,…,αn};第三步通过计算多分类的交叉熵将当前第n个音素对应的概率值αn转换为音素识别损失其中向量va和矩阵wa是待训练的模型参数,d是单元表征的维度,h是注意力机制中隐层的维度,代表实数域空间,concat代表向量拼接的函数。由于音素级表征模块中的帧一级lstm的状态在音素边界处被截断,因此解码当前音素时无法使用先前的音素信息。此外,音素级表征模块在其所有帧都已解码之前无法输出其音素级的声学单元表征。为了解决这些问题,所述音素级预测模块采用音素级自回归结构来预测当前的声学单元表征并描述连续音素间的依赖性。该音素级预测模块由音素一级lstm和循环预测器gc组成。其中音素一级lstm将历史音素单元的声学单元表征转换为声学历史向量采用如下公式:其中,被设置为零向量。循环预测器gc是一个全连接网络,它的输入是声学历史向量和当前音素的上下文单元表征它的输出是当前音素的预测的声学单元表征,采用如下公式:之后再将预测的声学单元表征上采样到帧级送至下一个帧级预测模块。为了保证构成音素级的自回归结构,在训练阶段,这里需要计算一致性损失以保证构成音素级的自回归结构,定义为预测的声学单元表征与真实的声学单元表征之间的均方误差。通过这个损失函数,本发明能将预测的声学单元表征估计的尽可能与真实一致。一致性损失可使用如下公式计算,其中i代表的维度,代表第i维的数值,对于同理。其中d是单元表征的维度,mse代表计算均方误差的函数。所述帧级预测模块通过解码器lstm预测帧级声学特征。该帧级预测模块的输入有两部分组成,一个是由音素级预测模块预测出的当前音素的声学单元表征另一个是音素级表征模块中帧一级lstm在当前帧上对应的隐藏状态。这两个部分拼接之后进入解码器lstm,其隐藏状态经一个全连接预测当前帧的梅尔谱,待预测完毕后得到初步梅尔谱specpre,使用后处理网络生成残差以细化预测的梅尔谱得到精细梅尔谱specpost。在训练网络时,这里需要计算梅尔谱的重构误差损失重构误差损失定义为经过后处理网络前后的预测梅尔谱与自然梅尔谱specnat之间的均方误差的和,即它的目的是让预测的梅尔谱更加逼近真实梅尔谱,有助于得到质量更高的语音。解码器lstm的隐藏状态再经另一个全连接,通过注意力机制去预测描述当前帧属于下一音素首帧的可能性,即该帧的转移概率。本发明使用一个基于注意力机制的模块去计算转移概率,若当前帧属于第n个音素,注意力机制的键值(keys)是当前音素和下一音素的上下文单元表征和询问值q(query)是解码器当前帧lstm隐藏状态的线性变换。这里使用注意力机制的目的不是获得键值的加权和,而是利用对应的权重作为转移概率。在训练阶段除了需要梅尔谱和语义表征序列之外,也需要语料库中的音素边界作为输入,这可以通过基于隐马尔可夫(hiddenmarkovmodel,hmm)的强制对齐来获得。为了隐式建模时长,在训练时需要计算转移损失它定义为预测的转移概率与由音素边界确定的真实转移概率之间的交叉熵。转移损失通过隐式建模时长有助于得到更加真实的语音时长,让合成语音的韵律更加自然。计算此转移损失的步骤如下:第一步将询问值与上下文单元表征拼接,再与矩阵相乘,经tanh函数计算后再与向量的转置进行点积运算得到非跳转帧对应的能量ej的计算使用上下文单元表征其余与es的计算相同;第二步使用softmax函数将两个键值对应的能量e={es,ej}归一化得到键值的概率值α={αs,αj};第三步通过计算交叉熵将其与句中由音素边界确定的真实转移概率y={ys,yj}(对于跳转帧{ys=0,yj=1},对于非跳转帧{ys=1,yj=0})进行比较,以得到音素识别损失其中vb、wb是待训练的模型参数,d是单元表征的维度,h是注意力机制中隐层的维度,代表实数域空间,concat代表向量拼接的函数。考虑到跳转帧和非跳转帧之间数量的不平衡,采用了加权策略来增强跳转帧在转移损失中的影响。即修正为-yslog(αs)-ω*yjlog(αj),其中ω是手动设置的为了增强跳转帧影响的权重。根据本发明的一个实施例,损失函数为:1)重构误差用于计算预测的梅尔谱和自然梅尔谱之间的差异;2)转移损失通过建模帧对应音素的转移概率对音素时长进行隐式建模;3)一致性损失用于构成音素级的自回归结构;4)音素识别损失用来约束声学单元表征和上下文单元表征之间的差异。整个神经网络模型采用端到端的方式进行参数训练,训练的目标是在训练集上最小化以上介绍的四个损失函数的加权和。根据本发明的一个实施例,合成过程为:建立该模型后,其合成过程与其他序列到序列语音合成方法基本相同。区别在于该模型的解码过程中没有基于注意力机制的对齐方式,而是基于转移概率实现音素时长的预测。在生成某帧对应梅尔谱的过程中,一旦其在帧级预测模块中的转移概率超过0.5这个阈值,解码器将重置音素级表征模块中的帧一级lstm状态,然后开始解码下一个音素。为了验证本发明所提出方法的有效性,设计了如下实验。(1)实验设置本文使用的是中文新闻女声音库,包含12319句话,约17.51小时。这12319句话被分成了训练、验证和领域内测试三个数据集,每个数据集分别含有11608、611和100句话。训练集用于训练提出的模型,验证集用于调整超参数,领域内测试集用于测试该模型的自然度。我们还在337句的领域外测试集上评估了该模型的鲁棒性,包括中国古典诗词、小说、导航文本以及数字串等。语音自然度和鲁棒性作为最终的评价指标。训练模型时80维的梅尔谱被用作声学特征,帧长为64ms,帧移为15ms。并且我们采用音素序列而不是直接使用汉字序列作为模型输入。输入该模型的音素序列类型包括音素、音调和韵律短语边界。模型使用pytorch实现,adam参数优化器优化,在训练集上进行200轮训练,训练一次的批处理大小为80。初始学习率为10-3,然后学习速率指数每10轮衰减0.9倍。(2)实验结果关于不同模型鲁棒性的实验结果如表1和表2所示。基准模型是基于两种注意力机制的序列到序列语音合成方法,分别是基于加性注意力机制的tacotron2_org和基于单调注意力机制的tacotron2_sma。对于领域类句子,重点考察的是句子停止符预测错误的次数以及合成语音音调、频谱和韵律不合适的次数。对于领域外的句子,重点考察的是句子停止符预测错误的次数以及重复、漏读和模型注意力坍塌的次数。表1:不同模型对于领域内测试句的合成错误次数停止符预测错误不正确的音调频谱噪音不合适的韵律tacotron2_org3208252tacotron2_sma0295527uninet_spss0154319表2:不同模型对于领域外测试句的合成错误次数停止符预测错误重复漏读注意力坍塌tacotron2_org1244tacotron2_sma0210uninet_spss0000关于不同模型的测听结果见表3,其中基准模型是基于两种注意力机制的序列到序列语音合成方法tacotron2_org和tacotron2_sma。通过表1、表2和表3的主观评估的结果表明:在基于序列到序列的语音合成方法上,与具有相似自然度的两个tacotron2系统相比,我们提出的模型具有更好的鲁棒性。表3:统计参数语音合成上不同模型在自然度上的倾向性测听tacotron2_orgtacotron2_smauninetn/pp39.55-39.0921.360.95-39.0937.8823.030.80以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页1 2 3 
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除
热门咨询
tips