前文讲到OpenVoicev2,补充下细节,然后梳理使用的基础模型VITS:

📓

melo-tts 生成原始音频:

  • OpenVoice 版本1不依赖melo-tts, 升级后的V2版本依赖melo-tts, 主要是生成原始音频质量加强了(由melo-tts生成);
  • 默认配置使用了TransformerCouplingBlock list作为flow 和 reverse flow, 而第一版的OpenVoice 模型使用的 ResidualCouplingBlock ;
  • melo-tts的模型权重支持多语言,更具语言区分,比如 ZH: myshell-ai/MeloTTS-Chinese, EN_NEWEST: myshell-ai/MeloTTS-English-v3;

音色转换生成目标音频:

  • 通过训练好的音色抽取器抽取目标说话者的音色 (myshell-ai/OpenVoiceV2/converter);
  • 生成的原始音频信息通过 训练抽取好的基础说话者的音色(myshell-ai/OpenVoiceV2/base_speakers/ses),将原始音频中的音色去除 (flow);
  • 将去除原始音色的音频 和 抽取好的目标说话者的音色 合并 (reverse flow); 最终通过 vocoder(也是论文中的Decoder,使用的 HiFi-Gan模型)合成目标音频。

额外注意的是,由melo-tts生成原始音频sample rate是 44100, 而通过音色提取器 提取 并且 生成目标音频sample rate是 22050

前提知识这里简单概括如下:

AE(Autoencoder): 自编码器是自监督系统,其训练目标是通过降维来压缩(或编码)输入数据,然后使用该压缩后的表示准确重建(或解码)其原始输入。无泛化生成能力,但是可以执行特定任务:常用于数据压缩、图像去噪、异常检测和面部识别等任务。

