DIFFWAVE: A VERSATILE DIFFUSION MODEL FOR AUDIO SYNTHESIS (Paper reading)
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通道,并在每个残差层的扩张卷积后将嵌入作为偏差项添加。
相关文章:
DIFFWAVE: A VERSATILE DIFFUSION MODEL FOR AUDIO SYNTHESIS (Paper reading)
DIFFWAVE: A VERSATILE DIFFUSION MODEL FOR AUDIO SYNTHESIS Zhifeng Kong, Computer Science and Engineering, UCSD, ICLR2021, Code, Paper 1. 前言 在这项工作中,我们提出了DiffWave,这是一种用于条件和无条件波形生成的多功能扩散概率模型。该模…...
排序算法8----归并排序(非递归)(C)
1、介绍 归并排序既可以是内排序(在内存上的数据排序),也可以是外排序(磁盘上)(硬盘)(在文件中的数据排序)。 其他排序一般都是内排序。 区别于快速排序的非递归…...
Golang 里的 context
context 的作用 go 的编程中,常常会在一个 goroutine 中启动多个 goroutine,然后有可能在这些 goroutine 中又启动多个 goroutine。 如上图,在 main 函数中,启动了一个 goroutine A 和 goroutine B,然后 goroutine A …...
PHP短链接url还原成长链接
在开发过程中,碰到了需要校验用户回填的短链接是不是系统所需要的,于是就需要还原找出短链接所对应的长链接。 长链接转短链接 在百度上搜索程序员,跳转页面后的url就是一个长链接。当然你可以从任何地方复制一个长链接过来。 长链接 http…...
redis原理(三)redis命令
一、字符串命令: 1、字符串基本操作: 2、自增自减 :如果一个值可以被解释为十进制整数或者浮点数,redis允许用户对这个字符串进行INCR*、DECR*操作。 (1)INCR key:将键存储的值的值加1。 &a…...
教程:在Django中实现微信授权登录
教程:在Django中实现微信授权登录 本教程将引导您如何在Django项目中实现微信授权登录。在本教程中,我们将使用自定义的用户模型User,并通过微信提供的API来进行用户认证。 在进行以下教程之前,请确保你已经在微信开放平台添加了…...
YOLOv5改进 | 主干篇 | 12月份最新成果TransNeXt特征提取网络(全网首发)
一、本文介绍 本文给大家带来的改进机制是TransNeXt特征提取网络,其发表于2023年的12月份是一个最新最前沿的网络模型,将其应用在我们的特征提取网络来提取特征,同时本文给大家解决其自带的一个报错,通过结合聚合的像素聚焦注意力和卷积GLU&…...
【java八股文】之计算机网络系列篇
1、TCP/IP和UDP模型 TCP/IP分层(4层):应用层,传输层,网络层,数据链路层 网络的七层架构 (7层):应用层,表示层,会话层,传输层ÿ…...
SpringAMQP的使用
1. 简介: SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。 SpringAmqp的官方地址:https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能: 自动声…...
MATLAB - 使用运动学 DH 参数构建机械臂
系列文章目录 前言 一、 使用 Puma560 机械手机器人的 Denavit-Hartenberg (DH) 参数,逐步建立刚体树形机器人模型。在连接每个关节时,指定其相对 DH 参数。可视化机器人坐标系,并与最终模型进行交互。 DH 参数定义了每个刚体通过关节与其父…...
2024年腾讯云新用户优惠云服务器价格多少?
腾讯云服务器租用价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月,云服务器CVM S5实例2核2G配置280.8元一年…...
如何在原型中实现继承和多态
在JavaScript中,我们可以通过原型链来实现继承。以下是如何在原型中实现继承的例子: // 定义一个动物原型 var Animal function() {}; Animal.prototype.move function() { console.log(‘This animal can move.’); }; // 定义一个狗的原型…...
MySQL/Oracle 的 字符串拼接
目录 MySQL、Oracle 的 字符串拼接1、MySQL 的字符串拼接1.1 CONCAT(str1,str2,...) : 可以拼接多个字符串1.2 CONCAT_WS(separator,str1,str2,...) : 指定分隔符拼接多个字符串1.3 GROUP_CONCAT(expr) : 聚合函数,用于将多行的值连接成一个字符串。 2、Oracle 的字…...
【Java SE语法篇】10.String类
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 文章目录 前言1. String类1.1 字符串的构造1.2 String对象的比…...
【Python】数据可视化--基于TMDB_5000_Movie数据集
一、数据准备 tmdb_5000_movie数据集下载 二、数据预处理 观察数据集合情况 import pandas as pd import ast import warnings warnings.filterwarnings(ignore) # 加载数据集 df pd.read_csv(tmdb_5000_movies.csv) # 查看数据集信息 print(df.info()) 由于原数据集包含的…...
学习Vue的插槽总结
今天学习了Vue的插槽,在这之前学习使用组件的使用还没有试过在父组件中给子组件插入html结构,今天学习的插槽正是拿来实现这一功能的,这也是一种组件中通信的方式,首先插槽分为三类:默认插槽、具名插槽、作用域插槽。接…...
第九篇 API设计原则与最佳实践
深入浅出HTTP请求前后端交互系列专题 第一章 引言-HTTP协议基础概念和前后端分离架构请求交互概述 第二章 HTTP请求方法、状态码详解与缓存机制解析 第三章 前端发起HTTP请求 第四章 前后端数据交换格式详解 第五章 跨域资源共享(CORS):现代W…...
新版AndroidStudio配置maven阿里云镜像
project下的build.gradle: // Top-level build file where you can add configuration options common to all sub-projects/modules. // 注意jdk版本需要17以上,因为8.1.3的gradle需要jdk17以上 //plugins { // id com.android.application version…...
【OSG案例详细分析与讲解】之十一:【多效果的3D动画】
目录 一、【多效果的3D动画】前言 二、【多效果的3D动画】实现效果...
一道使用LinkedList和Stack解决的算法题
一、无法吃午餐的学生数量 学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示。所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。 餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个 栈 里,每一轮&#…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
基于谷歌ADK的 智能产品推荐系统(2): 模块功能详解
在我的上一篇博客:基于谷歌ADK的 智能产品推荐系统(1): 功能简介-CSDN博客 中我们介绍了个性化购物 Agent 项目,该项目展示了一个强大的框架,旨在模拟和实现在线购物环境中的智能导购。它不仅仅是一个简单的聊天机器人,更是一个集…...
生成对抗网络(GAN)损失函数解读
GAN损失函数的形式: 以下是对每个部分的解读: 1. , :这个部分表示生成器(Generator)G的目标是最小化损失函数。 :判别器(Discriminator)D的目标是最大化损失函数。 GAN的训…...
Redis专题-实战篇一-基于Session和Redis实现登录业务
GitHub项目地址:https://github.com/whltaoin/redisLearningProject_hm-dianping 基于Session实现登录业务功能提交版本码:e34399f 基于Redis实现登录业务提交版本码:60bf740 一、导入黑马点评后端项目 项目架构图 1. 前期阶段2. 后续阶段导…...
