VITS(Conditional Variational Autoencoder with Adversarial Learning)论文解读及实现(一)

  • 此篇为VITS论文解读第一部份
    论文地址Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech
  • 模型使用了VAE,GAN,FLOW以及transorflomer(文本处理有用到),即除了未diffusion模型,将生成式模型都融入进来了,是一篇集大成的文章。涉及的知识点和公式也比较多(好在都是常用的公式)
  • 模型结构及术语
    ①后验编码器posterior encoder p ( z ∣ x ) p(z|x) p(zx)
    a.解释:在给定语音波形时,生成隐变量z的模型,
    b. 输入是语音,
    c. 输出是隐变量
    ②先验编码器prior encoder p ( z ∣ c t e x t , a ) p(z|c_{text},a) p(zctext,a)
    a. 解释:给定文本和文本语音对齐矩阵A时,生成隐变量z的模型
    b. 输入是文本和对齐矩阵A,
    c. 输出是隐变量z
    ③解码器decoder p ( x ∣ z ) p(x|z) p(xz),
    a. 解释:解码器是给定隐变量z时,生成音频波形x的模型,
    b. 输入是隐变量
    c. 输出是音频波形
    ④判别器discriminator D
    a. 解释:判断一个音频波形数据是解码器生成的还是真时存在的
    b. 输入音频波形,判断是真实音频还是模型生成的音频
    c. 输出0~1的值
    ⑤随机时长预测 stochastic duration predictor
    预测一个文本对应的波形时长(同一个人在一句话中同一个字的时长也是不同的,因此使用随机时长预测模型)

(备注,上面的音频波形都转换为mel线性谱使用,书写只是方便理解)

0 Abstract

In this work, we present a parallel endto-end TTS method that generates more natural sounding audio than current two-stage models. Our method adopts variational inference augmented with normalizing flows and an adversarial training process, which improves the expressive power of generative modeling. We also propose a stochastic duration predictor to synthesize speech with diverse rhythms from input text. With the uncertainty modeling over latent variables and the stochastic duration predictor, our method expresses the natural one-to-many relationship in which a text input can be spoken in multiple ways with different pitches and rhythms.

在这项工作中,我们提出了一种并行的端到端TTS方法,该方法比当前的两阶段模型产生更自然的声音。该方法采用normalizing flows(glow)增强的变分推理和对抗训练过程,提高了生成建模的表达能力。我们还提出了一个随机持续时间预测器,用于从输入文本合成具有不同节奏的语音。通过对潜在变量的不确定性建模和随机持续时间预测,我们的方法表达了一种自然的一对多关系,在这种关系中,文本输入可以以多个形式出现

1. Introduction

  • Text-to-speech (TTS)通常被简化为两阶段模型,
    第一阶段是从文本生成语音的中间表征,如mel谱或者语音特征
    第二阶段是根据中间表征生成波形图

  • 我们提出了一种并行的端到端TTS方法
    ①Using a variational autoencoder (VAE) (Kingma & Welling, 2014), we connect two modules of TTS systems through latent variables to enable efficient end-to-end learning
    使用VAE,我们通过隐变量连接TTS系统的两个模块,实现高效的端到端学习
    ②we apply normalizing flows to our conditional prior distribution and adversarial training on the waveform domain
    我们将normalizing flow应用于我们的条件先验分布和波形域上的对抗训练。
    ③ we also propose a stochastic duration predictor to synthesize speech with diverse rhythms from input text.

我们还提出了一个随机持续时间预测器,用于从输入文本合成具有不同节奏的语音。

2 Method

  • The proposed method is mostly described in the first three subsections:
    ①conditional VAE formulation;
    ②alignment estimation derived from variational inference; adversarial ③training for improving synthesis quality
  • 所提出的方法主要在前三个小节中进行描述:
    ①条件VAE公式;
    ②基于变分推理的对齐估计;
    ③提高合成质量的对抗性训练

在这里插入图片描述

2.1 Variational Inference

