基于分离对比学习的个性化语音合成

2023-11-27 05:35:10吴克伟
计算机工程与应用 2023年22期
关键词:风格特征解码器编码器

尚 影,韩 超,吴克伟

1.阜阳幼儿师范高等专科学校 小学教育学院,安徽 阜阳236015

2.合肥工业大学 计算机与信息学院,合肥230601

个性化语音合成是指根据目标说话人的参考语音,合成具有目标说话人风格的语音。该任务广泛应用于增强现实、虚拟现实、游戏开发和视频编辑等领域。

在个性化语音合成任务中,模型需要学习不同的说话人风格,即从参考语音中提取说话人语速、口音、情感等方面的特征。为了提取目标说话人的风格特征,Wang 等人[1]使用循环神经网络从参考语音序列中提取风格特征“Style Tokens”,该模型使用线性层估计不同Token 的注意力,并组合多个Token 来学习目标说话人的风格特征。Jia 等人[2]使用长短时记忆网络来学习参考语音中的说话人特征,并嵌入到自回归语音编码解码器中实现语音合成。Paul等人[3]将说话人特征嵌入到时间条件概率模型中,用于逐帧的语音合成。Choi等人[4]从语音帧和整个参考语音序列两方面,来描述说话人之间的差异。Chen 等人[5]从说话人身份编号中提取线性层参数,用于说话人身份特征的调整。为了避免目标说话人风格特征变化过大,Min 等人[6]使用线性层来估计参考语音中的风格特征之间的关系,并促进相同目标说话人语音的风格特征一致。Huang等人[7]对目标说话人的样本进行多次采样构建子数据集合,并使用多个子数据集合来避免说话人风格特征学习的过拟合。上述方法没有对比不同说话人之间的风格特征,容易忽略风格特征之间的差异,从而造成目标说话人风格特征学习不准确。

个性化语音合成依赖于参考语音的分割特征分解。参考语音同时依赖于目标说话人风格和语音中的文本内容。对比声学语言模型(contrastive acoustic-linguistic module,CALM)[8]将参考语音作为一个整体进行对比分析,但是在说话人风格和语言内容两方面没有进行分离对比分析,导致了合成语音受到语言内容的干扰,而偏离目标说话人风格的问题。因此,对参考语音中的风格特征和内容特征进行分离学习,仍然是个性化语音合成的重要任务。

本文关注于风格-内容分离的对比学习,用于从参考语音中提取可分离的风格和内容特征。本文设计了一种基于分离对比学习的个性化语音合成模型。该模型包括风格-内容分离对比模块、说话人模块、语音解码器模块。风格-内容分离对比模块引入分离负例,该分离负例能够促使查询的风格和其他参考语音中的内容分离,同时能够促使查询的内容与其他参考语音中的风格分离。风格内容分离模块用于学习兼顾风格-内容的语音特征。说话人模块学习说话人身份特征,并用于引导说话人风格学习。语音解码器模块融合风格-内容的语音特征和说话人身份特征,来提高对持续时间、音高、能量这些说话人风格的描述能力。

本文主要贡献如下:

(1)设计了一种风格与内容分离的对比损失,该分离损失能够促使查询的风格和其他参考语音中的内容分离,同时能够促使查询的内容与其他参考语音中的风格分离。

(2)将分离学习的风格-内容特征与说话人身份特征融合,来预测说话人风格中的持续时间、音高、能量,从而实现全面的风格特征描述和个性化语音合成。

(3)在VCTK 和LibriTTS 两个数据集上的实验表明,本文方法合成语音的质量优于现有方法。

1 相关工作

1.1 个性化语音合成

语音合成模型通常使用大型说话人数据集来学习风格特征,然后使用小样本的数据,来微调目标说话人的风格。Moss 等人[9]使用贝叶斯优化器来微调说话人风格。风格特征可以从参考语音中提取说话人身份特征[10-11]。此外,一些方法从语音样本中提取风格特征。Nachmani等人[12]使用说话人编码器,从语音样本中捕获说话人特征。Zhou等人[13]使用局部帧级的语音特征,描述细粒度的说话人特征。So-vits-svc(SoftVC VITS singing voice conversion)方法[14]使用了持续时间长度预测器和第0帧的语音预测器,并使用了条件变分自动编码器和生成对抗网络策略,提高语音合成质量。然而,So-vits-svc 没有对说话人身份特征和说话人风格特征进行建模。如果没有考虑说话人身份特征和风格特征,在语音合成中容易受到不同身份和不同风格特征的干扰,限制了语音合成质量。为了解决上述问题,本文设计了说话人模块,用于提取说话人的身份信息。此外,本文设计了风格-内容分离对比模块,用于描述说话人在不同内容表述上的不同风格。

