论文学习——Class-Conditioned Latent Diffusion Model For DCASE 2023

news2024/11/24 16:48:24

文章目录

    • 引言
    • 正文
      • Abstract
      • Introduction
      • System Overview
        • 2.1 Latent Diffusion with sound-class-based conditioning以声音类别为条件的潜在扩散模型
        • 2.2 Variational Autoencoder and neural vocoder变分自编码器和神经声码器
        • FAD-oriented Postprocessing filter(专门针对FAD的后置过滤器)
      • Experiments实验
        • Models and Hyperparameters
    • 总结

引言

  • 这篇文章是DCASE task 7 -Track A的FAD第一名,需要参考一下他使用的技术,尝试在自己的论文上进行使用。

正文

Abstract

  • 整个系统使用了LDM潜在扩散模型(latent diffusion model),变分编码器(VAE)还有HiFi-GAN声码器。

    • 通过LDM,生成声音基于类别所以你的潜在表示
    • 通过VAE将潜在特征表示转为mel频谱图
    • 通过HiFi-GAN将频谱图转为波形图
  • 数据集:使用DCASE2023提供的数据集进行训练,声音类别索引作为生成特定类别的声音潜在标识的索引。

  • 提升差异度的方法:首先将LDM在AudioCaps上进行预训练,然后再进行微调

  • 提升类别的度的方法:通过后处理器来提升类别嵌入度,对声音进行类别过滤

Introduction

  • 这个比赛很有意义,这个技术应用很多。
  • 最近提出的声音生成模型如下

AudioLDM

  • 基于文本的描述的目标生成,具体构成如下:潜在特征扩散模型(LDM)、变分编码器(VAE)和神经声码器。
    • LDM输入的条件信息是基于CLAP对比语音语音嵌入
    • 潜在特征表示是通过VAE的自动编码器实现的
    • 声码器是HiFi-GAN,将mel频谱图变为波形图

Text-to-Audio Generation using Instruction-Tuned LLM and Latent Diffusion Model

  • 基于AudioLDM,仅仅是使用LLM替代了CLAP

    • 通过LLM(instruction-tuned large language )指令调整的大预言模型,来增强AudioLDM的文本提示功能
  • 但这都是针对基本文本描述语音生成,但是不能利用现存的声音类型进行模仿,生成声音。

作者的研究介绍如下

  • 模型使用Tango等人预先训练好的模型,这些模型是基于AudioCaps和Flan-T5进行训练的
  • 基于条件生成的功能实现如下:
    • 使用简单的线性嵌入层来取代文本理解层,借此实现基于样例生成的效果
  • 后过滤层的实现原理
    • 对生成的样本进行筛选,过滤,选择FAD最低的样本
    • 使用贪婪向后选择策略实现声音选择的生成

System Overview

整个系统的输入是类别的索引

  • 系统的概览是上面那幅图,依次是
    • 基于LDM的潜在特征生成器
    • VAE的将潜在特征标识映射为mel频谱图
    • mel到波形图的声码器
  • 后处理过滤器的流程如下
    • 将生成的声音通过

在这里插入图片描述

2.1 Latent Diffusion with sound-class-based conditioning以声音类别为条件的潜在扩散模型
  • 我们的LDM模型将采样生成的高斯噪声 Z N ( Z N ∈ R C × T r × F r ) Z_N(Z_N \in \mathbb{R}^{C \times \frac{T}{r} \times \frac{F}{r}}) ZN(ZNRC×rT×rF)转换为一个潜在表示 Z 0 Z_0 Z0,主要是通过 N N N步反转扩散,通过UNet模型实现的。

    • T T T表示mel频谱图的帧数
    • F F F表示mel滤波器的数量
    • C C C表示潜在特征空间的通道数
    • r r r表示VAE的压缩成都,也就是中间潜在特征空间的维度
  • 类别条件信息传入

    • 神经网络接收长度为L,维度为d的嵌入向量 E ∈ R L × d E \in \mathbb {R}^{L \times d} ERL×d,这个 E E E是通过线性嵌入层生成的,条件信息通过交叉注意力机制传输给神经网络。
  • 训练之前,我们的模型是使用Tango等项目进行初始化,原来的checkpoint是接收来自Flan-T5的文本编码器的嵌入向量,我们使用线性嵌入层进行替代。线性嵌入层将声音类别的索引 c c c投影为d维的向量。这个线性嵌入层也是和LDM一块进行训练的。并不是单独分开的。

  • 交叉注意力机制原来是接收文本编码器的输出,是一个序列的嵌入向量,所以我们使用单个嵌入向量表示类别信息。

  • 具体训练过程如下,基于DDPM(Denoising diffusion probablistic models),参数说明如下

    • Z N ( Z N ∈ R C × T r × F r ) Z_N(Z_N \in \mathbb{R}^{C \times \frac{T}{r} \times \frac{F}{r}}) ZN(ZNRC×rT×rF)潜在特征表示
    • 对应的类别嵌入向量 E ∈ R L × d E \in \mathbb {R}^{L \times d} ERL×d
    • 各向同性高斯噪声
  • 损失函数如下