2.1.1 OVERVIEW

  • VITS can be expressed as a conditional VAE with the objective of maximizing the variational lower bound, also called the evidence lower bound (ELBO), of the intractable marginal log-likelihood of data l o g p θ ( x ∣ c ) log p_\theta (x|c) logpθ(xc)
    VITS可以表示为一个条件VAE,其目标是最大化 l o g p θ ( x ∣ c ) log p_\theta (x|c) logpθ(xc)的变分下界,也称为证据下界(ELBO)
    变分公式:
    l o g p θ ( x ∣ c ) > = ∑ q ϕ ( z ∣ x ) [ l o g p θ ( x ∣ z ) − l o g q ϕ ( z ∣ x ) p θ ( z ∣ c ) ] logp_\theta (x|c)>= \sum q_\phi (z|x)[logp_\theta (x|z)-log\frac{q_\phi(z|x)}{p_\theta (z|c)}] logpθ(xc)>=qϕ(zx)[logpθ(xz)logpθ(zc)qϕ(zx)]
    等式后面可以展开为两项:
    l o g p θ ( x ∣ c ) > = ∑ q ϕ ( z ∣ x ) l o g p θ ( x ∣ z ) − ∑ q ϕ ( z ∣ x ) l o g q ϕ ( z ∣ x ) p θ ( z ∣ c ) logp_\theta (x|c)>= \sum q_\phi (z|x)logp_\theta (x|z)- \sum q_\phi (z|x)log\frac{q_\phi(z|x)}{p_\theta (z|c)} logpθ(xc)>=qϕ(zx)logpθ(xz)qϕ(zx)logpθ(zc)qϕ(zx)

上式中第一项即为ELBO,第二项为KL散度

pθ(z|c) 是给定条件c 情况下,因变量z的先验分布
pθ(x|z) 是数据x的似然函数, (及解码器)
qφ(z|x) 是后验分布
训练损失是-ELBO, 及重构损失 − log pθ(x|z)

2.1.2. RECONSTRUCTION LOSS

  • 重构loss,使用梅尔谱图,而不是原始波形
  • 我们通过解码器将隐变量z上采样到波形y,并将y变换到频谱域x_mel。然后将预测与目标mel谱图之间的L1 loss作为重建loss:
    L r e c o n = ∣ ∣ ∣ x m e l − x ^ m e l ∣ ∣ 1 L_{recon}=|||x_{mel} - \hat x_{mel}||_1 Lrecon=∣∣∣xmelx^mel1
  • 使用mel图谱作为损失的原因
    1 能改善感知质量,因为mel图谱更能代表人的听觉系统
    2 mel图片来自音频,因此不需要训练,只需要STFT和一个线性变换
    3 只在训练阶段使用,对推理没有影响

2.1.3. KL-DIVERGENCE

  • 条件c (由两部分组成ctext和A)
    1 文本条件ctext
    2 文本波形对齐矩阵A
  • 为了提高后验编码器能力,使用线性mel谱代替之前的mel谱
  • 则KL 散度如下
    在这里插入图片描述
  • normalizing flow引入
    发现增加后验分布的表现能力对真实样本对生成非常重要,引入flow ,使简单的分布变成更复杂的分布,
    即对正太分布采样的z,先过一个normalizing flow,生成 f θ ( z ) f_\theta (z) fθ(z),再正太分布生成 p θ ( z ∣ c ) p_\theta (z|c) pθ(zc)
    在这里插入图片描述

2.2. Alignment Estimation

2.2.1. MONOTONIC ALIGNMENT SEARCH

使用Monotonic Alignment Search方法,估计文本和目标语音的对齐矩阵A,

一个方法通过normalizing flow 最大化数据似然,算法感兴趣可以参考Monotonic Alignment Search论文

在这里插入图片描述
因为是优化ELBO,而不是直接优化p(x),因此对上述等式(5)进行变换,只提出和A有关的一项,得到下式(6)
在这里插入图片描述

2.2.2. DURATION PREDICTION FROM TEXT

