我应该为这个音乐分类系统选择什么样的算法?

数据挖掘 机器学习 分类 麻木的 显卡
2022-03-12 11:02:42

我想到了一个程序,用于分析音乐的短片段,将它们归类为“好”或“坏”。这将是一个更大的程序的一部分,该程序搜索更大的好短语和整个片段。

现在的想法是获取音乐片段 X,并将其与已知的良好样本片段 G_1、G_2 等进行比较,并获得与每个片段的相似度等级。然后将其与已知的坏片段 B_1、B_2、B_3、.. 等进行比较。

“好”的音乐当然是主观的,但是这个程序可以使用我根据自己的喜好手动优化的 G 和 B 样本。

好的音乐就是至少与 G 中的一个相似,而与 B 中的任何一个都不相似的音乐。与 G 和 B 都具有高度相似性的片段可能是坏的:B 具有否决权。

那么,如何判断相似度呢?音乐片段可以用类似图像的像素矩阵来表示。纵轴是音高,横轴是时间。如果音高 P_1 的音符出现在时间 T_beg 和 T_end 之间,那么这就像在 (T_beg, P_1) 和 (T_end, P_1) 之间画一条小线。

在某种意义上,要分类的样本 X 可以与已知样本 K 进行卷积。它可以向上或向下转置(垂直移动)或在时间上向左或向右移动(或在时间上拉伸,或其他变化),并且每个转置将叠加在 G 或 B 样本上。我对卷积不太熟悉,但我认为重叠像素会相乘并取所有像素的总和。最亮结果像素的转置很好地表明了 X 与 K 样本的相似程度:它的大小变成了相似度的度量。

暗像素无关紧要。大量的暗像素并不会使音乐变差。这只是意味着在这些位置找不到真正的模式。与已知坏片段的明亮匹配是使音乐变坏的原因。

我想使用 NumPy 或针对矩阵或图像计算优化的类似语言来执行这些计算。

我可以知道这种操作是否有名称,以及在哪里寻找它的有效实现?使用 GPU 提高速度将是一个奖励。

1个回答

有两种高级方法(方法 2 更适合我研究的音乐分类问题):

  1. 信号处理+CNN:信号处理的输出保存为图像。模型使用图像作为输入。

图片来源:http://slazebni.cs.illinois.edu/spring17/lec26_audio.pdf

本文很好地介绍了该方法:https ://arxiv.org/ftp/arxiv/papers/1712/1712.02898.pdf

图片来源:https://medium.com/datadriveninvestor/audio-and-image-features-used-for-cnn-4f307defcc2f

关于此的几篇文章:https ://www.codementor.io/vishnu_ks/audio-classification-using-image-classification-techniques-hx63anbx1,https : //medium.com/datadriveninvestor/audio-and-image-features-用于 cnn-4f307defcc2f

  1. 原始音频 + 循环网络:https ://deepmind.com/blog/wavenet-generation-model-raw-audio/,https : //arxiv.org/pdf/1606.04930.pdf,https : //arxiv.org/pdf /1612.04928.pdf , https://gist.github.com/naotokui/12df40fa0ea315de53391ddc3e9dc0b9

GPU 将使项目更容易,但不是必需的。