nnAudio的简单介绍

官方实现
https://github.com/KinWaiCheuk/nnAudio;

论文实现:
nnAudio: An on-the-Fly GPU Audio to Spectrogram Conversion Toolbox Using 1D Convolutional Neural Networks;

以下先对文章解读:

abstract

在本文中,我们提出了nnAudio,这是一种新的基于神经网络的音频处理框架,具有图形处理单元(GPU)支持,利用1D卷积神经网络执行时域到频域转换。由于速度快,它允许实时提取光谱图,而无需在磁盘上存储任何光谱图。此外,这种方法还允许在波形到谱图转换层上进行反向传播,因此,转换过程可以进行训练,从而进一步优化神经网络所训练的特定任务的波形到谱线图转换

所有谱线图实现都按输入长度的线性时间的Big-O缩放。然而,nnAudio利用了PyTorch的一维卷积神经网络的计算统一设备架构(CUDA),其短时傅里叶变换(STFT)、梅尔谱图和常数Q变换(CQT)实现比仅使用中央处理单元(CPU)的其他实现快了一个数量级。我们使用NVIDIA GPU在三台不同的机器上测试了我们的框架,考虑到录音长度相同,我们的框架将谱图提取时间从几秒(使用流行的python库librosa)减少到几毫秒。当将nnAudio应用于可变输入音频长度时,使用librosa从MusicNet数据集中提取具有不同参数的34种谱图类型平均需要11.5小时。nnAudio平均需要2.8小时,速度仍然是librosa的四倍。我们提出的框架在处理速度方面也优于现有的GPU处理库,如Kapre和Torchaudio。

1. introduction

自20世纪80年代以来,光谱作为音频信号的时频表示,一直被用作神经网络模型的输入[1-3]。不同类型的光谱图针对不同的应用进行定制。例如,Mel频谱图和Mel频率倒谱系数(MFCC)是为语音相关应用设计的[4,5],而常数Q变换最适合音乐相关应用[6,7]。尽管最近在音频领域的端到端学习方面取得了进展,如WaveNet[8]和SampleCNN[9],这使得对原始音频数据进行模型训练成为可能,但许多最近的出版物仍然使用声谱图作为各种应用的模型的输入[10]。这些应用包括语音识别[11,12]、语音情感检测[13]、语音到语音翻译[14]、语音增强[15]、语音分离[16]、歌声转换[17]、音乐标记[18]、覆盖检测[19]、旋律提取[20]和复调音乐转录[21]。在原始音频数据上训练端到端模型的一个缺点是训练时间较长。

本文的主要贡献是开发了一种基于GPU的音频处理框架,该框架直接集成到神经网络中并利用了神经网络的力量。这提供了以下好处:

1)使用动态时频转换层进行端到端神经网络训练(即,可以直接使用原始波形作为神经网络的输入)。

2) 与ibrosa[23]等传统音频处理方法相比,处理速度明显更快。

3) 基于可以在GPU上运行的神经网络的CQT算法(在撰写本文时,没有可以在GPU中运行的基于神经网络的CQT算法。)

4)可训练的傅立叶、梅尔和CQT内核,可以根据手头的问题自动调整

比较(A):现有(慢速)方法[32-40]和(b):我们提出的(如图11a所示快得多)基于神经网络的音频处理框架(nnAudio)的流程图。我们提出的神经网络以黄色突出显示。我们现在可以直接将波形前馈到神经网络,而不是对波形进行预处理,并且可以在训练过程中动态生成频谱图。红色箭头表示反向传播ŞL可以走多远,这允许在训练期间对初始化的内核进行微调,从而产生专门定制的新表示。

在下面的小节中,我们将简要总结离散傅立叶变换(DFT)的数学原理。

然后,我们将讨论如何初始化神经网络来执行第II节中的STFT、Mel谱图和常数Q变换(CQT)。

在第四节中,我们比较了nnAudio与流行的python信号处理库librosa的速度和输出。最后,我们介绍了我们库的潜在应用。

2. signal processing:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

美国站针对磁铁产品新政策16 CFR 1262详解

近日,亚马逊美国站公布磁铁产品(不包括玩具)的新政策更新公告,公告如下: 公告显示,由于美国消费品安全委员会(US Consumer Product Safety Commission)出台了新的安全规定&#xff…

海王算法(看完不会变成海王)

💧学了海王算法会变成海王吗,它又能解决什么样的问题呢?💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 数据结构与算法专栏的文章图文…

内存池解释及线程池(Linux)实现

1.内存池1.什么是内存池内存池是一种内存分配方式。在真正使用内存之前,先申请分配一定数量的、大小相等的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。使用内存池的优点有&#xff1…

Pyspark_SQL3

Pyspark 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hi…

会声会影2023新版本功能详情讲解

