python音频处理库librosa教程(2) hop_length的选取

教程中很坑的一点,是让我们自定义hop_length,然后……what is hop_length?

现在,我们需要重新思考一下特征提取的密度,对于一个22050HZ的采样数据,显然,最后提取出来的特征序列不能比22050HZ还要密集。当最后特征等于22050Hz时,提取出来的特征当然就是自身,当特征频率更小,比如2205Hz,那么我们就可以将连续的10个数据进行做平均值、方差等等操作,使得特征长度缩小至1/10。

这种分窗口压缩数据的方式确实很容易想到,通过将连续的若干个帧数据进行一些操作,合并成一个向量,即可表示这一段时间每一帧的特征。而这个帧数变少的序列就是frame。

因为音频采样数据本身就是在一个波形上的一些随机点,这些随机点进行平均值这类传统操作操作没有任何意义!怎么办呢,其实结果很简单,既然我们希望对于一个窗口提取音频信号,那么我们直接对于这个窗口进行一次傅里叶变换就好了。因此这也就是librosa所做的,对于大部分样本提取函数,你都需要传入一个hop_length,作为傅里叶变换的长度,显然,而这个值一般选择2的整数次幂(为了可以通过快速傅里叶算法优化性能)。

对于不想想太多的我们,完全可以直接使用每个函数的默认hop_length进行编写。而教程中人为设置hop_length确实是非常有误导性,让人以为这是一个必须自己设置的量。

原创文章地址:【python音频处理库librosa教程(2) hop_length的选取】,转载时请注明出处mhy12345.xyz

《python音频处理库librosa教程(2) hop_length的选取》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据