【论文笔记】End-to-End Video-To-Speech Synthesis using Generative AdversarialNetworks

一、GAN的知识:

在生成对抗网络(GAN)中,Critic(也称为Discriminator)和Generator是两个主要组成部分。他们在一个博弈框架中一起训练。

Critic:每次从数据集中抽取一批样本,从Generator生成的数据中抽取一批样本,训练一个模型能够判断样本是数据集的还是生成的。

Generator:生成样本,用于Critic的评估。Generator的损失通常是根据Critic的输出计算的。

Critic在GAN中的作用:

  1. 鉴别能力: Critic用于判断输入样本是“真实”的还是“生成”的,以改进Generator。如果Critic不能很好地区分真实和生成的样本,这通常意味着Generator正在做得很好。
  2. 训练平衡: 在训练过程中,Critic和Generator通常是交替训练的,以确保他们各自的性能提升,而不是其中一个远远超过另一个。

注意:Critic的训练通常需要比Generator更多的迭代次数,特别是在训练开始时,以确保它能够提供有用的反馈。

总的来说,Critic在GAN中起着至关重要的作用,它不仅作为一个鉴别器来区分真实和生成的数据,还为改进Generator提供了方向。

二、音频的时域和频域

  1. 时域(Temporal Domain): 音频信号在时间轴上的表示。在时域中,你可以看到音频振幅随时间变化的样子。这对于观察音频信号的振幅、持续时间等属性很有用。

  2. 频域(Frequency Domain): 音频信号在频率轴上的表示。通过傅里叶变换或其他方式,可以将音频信号从时域转换到频域。在频域中,你可以看到组成音频信号的各个频率成分及其强度。频率结构可以表示音频的音高、音量和音色等。
    频域信号由多个不同频率的正弦波组成。通过频域分析,我们可以了解这些频率成分及其相对强度,这有助于我们理解音色、节奏和其他音乐或语音特性。

这两个域提供了音频信号不同的视角,并且都有其用途。时域分析对于观察音频波形的形状和时间变化很有用,而频域分析有助于我们理解音频的频率结构,比如哪些频率更强烈,哪些频率几乎没有出现等。在音频处理中,特别是在音频生成和修改的任务里,两者通常都非常重要。

三、文章简介

Video2Speech任务,即视频(静音)中有人在说话,通过深度学习模型重建出说话的语音。

虽然深度学习已经极大地提高了ASR(自动语音识别)的性能,但在噪声环境下或者音频流中有缺口的情况下,这些模型的性能仍然不理想。因此,研究者开始关注基于视频的语音识别,即唇读。唇读模型可以用于各种应用,比如在噪音环境下的视频会议或者为不能发声的人生成人工语音。

在以往的研究中,这样的任务通常是分两步来完成的:

  1. 首先,从视频中提取某种"中间表示",也就是从视觉信息中抽取与声音有关的特征。
  2. 然后,使用一个声音生成算法(比如,声码器或波形重建算法)来根据这些特征生成声音。

本文提出了一种end-to-end的方法:

作者使用了一种名为生成对抗网络(GANs)的深度学习模型。这个模型由两个主要部分组成:一个是生成器(用于生成声音),另一个是判别器(用于评价生成的声音质量)。

作者在一个小规模的数据集(GRID)和一个更大、更复杂的数据集(LRW,Lip Reading in the Wild)上测试了它。测试结果表明,这个新模型在声音的质量和可理解性方面都表现得比以前的方法更好。

四、模型结构

  1. 编码器-解码器结构(Encoder-Decoder): 这个模型从原始的视频开始,经过编码器-解码器生成声音。
  2. 波形评论家(Waveform Critic)和能量评论家(Power Critic): 生成的声音被送到两个"评论家"(或者说是判别器)那里。一个评价声音波形的质量,另一个评价声音的能量。

视频首先对每一帧进行编码(感受野为5),然后使用Bi-GRU进行上下文编码。

接着解码器对特征进行上采样:每秒视频有25帧,音频有16kHz,因此每帧视频对应 16K/25=640 个采样点。上采样率N=640。

最后使用解码器生成waveform。

解码器组件与特性:

  1. 六个堆叠的转置卷积层:转置卷积层通常用于升采样或扩大输入数据的尺寸,这在从编码的低维信息重构复杂波形(如语音)时是非常有用的。

  2. 批量归一化和ReLU激活函数:每个转置卷积层后面都有批量归一化和ReLU,用以加速训练并提高模型的性能。批量归一化可以减少内部协变量偏移,而ReLU激活函数可以增加模型的非线性能力。

  3. 最后一层使用双曲正切激活函数:与前面的层使用ReLU激活函数不同,最后一层使用了双曲正切(Tanh)激活函数。这通常是为了限制输出值的范围,使其适合于后续处理或与目标值进行比较。

  4. 50%的帧重叠:为了减少生成的语音波形中突然帧转换带来的问题,作者使用了50%的帧重叠。这意味着相邻生成的语音帧之间有一半的内容是重叠的。

  5. 线性平均:重叠的部分不是简单地拼接起来,而是通过逐个样本进行线性平均来保持原始波形的比例。这有助于使生成的语音听起来更自然和连贯。