VAE(Variational Autoencoder) :与其他自编码器(Autoencoder(AE)的区别在于它们对潜在空间进行编码的独特方式,以及可以应用其概率编码的不同用例,即随机生成训练数据的变体。具有泛化生成能力。

CVAE(Conditional Variational Autoencoder): 条件变分自编码器 可以以特定输入为条件进行输出,而不仅仅是随机生成训练数据的变体。这是通过将监督学习(或半监督学习)的元素与常规自编码器的传统无监督训练目标相结合来实现的。具有指定特征的泛化能力。

  • VAE 与 GAN的区别:

    VAE 经常与生成式对抗网络 (GAN) 进行比较,GAN 是另一种模型架构,用于生成类似于训练数据的样本,尤其是图像。

    与 VAE 类似,GAN 是结合两种神经网络的联合架构:一个生成器网络,负责输出与训练数据集中的图像相似的图像样本,另一个判别器网络,负责确定特定图像是训练数据中的“真实”图像还是来自生成器网络的“虚假”图像。

    这两个网络在零和博弈中进行对抗性训练:来自判别器的反馈用于改进生成器的输出,直到判别器不再能够区分真假样本。

    就图像合成而言,两者各有优劣:

    • GAN 可以生成更清晰的图像,但由于两种复合模型之间的对抗性权衡,在训练中并不稳定。
    • VAE 更容易训练,但由于其根据训练数据的“平均”特征生成图像的性质,往往会生成比较模糊的图像。
  • VAE-GAN 两者结合 顾名思义,VAE-GAN 是变分自编码器 (VAE) 和生成式对抗网络 (GAN) 的混合体。通过用判别器网络替换 VAE 模型的重建损失项,来降低 VAE 生成图像的模糊性,提高生成质量。

VITS 使用了 条件变分自编码器 (Conditional Variational Autoencoder (CVAE)) 和生成式对抗网络 (Generative adversarial network(GAN)) 两个模型架构。 至于VAE和GAN的细节可以关注下baby-llm这个学习项目中的对应模块PR学习资料:

这篇文章是讲解VITS,是现在工业上TTS常用的基础方案(NAR模型,成本相对AR模型低, 推理快,生成质量尽可能追平或超越SOTA AR模型)。作者来自韩国现代汽车公司的 AIR 实验室(人工智能研究实验室),论文结合了以前的研究成果:

后续作者还研究了加入扩散模型来生成语音,不需要使用分类器指导的目标说话者的任何转录。

Guided-TTS 将无条件扩散概率模型(unconditional Diffusion Model)与单独训练的音素分类器(phoneme classifier )相结合,用于分类器指导。无条件扩散模型学习在没有任何上下文的情况下从未转录的语音数据中生成语音。对于 TTS 合成,使用在大规模语音识别数据集上训练的音素分类器来指导扩散模型的生成过程。

VITS

主要贡献:

  • 提出了一种并行的端到端 TTS 方法,它可以生成比当前两阶段模型更自然的音频;
  • 采用通过归一化流程和对抗性训练过程增强的变分推理,提高了生成模型的表达能力;
  • 一个随机持续时间预测器(stochastic duration predictor)来从输入文本中合成具有不同节奏的语音;
  • 通过对潜在变量的不确定性建模和随机持续时间预测器,表达了自然的一对多关系,其中文本输入可以以不同的音调(pitches)和节奏(rhythms)以多种方式说出。

通过利用条件变分自编码器 CVAE,模型特点:

  1. 学习直接从文本合成原始波形,而不需要额外的输入条件;
  2. 使用动态编程方法 MAS 来搜索最佳对齐方式,而不是与计算损失相比,不需要任何外部对齐器;
  3. 并行生成样本;
  4. 高效的端到端训练方法, 并且生成质量优于最好的公开可用的两阶段模型。附两阶段的数据处理过程(在后续的研究论文中称之为级联方法(cascaded),见VALL-E系列论文研究):
    • 第一阶段是从预处理的文本中生成中间语音表示,例如梅尔谱图(mel-spectrograms)或语言特征(linguistic features)
    • 第二阶段是生成以中间表示为条件的原始波形。
    • 两阶段的相关模型大都是独立开发的。

结构:

VITS

PS: achatbot 集成了OpenVoiceV2 with meloTTS(meloTTS代码大部分来自VITS,Flow 采用 Transformer Encoder 结构来自 VITS2: Improving Quality and Efficiency of Single-Stage Text-to-Speech with Adversarial Learning and Architecture Design | paper code

PR地址: https://github.com/ai-bot-pro/achatbot/pull/103

CVAE:

条件 VAE: 传统“原始” VAE 的一个缺点是用户无法控制自动编码器生成的特定输出。例如,使用前面提到的 MNIST 数据集训练的传统 VAE,可以生成从 0 到 9 的手写数字新样本,但不能局限于仅输出 4 和 7。

顾名思义,条件 VAE (CVAE) 可以以特定输入为条件进行输出,而不仅仅是随机生成训练数据的变体。这是通过将监督学习(或半监督学习)的元素与常规自编码器的传统无监督训练目标相结合来实现的。

通过在特定变量的标记示例上进一步训练模型,这些变量可用于调节解码器的输出。例如,CVAE 可首先在面部图像的大数据集上进行训练,然后使用监督学习进行训练,学习“胡须”的潜在编码,从而输出新的有胡须面部的图像。

Posterior Encoder:

WaveNet residual block由具有门控激活单元和跳跃连接的扩张卷积层组成(LSTM+CNN)。块上方的线性投影层产生正态后验分布的均值μ和方差δ。对于多说话人的情况,我们在残差块中使用全局调节(global conditioning)来添加说话人嵌入。

Prior Encoder:

为了提高先验分布的表示能力,我们将归一化流添加到条件先验网络中,从而生成更真实的样本。

Flow (The Normalizing Flow):

  • 2015. Variational Inference with Normalizing Flows 通过标准化流增强先验和后验分布的表达能力来提高 VAE 性能
  • 来自 2018. FloWaveNet : A Generative Flow for Raw Audio | paper code FloWaveNet,这是一种基于流的方法,是原始音频合成的实时并行生成模型的替代方案。 FloWaveNet只需要单个最大似然损失,不需要任何辅助损失项,同时保持训练的稳定性。它具有简化的单阶段训练方案,因为它不需要教师网络并且可以进行端到端训练。该模型本质上是并行的,因为基于流的生成可以实现实时波形合成。 FloWaveNet 可以作为 WaveNet 声码器的直接替代品,后者用于各种文本转语音架构。除了上述所有优点之外,FloWaveNet 样本的质量和保真度与两阶段模型相当。

FlowWaveNet

  • 来自 2020. Glow-TTS: A Generative Flow for Text-to-Speech via Monotonic Alignment Search Glow-TTS: 一种基于流(FloWaveNet)的并行 TTS 生成模型,不需要任何外部对齐器(FastSpeech 和 ParaNet 之类的文本转语音 (TTS) 模型来并行地从文本生成梅尔频谱图。但如果没有自回归 TTS 模型作为外部对齐器的指导,并行 TTS 模型就无法进行训练)。通过结合流和动态规划的特性,所提出的模型搜索文本和语音的潜在表示之间最可能的单调对齐。我们证明,强制执行硬单调对齐可以实现稳健的 TTS,从而泛化到长话语,并且采用生成流可以实现快速、多样化且可控的语音合成。

GlowTTS

Stochastic Duration Predictor:

生成类似人类的语音节奏,其样本遵循给定音素的持续时间分布;

随机持续时间预测器是基于流的生成模型,通常通过最大似然估计进行训练。然而,最大似然估计的直接应用很困难,因为每个输入音素的持续时间是 1) 一个离散整数,需要对其进行反量化以使用连续归一化流;2) 一个标量,因为可逆性,这会阻止高维变换。应用变分反量化Flow++: Improving flow-based generative models with variational dequantization and architecture design和变分数据增强VFlow: More Expressive Generative Flows with Variational Data Augmentation来解决这些问题。

  • 基于duration predictor 来自2019. FastSpeech: Fast, Robust and Controllable Text to Speech,用于Length Regulator模块中。
    • Length Regulator 解决前馈变换器中音素和频谱图序列长度不匹配的问题,以及控制语音速度和部分韵律。音素序列的长度通常小于其梅尔谱图序列的长度,并且每个音素对应于多个梅尔谱图。我们将与音素相对应的梅尔谱图的长度称为音素持续时间。
    • duration predictor 持续时间预测器由一个带有 ReLU 激活的 2 层 1D 卷积网络组成,每个网络后面都有归一化层和 dropout 层,以及一个额外的线性层来输出标量,这正是预测音素持续时间。

