训练识别音乐和弦及音程的神经网络

在学校,我们需要听音程和和弦,并确定它们的名称。我对神经网络非常感兴趣。因此,我想用Python创建一个神经网络,它可以听取音频并输出名称。我曾经学到,对于音乐我需要用到LSTM。对于这个目的我是否也需要LSTM,以及我应该如何开始呢?有谁可以教我如何实现我的目标吗?


回答:

首先,你需要明确定义你想要解决的任务:你是想对整首音乐/曲目进行分类,还是想对曲目/曲目的片段进行分类?这将影响你解决任务所需使用的架构。我将简要介绍每种任务的处理方法。

  • 对曲目进行分类:音乐录音是时间序列,你需要为每段录音标记标签。你最初想到使用LSTM(或一般意义上的RNN)是一个很好的想法。只要将你的录音转换成向量作为LSTM网络的输入序列,并让它输出每个类别的概率。正如评论中所指出的,在频域工作可能是有益的。然而,仅使用整个曲目的傅里叶变换很可能会丢失重要信息,因为时间频率信息会丢失。更好的方法是使用短时傅里叶变换(STFT)或梅尔频率倒谱系数(MFCC,这里有一个计算它们的Python库:libROSA)。简单来说,这些方法会将你的时间序列转换成某种“图像”,即二维频谱,而对于图像分类任务,卷积神经网络(CNNs)是首选方法。
  • 对片段进行分类:如果你想对曲目的片段进行分类,你需要为歌曲中的每个时间框架提供标签。假设你的歌曲时长为3分钟,采样频率为60 Hz,你的歌曲向量表示将有3*60*60 = 10800个时间框架,因此你需要为每个条目提供一个类别标签(和弦或其他)。同样,你可以使用LSTM,将你的向量作为输入序列,让你的网络生成与歌曲长度相同的输出序列,并与类别标签进行比较。你也可以使用前面提到的STFT或MFC系数作为输入,并利用频率信息,现在你将为每个时间框架提供一个频谱作为输入。

我希望这些广泛的想法能帮助你更接近解决你的任务。对于实现细节,我建议你参考keras文档和网络上无数的教程。

免责声明:

我的音乐理论知识相当有限,所以请对我的回答持保留态度,并随时纠正我或要求澄清。祝你玩得开心

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注