开源项目audioFlux: 针对音频领域的深度学习工具库

news2024/11/17 5:54:26

audioFlux是一个Python和C实现的库,提供音频领域系统、全面、多维度的特征提取与组合,结合各种深度学习网络模型,进行音频领域的业务研发,下面从时频变换、频谱重排、倒谱系数、解卷积、谱特征、音乐信息检索六个方面简单阐述其相关功能。

项目地址: https://github.com/libAudioFlux/audioFlux

时频变换

audioFlux在时频分析领域中,包含以下通用变换(支持后续所有频率刻度类型)算法:

  • BFT - 基于傅里叶变换。

    等效短时傅里叶变换(STFT),一般基于此实现大家熟知的mel频谱,时域上重叠平移加窗的傅里叶变换,一般重叠变换长度1/4,加高斯窗又称做Gabor变换,可以调整窗函数长度来方便的模拟时频分析特点,BFT算法除提供标准的mel/bark/erb等频谱外,还支持mel这些刻度类型的复数谱,同时支持mel等刻度频谱的重排。

  • NSGT - 非平稳 Gabor 变换。

    类似加高斯窗的STFT(短时傅里叶变换),不同之处在于窗函数长度和t建立非平稳关系,相对STFT可以实现稳态信号中非平稳状态较好的分析,较好的onset端点侦测效果常基于此类频谱计算,同时可以做为实现CQT的一种高效方式,本算法中NSGT变换的octave频率刻度类型即CQT的高效实现。

  • CWT - 连续小波变换。

    多分辨率时频分析,从数学上看,傅里叶变换的基底是无限的sin/cos函数,而小波变换基底是有限的很小的波函数,波函数的通用表示形式为ψa,b(t)=1aψ(t−ba)其中a决定频域缩放尺度,b时间平移尺度,建立时频的自适应分析,相对STFT的固定时频分辨率,具有低频段频率分辨高、高频段时间分辨高特点,非常适合非稳态信号分析,支持常用的Morse、Morlet、Bump、Pual、Meyer等波函数类型。

  • PWT - 伪小波变换。

    基于傅里叶变换实现的类似小波变换效果,CWT的高效算法为频域小波函数计算filterBank和频域数据做dot运算,如果把小波函数当做一种特殊的窗函数,可以产生类CWT效果,即伪小波变换,如果窗函数建立可调频带的参数(库中尚未实现),可以等效小波变换。

以上变换功能支持下面所有频率刻度类型:

  • linear - 标准线性频带频谱图,短时傅里叶变换结果取一半即linear刻度频谱图,刻度为采样率/采样样本,即最小频域分辨率。
  • linsapce - 自定义频带范围的频谱图,频带可以大于linear频带,相当于时域降采样。
  • mel - 梅尔标度频谱图,音频中最常用的频谱图类型之一,基于人耳听觉低频敏感、高频不敏感特性,类log压缩linear刻度。
  • bark - 巴克刻度频谱图,比梅尔刻度更符合人耳听觉。
  • erb - 等效矩形带宽频谱图,比巴克刻度更符合人耳听觉。
  • octave - 八度刻度频谱图,符合乐音对数刻度的频谱图。
  • log - 对数刻度频谱图。

下面是一个BFT变换下不同频率刻度的简单对比图。

下面是一个CWT不同波函数的简单对比图。

以下可用作独立变换的算法有(不支持多种频率刻度类型):

  • CQT - 常量Q变换,频带比为常数的变换,音乐中常用的此变换,常基于此计算chroma特征用于分析和声。
  • VQT - 可变Q变换。
  • ST - S变换/Stockwell变换,类似小波变换,是小波变换思想的一种极端特例,可用于侦测分析一些极端的突变信号如地震、海啸等,相比NSGT同样也是加高斯窗,但建立起f和t的缩放关系。
  • FST - 快速S变换,S变换的离散基2实现。
  • DWT - 离散小波变换,相对CWT而言,频率基于2的变换。
  • WPT - 小波包变换,又称小波包分解,可以对信号做细节和近似分解,是信号分离和合成的一个方式,可用于降噪、模态结构分析等业务。
  • SWT - 稳态小波变换,类似小波包变换,分解出的信号和原信号长度一致。