在这里插入图片描述

推理阶段

  • 在推理阶段,我们是用DDIM去加速采样的速度,使用免费类器引导去提高声音类别的质量。

  • 确定性向后传播过程如下,参数说明

    • β n \beta _ n βn是前向传播的高斯分布方差
    • σ n 2 \sigma_n^2 σn2是反向传播的高斯分布方差
    • w w w是引导尺度的参数

在这里插入图片描述

2.2 Variational Autoencoder and neural vocoder变分自编码器和神经声码器
  • 我们是用VAE将mel频谱图压缩为一个潜在特征表示空间。var具体是由CNN构成的编码器堆叠而成。整个系统中,是将扩散模型的降噪之后的输出放入到VAE的解码器重,然后重建为mel频谱图。

  • 然后使用HiFi-GAN将mel频谱图转为音频文件声波。HiFi的介绍具体看如下连接。HiFi-GAN具体介绍

FAD-oriented Postprocessing filter(专门针对FAD的后置过滤器)
  • 虽然系统生成的样本还行,但是可以通过过度生成和过滤来实现改进。尤其是对于目前这个以FAD为评价指标的挑战。FAD计算如下

  • 计算参考和生成样本的VGGish 嵌入向量,计算参考音频和生成音频的嵌入向量的平均μ和协方差矩阵Σ,其Fŕechet距离[11]为
    在这里插入图片描述

  • 需要获得P样本,我们首先生成Q个样本,然后使用贪婪选择策略,将之减少到P个样本。每一次都选择一个样本k,丢弃这个样本k,FAD降低的最多。重复k次,知道Q和P数量相等。

  • 如果我们有超过P个样本,我们使用Metropolis-Hastings算法来找到P元素的一个好的子集。首先,我们通过评估P样本的100个子集的FAD并选择最低的一个来初始化算法。在算法的每次迭代中,我们随机交换两个样本。首先,我们随机选择当前P个样本中的一个。然后,我们以与第一个样本的嵌入距离成反比的概率选择一个被丢弃的样本。我们交换这两个样本并评估FAD。如果它减少了,我们接受这个变化。如果它增加了,我们只有在一个随时间线性减少的小概率下才接受这个变化。否则,我们拒绝这个变化。在所有迭代中,FAD最低的子集被算法返回。

Experiments实验

Models and Hyperparameters

HiFi-GAN和VAE

  • 使用HiFi-GAN和VAE的预训练模型来自AudioLDM这个项目。使用AudioSet对HiFi-GAN进行预训练。

  • 所有的数据都是用增强或者填充,补充到十秒钟,然后调整采样率为16kHZ,

  • 将音频转为频谱图的操作如下

    • F=64,64维度的mel频谱图
    • 汉明窗口是1024
    • 每一跳的长度是160
    • 帧数T扩展24帧,避免以后再进行padding
  • VAE是在AudioCaps、AudioSet和Freesound上进行训练过

    • 压缩的水平 r r r是4
    • 通道数是8

LDM

  • 我们使用Tango的checkpoint作为初始化模型,模型使用的条件向量维度是 d = 1024 d = 1024 d=1024.对于微调,我们使用了 DCASE-023 Task7 开发集。由于音频数据以 22.05 kHz 采样并在四秒内分割,我们将它们重新采样到 16 kHz 并将它们填充为 10 秒。我们设置 N = 1000 个前向扩散步骤进行微调。我们的LDM使用AdamW优化器进行微调,初始学习率为3e-5,线性衰减学习率调度器。我们使用七个 A100 GPU 对模型进行了 100k 训练迭代的微调,有效批量大小为 42。在推理阶段,我们使用DDIM[8]进行100个采样步骤,使用无分类器的指导尺度w = 3。由于我们的模型以16 kHz采样率产生10秒的音频段,我们提取了前四秒的段,并将其重新采样到22.05 kHz,以适应挑战规则。

