我一直在尝试训练模型以从单声道乐谱中生成序列。在互联网上,我找到了一些人们用字符级lstm网络和音乐ABC表示法做的例子(很多人使用karpathy在Torch中的实现:http://karpathy.github.io/2015/05/21/rnn-effectiveness/)。
虽然这似乎相当有效,但序列不包含尽可能紧凑的音乐信息。我的想法是将音乐信息直接表示为一系列音符。但是,音符有多个功能:音高,八度音,持续时间,它是否连接到下一个音符等。我不知道如何正确地将此信息表示为特征向量,并且没有找到关于此主题的大量信息
我的数据集在音符音高和音长方面的差异非常有限。它可能包含3个八度音阶,10个不同音符持续时间,仅4/4时间签名。但是,表示这些音符的每个不同组合将获得巨大的输入特征向量。
非常感谢任何建议!
答案 0 :(得分:1)
只要您能够以文本格式对训练样例进行编码和解码,我认为您可以调整并使用字符级lstm方法。
例如,您可以用字母表示每个音符(ABCDEFG)使用+ - 表示尖锐或平坦,然后按照像x,y,z这样的代码表示八度音程,数字0到9表示持续时间值和空格无论是否连接。
喜欢这个蓝调riff:
Cx1 E-x1 Cx1 E-x1 Fx4 Gx2 B-x2 Cy1Cy1Cy1Cy1, etc.
有了足够的训练数据,RNN将学习这种音符的语法和语法,以及导致“音乐”序列的音符之间的模式和关系......取决于你用来训练它的音乐类型。 / p>