下面是一个CQT和NSGT变换下不同刻度的简单对比图。

很明显,NSGT-Octave比CQT要清晰、聚焦一些。

chroma是基于频谱的更高级特征,属于乐音刻度体系范畴,针对非乐音的刻度要差于乐音刻度,目前支持chroma特征的频谱类型:

  • CQT
  • BFT-linear
  • BFT-octave

下面是一个Chroma简单对比图。

很明显,CQT-Chroma优于其它频谱类型下的chroma。

注:

  1. 不同频率刻度的频谱都有各自的应用价值,针对某些业务情况,这些不同刻度频谱图可以图组合起一个大的特征集合参与网络的训练。
  2. 频谱图按值的类型abs、平方、log等非线性运算称为幅值谱、功率谱、对数谱/dB谱,深度学习中一般使用对数谱多一些。

频谱重排

同步压缩或重新分配方法是一种用于锐化、高清频谱图的技术,可以提升频谱的清晰度和精度,audioFlux包含以下算法:

  • reassign - 针对STFT变换重排,基于BFT的mel/bark/erb等频谱数据同样实现重排。
  • synsq - CWT频谱数据重排。
  • wsst - CWT变换重排。

下面是一个频谱图和对应重排后的效果图。

很明显,重排后的效果要优于重排前的效果。
可能有人会问,既然重排效果如此好,可以基于上次结果循环多次重排吗?这样效果如何?audioFlux重排相关算法提供多次重排机制,具体效果可以参照文档做下尝试对比。

倒谱系数

类似针对mel频谱的mfcc(梅尔频率倒谱系数),这个特征业务上属于去音高,属于反映发音物理结构的一个特征,典型的用于语音识别相关业务,可用于不同乐器分类,结构细化等业务模型训练。

整个audioFlux项目频谱体系中,除mfcc以及相应delta/deltaDelta外,支持所有类型的频谱倒谱系数即xxcc:

  • lfcc
  • gtcc
  • bfcc
  • cqcc
  • ......

不同频谱的倒谱系数,都代表着不同频谱类型的去音高相关,都有各自的应用价值,比如gtcc有论文反映在语音识别业务中音素效果要比mfcc好一些,cqcc针对乐器的分类和一些结构细化业务要远优于mfcc等等。

下面是针对吉他乐音音频的不同频谱倒谱系数的对比图。

很明显,在吉他乐音起振阶段,cqcc表现最好,后续持续稳定阶段,gtcc相比较好。

解卷积

在数学中,解卷积是卷积的逆运算,可以做为信号分解的一种算法,针对频谱而言,分解后的两个数据可以表示为formant(共振峰)频谱图和pitch频谱图,相比mfcc而言,formant是一种更为通识的发音物理结构特征。

在audioFlux中,支持所有类型频谱的解卷积操作,所发挥的价值在于,针对音高相关的业务,可以去除共振峰干扰后模型推断更准确;针对结构相关特征的业务,可以去除音高避免模型的训练受其干扰。

下面是针对吉他880hz音频的mel频谱图的解卷积效果图。

可以看到吉他共振峰部分(音色)和音高部分明显的分离效果。

谱特征

在audioFlux中,包括数十种spectral相关的特征,包括基于音色相关特征,基于统计相关特征,基于光谱通量相关特征,基于奇异值相关特征,等等。

如:

  • flatness
  • skewness
  • crest
  • slop
  • rolloff
  • ......
  • centroid
  • spread
  • kurtosis
  • ......
  • flux
  • hfc
  • mkl
  • ......
  • ......

等等一小部分,关于audioFlux所提供的所有谱特征,更具体的功能描述、例子、公式等请参照官方文档。

下面是一些谱特征对比图。

音乐信息检索

audioFlux提供mir相关领域pitch估算、onset侦测、hpss(谐波打击乐分离)等相关业务算法。

