EmoSpeech: Guiding FastSpeech2 Towards Emotional Text to Speech

原文地址:EmoSpeech: Guiding FastSpeech2 Towards Emotional Text to Speech

概述

以 FastSpeech2 为代表的基于 Transformers 的 TTS 模型虽然在合成效果上不及最新的基于 Diffusion 的模型(例如 NaturalSpeech2),但在推理速度方面表现优异。在评估语音质量时,TTS 模型必须考虑到简单文本输入中缺失的诸多因素,例如:韵律、重音、节奏、语调以及情感。本文探讨了如何采用 FastSpeech2 进行情感语音合成(Emotional Text-To-Speech, ETTS),并在后续工作中对文本序列中情感分布不均匀的问题进行了分析。本文的主要贡献如下:

  • 提出了对 FastSpeech2 模型架构的扩展,引入了若干已知的和新的模块,使其能够合成特定情感的语音。
  • 所提出的模型在 MOS 和情感识别准确性方面优于现有的 FastSpeech2 扩展实现,且不会带来推理速度延迟。
  • 提出了一种调节机制,可以考虑语音语调与序列中每个标记所承载的情感强度之间的关系。

在相关的工作中,ETTS 方法可以根据其条件数据的性质被广泛地分为三个不同的类别:

  1. 用于表示一个或多个情感的分类标签。
  2. 具有所需情感状态的参考语音。
  3. 文本描述目标情感状态。

本工作采用第一种方法。

模型

FastSpeech2

FastSpeech2 是一种用于快速高质量语音合成的非自回归声学模型。该模型以一系列 token 作为输入,生成梅尔频谱图。随后通过声码器(Vocoder)将其采样为波形。FastSpeech2 的关键组件包括 Encoder, Variance Adaptor, Mel-Decoder。编码器从文本信息中提取关于“即将说什么”的特征,Variance Adaptor 将声学信息和持续时间信息添加到输入序列中,解码器从这些信息中生成梅尔频谱图。

更多关于 FastSpeech2 的信息,请浏览本博客文章:FastSpeech2 论文笔记

Conditioning Embedding 条件嵌入

使用嵌入查找表从 FastSpeech2 中构建 EmoSpeech,用于对说话者和情感进行条件设置。通过将说话者和情感嵌入连接来生成条件向量c。连接操作使我们能从查找表的15个嵌入中构建出50个独特的嵌入,用于进一步的条件设置。在编码器输出之后至 Variance Adaptor 之前,将条件向量 c 与隐藏序列相加。

eGeMAPS 预测器

根据 FastSpeech2 的设计,它的 Variance Adaptor 可以通过添加额外的预测器(Predictor)进行扩展。在 EmoSpeech中,我们将 eGeMAPS 预测器(EMP)添加到 Variance Adaptor 中,该预测器从扩展的 Geneva Minimalistic Acoustic Parameter Set 中预测出 k 个特征。总体上,eGeMAPS 包含 88 个特征,EmoSpeech 只从 eGeMAPS 集合中选择了两个特征进行预测:对数 F0F_0 的第 80 和第 50 位百分数。EMP 的理念是为话语添加更多与目标情感高度相关的低级语音描述符的信息。 EMP 与音高和能量预测器具有相同的架构,然而,与音高和能量预测器不同,eGeMAPS 预测器在 utterance 级别而非 token 级别上运行。

Conditional Layer Norm 条件层归一化

在应用条件层归一化(CLN)实现零样本语音合成的 AdaSpeech4 取得早期成功后,我们将 CLN 应用于情感语音合成。在 EmoSpeech 的编码器和解码器模块中,将传统的层归一化替换为 CLN 是有益的。

CLN: Conditional Layer Norm 条件曾归一化。CLN 旨在扩展 LayerNorm,但在计算尺度和偏置时加入了说话人嵌入的条件。具体而言,CLN的形式为:

y=f(c)xmeanvar+f(c)y=f(c)\cdot \frac{x-mean}{var}+f(c)

其中,ff 是一个线性层,xx 是一个归一化隐藏层,cc 是一个条件嵌入。

Conditional Cross Attention 条件交叉注意力

表达情感语音的特点之一是富有表现力的语调。在特定情感的语音中,有时说话者会强调句子的某些部分,使情感变得可辨。相比之下,句子的其他部分听起来更加中性。在情感语音合成中,传统方法是对每个文本标记添加相同权重的情感嵌入。本工作引入了条件交叉注意力(CCA)模块到编码器和解码器中,旨在根据特定的情感对标记进行重新加权。具体而言,我们在编码器和解码器中添加CCA,使每个 Transformer 模块由自注意力、条件交叉注意力和前馈网络组成。

EmoSpeech 将说话人和情感嵌入连接,记这个条件向量为 c,并将自注意力输出表示为 hR n×hidh\in R^{\ n\times hid} 。CCA 利用自注意力层的 WqW_qWkW_kWvW_v 矩阵,并形成:Q=WqhQ=W_q \cdot hK=WkcK=W_k\cdot cV=WvcV=W_v\cdot c,随后对隐藏层重新加权:

w=softmax(QKTd,dim=1)cca=wVw=softmax(\frac{Q\cdot K^T}{\sqrt d},dim=1)\\ cca = w\cdot V

这个操作可以被看作是为每个层添加一个独特的情感标记,类似于多头自注意力机制。我们在条件交叉注意力中添加了多头逻辑。注意,CCA 是对条件嵌入c在序列长度维度上进行扩展并于编码器输出进行加法的替代。因此,在修改后的 EmoSpeech 中不再进行这个加法。

对抗训练

尽管上述办法能改进合成语音质量,但在将 FastSpeech2 推广到多说话人的情况时,仍有可能出现质量下降的情况。为了提高语音的质量,我们采用了与 GANSpeech 中相同的技术,将对抗训练应用到 EmoSpeech。与 GANSpeech 不同的是,我们在单个训练阶段中训练了鉴别器和 EmoSpeech。对于条件鉴别器,使用相同的条件嵌入c,它连接了说话人和情感嵌入。

GANSpeech: arXiv

Recent advances in neural multi-speaker text-to-speech (TTS) models have enabled the generation of reasonably good speech quality with a single model and made it possible to synthesize the speech of a speaker with limited training data. Fine-tuning to the target speaker data with the multi-speaker model can achieve better quality, however, there still exists a gap compared to the real speech sample and the model depends on the speaker. In this work, we propose GANSpeech, which is a high-fidelity multi-speaker TTS model that adopts the adversarial training method to a non-autoregressive multi-speaker TTS model. In addition, we propose simple but efficient automatic scaling methods for feature matching loss used in adversarial training. In the subjective listening tests, GANSpeech significantly outperformed the baseline multi-speaker FastSpeech and FastSpeech2 models, and showed a better MOS score than the speaker-specific fine-tuned FastSpeech2.