1.2 对比学习

对比学习通过采集与查询样本相关的正例集合和负例集合,来分析查询样本和正负例之间的对比关系。对比学习的目的是促使查询样本与正例相似,以增强正例对模型的影响。同时,对比学习促使查询样本与负例分离,最大化减少负例对模型的影响。在计算机视觉领域,简单对比学习表达模型SimCLR[15]设计了一个视觉特征对比学习的框架,用于图像分类。Khosla等人[16]设计了一种有监督的对比学习方法。在自然语言处理领域,简单对比学习语句嵌入模型SimCSE[17]使用对比学习验证语义文本相似度,并用于自然语言翻译。融合模态模型UNIMO[18]使用对比方法来增强图像-文本多模态特征学习,用于描述图像内容。2022年,对比学习也用于语音合成中,CALM[8]将参考语音作为一个整体特征,并利用对比学习来提取其中的说话人风格。该方法忽略了参考语音中说话人风格和语言文本内容之间的相互干扰,导致合成语音的说话人风格和参考语音的说话人风格相似性较差。

2 分离对比学习语音合成模型

本章首先概述了对比学习个性化语音合成模型的框架,然后详细介绍了风格-内容分离对比模块、说话人模块和解码器模块。

2.1 模型框架

本文模型采用FastSpeech 2[19]网络作为基础模型。模型的整体设计如图1所示。FastSpeech 2方法[19]通过设计持续时间预测器、音高预测器、能量预测器,来描述丰富的语音变化信息,用于提高语音合成的质量。本文在FastSpeech 2网络的基础上,添加了说话人模块和风格-内容分离对比模块。其中说话人模块用于提取说话人的身份信息,风格-内容分离对比模块用于描述说话人在不同内容表述上的风格。由于本文考虑了说话人身份信息和具有内容差异的风格,可以较充分地使用上述语音信息,来减少语音合成中说话人变化和内容变化的干扰,从而提高语音合成的质量。本文模型由风格-内容分离对比模块、说话人模块和语音解码器模块组成。

图1 分离对比学习语音合成模型Fig.1 Separated contrastive learning speech synthesis model

2.2 风格-内容分离对比模块

风格-内容分离对比模块由文本编码器和风格编码器组成。文本编码器使用Conformer Block[20]结构,风格编码器使用卷积网络加上Conformer Block结构。在该模块中,文本编码器提取文本特征,风格编码器从语音中提取说话人风格特征。然后,该模块通过分离对比学习,从参考语音中提取可分离的风格和内容特征。

首先,文本编码器从长度为Ttext的文本表示xi中提取文本特征。使用风格编码器从参考Mel频谱yi中提取说话人风格特征表示第i对文本和语音的样本对,Ttext是文本的长度,Tstyle是语音的长度,d是文本和语音的特征维度。然后,使用平局池化操作,将文本特征和说话人风格特征映射到相同的维度进行对比学习。计算如下:

最后,对比学习通过联合训练风格编码器和文本编码器来学习特征空间,以最大化正样本特征之间的余弦相似度,并最小化负样本特征之间的余弦相似度。

本文对比学习中的正样本表示、语音风格和文本内容之间具有支持关系,即正关系。负样本表示语音风格和文本内容之间支持关系不明显,即负关系。本文使用一个语音及其支持的文本,将(文本,语音)对作为正样本。本文使用的负样本包括两种情况:(1)一个语音和同一批次中不是该语音的文本,将语音和没有支持关系的文本作为文本分离负样本。(2)一个文本和同一批次中不是该文本的语音,将文本和没有支持关系的语音作为语音分离负样本。分离负例能够促使查询的风格和其他参考语音中的内容分离,同时能够促使查询的内容与其他参考语音中的风格分离。

给定正样本文本和语音对应的特征为和,分离对比损失包括两部分,分别是不同语音负样本的对比损失,以及不同文本负样本的对比损失,计算如下:

其中,N是样本数量,τ是对比学习的温度参数,sim(·)是余弦相似度函数,sim(u,v)=uTv/‖u‖‖v‖。

2.3 说话人模块

说话人模块由说话人编码器和说话人分类器组成。说话人编码器用来捕捉不同说话人身份特征,而不受语音内容和背景噪音的影响。说话人分类器用来区分不同说话人的语音特征,可以使模型更好地适应不同说话人的风格。