Postprocessing后处理

  • 对于每个声音类,我们首先使用上述音频生成管道生成 Q = 200 个样本。然后应用FAD滤波器将样本数减少到P = 100。

总结

  • 这篇文章,就是用了别人的AudioLDM的特征生成部分,只能说LDM的效果要好于pixelSNAIL。
  • PixelSNAIL是使用适量量化的编码序列,特征更加简单,生成序列效果会更好,但是将复杂特征降噪为编码序列,这本来就会损失很多特征。现在使用diffusion模型,效果要好于对特征进行提取生成序列。

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

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

相关文章

JOSEF约瑟 HJY-E1A/4D电压继电器 欠电压动作 整定范围10~242V 二转换

系列型号 HJY-E1A/3D数字式交流电压继电器; HJY-E1A/3J数字式交流电压继电器; HJY-E1B/3D数字式交流电压继电器; HJY-E1B/3J数字式交流电压继电器; HJY-E2A/3D数字式交流电压继电器; HJY-E2A/3J数字式交流电压继…

极简的MapReduce实现

目录 1. MapReduce概述 2. 极简MapReduce内存版 3. 复杂MapReduce磁盘版 4. MapReduce思想的总结 1. MapReduce概述 以前写过一篇 MapReduce思想 ,这次再深入一点,简单实现一把单机内存的。MapReduce就是把它理解成高阶函数,需要传入map和…

蓝桥杯每日一题2023.10.14

年号字串 - 蓝桥云课 (lanqiao.cn) 题目描述 我们发现每个字母都与26紧密相关&#xff0c;其%26的位置就是最后一个字母&#xff0c;由于最开始将0做为了1故在写答案时需要注意细节问题 #include<bits/stdc.h> using namespace std; char s[] "ABCDEFGHIJKLMNOPQ…

电源集成INN3270C-H215-TL、INN3278C-H114-TL、INN3278C-H215-TL简化了反激式电源转换器的设计和制造。

一、概述 InnoSwitch™3-CP系列IC极大地简化了反激式电源转换器的设计和制造&#xff0c;特别是那些需要高效率和/或紧凑尺寸的产品。InnoSwitch3-CP系列将初级和次级控制器以及安全额定反馈集成到单个IC中。 InnoSwitch3-CP系列器件集成了多种保护功能&#xff0c;包括线路过…

【git篇】git的使用

文章目录 1. Git介绍与安装1. Git简介2. 下载安装程序3. 设置用户名和邮箱 2. Git的基本使用1. 创建版本库2. 文件管理1. 提交文件2. 查看状态3. 查看提交日志4. 版本回退 3. 原理解析1. Git区的划分2. 撤销修改3. 删除文件 4. 分支管理1. 基本原理2. 创建分支3. 合并分支4. 删…

处理死锁策略2

一、避免死锁-动态策略 1.概述 安全序列-能使每个进程才能顺利完成的分配资源的序列&#xff0c;可有多种&#xff0c;此时系统处于安全状态下&#xff0c;系统一定不会发生死锁。 不安全状态-找不到一个安全序列时&#xff0c;系统处于不安全状态下&#xff0c;系统可能会发…

BuyVM 挂载存储块

发布于 2023-07-13 on https://chenhaotian.top/linux/buyvm-mount-block-storage/ BuyVM 挂载存储块 参考&#xff1a; https://zhujitips.com/2653https://www.pigji.com/898.html 1 控制台操作 存储块购买完毕后&#xff0c;进入后台管理界面&#xff0c;进入对应 VPS …

Qt工具开发,该不该跳槽?

Qt工具开发&#xff0c;该不该跳槽? 就这样吧&#xff0c;我怕你跳不动。 嵌入式UI&#xff0c;目前趋势是向着LVGL发展。QT已经在淘汰期了。很多项目还在用&#xff0c;但技术上已经落后。QT短期内不会全面淘汰&#xff0c;但退位让贤的大趋势已经很清楚了。 最近很多小伙伴…

整理了六大类兼职平台,看看有适合你的吗

现代人已经不再仅仅依赖于一份全职工作&#xff0c;他们通过兼职来为自己赚取额外的收入&#xff0c;同时也能更加自由地安排自己的时间。而如今&#xff0c;互联网兼职平台应运而生&#xff0c;为我们创造了更多的选择。今天我将为你介绍六大类兼职平台&#xff0c;相信其中一…

