【无标题】

DIFFWAVE: A VERSATILE DIFFUSION MODEL FOR AUDIO SYNTHESIS

Zhifeng Kong, Computer Science and Engineering, UCSD, ICLR2021, Code, Paper

1. 前言

在这项工作中,我们提出了DiffWave,这是一种用于条件和无条件波形生成的多功能扩散概率模型。该模型是非自回归的,通过具有合成过程中恒定步数的马尔可夫链将白噪声信号转换为结构化波形。通过在数据似然上优化一种变体的变分下界,该模型能够高效训练。DiffWave在不同的波形生成任务中产生高保真音频,包括基于梅尔频谱图的神经声码化、类别条件生成和无条件生成。我们证明DiffWave在语音质量方面与强大的WaveNet声码器相匹配(MOS:4.44对比4.43),同时合成速度更快数个数量级。特别是,在具有挑战性的无条件生成任务中,它在音频质量和从各种自动和人工评估中得到的样本多样性方面明显优于自回归和基于GAN的波形模型。

2. 整体思想

扩散模型的U-Net换为1维的网络,其他基本一致

3. 方法

大多数先前的波形模型侧重于具有信息性局部条件的音频合成(例如,梅尔频谱图或对齐的语言特征),只有少数例外用于无条件生成)。已经注意到,自回归模型在无条件设置下往往会生成虚构的类似词汇的声音,或者在无条件情况下生成较差的样本。这是因为需要生成非常长的序列(例如,一个秒的语音需要生成16,000个时间步),而没有任何条件信息。

扩散概率模型(简称扩散模型)是一类有前途的生成模型,它使用马尔可夫链逐渐将一个简单分布(例如,各向同性高斯分布)转化为复杂的数据分布。尽管数据似然性难以计算,但扩散模型可以通过优化变分下界来高效地进行训练。最近,在图像合成中已经展示了一种特定的参数化方式取得了成功,该方式与去噪分数匹配有关。扩散模型可以利用扩散(加噪)过程而无需可学习参数,从训练数据中获得“白化”的潜在表示。因此,与其他模型相比,训练过程中不需要额外的神经网络。这避免了由于两个网络的联合训练而产生的“后验崩溃”或“模式崩溃”问题,因此对于高保真度的音频合成非常有价值。

在这项工作中,我们提出了DiffWave,一种用于原始音频合成的多功能扩散概率模型。DiffWave相比先前的工作具有几个优势:i) 它是非自回归的,因此可以并行合成高维波形。ii) 它是灵活的,因为与需要保持潜在表示与数据之间双射关系的流模型不同,它不强加任何架构约束。这导致了仍然能够生成高保真语音的小型神经声码器。iii) 它使用基于单一ELBO的训练目标,无需任何辅助损失(例如,基于频谱图的损失)进行高保真度的合成。iv) 它是一个多功能模型,可为有条件和无条件波形生成产生高质量的音频信号。具体而言,我们做出了以下贡献:

DiffWave采用了受WaveNet启发的前馈和双向扩张卷积架构。它在语音质量方面与强大的WaveNet声码器相匹配,同时合成速度更快,因为它仅需要进行少量的顺序步骤即可生成非常长的波形。

我们的小型DiffWave具有2.64M参数,并在V100 GPU上以超过5倍于实时的速度合成22.05 kHz的高保真语音,而无需经过专门设计的内核。虽然它的速度仍然比最先进的基于流的模型慢,但它的占用空间更小。我们期望通过在未来优化其推理机制来进一步提高速度。

在具有挑战性的无条件和类条件波形生成任务中,DiffWave在音频质量和多样性方面显著优于WaveGAN和WaveNet,这是通过多个自动和人工评估进行衡量的。

在这里插入图片描述
网络结构如图。输入一维输出一维,算法流程如下,其实和DDPM一样的:
在这里插入图片描述

局部条件器:在语音合成中,神经声码器可以在对齐的语言特征、从文本到频谱图模型得到的梅尔频谱图或文本到波形架构中的隐藏状态的条件下合成波形。在这项工作中,**我们将DiffWave作为一个神经声码器,以梅尔频谱图为条件进行测试。我们首先通过转置的2D卷积将梅尔频谱图上采样到与波形相同的长度。在将其梅尔频谱图映射为2C通道的每个层特定的Conv1×1之后,条件器作为偏差项添加到每个残差层的扩张卷积中。超参数可以在第5.1节中找到。

全局条件器:在许多生成任务中,条件信息是由全局离散标签(例如,说话者ID或单词ID)给出的。在所有实验中,我们使用维度为128的共享嵌入。在每个残差层中,我们应用层特定的Conv1×1将dlabel映射到2C通道,并在每个残差层的扩张卷积后将嵌入作为偏差项添加。

相关推荐

  1. 标题

    2024-01-12 03:38:02       72 阅读
  2. 标题

    2024-01-12 03:38:02       69 阅读
  3. 标题

    2024-01-12 03:38:02       67 阅读
  4. 标题

    2024-01-12 03:38:02       77 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-12 03:38:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-12 03:38:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-12 03:38:02       87 阅读
  4. Python语言-面向对象

    2024-01-12 03:38:02       96 阅读

热门阅读

  1. 记录来到这的第一天!

    2024-01-12 03:38:02       49 阅读
  2. 算法-大数相乘

    2024-01-12 03:38:02       60 阅读
  3. 现在都在说 Docker 好,那它有什么弊端吗?

    2024-01-12 03:38:02       56 阅读
  4. 基于51单片机的万年历系统设计

    2024-01-12 03:38:02       43 阅读
  5. 【学习笔记】CF1835C Twin Clusters

    2024-01-12 03:38:02       57 阅读
  6. 常见类型的yaml文件如何编写?--kind: Deployment

    2024-01-12 03:38:02       54 阅读
  7. Rust-vec!与Vec::with_capacity初始化数组的区别

    2024-01-12 03:38:02       69 阅读
  8. Rust 工程配置

    2024-01-12 03:38:02       52 阅读