如何将声音作为神经网络的输入?

5
我计划用人工神经网络构建一款软件,可以将音乐分类为好的或坏的。为此,我需要将音频转换为一些数字值,以作为NN输入。因此,在对NN进行训练之前,我首先下载了Billboard Hot 100歌曲(我认为应该被分类为好的音乐),并且还下载了一些噪音音频文件(它们将被分类为坏的音乐)。然后我将它们转换为.wav格式,然后将每个文件拆分成多个长度为2秒的.wav文件。我打算使用快速傅里叶变换将这些音频剪辑转换为频率 - 幅度对,但问题是,即使我们使用2秒的片段,其FFT也会生成约100,000个这样的对。对数千个音频文件执行此操作会生成太大的数据集和太多的特征。
我想知道是否有任何方法可以缩短此数据集,同时保留其中的“音乐精华”,以便做出更好的预测?还是说我应该使用其他算法/流程?

1
计划构建一款软件。好的,那么你可以回来并提供代码,我们可以帮助你修复。例如:“这是我用来做x的代码,如何使其更高效/更小或更好地定义y”等等。 - Mark Schultheiss
这不是那个讨论的地方。此外,您将使用2秒钟的“好”音乐片段来训练您的CNN,而不是整首歌曲。这意味着您将拥有一台非常擅长识别2秒钟长的“好”音乐片段的机器,但不是一台擅长识别“好”音乐曲目的机器。 - ACascarino
请注意,这里的“好”并不是指“好”,而是指“类似于当前的公告牌热100”(随时间变化)。对我来说,“好”与我的朋友查理大不相同。 - Mark Schultheiss
大多数Python中的音频处理库不够强大,无法生成如此长的剪辑的FFT。如果2秒长的剪辑可以生成100,000个FFT对,那么想象一下3分钟的歌曲会产生多大的数据量? - Tarun Khare
这个问题非常广泛,就像问“我怎么建造X”,其中X可能是Twitter给我播放一首歌,Google搜索好听的歌曲,Dreads Song Mapper,Derddeds附近有人演奏好听歌曲等等。这就是你的价值所在(你找出了如何做到这一点),因此你的努力具有价值,即你成为了这个/你所需算法的专家,例如如何快速/高效地确定“好”的程度,对其进行排名等等。请记住,这里的增值似乎确实是你如何解决这个问题,我们看到了这一点,但我们要付出的努力并不轻松。 - Mark Schultheiss
显示剩余4条评论
1个回答

6

首先,您可以提取各种音频特征,例如:

1)紧凑度。
2)幅度谱。
3)梅尔倒谱系数。
4)音高。
5)功率谱。
6)均方根。
7)节奏。
8)谱心。
9)谱通量。
10)谱衰落点。
11)谱变异性。
12)过零率。

生成特征集之后,您有两个选择:

A)通过取平均值[和/或方差]来聚合歌曲的特定特征,将整个特征串联起来,然后将其馈入人工神经网络并执行分类任务。

B)使用递归神经网络进行分类任务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接