pitch估算包含基于YIN,STFT等相关算法,下面是针对一段人声练习音高的侦测效果图。

红色为实际参照音高,蓝色为估算音高。

onset侦测包含基于Spectrum flux, novelty等等相关算法,下面是一段吉他扫弦伴奏的端点侦测效果图。

中间时域图像红色虚线为端点侦测位置叠加而成。

hpss包含中值滤波,非负矩阵分解等(NMF)等算法,下面是一段包含吉他弹奏和节拍器音频的分离效果,上半部分时域效果,下半部分对应频域效果。

项目地址: https://github.com/libAudioFlux/audioFlux 

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

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

相关文章

当 Spark 任务出现数据倾斜的问题时该如何处理呢?

前言 最近一位数仓同学问我,当 Spark 任务出现数据倾斜的问题时该如何处理呢?那么今天就来讲一下遇到了数据倾斜问题时处理的方式方法。 1)数据倾斜的定义 Spark 中的数据倾斜问题主要指 shuffle 过程中出现的数据倾斜问题,是由于不同的 key 对应的数据量不同导致的不同t…

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 27 日论文合集)

文章目录 一、检测相关(6篇)1.1 Memory-Efficient Graph Convolutional Networks for Object Classification and Detection with Event Cameras1.2 PNT-Edge: Towards Robust Edge Detection with Noisy Labels by Learning Pixel-level Noise Transitions1.3 Controllable Gu…

C/C++程序的翻译与执行

🚀write in front🚀 📜所属专栏:> c语言学习 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是…

(4)将固件加载到已有ArduPilot固件的主板上

文章目录 前言 4.1 将自动驾驶仪连接到电脑 4.2 选择COM端口 4.3 安装固件 4.4 使用测试版和开发版 前言 这些说明将告诉你如何将最新的固件下载到已经安装了 ArduPilot 固件的自动驾驶仪硬件上。这个过程将使用 Mission Planner 地面控制站。请参阅将固件加载到没有 Ard…

AttributeError: ‘DataFrame‘ object has no attribute ‘iteritems‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Vue3+Vue2表单点击加号实现多选效果(以逗号分割传递后端参数,及数据回显处理)

示图如下: 一、Vue3举例 嵌套在form表单,利用elment-ui行布局,将输入表单填充至内容区域<el-row type="flex" v-for="(domain, index) in dataForm.dataValue" :key&#

力扣 316. 去除重复字母 C++

目录 题目要求 思路 力扣提交AC代码 C代码 题目要求 删去一些重复元素保持原有顺序使字典序最小 思路 遍历一个字符串 并维护一个栈如果当前字符已经再栈内就直接跳过&#xff08;具体见程序&#xff09;当 栈顶元素 > 当前元素&#xff0c;那么将栈顶出栈&#xff0…

【利诱和强制分享下载】规则修改指引

代码审核环节&#xff0c;将会对小程序运营的内容进行核实是否存在阻断功能&#xff0c;损害用户体验。 常见利诱诱导类型&#xff1a; 1、利诱下载APP 小程序内出现不断弹窗、频繁提示诱导用户下载APP&#xff0c;强制用户必须下载APP才能体验完整功能服务。 示例&#xf…

靶机精讲之NYX

主机发现 端口扫描 服务扫描 -sV漏洞脚本扫描 UDP扫描 那些开发那些关闭 脚本扫描 或许有价值.php web渗透 看源码 目录爆破 没有扫到有价值的信息 继续web渗透&#xff0c;访问admin目录 继续目录扫描 sudo gobuster dir -u http://192.168.10.206 -x txt,sql,php,jsp -w…

Learning-Rate-Free Learning by D-Adaptation