模块框架如图2 所示。首先,说话人编码器使用Conformer Block来分析参考语音Mel频谱yi帧信号之间的关系,提取说话人身份特征。然后,将说话人编码器获得的特征通过说话人分类器来区分不同说话人。说话人分类器包括三个线性层,每个线性层都具有ReLU激活函数。分类器使用Softmax层来输出不同说话人身份概率,如下:

图2 说话人模块Fig.2 Speaker module

说话人编码器能够将说话人的语音信号转化为说话人身份特征。说话人身份特征输入到解码器中,解码器可以集中关注于该说话人,促使合成语音与说话人的参考语音更加相似。

给定真实的人工标注的说话人身份标签和基于语音信号预测的说话人身份标签,说话人模块使用二元交叉熵损失函数,来计算说话人身份损失:

2.4 解码器模块

尽管说话人身份特征可以作为条件,但是静态的权重不能对多样化的说话人风格进行建模,因此解码器模块需要根据说话人身份特征调整网络权重。解码器中的每个自注意和前馈网络都采用了条件层归一化,这可以通过尺度向量和偏差向量影响风格。

解码器模块由可变信息适配器和Mel解码器组成,如图3所示。可变信息适配器由持续时间预测器、音高预测器、能量预测器、长度规整器和条件层归一化组成。可变信息预测器用于预测语音的韵律特征,如持续时间、音高和能量。对于持续时间预测器,输出是对数尺度中每个音素的长度,并利用均方误差损失进行优化。对于音高预测器和能量预测器,输出分别是帧级基频和Mel 谱图的能量,并使用平均绝对误差进行优化。条件层归一化由两个线性层和层归一化组成。

图3 解码器模块Fig.3 Decoder module

首先,将编码器提取的特征进行融合,得到融合后特征H∈ℝTtext×d,计算如下:

持续时间预测器预测文本所对应的时长。长度规整器将特征H扩展到Mel频谱的长度。条件层归一化层对预测器提取的特征的每个维度进行处理H′={h1,h2,…,hM}。M表示特征维度。条件层归一化层使用两个线性层来确定说话人身份特征的尺度向量a和偏差向量b,用于特征的缩放和平移。上述操作的计算过程如下:

其中,H″表示条件层归一化后的特征;μ和σ是特征H′的均值和方差。

2.5 损失函数

整个模型的损失函数包括对比文本-语音模块的对比学习损失、说话人模块的交叉熵损失、解码器模块中的持续时间均方误差损失、音高和能量的平均绝对误差损失,以及预测Mel频谱图和真实Mel频谱图之间的平均绝对误差损失。本文的总损失函数计算如下:

其中,LCTS是分离对比损失,Lspeaker是说话人模块的交叉熵损失,Lduration、Lpitch、Lenergy和Lmel损失函数采用FastSpeech 2的损失函数。

3 实验

3.1 数据集

本文选取了VCTK[21]和LibriTTS[22]两个多说话人数据集。VCTK数据集是一个具有108个说话人的多说话人数据集,包含44 h的语音数据和相应的文本。LibriTTS数据集是一个具有2 456 个说话人的多说话人数据集,包含586 h的语音数据和相应的文本。LibriTTS数据集中,将train-clean-100和train-clean-360用于训练,dev-clean用于验证,test-clean用于测试。

3.2 实验设置

预处理阶段:使用开源的字形到音素工具将文本序列转换为音素序列,并将音素序列作为输入。将音频的采样率设为16 000 Hz,并修剪前导和尾随静音的片段。然后,本文设置窗口大小为1 024,跳跃大小为256,采用Hann窗函数,来将原始波形转换为具有80个频率的Mel频谱图。

训练阶段:实验使用显卡为NVIDIA GeForce RTX 3090,操作系统为Ubuntu 18.04,深度学习框架为PyTorch。根据内容依赖细节语音嵌入模型(content-dependent fine-grained speaker embedding,CDFSE)[13],使用Fast-Speech 2[19]作为基础模型来构建文本分离对比学习模型,并将训练集划分为预训练数据部分和微调数据部分,分别用于预训练阶段和微调阶段。在预训练阶段,选择10 个作为未见说话人,剩下的说话人构成可见说话人数据集,用于模型训练。在微调阶段,对每个未见说话人,随机选择20个句子,构成微调数据集,用于模型微调。在每个阶段,模型采用的批量大小为64,训练步骤为3.0×105。学习率初始化为0.001。根据FastSpeech 2[19],设置学习率的衰减方式,使用Adam 作为优化器,优化器参数为β1=0.9,β2=0.98,ε=1E-9。

