GenerSpeech: Towards Style Transfer for Generalizable Out-Of-Domain Text-to-Speech【论文精读】
本文发表于NeurIPS 2022,https://arxiv.org/abs/2205.07211
该论文描述了一种名为GenerSpeech的文本转语音(TTS)模型,旨在实现高保真度的零样式转移,特别是在面对未见过的样式(如说话人身份、情感和语调)时。这个任务面临一些挑战,包括:
-
动态样式特征的建模难度: 在富有表现力的语音中,样式特征通常非常动态且难以建模和转移。
-
处理与源数据不同的多样性未见样式条件的鲁棒性: TTS 模型应具有足够的鲁棒性,能够处理与源数据不同的多样性未见样式条件。
GenerSpeech 提出了两个组件来解决这些挑战:
-
多层级样式适配器: 用于高效建模多样的样式条件,包括全局说话人和情感特征,以及局部(语句、音素和单词级别)的细粒度韵律表示。
-
通用内容适配器: 使用 Mix-Style Layer Normalization,将语言内容表示中的样式信息消除,从而提高模型的泛化能力。
评估结果表明,GenerSpeech 在零样式转移方面优于现有的模型,具有更好的音频质量和样式相似性。此外,对自适应样式转移的扩展研究显示,GenerSpeech 在少量数据设置中表现出很强的鲁棒性。
关于风格建模和转移的方法:
-
全局风格标记(Global Style Token,GST): 全局风格标记是一种方法,通过引入全局风格标记,模型可以更好地记忆和再现语音的全局尺度风格特征。这是一种用于捕捉全局语音特征的方法。
-
细粒度潜在变量(Fine-grained Latent Variables): 一些方法采用变分自编码器(Variational Autoencoder,VAE)来表示细粒度的语调变量,从而自然地实现对每个音素的不同语调特征进行采样。这使得模型能够更细致地捕捉语音的不同风格特征。
-
目标语音的全局和局部风格特征: 一些方法利用目标语音的全局语句级别和本地准音素级别的风格特征。这有助于更全面地考虑和捕捉目标语音的风格,但可能存在一些局限性,例如在捕捉差异化的风格特征方面的局限性,以及在同时反映正确的说话人身份、情感和语调范围方面的局限性。
改进模型在处理自定义语音时的泛化能力的研究路径。主要有两个方法:
-
数据驱动方法: 该方法通过在包含各种语音的更大数据集上进行预训练,以扩展数据分布,从而提高TTS(文本到语音)模型的鲁棒性。然而,这种数据需求较大的方法需要许多音频样本和相应的文本转录,通常成本较高,甚至有时是不可能的。
-
风格适应: 另一种方法是通过在有多样声学条件的有限适应数据上进行微调,来适应新的语音。一些工作采用元学习的方法,以适应在训练过程中未曾见过的新说话者。然而,风格适应依赖于一个强假设,即目标语音可以用于模型的适应,而这在实践中并不总是成立。因此,如何在零样本的情况下进行领域外语音合成仍然是一个待解决的问题。
有一种方法来实现更好的泛化,即通过解耦表示学习将模型分解为与领域无关和领域特定的部分。为了解决处理领域外定制语音的风格转移中的挑战,提出了一种名为GenerSpeech的通用文本到语音模型,用于实现高保真度的零样本风格转移。该模型包含一些技术,用于分别建模和控制语音中的风格不可知(语言内容)和风格特定(说话者身份、情感和韵律)的变化:
-
多层次风格适配器: 提出了多层次风格适配器,用于对定制话语进行全局和局部的风格化。具体而言,一个下游的wav2vec 2.0编码器生成全局的潜在表示,以控制说话者和情感特征。此外,三个不同的局部风格编码器对细粒度的帧、音素和词级的韵律表示进行建模,而无需显式标签。
-
通用内容适配器: 提出了混合式风格层归一化(MSLN),以有效消除语言内容表示中的风格属性,并预测与风格无关的变化,从而提高GenerSpeech的泛化性能。
简而言之,GenerSpeech通过使用解耦表示学习的方法,通过多层次的风格适配器和通用内容适配器,分别处理语音的风格不可知和风格特定的变化,以实现零样本的领域外语音风格转移。
关于Generspeech
GenerSpeech的整体架构基于非自回归TTS模型FastSpeech 2。为了实现更好的泛化,作者采用了一种直观的方法,即通过解耦表示学习将模型分解为领域无关和领域特定的部分。这种方法的目标是分别处理语音中的风格不可知和风格特定的变化,以提高模型在不同场景下的适应能力。
用以提高模型的泛化性能:
-
混合风格层归一化(MSLN): 为了提升模型的泛化能力,提出了混合风格层归一化(MSLN),用于消除语言内容表示中的风格信息。这一技术的目的是通过调整语言内容的表示,使得模型在不同的风格情境下都能更好地泛化。
-
多层次风格适配器: 为了增强对风格属性的建模和转移,引入了一个多层次风格适配器,包括一个用于说话者和情感特征嵌入的全局编码器,以及三个不同的本地编码器(帧、音素和词级别),用于建模韵律风格表示。这样的多层次结构允许模型更好地捕捉语音中的全局和局部的风格特征。
-
基于流的后处理网络: 为了重建这些富有表现力的语音样本中的细节,引入了一个基于流的后处理网络,用于优化变换解码器的输出并生成精细的梅尔频谱图。这个后处理网络采用了流式建模的方法,可以更好地处理语音中的细微特征,提高合成语音的质量。
综合来看,这些技术创新旨在解决语音合成中的泛化性能问题。MSLN用于消除风格信息,多层次风格适配器用于更好地捕捉全局和局部的风格特征,而基于流的后处理网络则有助于在生成语音时保留细节和提高合成质量。这些技术共同构成GenerSpeech模型的关键组成部分。
GenerSpeech 的架构
在子图(b)中,我们使用w和̃w来表示shuffle操作的输入和输出。在子图©和(d)中,我们使用类正弦符号来表示位置编码。
LR:长度调节器,LN:层标准化,SAP:与风格无关的音高,SSP:与风格相关的音高。在子图(e)中,除了帧级样式编码器之外,还包括用虚线表示的操作。
Mix-Style Layer Normalization:消除语音序列中的风格信息,并预测与风格无关的韵律变化。
Mix-Style Layer Normalization
之前的工作发现,层归一化可以通过轻量级可学习尺度向量 γ 和偏差向量 β 极大地影响隐藏激活和最终预测。
其中 μ 和 σ 是隐藏向量 x 的均值和方差。
进一步提出了说话人自适应的条件层归一化 :
这里两个简单的线性层 Eγ 和 Eδ 以样式嵌入 w 作为输入,分别输出尺度向量和偏置向量:
源域和目标域之间的自定义差异通常会阻碍学习的文本到语音模型的泛化能力。为了解耦风格信息并学习风格不可知的表示,一个直接的解决方案是在基于不匹配风格信息的条件下优化序列,这可以被视为向模型注入噪声,以混淆模型并防止其生成一致风格的表示。借鉴了最近在领域泛化方面的进展,在这项工作中,设计了Mix-Style Layer Normalization来通过扰动训练样本中的风格信息来规范TTS模型的训练:
其中 w 表示风格向量,̃ w 可以通过 ̃ w = Shuffle(w) 简单获得。其中 λ ∈ RB 是从 Beta 分布中采样的,B 表示批量大小。 λ ∼ Beta(α, α) 其中 α ∈ (0, ∞) 是原始风格和随机播放之间的权衡,我们在本文中设置 α = 0.2。最后,可推广的与风格无关的隐藏表示变成:
因此,该模型细化了通过扰动风格正则化的输入特征。为了进一步确保多样性并避免过度拟合,通过将shuffle向量与从 Beta 分布中采样的shuffle率 λ 随机混合来扰乱风格信息。
Multi-level Style adaptor
用于全局和局部样式化的多级样式适配器
Global Representation
作者使用可推广的 wav2vec 2.0 模型 来捕获全局风格特征,包括说话者和情感声学条件。 Wav2vec 2.0是最近提出的一种用于语音表示学习的自监督框架,它遵循预训练和微调的两阶段训练过程,并已被证明其在学习判别性嵌入方面的效率。在实践中,在 wav2vec 2.0 编码器的顶部添加了平均池化层和全连接层,这允许在说话人和情绪分类任务上微调模型。采用 AM-softmax 标准作为下游分类的损失函数。
Local Representation
为了捕捉细粒度的韵律细节,考虑框架、音素和单词级三个不同的声学条件。这些多级风格编码器共享一个共同的架构:首先,输入序列通过多个卷积层进行细化。或者,对精炼系列进行池化操作以实现不同级别的风格化。实际上,池化操作根据输入边界对每个表示内的隐藏状态进行平均。随后,精炼后的序列将作为瓶颈输入到矢量量化中,以有效消除非韵律信息。将这三级韵律条件描述如下:
-
框架级: 为了捕捉框架级的潜在表示(Sp),去除了本地风格编码器中的可选池化层。这表示模型在框架级别上能够处理语音中的韵律特征,而不采用额外的池化操作。
-
音素级: 由于音素之间的风格模式可能非常动态,特别是考虑到音高和重音的变化,为了捕捉音素级的潜在表示(Sp),将音素边界作为额外的输入,应用了池化操作在精炼的序列上,然后将其输入到矢量量化层。
-
单词级: 类似于音素级的处理,每个单词上的声学条件(例如音高和重音)可能高度可变。为了捕捉单词级的潜在表示(Sw),将单词边界作为额外的输入,对序列进行池化以进一步精炼。
Vector Quantization
-
离散潜在空间: 在Vector Quantization块中,定义了一个潜在嵌入空间 e ∈ RK×D,其中 K 是离散潜在空间的大小(即 K 分类),而 D 是每个潜在嵌入向量 ei 的维度。这里有 K 个嵌入向量 ei ∈ RD,其中 i ∈ 1, 2, …, K。
-
信息瓶颈设计: 为了确保表示序列与一个嵌入向量相关联并且其输出不会增长,采用了一个称为"commitment loss"的损失,这是根据先前的工作[45]定义的。这个损失的目的是迫使模型在潜在空间中进行选择,从而确保输出序列不会过于分散,而是专注于一个嵌入。
Vector Quantization块通过在离散潜在空间中进行向量量化,通过一个经过精心设计的信息瓶颈,确保模型生成的表示序列能够有效地捕捉和保留有关韵律信息的关键特征。这个过程有助于模型更好地处理语音中的风格信息,同时减少非风格信息的影响。
Style-To-Content Alignment Layer
为了使变长的本地风格表示(即 Su、Sp 和 Sw)与音韵表示 Hc 对齐,引入了Style-To-Content Alignment Layer(风格到内容对齐层)来学习两种模态之间的对齐关系。这个对齐层采用了流行的缩放点积注意力(Scaled Dot-Product Attention)作为注意力模块。:
-
对齐层介绍: 为了学习风格和内容之间的对齐关系,引入了Style-To-Content Alignment Layer。这一层的目标是将变长的本地风格表示(Su、Sp 和 Sw)与音韵表示 Hc 对齐。
-
注意力模块: 采用了缩放点积注意力作为注意力模块,其中在帧级别风格编码器中,Hc 被用作查询(query),而 Su 同时被用作键(key)和值(value)。在注意力模块之前,对风格表示添加了位置编码嵌入。
-
残差连接和丢失层: 为了有效训练,采用了残差连接,将 Hc 添加到风格表示之前。为了防止对齐表示直接复制自语言内容表示,使用了较大的丢失率的丢失层。
-
多次堆叠对齐层: 为了提高性能,对齐层被多次堆叠,逐渐对查询值(即语言内容表示)进行风格化。
-
最终的利用: 最后,使用音高预测器生成风格特定的韵律变化。
这个过程的目标是通过对齐层学习风格和内容之间的关联,确保模型在生成语音时能够将风格和语音内容有效地结合起来,特别是在引入了对齐层的多次堆叠和渐进风格化的情况下。
Flow-based Post-Net
引入了一个基于流的后处理网络,用于改进mel-spectrogram解码器的粗糙输出。
由于表现力丰富的自定义语音通常包含丰富且高动态范围的变化,而广泛应用的Transformer解码器难以生成如此详细的mel-spectrogram样本。
-
流式后处理网络: 为了进一步提高合成mel-spectrogram的质量和相似性,引入了一个基于流的后处理网络。该网络的结构遵循Glow家族的设计,其条件是一个粗粒度的频谱图和mel解码器的输入。
-
训练过程: 在训练期间,流后处理网络将合成的mel-spectrogram转换为高斯先验分布,并计算数据的确切对数似然。这有助于确保生成的mel-spectrogram与目标分布的匹配程度。
-
推断过程: 在推断过程中,从先验分布中采样潜在变量,并将它们逆向传递到后处理网络,以生成富有表现力的mel-spectrogram。
通过引入流式后处理网络,GenerSpeech旨在提高合成语音的质量和相似性,尤其是对于那些富有表现力的自定义语音。该方法通过在训练过程中优化模型参数,以更好地匹配目标分布,从而实现更高质量的语音生成。
项目已开源:https://github.com/Rongjiehuang/GenerSpeech