考虑无约束凸Lipshcitz优化问题: min ⁡ x ∈ R n f ( x ) . \min_{x\in\mathbb{R}^{n}}f(x). x∈Rnmin​f(x). 最常用的优化方法是子梯度下降(Subgradient descent): x k 1 x k − γ k g k , x_{k1}x_{k}-\gamma_{k}g_{k}, xk1​xk​−γk​gk​, 其中 g k ∈ ∂ f ( x …

芯旺微冲刺IPO,车规级MCU竞争白热化下的“隐忧”凸显

在汽车智能化和电动化发展带来的巨大蓝海市场下&#xff0c;产业链企业迎来了一波IPO小高潮。 日前&#xff0c;上海芯旺微电子技术股份有限公司&#xff08;以下简称“芯旺微”&#xff09;在科创板的上市申请已经被上交所受理&#xff0c;拟募资17亿元&#xff0c;用于投建车…

网络控价与品牌维权的关系

线上平台存在低价链接&#xff0c;品牌要去治理&#xff0c;那就是控价&#xff0c;控价的目的不仅仅是打击低价&#xff0c;其实是为了稳定渠道&#xff0c;只有渠道中的价格可控了&#xff0c;品牌的销量、价值才能最大化&#xff0c;品牌也有更多的精力去拓展渠道&#xff0…

【腾讯云Cloud Studio实战训练营】使用Cloud StudioFlutter完成全平台博客网站的搭建

使用Cloud Studio&Flutter完成全平台博客网站的搭建 文章目录 使用Cloud Studio&Flutter完成全平台博客网站的搭建前言一.Cloud Studio二.应用场景2.1快速启动项目2.2实时调试网页2.3远程访问云服务器 三.登录注册四.工作空间的创建与使用4.1创建工作空间4.1.1填写工作…

AIGC“弄脏”互联网 大模型“课本”遭污染

“AI制造”充斥互联网&#xff0c;连“真人小姐姐”也可以批量生成。随着生成式人工智能的爆发&#xff0c;一个可怕的现象出现&#xff1a;AI正在污染整个互联网。 知乎成为生成无脑答案的重灾区&#xff0c;这些内容描述简短、概括性十足&#xff0c;细看逻辑混乱、错误百出…

实战:工作中对并发问题的处理

大家好&#xff0c;我是 方圆。最近在接口联调时发生了数据并发修改问题&#xff0c;我想把这个问题讲解一下&#xff0c;并把当时提出的解决方案进行实现&#xff0c;希望它能在大家以后在遇到同样的问题时提供一些借鉴和思考的方向。原文还是收录在我的 Github: enthusiasm 中…

ORB_SLAM3 TrackReferenceKeyFrame

TrackReferenceKeyFrame 使用条件&#xff1a; 运动模型为空并且imu未初始化&#xff0c;说明是刚初始化完第一帧跟踪&#xff0c;或者已经跟丢了当前帧和重定位帧间隔很近&#xff0c;用重定位帧来恢复位姿恒速云端模型跟踪失败 1.计算当前帧的描述子的Bow向量 mCurrentFr…

如何使用ArcGIS Pro制作间断标注等高线

如果直接对ArcGIS Pro生成的等高线进行标注&#xff0c;默认情况下是标注在等高线上&#xff0c;这样效果不是很明显也不是很美观&#xff0c;我们可以对默认的等高线标注进行处理&#xff0c;使其标注范围内的等高线不显示&#xff0c;这里为大家介绍一下这种间断标注等高线的…

SpringBoot的static静态资源访问、参数配置、代码自定义访问规则

目录 1. 静态资源1.1 默认静态资源1.2 Controller高优先级1.3 修改静态资源的URL根路径1.4 修改静态资源的目录1.5 访问webjars依赖包的静态资源1.6 静态资源的关闭1.7 静态资源在浏览器的缓存1.8 静态资源实战1.9 通过代码自定义静态资源访问规则 1. 静态资源 查看源码如下&a…

RLHF 技术:如何能更有效?又有何局限性?

编者按&#xff1a;自ChatGPT推出后&#xff0c;基于人类反馈的强化学习(RLHF)技术便成为大模型构建和应用人员关注的热点。但该方法一些情况下效果却差强人意&#xff0c;有些基础模型经RLHF调优后反而表现更差。RLHF技术的适用性和具体操作细节似乎成谜。 这篇文章探讨了基于…