Essentia 和 Librosa 生成 MFCC 的方式有什么区别?
我从事音乐流派分类项目已经有一段时间了,从文献来看,我认为 MFCC 是最好的功能。尽管有各种库可以实现特征提取,但我的重点是librosa和essentia。 免责声明: 这不是一篇旨在回答问题的文章,而只是更清楚地说明为什么要问这个问题并得到回应。 MFCC MFCC 代表梅尔频率倒谱系数,它是一种基本的音频特征。 MFCC 使用 MEL 标度将频带划分为子频带,然后使用离散余弦变换 (DCT
我从事音乐流派分类项目已经有一段时间了,从文献来看,我认为 MFCC 是最好的功能。尽管有各种库可以实现特征提取,但我的重点是librosa
和essentia
。
免责声明:
这不是一篇旨在回答问题的文章,而只是更清楚地说明为什么要问这个问题并得到回应。
MFCC
MFCC 代表梅尔频率倒谱系数,它是一种基本的音频特征。 MFCC 使用 MEL 标度将频带划分为子频带,然后使用离散余弦变换 (DCT) 提取倒谱系数。 MEL 标度基于人类区分频率的方式,这使得处理声音非常方便。
它是一种由听众判断为彼此距离相等的音高等级。由于人类感知声音的方式,MEL 标度是非线性标度,并且音高之间的距离随着频率的增加而增加。
利布罗斯
librosa
是 Python 中用于特征提取和处理数据的 API。librosa.feature.mfcc
是一种通过提供参数来设置帧数、跳长、MFCC 数量等来简化获取 MFCC 的过程的方法。根据设置的参数,返回一个二维数组。
本质
essentia
是一个全功能的工作流环境,用于高级和低级功能,便于音频输入、预处理和输出的统计分析。它是用 C++ 编写的,带有 Python 绑定,并以 YAML 或 JSON 格式导出数据。
essentia.standard.MFCC
函数有一个参数来固定 MFCC 中的系数数量,但一次性处理整个文件,返回一维数组。然而,该库也有一个FrameGenerator
方法,该方法接受其他参数,这可能使其产生与librosa
相似的结果。
使 Essentia 的 MFCC 像 Librosa
我使用FrameGenerator
方法设置其他参数,如跳长、帧数和 MFCC 数,与 librosa 使用的相同。此外,将两个库的采样率和窗口类型修改为相同。
然后我使用这两个函数为 20 个轨道生成相同形状的 MFCC。其中两个在下面可视化。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--7IwHOcH8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/inqwzch7knk0ka4stgjn.jpg)[](https://res.cloudinary.com/practicaldev/image/fetch/s--L0dWErBJ--/ c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h4gp0jixma5c37lepm5p.jpg)
[](https://res.cloudinary.com/practicaldev/image/fetch/s--Ti_wkVAG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/sgamebtx4yy604yqf7z1.jpg)[](https://res.cloudinary.com/practicaldev/image/fetch/s--sdT8Wvaz--/ c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iv61gb0yq6ko3rmby87e.jpg)
我的观察是,即使进行了这种修改,essentia
仍然比librosa
快大约 2 倍(这是我想要比较的主要指标)。不过,我也注意到了别的东西。 MFCC 看起来不一样。
Librosa 和 Essentia 的 MFCC 有何不同?
在看到它们之间的视觉差异后,我发现了两个 MFCC 之间的余弦相似度,目的是对其进行量化。对于显示的两个曲目,相似之处是:
-
你的非洲:
0.9019551277160645
-
所以到哪里:
0.9127510786056519
一般来说,相似度在0.90
到0.94
之间。
如果您知道 MFCC 之间存在这种差异的原因,或者可以识别出我没有考虑的参数,请不要犹豫,发表评论。谢谢。
参考文献:
MFCC实现及教程
实用密码学
更多推荐
所有评论(0)