测试阶段:模型微调过程中冻结了所有模型参数,仅更新说话人编码器和条件层归一化。本文在2 000步中训练模型和基线。为了确保生成语音的目标说话人的特征都来自声学模型,而不是声码器,选择了一个预训练的声码器。因此,本文在推理过程中使用高保真生成对抗网络(high fidelity generative adversarial network,HiFi-GAN)作为声码器[23]。由于测试说话人在声码器训练过程中是看不见的,可能存在泛化问题,这会影响语音质量,而且声码器可能无法很好地保留目标说话人的Mel 频谱图特征。因此,采用预训练的HiFi-GAN将真实Mel 频谱图转换为波形作为参考标准。此外,转换后语音和真实语音之间的差距表明声码器的泛化差距。

3.3 评价标准

评价标准包括:(1)可见说话人的语音自然度,用于评价训练集中已经出现的说话人的语音合成结果。(2)未见说话人的语音自然度,用于评价训练集中没有出现的说话人的语音合成结果。(3)说话人的相似度,用于评价合成语音与参考语音在说话人风格方面的相似程度。

评价指标分为主观评价和客观评价两种。主观评价采用平均意见分数(mean opinion score,MOS)来评价自然度。采用相似度评价意见分数(similarity mean opinion score,SMOS)来评价相似性。这两个评价标准的评分都在1(差)到5(优)之间,为了避免实验的偶然性,进行多次打分,以95%的置信区间进行评估。

客观评价采用Mel倒谱失真(Mel cepstral distortion,MCD)来描述语音质量。采用说话人的余弦相似度(speaker cosine similarity,SCS)来衡量多说话人音频中说话人相似度。SCS 分数在-1 和1 之间,得分越高,表明相似性越高。MCD 和SCS 都不是评估的绝对指标,因此只用它们进行相对比较。主观评价的方式是选取5名通过英语六级的学生,进行人工评估。为了保证评估的公平性和正确性,同时在众包平台上发布了语音评估任务,由5名英语母语人士评价。

3.4 对比实验

对比方法包含:(1)Attentron[4]模型,利用细粒度编码器和粗粒度编码器,分别生成可变长度特征和全局特征,对未见说话人进行语音合成。(2)AdaSpeech[5]模型,在声学条件建模基础上,使用条件层归一化来提高对说话人风格的适应能力。(3)Meta-StyleSpeech[6]模型,在生成器中使用风格适应归一化层从参考语音中提取的风格向量,来适应说话人的偏差。(4)Meta-TTS[7]模型,对目标说话人样本进行多次采样构建多个子数据集合,并使用多个子数据集合来避免说话人风格特征学习过拟合。(5)CDFSE[13]模型,使用文本内容的细粒度说话人特征,来实现零样本说话人适应。(6)本文模型,关注于使用风格-内容分离对比损失,该分离损失能够促使查询的风格和其他参考语音中的内容分离,同时能够促使查询的内容与其他参考语音中的风格分离,从而增强说话人风格特征的学习。

3.4.1 可见说话人语音质量评价

表1 显示了在LibriTTS 数据集上不同模型的可见说话人的语音质量评估结果。表1 中,Ground Truth 表示真实语音。Ground Truth Mel+HiFi-GAN 表示使用真实的Mel频谱图与HiFi-GAN声码器合成的波形。

表1 可见说话人的语音质量评价结果Table 1 Evaluation results of speech quality of seen speaker

本文方法在所有指标上都优于现有方法。具体来说,Attention[4]模型使用注意力机制对文本和语音进行对齐。由于注意力容易受到风格和内容的干扰,注意力自身不够稳定,导致语音质量较低。本文模型关注于从参考语音中分离出风格特征和内容特征,使用风格-内容分离对比损失,来增强说话人的风格特征,从而实现高质量的语音合成。

3.4.2 未见说话人语音质量评价

表2 显示了在VCTK 和LibriTTS 数据集上不同模型的未见说话人的语音质量评价结果。由于缺乏对应说话人的训练数据,未见说话人的语音质量低于可见说话人的语音质量。本文方法在所有指标上都优于现有方法,这是由于本文方法引入了分离对比损失。该损失可以有效描述不同说话人在风格和内容上的区别,从而有效捕获预训练数据集中和微调数据集中说话人的风格特征差异,从而增强了未见说话人的语音合成质量。

表2 未见说话人的语音质量评价结果Table 2 Evaluation results of speech quality of unseen speaker