FastSpeech

  • 后续对FastSpeech的改进2020. FastSpeech 2: Fast and High-Quality End-to-End Text to Speech 其中FastSpeech 2s 是第一次完全并行地从音素序列直接生成波形的尝试,而不是语言特征或梅尔谱图,端到端的生成,直接从文本生成波形,无需级联梅尔频谱图生成(声学模型)和波形生成(声码器);通常标准的非自回归声码器,转换时间对齐的语言特征到波形,并且需要单独的语言模型将输入文本转换为语言特征或声学模型将输入文本转换为声学特征(例如,梅尔谱图mel-spectrograms)

FastSpeech2s

Decoder (HiFi-Gan Generator):

由一堆转置卷积组成,每个转置卷积后跟一个多感受野融合模块(MRF)。 MRF的输出是具有不同感受野大小的残差块的输出之和。对于多说话人设置,我们添加一个线性层来转换说话人嵌入并将其添加到输入潜在变量z中

HiFi-Gan Generator(Decoder)

HiFi-Gan Generator

Discriminator(HiFi-Gan Multi-Period Discriminator)

遵循 HiFi-GAN 中提出的多周期鉴别器的鉴别器架构。多周期鉴别器是基于多个MelGAN马尔可夫窗口的子鉴别器(其来自Image-to-Image Translation with Conditional Adversarial Networks中的Markovian discriminator (PatchGAN),由一系列具有大内核的跨步卷积层组成。我们利用分组卷积来允许使用更大的内核大小,同时保持较小的参数数量。),每个子鉴别器都对输入波形的不同周期模式进行操作。

HiFi-GAN MPD


IPA(International Phonetic Alphabet)