我已经尝试了几个星期,以找到一种在包含不同音乐流派的库中匹配/查找相似歌曲的方法。
我的第一次尝试是检测诸如 Tempo 之类的功能或歌曲中有多少低音来形成组,但我在这种方法(基于音量变化的节拍检测)方面并没有走得太远,因为不需要计算大约 20% 的歌曲节拍总是,有时是其中的 1/2 或 1/3,我无法实现。
经过几周的失败尝试后,我有了一个新想法,本文稍后将对此进行描述。简单地说,它通过获取文件的频谱样本来工作,制作类似文件的“平均频谱”来比较它们。背后的想法是,例如 Hardstyle 比一般的摇滚音乐有更多的低音,我还通过查看 Audacity 中的一些 Spectrums 来验证这一点。
- 文件 1:获取完整的文件 FFT 频谱(2048 样本大小 atm,幅度对数。缩放)
- 对所有频谱数组求和,取每个 Bin 的平均值
- 对其他文件执行相同操作,存储所有结果
- 列出文件 1 和其他文件之间的 FFT 值差异
- 平均文件 1 和文件 X 之间的差异
- 按这些平均值升序排序
- 具有最低“差异值”的歌曲被认为是相似的。
你们中的一些知识渊博的人可以告诉我这是否是实施我的想法的正确/好方法吗?