会声会影2023Corel VideoStudio一款功能丰富的视频编辑软件。会声会影2023简单易用,具有史无前例的强大功能,拖放式标题、转场、覆叠和滤镜,色彩分级、动态分屏视频和新增强的遮罩创建器,超越基本编辑,实现影院级效果。…

【Django 网页Web开发】12. 实战项目:分页组件的封装 面向接口编程(05)(保姆级图文)

目录1. 对象的方式使用分页组件2. 项目结构3. 编写pagination.py3.1 pagination.py3.2 view.py4. bug修改之:url中搜索关键词q和page4.1 构造url的一个雏形4.2 修改我们的分页组件4.3 搜索小bug5. 应用分页组件,几行代码实现用户管理分页5.1 批量创建用户…

『 MySQL篇 』:MySQL 索引相关问题

目录 一 . 认识索引 二. 索引的数据结构 1 . B Tree vs Hash 2 . B Tree vs 二叉树/红黑树 3 . B 树 vs B树 三. 索引的使用 1. 索引分类 2. 索引用法 一 . 认识索引 当我们在查询一本书中的内容时 , 你会选择翻页每一页去查询呢 ? 还是说按照书的目录去找 ? 答案是…

springmvc(一)

SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。 对于SpringMVC我们主要学习如下内容: SpringMVC简介 请求与响应 REST风格 SSM整合(注解版) 拦截器 SpringMVC是处于Web层的框架,所以其主要的作用就是用…

微信小程序开发:微信小程序生命周期总结

前言 在微信小程序开发中,关于微信小程序API的使用是必备技能,但是关于微信小程序的生命周期也是首先要了解和掌握的知识点。尤其是现在的前端开发领域,关于前端的各种框架和技术都要会,而且微信小程序的语法就是JS的翻版&#xf…

Java 线程安全

一、什么是线程安全 当多个线程访问共享资源时,每个线程都会各自对共享资源进程操作,导致数据不一致,造成程序不能正确的得到结果,此时需要让多个线程排队访问共享资源,让线程安全,才能保证数据安全的被访问…

Jdk动态代理和Cglib动态代理的区别

一: 前言: 代理模式分为 静态代理 和 动态代理,今天我要讲的是动态代理的两种常见、也是被广泛使用的实现方式-------jdk动态代理 和 Cglib动态代理 二:Jdk动态代理实现分析: 结构示意图如下,我定义了一…

FrIf-FrIf_Transmit发送流程【配置参数FrIfImmediate:立即传输还是解耦传输】和代码分析

总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 1 FrIf_Transmit中的 PDU 的配置的传输模式2 代码分析1 FrIf_Transmit中的 PDU 的配置的传输模式 每当FrIf的上层模块想要请求特定 PDU 的传输时,它都会调用 FrIf_Transmit 函数。调用 FrIf_Transmit的时候传递…

C语言--文件操作

目录前言什么是文件程序文件数据文件文件指针FILE结构的维护文件的打开和关闭文件的打开方式文件的顺序读写fputcfgetcfputsfgetsfprintffscanf文件流 标准输入/输出流sscanf和sprintf前言 在讲文件操作之前,我们先来思考这个问题: 我们为什么要使用文件…

大数据技术之Spark(一)——Spark概述

大数据技术之Spark(一)——Spark概述 文章目录前言一、Spark基础1.1 Spark是什么1.2 Spark VS Hadoop1.3 Spark优势及特点1.3.1 优秀的数据模型和丰富计算抽象1.3.3 spark的特点1.4 Spark 运行环境1.5 Spark运行架构1.5.1 Driver1.5.2 Executor1.5.3 Mas…

Java设计模式-4、适配器模式

适配器模式 在我们的应⽤程序中我们可能需要将两个不同接⼝的类来进⾏通信,在不 修改这两个的前提下我们可能会需要某个中间件来完成这个衔接的过程。 这个中间件就是适配器。所谓适配器模式就是将⼀个类的接⼝,转换成客 户期望的另⼀个接⼝。它可以让原…

【协议】03、深度解剖之HTTP协议

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的标准、约定或者规则的集合,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。使用的默认端口为80端口。浏览器的默认端口也是80端…

【操作系统】第二章:进程管理

第二章:进程管理 OVERVIEW第二章:进程管理一、进程与线程1.进程概述(1)进程PCB:(2)进程的组成:(3)进程的特征:2.进程的状态与转换(1&a…

基于储能进行调峰和频率调节研究【超线性增益的联合优化】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

算法练习随记(三)

1.全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入&#x…

如何用AI玩转IG广告,打造高互动的引流营销?

如何用AI玩转IG广告,打造高互动的引流营销?相信做引流的卖家,都有接触过IG广告,然而流量引过来了,怎么处理客户的私信? 私信对话是你与粉丝培养深度关系的管道,好的互动不仅能养成高黏着度的铁粉…