我正在构建一个系统,该系统使用机器学习来实时生成伴奏旋律,因为正在播放主要旋律。它使用一种回归神经网络,并在每一步都尝试预测伴随轨道上的下一个音符。在这一点上,我对使用midi文件感到满意。
我在查找培训数据时遇到了严重的问题。我最初的想法是从mididb等网站下载midi文件并将它们转换为csv,但问题是很难想出区分主旋律和伴奏旋律的方法即可。有时这是可能的,但是我再次希望伴奏音轨总是来自相同(或类似)的乐器,因为不同的乐器使用不同(音符的持续时间和音高从一个乐器到一个乐器非常不同其他等)这会让网络真的很困惑。
我在 the UCI Machine Learning repository 找到了Bach Corales。但是,这个数据集的问题在于它只有1个声音的旋律。我想要数据集有2个声音,其中一个是主音旋律,另一个是伴奏旋律。
我知道这很难,所以任何有关如何解决问题的建议都会非常感激。我有将midi文件转换为csv格式的工具,如果你能想到某些类型/类型的歌曲,那么很容易区分前导和伴奏曲目(以编程方式或手动方式),请告诉我。任何建议将不胜感激。
答案 0 :(得分:4)
激动人心的话题。除了您提到的集合之外,数据挖掘没有太多其他数据库。所以你需要有点创意。
您是否阅读过使用LSTM Reccurent神经网络的JürgenSchmidhuber的音乐创作方法?如果没有,你肯定应该这样做:
A First Look at Music Composition using LSTM Recurrent Neural Networks
Finding Temporal Structure in Music: Blues Improvisation with LSTM Recurrent Networks
您可以在his site
上浏览他的作品现在,第一篇论文创建了自己的数据集,您可以尝试询问作者。可以看到后一篇论文的训练集on their webpage to the study。
我认为最好的方法是生成自己的数据集:
1)请注意,他们使用了表格(pdf)和音频(不仅是midi,还有wav / mp3),因此您可能需要考虑从wav文件中提取和弦并手动标记可能的旋律和声。
2)您可以直接搜索单个分数而不是数据挖掘数据集。例如。 www.free-scores.com找到具体的分数。您可以编辑它们,将它们导入Sibelius或Finale并在这些程序中将它们转换为midi。最简单的方法是,你可以找到用Sibelius / Finale编写的乐谱,这样你就可以立即将它们导出到midi。
修改强>
还有一个关于你的和弦/旋律结构的评论。尽量在开始时保持简单。尝试保持像“First Look at ...”一样的格式:Melody + Chord Structure。没有仪器。在此工作之后,您可以尝试从多个乐器乐谱中获得相同的结果。如果这有效,请尝试从midi构建多个乐器乐谱。如果可行,请从真实的音频文件开始。