文本持续时间预测

  • 通过文本语音对齐矩阵,将语音求和 ∑ j A i j \sum_j A_{ij} jAij可以得到文本的持续时间,然后训练一个持续时间预测模型
    缺点:不能表现一个人同一时刻的不同语速,(即统一因素时长都是同一个值)

  • 我们设计了一个随机时长预测模型,该模型基于flow ,目标是最大化似然,

  • 因为每个因素的输入都是1,有以下2个问题
    ①是一个离散的整数,需要被量化后才能输入连续的 normalizing flows,
    ②是一个标量,阻止了高维变换,

  • 我们使用了variational dequantization和 variational data augmentation两种方法,
    ①我们引入两个随机变量u和ν,它们与持续时间序列d具有相同的时间分辨率和维度,分别用于variational dequatization 和 variational data augmentation,
    ②限制u的取值范围为 [0, 1),那么d-u就为正数,
    ③我们将ν和d通道连接起来,以获得更高维度的潜在表示。
    ④然后从后验分布 q ϕ ( u , v ∣ d , c t e x t ) q_\phi (u,v|d,ctext) qϕ(u,vd,ctext)中采样u,v,,目标是音素持续时间的对数似然的变分下界:
    ⑤loss为负变分下界

在这里插入图片描述

2.3. Adversarial Training

我们添加了一个判别器D来识别解码器G产生的输出和真实波形y
对抗损失和其他gan区别不大

在这里插入图片描述

2.4. Final Loss

结合VAE和GAN的训练,整体的VAE损失可以表示如下
在这里插入图片描述

2.5. Model Architecture

  • 该模型的整体架构由下面5部份组成。其中后验编码器 p ( z ∣ x ) p(z|x) p(zx)和判别器D只用于训练,不用于推理。
    ①posterior encoder p ( z ∣ x ) p(z|x) p(zx)
    ②prior encoder p ( z ∣ c t e x t , a ) p(z|c_{text},a) p(zctext,a)
    ③decoder p ( x ∣ z ) p(x|z) p(xz),
    ④discriminator D
    ⑤ stochastic duration predictor

2.5.1. POSTERIOR ENCODER

  • For the posterior encoder, we use the non-causal WaveNet residual blocks used in WaveGlow
    对于后验编码器,我们使用WaveGlow中使用的非因果WaveNet残差块
  • A WaveNet residual block consists of layers of dilated convolutions with a gated activation unit and skip connection. The linear projection layer above the blocks produces the mean and variance of the normal posterior distribution. For the multi-speaker case, we use global conditioning in residual blocks to add speaker embedding.
    WaveNet残差块由带有门控激活单元和跳跃连接的膨胀卷积层组成。block层上方的线性投影层产生正态后验分布的均值和方差。对于多说话人的情况,我们在残差块中使用全局调节来添加说话人嵌入

2.5.2. PRIOR ENCODER

  • encode 组成:
    The prior encoder consists of a text encoder that processes the input phonemes ctext and a normalizing flow fθ that improves the flexibility of the prior distribution
    先验编码器由处理输入音素文本的文本编码器和提高先验分布灵活性的规范化流fθ组成
  • 文本编码器:
    The text encoder is a transformer encoder that uses relative positional representation
    文本编码器是使用相对位置表示的转换器编码器
  • 模型输出
    We can obtain the hidden representation htext from ctext through the text encoder and a linear projection layer above the text encoder that produces the mean and variance used for constructing the prior distribution.
    我们可以通过文本编码器和文本编码器上面的线性投影层从文本中获得隐藏表示htext,该层产生用于构造先验分布的均值和方差。
  • normalizing flow结构
    The normalizing flow is a stack of affine coupling layers consisting of a stack of WaveNet residual blocks. For simplicity, we design
    the normalizing flow to be a volume-preserving transformation with the Jacobian determinant of one.
    归一化流是由一堆WaveNet残差块组成的一堆仿射耦合层。为了简单,我们设计归一化流是一个雅可比行列式为1,体积不变变换。
  • 多说话人
    For the multispeaker setting, we add speaker embedding to the residual blocks in the normalizing flow through global conditioning.
    对于多说话人设置,我们通过全局调节将说话人嵌入到归一化流中的剩余块中。

2.5.3. DECODER

  • decoder结构
    The decoder is essentially the HiFi-GAN V1 generator
    解码器本质上是HiFi-GAN V1发生器
  • 结构组成:
    It is composed of a stack of transposed convolutions, each of which is followed by a multireceptive field fusion module (MRF). The output of the MRF is the sum of the output of residual blocks that have different receptive field sizes
    它由一堆转置卷积组成,每个转置卷积之后都有一个多接受场融合模块(MRF)。MRF的输出是具有不同接受野大小的剩余块的输出之和
  • 多说话人设置
    For the multi-speaker setting, we add a linear layer that transforms speaker embedding and add it to the input latent variables z.
    对于多说话人设置,我们添加了一个线性层来转换说话人嵌入并将其添加到输入潜在变量z中。