多输入多输出 | MATLAB实现PSO-RBF粒子群优化径向基神经网络多输入多输出预测

多输入多输出 | MATLAB实现PSO-RBF粒子群优化径向基神经网络多输入多输出预测 目录 多输入多输出 | MATLAB实现PSO-RBF粒子群优化径向基神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现PSO-RBF粒子群优化径向基神经网络多输入…

二维码怎么做列表?点击可跳转其他内容

最近很多小伙伴在问&#xff0c;在用二维码展示内容时&#xff0c;怎么设置一个列表&#xff0c;点击每条内容或者单个图片&#xff0c;就可以跳转到对应的详情页面查看内容&#xff0c;而且二维码内容还能够随时编辑或者修改。那么想要做到上面的这种效果&#xff0c;可以用二…

EEPROM、FLASH电路设计

ROM是一种掉电不丢失数据的存储器&#xff0c;EEPROM是ROM的升级版&#xff0c;他支持带电擦除&#xff0c;可以修改存储器内的内容。 而我们还会提到FLASH&#xff0c;是EEPROM的升级&#xff0c;他们二者的区别在于FLASH按扇区操作&#xff0c;EEPROM则按字节操作&#xff0…

【Rust笔记】浅聊 Rust 程序内存布局

浅聊Rust程序内存布局 内存布局看似是底层和距离应用程序开发比较遥远的概念集合&#xff0c;但其对前端应用的功能实现颇具现实意义。从WASM业务模块至Nodejs N-API插件&#xff0c;无处不涉及到FFI跨语言互操作。甚至&#xff0c;做个文本数据的字符集转换也得FFI调用操作系统…

Studio One6.5中文版本版下载及功能介绍

Studio One是一款专业的音乐制作软件&#xff0c;由美国PreSonus公司开发。该软件提供了全面的音频编辑和混音功能&#xff0c;包括录制、编曲、合成、采样等多种工具&#xff0c;可用于制作各种类型的音乐&#xff0c;如流行音乐、电子音乐、摇滚乐等。 Studio One的主要特点…

说明书MS2721A频谱分析仪7.1GHz

安立Anritsu MS2721A 频谱分析仪 MS2721A 是 Anritsu 的 7.1 GHz 频谱分析仪。频谱分析仪测量已知和未知信号的频谱功率。频谱分析仪收集信息&#xff0c;例如输入信号与其频率相比的幅度。作为频率分析仪&#xff0c;频谱分析仪的主要用途是记录和分析电输入信号以及其他信号的…

想要精通算法和SQL的成长之路 - 滑动窗口和大小根堆

想要精通算法和SQL的成长之路 - 滑动窗口和大小根堆 前言一. 大小根堆二. 数据流的中位数1.1 初始化1.2 插入操作1.3 完整代码 三. 滑动窗口中位数3.1 在第一题的基础上改造3.2 栈的remove操作 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 大小根堆 先来说下大小根堆是什…

Rust初接触

一、什么是Rust Rust 是由 Mozilla 开发的多范式编程语言&#xff0c;专注于性能和安全性。 Rust 以其先进的安全并发能力而闻名&#xff0c; 它的语法类似于 C&#xff0c;但它提供了更快的速度和内存安全性&#xff0c;但不使用垃圾收集器。 Rust 最初是为 Mozilla Firefox …

Linux bash: ipconfig: command not found解决方法

安装完centos7运行ifconfig命令发现找不到 安装相关工具 yum install net-tools.x86_64 无脑yes即可

Jenkins UI 自动化持续化集成测试

一&#xff1a;安装jenkins 环境 在官网下载msi 直接安装即可 二&#xff1a;设置全局变量 设置allure 路径 三&#xff1a;创建项目 1、创建自由风格项目 2、如果项目在本地&#xff0c;且本地服务器是windows &#xff0c;找到Jenkins安装根目录&#xff0c;寻找config…

Spring Cloud Pipelines 入门实践

文章目录 1. 前言2. Spring Cloud Pipelines 是做什么的2.1. 预定义的流程2.2. 集成测试和契约测试2.3.部署策略 4. Spring Cloud Pipelines的使用示例4.1. 创建一个Spring Boot应用4.2. 将代码托管到GitHub仓库4.3. 添加Spring Cloud Pipelines依赖4.4. 配置Spring Cloud Pipe…