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

文章目录

    • 引言
    • 正文
      • 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.rhkb.cn/news/158309.html

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

相关文章

Linux开启SSH

Linux开启SSH 1.虚拟机确定连通性 如果是虚拟机的话则需要进行确定和宿主主机之间能正常联通(不能联通还远程个啥) 获取到虚拟机的IP 参考文章:Linux获取本机IP地址使用宿主机ping一下虚拟机的IP查看是否联通 2.安装SSH服务端 安装工具来使得能够通过SSH进行连接 命令 sudo a…

springBoot组件注册

springBoot组件注册 前言1、创建组件文件2、写属性3、生成get和set方法4、以前注册的方法5、现在注册的方法6、在启动文件查看7、多实例Scope("prototype")8、注册第三方包导入对应的场景启动器注册组件查看是否存在也可以通过Import(FastsqlException.class)导入但是…

C++医院影像科PACS源码:三维重建、检查预约、胶片打印、图像处理、测量分析等

PACS连接DICOM接口的医疗器械(如CT、MRI、CR、DR、DSA、各种窥镜成像系统设备等),实现图像无损传输,实现DICOM胶片打印机回传打印功能,支持各种图像处理,可以进行窗技术调节,与登记台管理系统共…

Spring Boot 中的 TransactionTemplate 是什么,如何使用

Spring Boot中的TransactionTemplate:简化事务管理 事务管理是任何应用程序中至关重要的部分,特别是在处理数据库操作时。Spring Boot提供了多种方式来管理事务,其中之一是使用TransactionTemplate。本文将深入探讨TransactionTemplate是什么…

树莓派玩转openwrt软路由:5.OpenWrt防火墙配置及SSH连接

1、SSH配置 打开System -> Administration,打开SSH Access将Interface配置成unspecified。 如果选中其他的接口表示仅在给定接口上侦听,如果未指定,则在所有接口上侦听。在未指定下,所有的接口均可通过SSH访问认证。 2、防火…

如何在手机上设置节日提醒和倒计时天数?

在平淡的生活和工作中,时不时有各种各样节日的点缀,为我们的日常增添了一些仪式感,例如春节、元宵节、情人节、端午节、七夕节等。此外还有一些特殊的日子也值得纪念,例如恋爱纪念日、结婚纪念日、亲朋好友生日等。面对这些节日&a…

CodeForces每日好题10.14

给你一个字符串 让你删除一些字符让它变成一个相邻的字母不相同的字符串,问你最小的删除次数 以及你可以完成的所有方/案数 求方案数往DP 或者 组合数学推公式上面去想,发现一个有意思的事情 例如1001011110 这个字符串你划分成1 00 1 0 1111 0 每…

Step 1 搭建一个简单的渲染框架

Step 1 搭建一个简单的渲染框架 万事开头难。从萌生到自己到处看源码手抄一个mini engine出来的想法,到真正敲键盘去抄,转眼过去了很久的时间。这次大概的确是抱着认真的想法,打开VS从零开始抄代码。不知道能坚持多久呢。。。 本次的主题是搭…

多城镇信息发布付费置顶公众号开源版开发

多城镇信息发布付费置顶公众号开源版开发 以下是多城镇信息发布付费置顶公众号的功能列表: 信息发布:用户可以在公众号上发布各类信息,如房屋租售、二手物品交易、招聘信息等。 信息置顶:用户可以选择付费将自己的信息置顶在公众…

vue2时间处理插件——dayjs

在vue时间处理上有很多的方法和实现,可以自己实现,但是效率不高,所以,在框架开发中我们一般不会手写,一般是使用集成的第三方插件来解决我们的问题,在vue3中大家一般都使用Moment.js来处理,所以…

print() 函数

二、print() 函数 这里先说一下 print() 函数,如果你是新手,可能对函数不太了解,没关系,在这里你只要了解它的组成部分和作用就可以了,后面函数这一块会详细说明的。 print() 函数由两部分构成 : 指令&a…

Folium笔记: Popup

1 介绍 在 folium 中,Popup 是一个用于在地图上显示附加信息的对象。当在地图上点击一个标记(例如,一个点或者一个形状)时,Popup 会显示出来。Popup 可以包含纯文本,但也可以包含HTML代码 2 主要参数 htm…

【SCSS篇】Vite+Vue3项目全局引入scss文件

文章目录 前言一、安装与使用1.1 安装1.2 scss 全局文件编写1.2.1 概述 1.3 全局引入和配置1.4 组件内使用 vue2 项目引入 sass附:忽略ts类型检测 前言 Sass 是世界上最成熟、最稳定、最强大的专业级CSS扩展语言!在日常项目开发过程中使用非常广泛&…

C# Onnx Yolov8 Detect 涉黄检测

效果 项目 检测类别 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; usi…

蓝桥杯每日一题2023.10.14

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

Redis魔法:点燃分布式锁的奇妙实现

分布式锁是一种用于在分布式系统中控制对共享资源的访问的锁。它与传统的单机锁不同&#xff0c;因为它需要在多个节点之间协调以确保互斥访问。 本文将介绍什么是分布式锁&#xff0c;以及使用Redis实现分布式锁的几种方案。 一、前言 了解分布式锁之前&#xff0c;需要先了…

Linux CentOS8安装gitlab_ce步骤

1 下载安装包 wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/8/gitlab-ce-15.0.2-ce.0.el8.x86_64.rpm/download.rpm2 安装gitlab yum install policycoreutils-python-utilsrpm -Uvh gitlab-ce-15.0.2-ce.0.el8.x86_64.rpm3 更新配…

CSS悬停卡片翻转明信片效果源码附注释

运行效果演示: HTML页面代码: <!DOCTYPE html> <html lang="en" > <head>

二十一、【文本工具组】

文章目录 横排文本工具字符选项卡段落文字 横排文本工具 需要注意的是一些不是免费的商业字体&#xff0c;一定不要拿去使用&#xff0c;否则后边很容易会受到法律索赔。 在制作海报等一些图形时&#xff0c;需要经常用到文本工具我们需要对文本进行变形&#xff0c;分段&…

【angular】实现简单的angular国际化(i18n)

文章目录 目标过程运行在TS中国际化参考 目标 实现简单的angular国际化。本博客实现中文版和法语版。 将Hello i18n!变为中文版&#xff1a;你好 i18n!或法语版:Bonjour l’i18n !。 过程 创建一个项目&#xff1a; ng new i18nDemo在集成终端中打开。 添加本地化包&#…