2.5.4. DISCRIMINATOR

We follow the discriminator architecture of the multi-period discriminator proposed in HiFi-GAN The multi-period discriminator is a mixture of Markovian window-based sub-discriminators , each of which operates on different periodic patterns of input waveforms.
我们借鉴HiFi-GAN中提出的多周期鉴别器的鉴别器结构,多周期鉴别器是基于马尔可夫窗的子鉴别器的混合物,每个子鉴别器对输入波形的不同周期模式起作用。

2.5.5. STOCHASTIC DURATION PREDICTOR

The stochastic duration predictor estimates the distribution of phoneme duration from a conditional input htext.
随机持续时间预测器从条件输入文本中估计音素持续时间的分布。

For the efficient parameterization of the stochastic duration predictor, we stack residual blocks with dilated and depth-separable convolutional layers. We also apply neural spline flows, which take the form of invertible nonlinear transformations by using monotonic rational-quadratic splines, to coupling layers.
为了有效地参数化随机持续时间预测器,我们用膨胀的和深度可分的卷积层叠加残差块。我们还应用neural spline flows用于耦合层,它采用单调有理-二次样条曲线的可逆非线性变换形式。

For the multi-speaker setting, we add a linear layer that transforms speaker embedding and add it to the input htext.
对于多speaker设置,我们添加了一个线性层来转换speaker嵌入并将其添加到输入文本中。

3. Experiments

文章涉及知识点和公式证明较多,自行查看相关资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/620912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

064:vue中一维数组的全选、全不选、反选(图文示例)

第061个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

DHCP中继【新华三】

理论【DHCP服务器可以对其直连的网段中的pc,分配其IP地址等服务,但是,对于跨网段进行分配IP地址,需要中间有DHCP中继进行传达,由DHCP中继指定DHCP服务器的位置,可以很好的对其跨网段分配IP地址起到指引的作…

限时福利,Adobe InCopy2024下载安装指南

Adobe InCopy 下载链接 https://pan.baidu.com/s/16j5MiXqfGw6puQbgyQnJSQ?pwd0531 #2024版本 1.鼠标右击【InCopy2024(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 InCopy2024(64bit)】。 2.打开解压后的文件夹,鼠…

Kubernetes 1.24正式发布,2022年首个大版本更新

介绍 早在 2020 年 12 月,Kubernetes 就宣布弃用 Dockershim。在 Kubernetes 中,dockershim 是一个软件 shim,它允许您将 Docker 引擎用作 Kubernetes 中的容器运行时。 这个版本包含 46 个增强功能:14 个增强功能已经升级到稳定…

【软件测试】学习笔记-设计GUI自动化测试策略

这篇文章从“实战”这个角度展开,探讨实际的大型全球化电商网站的GUI自动化测试如何开展。这场实战,从以下两个方面展开: 测试策略如何设计?这一点,我会根据亲身经历的实际项目,和你探讨GUI测试的分层测试…

Leetcode26——引出c++ vector中erase()的内部原理

erase是对数组中某个元素进行删除的操作,实际的时间复杂度为O(n) 预备知识 数组在内存中是连续存储的,删除某个位置的时候不能直接删除,只能用后序的元素覆盖 以nums数组为例,target为需要删除的目标数据 方法: ①…

codeforces (C++ Satisfying Constraints)

题目: 翻译: 思路: 1、找到最大的下限min 2、找到最小的上限max 3、则max-min1满足1、2约束条件的个数 4、max-min1减去约束条件3的个数,即为最终答案 5、如果min大于max,则结果为0,不存在满足约束条件的数…

【天龙怀旧服】攻略day7

关键字: 新星1.49、金针渡劫、10灵 1】新星(苍山破煞) 周三周六限定副本,19.00-24.00 通常刷1.49w,刷149点元佑碎金 boss选择通常为狂鬼难度,八风不动即放大不选,第二排第一个也不选&#xf…

RSIC-V“一芯”学习笔记(二)——Linux入门教程

