当前位置: 首页 > 后端技术 > Python

深度学习工具audioFlux--一个系统的音频特征提取库

时间:2023-03-25 22:35:46 Python

目录时频变换频谱重排倒谱系数反卷积频谱特征音乐信息检索audioFlux是一个用Python和C实现的库,提供了一个系统全面的音频域,Multi-维度特征提取与组合,结合各种深度学习网络模型,针对音频领域的业务研发,时频变换、频谱重排、倒谱系数、反卷积、频谱特征、音乐信息检索等六个方面对其相关功能的简要说明。时频变换audioFlux在时频分析领域包括以下通用变换(支持所有后续的频率标度类型)算法:BFT-基于傅立叶变换。等效短时傅里叶变换(STFT),一般以此为基础实现众所周知的梅尔谱,时域重叠平移加窗的傅里叶变换,一般重叠变换长度为1/4,高斯window也叫GaborTransformation,可以调整窗函数的长度,方便模拟时频分析的特性。BFT算法除了提供标准的mel/bark/erb谱外,还支持mel等尺度类型的复谱,支持mel等尺度谱的重排。NSGT-非平稳Gabor变换。类似于带高斯窗的STFT(短时傅立叶变换),不同的是窗函数的长度与t建立了非平稳关系。与STFT相比,它可以更好地分析稳态信号中的非稳态,更好的起始端点检测效果往往基于这种频谱计算,可以作为一种高效的方式实现CQT。该算法中NSGT变换的倍频程频率标度类型是CQT的高效实现。CWT-连续小波变换。对于多分辨率时频分析,从数学的角度看,傅里叶变换的基是一个无穷大的sin/cos函数,而小波变换的基是一个有限的小波函数。波函数的一般表示为$$\psi_{a,b}(t)=\frac{1}{\sqrt{a}}\psi(\frac{t-b}{a})$$其中,a决定了频域缩放尺度、b时间平移尺度和建立时间,与STFT固定的时频分辨率相比,具有低频段频率分辨率高、高频段时间分辨率高的特点。非常适合非稳态信号分析,支持常用的Morse、Morlet、Bump、Pual、Meyer等波函数类型。PWT-伪小波变换。CWT高效算法基于傅里叶变换实现的小波变换效果,计算filterBank和频域数据,对频域小波函数进行点运算。如果把小波函数看成是一个特殊的窗函数,可以产生类似CWT的效果,即Pseudo-wavelettransform,如果窗函数建立可调频带参数(库中还没有实现),可以等价到小波变换。以上变换函数支持以下所有频率标度类型:linear-标准线性频带频谱图,短时傅里叶变换结果的一半是线性标度频谱图,标度为采样率/采样样本,即最小频率域名解析。linsapce-自定义频段范围的频谱图,频段可以大于线性频段,相当于时域下采样。mel-梅尔标度频谱图,音频中最常用的频谱图类型之一,基于人类听觉的低频敏感度和高频不敏感度,以及类似对数的压缩线性标度。bark-树皮标度谱图,比梅尔标度更符合人类听觉。erb-等效矩形带宽频谱图,比巴克标度更容易被人耳听到。octave-八度音阶谱图,适合音符对数刻度的谱图。log-对数刻度谱图。下面是BFT变换下不同频率尺度的简单对比图。下面是CWT不同波函数的简单对比图。以下算法可以作为独立的变换(不支持多种频率标度类型):CQT-constantQtransformation,一种具有恒定频带比的变换,这种变换常用于音乐中,通常基于对的计算用于和声分析的色度特征。VQT-可变Q变换。ST-S变换/斯托克韦尔变换,类似于小波变换,是小波变换思想的极端特例,可用于检测和分析一些极端突变信号,如地震、海啸等。与NSGT相比,还增加了高斯窗,但是它建立了f和t之间的Scaling关系。FST-快速S变换,S变换的离散基数2实现。DWT-离散小波变换,相对于CWT,一种基于频率的2变换。WPT——WaveletPacketTransform,也称为WaveletPacketDecomposition,可以对信号进行详细的分解和近似。它是一种信号分离和合成的方式,可用于降噪、模态结构分析等服务。SWT-Steady-statewavelettransform,类似于小波包变换,分解后的信号与原始信号长度相同。下面是CQT和NSGT变换下不同尺度的简单对比图。显然,NSGT-Octave比CQT更清晰、更专注。色度是基于频谱的更高级的功能。属于音阶系统范畴。非音乐声音的音阶比乐音音阶差。目前支持的chroma特征的频谱类型:CQTBFT-linearBFT-octave以下是Chroma的简单对比图。显然,CQT-Chroma在其他光谱类型下优于色度。注:不同频率标度的频谱有其各自的应用价值。对于某些业务场景,可以将这些不同尺度的频谱图组合成一个大的特征集来参与网络的训练。谱图根据abs、square、log等非线性运算被称为振幅谱、功率谱、对数谱/dB谱,深度学习中一般使用对数谱。频谱重排同步压缩或重新分配方法是一种锐化、高清频谱图的技术,可以提高频谱的清晰度和准确性。audioFlux包括以下算法:reassign-用于STFT变换重排,也可以重排基于BFT的mel/Spectrum数据,例如bark/erb。synsq-CWT频谱数据重排。wsst-CWT变换重排。下面是一个频谱图和相应的重新排列的效果图。显然,重排后的效果要好于重排前的效果。可能有人会问,既然重排效果那么好,是不是可以根据上次的结果重排多次呢?这是如何运作的?audioFlux重排相关算法提供了多种重排机制。具体效果请参考文档进行试用对比。倒谱系数类似于梅尔频谱的mfcc(梅尔频率倒谱系数)。这个特征在业务上属于去音高,是反映发音物理结构的特征。它通常用于语音识别相关服务,可用于不同的仪器分类。、结构细化等商业模式培训。在整个audioFlux项目的频谱体系中,除了mfcc和对应的delta/deltaDelta外,支持所有类型的频谱倒谱系数,即xxcc:lfccgtccbfcccqcc...不同的频谱倒谱系数代表不同的频谱类型detones高度相关,每个有自己的应用价值。比如gtcc有一篇论文反映语音识别中的音素效果优于mfcc,而cqcc在乐器的分类和一些结构上的细化上远优于mfcc。下面是吉他音频的不同频谱倒谱系数的比较。很明显,cqcc在吉他音色震荡阶段表现最好,gtcc在随后的稳定阶段表现更好。反卷积在数学上,反卷积是卷积的逆运算,可以作为信号分解的一种算法。对于频谱,分解后的两个数据可以表示为共振峰(formant)spectrogram和pitchspectrogram,相对于mfcc,formant是发音物理结构的一个更普遍的特征。在audioFlux中,支持所有类型频谱的反卷积操作,其价值在于对于音调相关的业务,去除共振峰干扰后模型推断可以更加准确;对于具有结构相关特征的服务,可以去掉pitch,避免模型的训练被它干扰。下面是吉他880hz音频的梅尔频谱图的反卷积渲染。您可以看到吉他的共振峰部分(音色)和音高部分之间明显分离的效果。频谱特征包括audioFlux中与频谱相关的数十种特征,包括基于音色的特征、基于统计的特征、基于频谱通量的特征、基于奇异值的特征等。如:flatnessskewnesscrestslorolloff……centroidspreadkurtosis……fluxhfcmkl…………还有一小部分,关于audioFlux提供的所有频谱特征,更具体的功能描述,例如,公式等,请参考官方文档。下面是一些光谱特征对比图。音乐信息检索audioFlux在mir相关领域提供音高估计、起音检测、hpss(和声打击乐分离)等相关业务算法。音高估计包括基于YIN、STFT等的相关算法,下面是一个发声练习音高的检测效果图。红色是实际参考音高,蓝色是估计音高。Onsetdetection包括基于Spectrumflux、novelty等的相关算法,下面是一段吉他弹奏伴奏的端点检测效果图。中间时域图像中的红色虚线由端点检测位置叠加。hpss包括中值滤波、非负矩阵分解(NMF)等算法。以下是包括吉他演奏和节拍器音频的分离效果。上半部分是时域效果,下半部分对应频域效果。