critics:

批评者在生成对抗网络(GANs)中是很关键的,用于判别生成数据(在这种情况下是合成的音频波形)是否真实。

文章提出了两种Critics,一个专注于时域分析,另一个专注于频域分析。

波形批评者(Waveform Critic)

  1. 作用: 波形批评者的目的是在时域(Temporal Domain)中判断音频的真实性。
  2. 结构: 该批评者使用了7个卷积层,每个后面都跟着一个Leaky ReLU激活函数。
  3. 权重标准化: 作者发现,尽管权重标准化(Weight Normalization)能增加对抗训练的稳定性,但总体结果变差,所以决定去除它。
  4. 批量标准化: 由于批量标准化(Batch Normalization)会干扰梯度罚项(Gradient Penalty),因此没有尝试使用它。
  5. 其他尝试: 与其他批评者结构(如一维的ResNet 18等)进行了比较,发现这个批评者产生了最好的结果。

功率批评者(Power Critic)

  1. 灵感: 该部分受到SpecGAN模型的启发。
  2. 作用: 功率批评者在频域(Spectral Domain)中评估音频的真实性。
  3. STFT: 用短时傅里叶变换(STFT)计算真实和生成音频的频谱,窗口大小为25毫秒,跳跃大小为10毫秒,频率区间为512。
  4. 预处理: 对计算出的频谱幅度取自然对数,然后进行标准化和裁剪。
  5. 结构: 使用与生成器相同的ResNet18,但最前面有一个二维卷积层,因为输入是单一图像。

五、损失函数:

  1. Wasserstein GAN Loss(WGAN损失): WGAN 的目标是最小化生成数据和真实数据分布之间的Wasserstein距离。

  2. 梯度罚项(Gradient Penalty): 添加了一个梯度罚项以满足Lipschitz约束条件,进一步稳定WGAN的训练。

  3. 生成器和评价器(Critic)的损失函数: 公式(2)和(3)分别定义了生成器(G)和评价器(D)的损失函数。这里使用了两种不同的评价器:waveform critic和power critic。

  4. 组合损失: 生成器的总体损失是由两个评价器产生的损失组合而成的,如公式(4)所示。

其他用于训练生成器的损失:

  1. 感知损失(Perceptual Loss): 使用预训练的PASE模型来提取特征,并计算生成和真实波形之间的差异。

  2. 功率损失(Power Loss): 在频域上比较生成和真实音频,使用L1损失。

  3. MFCC损失: 使用Mel频率倒谱系数(MFCC)作为特征,并计算生成和真实波形之间的差异。

  4. 最终生成器的损失: 是上述所有损失的加权和,如公式(8)所示。

参数调优:

  1. 通过在GRID数据集(包含4名说话人)上的多次迭代训练,找到了最优的损失权重。

在这个设置中,使用了两种不同类型的评价器(Critic)来从不同的角度评估生成的音频质量:一个在时域(waveform critic),一个在频域(power critic)。同时,除了对抗性损失外,还添加了多种其他类型的损失函数,以提高生成音频的质量和可理解性。这些额外的损失函数包括感知损失、功率损失和MFCC损失,它们分别关注于不同方面的音频信号特性。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ug871-vivado-high-level-synthesis-tutorial.pdf是有关Vivado高级综合教程的文档。该文档提供了使用Vivado高级综合工具的指南和教程,以帮助开发人员更高效地进行数字设计。 Vivado是赛灵思公司开发的综合工具套件,用于设计和实现数字电路。高级综合是一种将高级语言(如C或C++)转换为硬件描述语言(如VHDL或Verilog)的技术。它使开发人员能够使用更高级的语言进行设计,并将其转换为硬件电路,从而加快设计过程的速度。 在ug871-vivado-high-level-synthesis-tutorial.pdf中,开发人员将学习如何使用Vivado高级综合工具来创建和转换高级语言设计。文档以简单易懂的方式介绍了Vivado高级综合工具的基本概念和操作步骤。 该教程包含以下主要内容: 1. 介绍了高级综合的基本原理和优势,以及该技术可以加快设计速度的原因。 2. 解释了Vivado高级综合工具的功能和特点,以及如何进行安装和配置。 3. 提供了使用Vivado高级综合工具进行设计的具体步骤和操作指南。其中包括创建高级语言设计文件、设定综合目标和选项、运行综合和优化过程等。 4. 展示了如何生成和验证转换后的硬件电路,并进行仿真和测试。 5. 提供了一些示例案例,帮助开发人员更好地理解和应用Vivado高级综合工具。 通过学习和应用ug871-vivado-high-level-synthesis-tutorial.pdf中的内容,开发人员可以更有效地利用Vivado高级综合工具进行数字设计。这将使他们在开发过程中节省时间和精力,并且能够更快地实现设计目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值