文章目录 一、前言二、Busybox套件三、重要的追踪工具——strace四、Shell五、正则表达式六、重定向(多次输入测试时)七、一些组合命令八、自动化脚本九、学会查阅十、亲(yuan)近(li) bai du十一、不要逃避困难十二、重视小问题 一…

Grounding DINO:开放集目标检测,将基于Transformer的检测器DINO与真值预训练相结合

文章目录 背景知识补充CLIP (Contrastive Language-Image Pre-training):打破文字和图像之间的壁垒DINO(Data-INterpolating Neural Network):视觉 Transformer 的自监督学习Stable Diffusion:从文本描述中生成详细的图像Open-set Detector开…

【教3妹学编程-算法题】最大频率元素计数

2哥 : 3妹,最近有个电视剧《繁花》非常火🔥,你听说了吗? 3妹:没有,最近一直在忙着找工作,哪有时间看电视啊 2哥 : 啊?大周末还不休息一下啊,这么辛苦。 3妹:当…

Video接口介绍

屏库 https://m.panelook.cn/index_cn.php Open LDI, open lvds display interface OpenLDI and LVDS是兼容的, 是一种电平 https://www.ti2k.com/178597.html MIPI DSI/Camera crosLink FPD-LINK(Flat panel display link)是National(TI) LVDS技术, …

如何在线生成App:将网页封装成APP

在数字化时代,App已成为我们日常生活中不可或缺的一部分。然而,对于众多企业和个人开发者来说,开发一个原生App既耗时又耗资,尤其当他们已经拥有一个功能完备的网站时。幸运的是,现在有一种方法可以将现有的网页封装成…

k8s node节点加入集群,token过期

1、master01节点执行 kubeadm token create --print-join-command 2、执行命令 kubeadm join 192.168.0.236:16443 --token qucd8q.hsfq4a1afluzaky3 --discovery-token-ca-cert-hash sha256:92175a356db070deb2ddd3823e288e3005a4baeec9b68580dcc11ce4d3767195 3、查看node02…

【含完整代码】Java定时任务之xxl-job[超详细]

前言 个人博客:www.wdcdbd.com 在Java中使用定时任务是一件很常见的事情,比如使用定时任务在什么时间,什么时候,去发布一些信息,或者去查询一些日志等相关的代码。这时,我们就要开发定时任务这中功能来实现…

PyGWalker,一款超级强大的数据分析和数据可视化的工具库

PyGWalker可以有效简化Jupyter笔记本的数据分析和数据可视化工作流程,方法是将panda数据帧转换为Tableau风格的用户界面进行可视化探索。 PyGWalker被命名为“Graphic Walker的Python绑定”的缩写。它集成了Jupyter笔记本(或其他基于Jupyter的笔记本&am…

Linux之静态库和动态库

目录 一、前言 二、对于库的理解 三、静态库 四、动态库 五、动静态库的加载 一、前言 在之前,我们讲了静态库和动态库,详情请跳转:静态库和动态库 下面我们将从工程师的角度,去了解静态库和动态库的形成过程,以…

【Linux操作】国产Linux服务管理操作

【Linux操作】国产Linux服务管理操作 前言SAMBA配置服务器端1. 安装相关包2. 配置/etc/samba/smb.conf,在此文件末尾添加如下内容,并保存退出。3. 创建/home/share并更改权限4. 启动samba服务 客户端• Windows客户端• 麒麟客户端 Telnet1、telnet语法2…

JOSEF约瑟端子排中间继电器 DZY-204 DC110V 导轨安装,板前接线

DZY系列端子排中间继电器 系列型号: DZY-101端子排中间继电器 DZY-104端子排中间继电器 DZY-105端子排中间继电器 DZY-301端子排中间继电器 DZY-106端子排中间继电器 DZY-401端子排中间继电器 DZY-204端子排中间继电器 一、 概述 DZY-204端子排中间继电器用于各种…

unity C#什么时候用“可空类型”

文章目录 例子1. **声明一个可空类型变量:**2. **给可空类型变量赋值:**3. **检查可空类型变量是否有值:**4. **转换与比较:**5. **使用null合并运算符:** 可空类型的重要意义1. **表示缺失或未知的值:**2.…