0

我一直在尝试训练一个模型来从单音乐谱中生成序列。在互联网上,我发现了一些使用字符级 lstm 网络和音乐 ABC 表示法的人的例子(很多使用 karpathy 在 Torch 中的实现:http: //karpathy.github.io/2015/05/21/rnn-effectiveness /)。

虽然这看起来相当有效,但序列并没有包含尽可能紧凑的音乐信息。我的想法是将音乐信息直接表示为一系列音符。但是,一个音符有多个特征:音高、八度、持续时间、是否连接到下一个音符等。我不确定如何将这些信息正确表示为特征向量,也没有找到很多关于这个主题的信息.

我的数据集在音符音高和长度方面的多样性非常有限。它可能包含 3 个八度,10 个不同的音符时长,只有 4/4 拍号。然而,代表这些音符的每个不同组合会得到一个巨大的输入特征向量。

任何建议将不胜感激!

4

1 回答 1

1

只要您可以以文本格式对训练示例进行编码和解码,我认为您可以适应和使用字符级 lstm 方法。

例如,您可以用字母 (ABCDEFG) 表示每个音符,使用 + - 表示升音或降音,后跟 x、y、z 等代码表示八度音阶,数字 0 到 9 表示持续时间值,空格表示是否是否连接。

就像这个布鲁斯即兴演奏:

Cx1 E-x1 Cx1 E-x1 Fx4 Gx2 B-x2 Cy1Cy1Cy1Cy1, etc.

有了足够的训练数据,RNN 将学习音符的这种句法和语法,以及导致“音乐”序列的音符之间的模式和关系……这取决于你用来训练它的音乐类型。

于 2016-01-14T01:53:19.930 回答