3.4.3 说话人相似度评价

表3 给出了LibriTTS 数据集上可见说话人和未见说话人的说话人相似度的结果。将本文模型的风格-内容分离对比模块替换为标准化流模块[14],来分析两者设计之间的差异。在训练时,标准化流模块从风格编码器提取特征,并用于监督文本编码器的学习,从而将风格特征嵌入到文本特征中。在测试时,标准化流模块使用嵌入风格的文本特征作为输入,用于后续的Mel 解码。与标准化流模块相比,本文风格-内容分离对比模块合成的语音与参考语音的相似性得分更高。这说明分离对比损失能够有效提取说话人风格特征,并帮助增加合成语音与参考语音的相似度。

表3 说话人相似度的评价结果Table 3 Evaluation results of speaker similarity

3.5 消融实验

表4 给出了LibriTTS 数据集上的消融实验结果。基础模型(Baseline)采用FastSpeech 2 模型。该模型融合风格编码器提取的说话人风格特征,以及文本编码器提取的文本内容特征,并输入到语音解码器,用于合成语音。本文模型引入分离对比学习,合成语音的质量和说话人相似度都有提高。这是因为对比学习能够准确地提取说话人风格相关的信息。同时,引入说话人模块和条件层归一化会显著提高未见说话人的相似度。从这个结果中,可以发现对于未见说话人,说话人模块和条件层归一化相比于对比学习提升效果更明显。因为说话人模块和解码器模块能够适应模型没有见过的数据,所以对于未见说话人有更好的泛化能力。

表4 LibriTTS数据集上的消融实验结果Table 4 Ablation results on LibriTTS dataset

3.6 可视化分析

为了进一步证实本文模型的有效性,对合成语音的Mel频谱进行可视化分析,如图4所示。本文从LibriTTS数据集的未见说话人中选取一个参考音频,说话人身份为Bill Kneeland,音频内容为“It seems the king will not consent to it.”。以参考音频的说话人风格来合成文本“She walked towards him and then halted.”。

从图4中可以看出:(1)由于在参考音频中存在king will not 的连读现象,Baseline 方法在合成音频中,也存在him and then halted 的连读现象。本文方法由于使用了风格-内容分离策略,有效区分出then和halted之间的关系,通过音调的波谷,给出了更为清晰的halted 的发音时间范围。(2)标准化流模块和本文方法都较好地描述了then 和halted 之间的音调波谷位置。考虑到参考音频中consent中音素“N”的音高处理方式,标准化流模块采用减弱的音高,而本文方法采用较低的音高,本文方法与参考音频中处理方式更为相似。(3)Baseline方法合成音频对halted 进行弱读处理。本文方法由于使用了风格-内容分离策略,关注到句子需要理解的重点,是前半句行为引起的后半句结果。而后半句的结果中halted 中的过去式后缀,对读者理解整句话的内容比较重要。模仿参考音频中对Consent发音重读在第二个音节的特点,本文方法halted 的处理,也对第二个音节ed增加了音高。

4 结束语

本文对于实际生活中使用广泛的个性化语音合成进行了研究,设计了基于对比学习的个性化语音合成模型,以提高合成语音的质量和说话人的相似度。首先,设计了对比文本-语音模块,通过获取风格相近的文本特征和说话人风格特征,来解决说话人相似度低的问题。然后,设计了说话人模块和解码器模块,利用说话人模块来区分不同说话人身份特征,解码器模块通过引入条件层归一化,将说话人特征当作权重,来调整编码器输入的特征,合成说话人风格相关的语音。在VCTK和LibriTTS两个数据集上的实验说明,本文方法能够合成高质量的语音,同时提高说话人相似度。在未来的工作中,可以考虑对参考音频中的说话人特征进行解耦合,从而控制合成语音的音高、音色、情感等因素。此外,可以尝试使用无监督或半监督的方法对少样本的语音合成进行研究。

猜你喜欢
风格特征解码器编码器
科学解码器(一)
傣族舞蹈中基本体态短句的风格特征及训练方法
科学解码器(二)
科学解码器(三)
线圣AudioQuest 发布第三代Dragonfly Cobalt蓝蜻蜓解码器
基于FPGA的同步机轴角编码器
基于PRBS检测的8B/IOB编码器设计
浅析蒙古族民间舞蹈中“绕肩”的审美规范
人间(2016年24期)2016-11-23 18:48:44
基于民族风格特征的云南原生态音乐分类研究
JESD204B接口协议中的8B10B编码器设计
电子器件(2015年5期)2015-12-29 08:42:24