钟巧霞,曾 碧,林镇涛,林 伟
(广东工业大学 计算机学院,广东 广州 510006)
语音合成(text to speech,TTS)也称文语转换,是一种将文字转化为语音的技术。拼接式语音合成需要大量音频语料,参数式语音合成过程非常复杂,这两种方法生成的音频存在诸多毛刺问题。随着统计理论的完善和深度学习的发展,用自回归或非自回归方法去生成梅尔频谱,再结合声码器构建语音波形的两阶段拼接方法成为目前语音合成的主流方法。但自回归生成模型也存在着一些缺点,如训练推理速度慢等。
本文采用一种高效融合音素和全局韵律的非自回归方式生成梅尔频谱,提升模型的训练和推理速度。主要贡献点如下:
(1)引入轻量卷积[1],获取上下文音素的关联性,解决生成错误问题。采用一个上下文相等的固定窗口通过softmax函数来确定窗口内元素的重要性。通过对每一时刻重要音素的关注,模型可以生成更加准确的发音。
(2)增加音高和能量预测,引入音高、能量预测器用于增添全局韵律信息,缓解韵律缺失问题,提升生成音频的韵律连贯性。
(3)采用主客观结合评价方法进行模型测验。主观评测方法采用平均意见得分(mean opinion score,MOS)和A/B偏好评测,客观评测方法采用梅尔倒谱失真测度(Mel cepstral distortion,MCD)的客观指标。
近些年来,基于神经网络的语音合成技术飞速发展,并且取得显著的成效。2017年,谷歌开创性地提出Tacotron模型[2]将神经网络应用于语音合成任务,该模型应用编码器-解码器结构以自回归生成方式将文本转化为梅尔频谱,再借用GriffinLim声码器进行声音波形的合成。但存在推理速度较慢,生成音频质量不高的问题。2018年,Tacotron2模型[3]在seq2 seq模型的基础上,利用位置敏感注意力机制(location sensitive attention,LSA)增强上下文的位置信息和语义信息,以生成梅尔频谱。引入注意力机制进行对齐,带来音频的鲁棒性问题。2019年,TransformerTTS模型[4]将输入转化为更加细粒度的音素输入来训练模型,以避免测试时输入不存在的情况,结合WaveNet声码器[5]解码生成声音波形。但仍然存在推理缓慢和自回归误差累计问题。
由于自回归式模型容易出现错误导致文本中某些词汇被遗漏或者重复发音问题。于是工业界和学术界开始将目光转向非自回归式语音合成。2019年,FastSpeech模型[6]引入时长预测器帮助文本与频谱进行对齐,采用教师学生模型辅助训练合成梅尔频谱,以降低训练的时长和减少漏词、重复发音问题。但仍需训练许多注意力层,训练难度较大且较为耗时。2020年,FastSpeech2模型[7]引入方差预测器为生成语音提供尽可能多的参数信息,帮助解决语音合成任务中一对多的问题。但对训练设备要求较高。同年,SpeedySpeech模型[8]采纳教师指导学生方式,用全卷积结构进行高质量梅尔频谱的生成,提升模型训练速度。但生成语音韵律缺乏,听起来较为生硬。2021年,FastPitch模型[9]为每个输入音素预测时长和音高,调整音高以更好地合成高质量音频。
受SpeedySpeech模型的启发,在此提出一种融合音高、能量预测器与轻量卷积神经网络的改进非自回归模型LCTTS,用以生成梅尔频谱。所提出模型的主要网络架构如图1所示。
图1 LCTTS模型
LCTTS模型主要由音素编码器Encoder、时长预测器Duration Predictor、音高/能量预测器(Pitch/Energy Predictor)、解码器Decoder这4个模块组成。
轻量卷积模块用来解决非自回归模型中缺失上下文音素的关联造成的出错问题。轻量卷积模块如图2所示。轻量卷积模块主要由线性层、门控线性单元GLU[10]和轻量级卷积构成。该模块能够更好保留音素特征,从而更准确地判断出每一个窗口内输入音素的重要性。
图2 轻量卷积模块
模块输入首先经过线性层,将维度为N×d的输入投影映射为N×2d的维度。接着将线性层的输出送入GLU层。门控线性单元GLU是在卷积结构上加入门控机制,将GLU层的一半输入作为门控单元,再将剩余的一半线性层输出作为门控单元的输入变量,然后计算逐个点积。GLU层运算如式(1)所示
hl(X)=X+CNN(X)⊗CNN(X)
(1)
式中:X表示门控单元的输入变量,CNN表示卷积网络,⊗表示矩阵之间的元素乘积。通过门控线性单元后获得维度为N×d的输出。接下来将隐变量送入轻量级卷积。通过轻量级卷积和线性层,模块最终输出为N×d的向量。
轻量级卷积具有权重共享的特性,能够加快模型的训练速度,提升训练效率。轻量级卷积如图3中所示。它在深度卷积的基础上,引入多头注意力机制,通过权重共享,即在同一个头内使用相同的卷积核参数;且对每一头内的卷积核参数进行归一化处理。归一化处理可以有效聚合局部信息,帮助模型更好地关注重点信息。轻量级卷积在同一时间内对不同通道采用相同卷积核参数同时进行卷积运算,极大缩减计算时间。图3中W表示卷积核,H表示引入注意力头数,k表示卷积核的大小,X和O分别表示输入与输出,N表示输入的向量维度,d表示输入的通道数。轻量卷积序列中第i个音素计算的输出如式(2)所示
图3 轻量级卷积
(2)
(3)
式(3)表示同一头内卷积参数归一化处理过程,其中h表示头数,k表示卷积核的大小,W表示卷积核。
音素编码器的作用是提取输入音素的鲁棒顺序表示。通过Embedding层将输入的音素表示为一串连续的one-hot向量。再结合轻量卷积模块提取音素特征,提升模型的泛化能力。经由Embedding层和轻量卷积模块构成的前置网络生成的one-hot变量,接下来将进入残差卷积模块中,借用卷积神经网络的强大特征提取能力提取出更具语义信息的音素隐藏特征。再通过由轻量卷积模块和归一化模块组成的音素编码器后置网络进行更为细致的特征提取得到鲁棒性音素序列表示,获得音素编码器模块的最终输出。音素编码过程可以简述为
Z=Encoder(X)
(4)
式中:输入序列为X={x1,x2,x3,…,xN}, 其中xi表示输入文本中第i个音素,N表示输入的音素总长度。音素编码器的输出序列为Z={z1,z2,z3,…,zN}, 其中zi表示第i个隐变量,Encoder表示音素编码器。
时长预测器用于预测每一个输入音素的持续时间,即该音素对应的梅尔频谱帧的数量。时长预测器由轻量卷积模块和残差卷积模块组成,如图4所示。
图4 时长预测器
时长预测器以音素编码器输出的音素序列作为输入,最终输出一连串的音素持续时长序列。音素时长预测过程可以简述为
Lossduration={l1,l2,l3,…,lN}
(5)
(6)
式(5)和式(6)中,输出的音素时长序列为D={d1,d2,d3,…,dN}, 其中di表示输入序列中第i个音素对应的预测持续时间。真实音素时长序列为T={t1,t2,t3,…,tN}, 其中ti表示每个音素的真实持续时长。Lossduration表示预测音素时长与真实音素时长的误差集合,其中lj表示每一个音素的预测与真实值之间的误差。
音高/能量预测器的作用是为生成音频增添更多的韵律信息,解决生成音频不连贯的问题,提升生成语音的自然度。音高/能量预测器结构如图5所示。
图5 音高/能量预测器
音高和能量预测器的计算过程如下:首先通过一维卷积层进行隐藏序列特征的提取,接着将结果送入Relu激活。激活后的隐变量通过归一化层帮助模型加快收敛速度。同时为加强模型的鲁棒性引入随机丢弃的方法,最后通过线性层对随机丢弃后的结果进行线性映射,转化为与扩展后的隐藏序列相同的维度。由于生成语音的音高与能量变化属于帧级别的变化,因此本文结构在时长预测器完成音素持续时长预测后对音素隐藏序列进行扩展,再将拓展后的序列向后传播。音高/能量预测器分别以扩展后的音素隐藏序列为输入,去预测每一帧的音高或能量,再分别获取输出。然后再将这两种预测器的输出与输入进行连接后送入解码器中,解码得到梅尔频谱,最后借助声码器对频谱图进行编译转化为声音波形。音高和能量预测的过程可以简述为
P=PitchPredictor(K)
(7)
E=EnergyPredictor(K)
(8)
式(7)、式(8)中,扩展后的音素隐藏序列为K={k1,k2,k3,…,kL}, 其中L为梅尔频谱的最大梅尔刻度值。音高预测器输出序列为P={p1,p2,p3,…,pL}, 能量预测器输出序列为E={e1,e2,e3,…,eL}。 其中PitchPredictor表示音高预测器,EnergyPredictor表示能量预测器。
解码器的主要功能是生成梅尔频谱。解码器以音高预测器和能量预测器的输出与扩展后得到的音素隐藏序列相结合作为输入。解码过程可以简述为
M=Decoder(cat(K,P,E))
(9)
(10)
(11)
Lossmel=Lossssim+Lossl1+Lossduration
(12)
假设解码器的输出为M={m1,m2,m3,…,m80}, 扩展后的音素隐藏序列为K。 将解码器的输出与真实频谱图G={g1,g2,g3,…,g80} 作结构相似损失对比进行模型训练。式(10)~式(12)为本模型的各项损失函数,其中Decoder表示解码器,cat表示将变量相连接。μg、μm分别表示真实值与预测值拟合后的高斯函数的均值,σg、σm分别表示真实值与预测值拟合后的高斯函数的方差。Lossssim表示结构相似损失函数,Lossl1表示平均绝对误差函数,Lossmel表示整体模型的损失。
整体模型训练过程的伪代码见表1。
表1 总体算法伪代码
本文使用LJSpeech数据集[11]对LCTTS模型进行训练测试,并采用ESD数据集[12]中数据进行验证。LJSpeech数据集包含大约24小时的13 100个英语音频片段,同时提供音频相对应的文本。本实验中将此数据集分为两部分:前13 000句用于训练,后100句用于测试,并从ESD数据集中抽取中性情感语句350句,均为编号0011的说话者音频,用于验证。
本文所提出模型的实验均在系统为Ubuntu 16.04,以及显卡型号为RTX 2080Ti上进行。具体网络模型的训练细节如下:训练迭代100轮,采用Adam优化器,学习率设置为0.02。网络模型中的超参数设置如下:音高/能量模块使用卷积核为3的一维卷积和0.5的丢弃率,并进行随机丢弃训练;轻量卷积模块使用卷积核为7的轻量卷积,并且使用8头注意力,设定丢弃率为0.1。
目前主流的两端拼接式语音合成模型主要由声学模型和声码器构成,本部分将介绍本实验中用到的声学模型和声码器,将其任意两两组合进行实验对比。
声学模型部分主要应用以下5个模型:
(1)TransformerTTS模型[4],以seq2 seq序列模型为基础结合自注意力机制实现梅尔频谱生成的自回归模型。
(2)FastSpeech2模型[7],通过时长预测器结构对齐输入文本和输出频谱实现非自回归生成模型。
(3)FastPitch模型[9],通过对基因轮廓进行预测并借助Transformer结构生成梅尔频谱的非自回归模型。
(4)SpeedySpeech模型[8],以全卷积结构实现快速梅尔频谱生成的非自回归模型。
(5)LCTTS模型,是结合轻量卷积并添加音高/能量预测器的非自回归模型。
声码器部分主要采用GriffinLim算法和MelGan声码器[13]:
(1)GriffinLim算法是一种通过已知的幅度谱去预测未知的相位谱,结合幅度谱和相位谱重建语音波形的经典算法。
(2)MelGan是一种基于GAN[14]结构,采用非自回归卷积结构生成语音的轻量级快速高效语音合成方法。
模型训练损失如图6所示。损失图中横坐标Step表示训练的迭代次数,纵坐标TotalLoss表示训练过程中的总损失量。从损失下降中可以明显看到,本文算法更早地达到收敛效果,且震荡幅度较小。这充分说明本文模型具有更好的鲁棒性和强大的网络表达能力。
图6 模型训练损失
3.3.1 MOS评测
平均意见得分MOS(mean opinion score),是衡量语音质量的重要指标,是一种主观评测语音质量的方法。本实验采用NISQA模型[15]进行MOS值的预测。
各模型在测试集上的MOS得分实验结果见表2,在验证集上的MOS得分实验结果见表3。
表2 测试集上MOS得分
表3 验证集上MOS得分
表2中显示,在采用GriffinLim算法时,LCTTS相比SpeedySpeech的MOS分值提升0.05。在使用MelGan声码器时,LCTTS相比SpeedySpeech的MOS分值提升0.02,比FastSpeech2的MOS分钟高出0.09,比FastPitch的MOS分值高出0.28。
表3中显示,在采用GriffinLim算法时,LCTTS相比SpeedySpeech的MOS分值提升0.08。在使用MelGan声码器时,LCTTS相比SpeedySpeech的MOS分值提升0.14,比FastSpeech2的MOS分钟高出0.37,比FastPitch的MOS分值高出0.31。
3.3.2 A/B偏好测试
本实验随机选取20句文本,每句文本分别提供LCTTS和SpeedySpeech的对应合成音频,由10位英语专业的志愿者选择出合成效果更好的音频完成A/B偏好测试。评价结果如图7所示。评价结果图中横坐标表示合成音频质量好对应的模型名称,纵坐标表示志愿者对于合成音频偏好的百分比。
图7 A/B偏好结果
图7中可以看出志愿者认为52.5%的LCTTS模型合成音频效果优于SpeedySpeech模型。仅有22.5%的音频被认为SpeedySpeech模型合成音频效果优于LCTTS模型。
3.3.3 MCD测试
梅尔倒谱失真测度MCD(Mel cepstral distortion),作用是衡量两个梅尔倒谱序列的差异程度,是一种客观评测方法。合成频谱和真实频谱之间的MCD越小,合成音频越接近自然音频。各模型MCD得分的比较汇总结果见表4。
表4 各种模型MCD得分比较
表4中显示,LCTTS模型生成的梅尔频谱相较于SpeedySpeech模型在测试集和验证集上的MCD得分分别降低0.15和0.04。在测试集上,LCTTS模型的MCD得分比FastSpeech2模型低0.04,在验证集上LCTTS模型的MCD得分比FastSpeech2模型低0.8,比FastPitch模型低0.09。
3.4.1 轻量卷积
轻量卷积的消融实验结果见表5。
表5 轻量卷积的消融实验结果
表5中可以看出,MOS评分在基准SpeedySpeech模型上引入轻量卷积结合MelGan声码器能够取得0.05的分值提升。验证了轻量卷积确实可以增强上下文音素之间的关联,帮助发音时刻聚焦重点音素,生成更加准确的发音,从而提升生成语音质量。
3.4.2 音高/能量预测器
音高/能量预测器的消融实验结果见表6。
表6 音高/能量预测器的消融实验结果
表6中可以看出,MOS评分在基准SpeedySpeech模型上增加音高/能量预测器后能够获得0.02的分值提升。验证了音高和能量能够提升生成语音的韵律表达,增强生成语音的自然度,从而提升音频的声学感受。
同一文本”As has been pointed out,the Commission has not resolved all the proposals which could be made. The Commission never-theless is confident that”生成对应音频的梅尔频谱图如图8所示。
图8 梅尔频谱
图8中Reference表示数据集中提供对应音频,LCTTS表示提出的模型,SpeedySpeech表示基准模型。图中1 s~2 s文本合成频谱处可以明显看出相比于原来的SpeedySpeech模型,LCTTS模型的梅尔频谱更加接近于真实音频的梅尔频谱,因此输出音频会更加接近于真实音频,生成效果更好。
针对如何有效捕获上下文音素之间的关系和对合成音频韵律进行准确预测的问题,本文提出一个以音素为输入的非自回归语音合成模型LCTTS,结合轻量卷积结构有效捕捉上下文音素之间的关系,引入音高、能量预测器控制全局声音的特性,提升生成语音的可懂度和自然度。实验结果表明提出的LCTTS模型生成的梅尔频谱与真实音频的梅尔频谱更相似,且合成音频的质量更好。提出的LCTTS模型目前主要针对单说话人的音频合成,接下来的主要工作将专注于将其拓展为多说话人音频合成模型。