一种midi多轨序列表示方法和应用

文档序号:1217190 发布日期:2020-09-04 浏览:18次 >En<

阅读说明:本技术 一种midi多轨序列表示方法和应用 (MIDI multi-track sequence representation method and application ) 是由 任意 李晨啸 张克俊 于 2020-05-12 设计创作,主要内容包括:本发明公开了一种MIDI多轨序列表示方法和应用,包括:解析MIDI文件,将MIDI文件中包含的MIDI消息拆分成音符演奏信息、音符停止信息、时间转移信息以及音色变换信息;将音符演奏信息、音符停止信息、时间转移信息以及音色变换信息转换成小节序列,每个小节序列包含小节开始标示和多个小节内时间步序列,每个时间步序列包含依序排布的时间步标示、音轨标示以及音符标示;其中,将一个小节分成32个时间步,根据音符演奏信息、音符停止信息、时间转移信息确定音符标示,根据音色变换信息确定音轨标示。以解决现有编码方式忽略音乐小节信息,不利于模型学习不同小节之间的关联信息。(The invention discloses a MIDI multi-track sequence representation method and application, comprising the following steps: analyzing the MIDI file, and splitting MIDI information contained in the MIDI file into note playing information, note stopping information, time shifting information and tone transformation information; converting the note playing information, the note stopping information, the time shifting information and the tone conversion information into bar sequences, wherein each bar sequence comprises a bar starting mark and a plurality of bar time step sequences, and each time step sequence comprises a time step mark, a sound track mark and a note mark which are sequentially arranged; wherein, a measure is divided into 32 time steps, note marks are determined according to note playing information, note stopping information and time shifting information, and track marks are determined according to tone color transformation information. The method solves the problem that the existing coding mode ignores music section information and is not beneficial to model learning of associated information among different sections.)

一种MIDI多轨序列表示方法和应用

技术领域

本发明涉及音乐设计领域,具体涉及一种MIDI多轨序列表示方法,和基于该MIDI多轨序列表示并利用深度学习模型生成音乐的方法。

背景技术

音乐是一种按照一定目的和规则将声音的信息组织在一起并用于表达情感和想法的音频形态。随着人工智能和深度学习的快速发展,许多自动作曲技术被提出。而对于自动作曲技术来说,音乐需要首先被转化成机器能够理解的形态。为了将一个乐谱序列化成一段机器能够理解的序列,许多先前的工作尝试了不同的编码,他们通常有各自适用的场景和优缺点。

主流的MIDI(Musical Instrument Digital Interface,乐器数字接口)编码方式通常可以分为两种:一种是基于图像的编码方式:如文献I:Dong H W,Hsiao W Y,Yang LC,et al.Musegan:Multi-track sequential generative adversarial networks forsymbolic music generation and accompaniment[C]//Thirty-Second AAAI Conferenceon Artificial Intelligence.2018,将MIDI看做钢琴卷帘图,横轴为时间,纵轴为音高,用0和1表示当前位置和音高上有无音符触发。这种编码方式可以直接表示出音符的时序关系,而且很容易被人类理解,但是钢琴卷帘图非常稀疏,前人的实验也表明这种编码方式并不能很好地被机器理解和学习。

另一种是基于序列的编码方式:如文献II:Huang C Z A,Vaswani A,UszkoreitJ,et al.Music transformer:Generating music with long-term structure[J].2018中提出了一个基于事件序列的音符编码方式,将音符拆解成Note On,Note Off,Time Shift,Program Change等事件,然后串联起来形成一个事件序列,这种编码方式被广泛采用,但是存在一个重要的问题:没有显式的小节标识符,从而难以划定小节与小节的边界,不利于模型学习不同小节之间的关联。

相比于单轨自动作曲技术,多轨自动作曲难度更大,对MIDI的编码形式要求也更高。文献III:Roberts A,Engel J,Raffel C,et al.Ahierarchical latent vector modelfor learning long-term structure in music[J].arXiv preprint arXiv:1803.05428,2018.沿用了与文献I相同的编码方式,它没有将轨道信息编码到序列中,而是在模型上对多轨MIDI进行建模,因此存在与原来编码类似的问题。文献IV:Donahue C,Mao H H,Li YE,et al.LakhNES:Improving multi-instrumental music generation with cross-domain pre-training[J].arXiv preprint arXiv:1907.04868,2019.设计了一种多轨编码方式,将不同轨的音符以事件形式编码后,按照事件顺序合并在一起,但是它没有显式地编码小节信息,因而无法很好地帮助模型学习小节之间的联系。

综上所述,目前主流的自动作曲技术编码方式并不能很好地满足多轨编码的要求,成为了当今自动作曲技术的瓶颈。

发明内容

本发明的目的是提供一种MIDI多轨序列表示方法,以解决现有编码方式忽略音乐小节信息,不利于模型学习不同小节之间的关联信息。

本发明的另一目的是提供一种基于深度学习模型的音乐生成方法,该深度学习模型的训练样本采用MIDI多轨序列表示方法编码生成,便于深度学习模型同时学习训练样本的音符信息、小节信息以及轨道信息,提升生成音乐的音乐性。

为实现上述目的,本发明提供的技术方案为:

一种MIDI多轨序列表示方法,包括以下步骤:

解析MIDI文件,将MIDI文件中包含的MIDI消息拆分成音符演奏(Note On)信息、音符停止(Note Off)信息、时间偏移(Time Shift)信息以及音色变换(Program Change)信息;

将音符演奏信息、音符停止信息、时间转移信息以及音色变换信息转换成小节序列,每个小节序列包含小节开始标示和多个小节内时间步序列,每个时间步序列包含依序排布的时间步标示、音轨标示以及音符标示;

其中,将一个小节分成32个时间步,根据音符演奏信息、音符停止信息、时间转移信息确定音符标示,根据音色变换信息确定音轨标示。

优选地,所述音符标示至少包含3个音符属性,分别为音高(Pitch)信息、音长(Duration)信息以及力度(Velocity)信息。

优选地,所述音高包含128种,对应General MIDI中的128个音高表示。

优选地,所述音长包含32种,分别对应一个音符跨度从1个时间步到32个时间步,且令音符跨度大于32个时间步的音长为第32种音长。

优选地,所述音轨标示包含旋律、鼓、钢琴、弦乐、吉他和贝斯轨道。

一种基于深度学习模型的音乐生成方法,包括以下步骤:

利用权利要求1~5所述的MIDI多轨序列表示方法将原始MIDI音乐以小节序列为单位表示为音乐序列;

将音乐序列编码成向量后,将音乐序列中小节开始标示、时间步标示、音轨标示以及音符标示按照在音乐序列中的排列顺序,以每次输入一个标示的方式将标示对应的向量输入至训练好的音乐生成模型中,经计算输出标示概率分布,其中,所述音乐生成模型包含依次连接的长短时期记忆网络和分类器;

对每次输出的标示概率分布进行采样确定每次生成的新标示;

将每次生成的新标示按照生成顺序依次排出,形成生成音乐序列。

优选地,所述分类器采用softmax分类器。

优选地,所述音乐生成模型的训练过程为:

构建训练样本,将MIDI音乐按照权利要求1~5所述的MIDI多轨序列表示方法表示为音乐序列,将音乐序列中的每个标示向后移动一位,形成的新标示序列为训练样本;

利用训练样本中小节开始标示、时间步标示、音轨标示以及音符标示按照在新标示序列中的排列顺序,以每次输入一个标示的方式将标示对应的向量输入至所述音乐生成模型中,对所述音乐生成模型进行训练。

与现有技术相比,本发明具有的有益效果为:

本发明提供的MIDI多轨序列表示方法中,充分考虑了小节信息、音符信息以及音轨信息,这样将该表示方法表示的音乐序列作为样本输入到深度学习模型中时,深度学习模型更能学习到小节之间的关联信息,这样利用该深度学习模型进行音乐生成时,生成音乐的音乐性更强。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。

图1是本发明提供的MIDI多轨序列表示示意图,其中(a)为2轨的MIDI格式文件,(b)为MIDI多轨序列表示;

图2是本发明提供的音乐生成模型的结构示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。

为了解决现有编码方式忽略音乐小节信息,不利于模型学习不同小节之间的关联信息。本实施例提供了一种MIDI多轨序列表示方法,该表示方法适用于多轨编码,在基于深度学习的作曲模型总共具有普适性。

具体地,实施例提供的MIDI多轨序列表示方法包括以下步骤:

S101,解析MIDI文件,将MIDI文件中包含的MIDI消息拆分成音符演奏信息、音符停止信息、时间转移信息以及音色变换信息。

实施例的目的就是对MIDI格式的音乐进行序列表示,因此,首先需要对MIDI文件进行解析,解析后将的MIDI消息拆分出可以用于多轨序列表示的音符演奏信息、音符停止信息、时间转移信息以及音色变换信息,以便后面根据这些信息对MIDI音乐进行表示。

S102,将音符演奏信息、音符停止信息、时间转移信息以及音色变换信息转换成小节序列,每个小节序列包含小节开始标示和多个小节内时间步序列,每个时间步序列包含依序排布的时间步标示、音轨标示以及音符标示。

小节开始表示与时间步标示统称为位置表示,用于表示每个时间位置。位置标示、音轨标示以及音符标示统称为标示。其中,小节开始标示表示每个小节的开始,一般可以用标示<Bar>表示,该小节内会包含很有个时间步序列,每个时间步序列会依次添加到该小节开始标示的后面。

时间步标示是一个小节内的位置标示。本发明中,将一个小节分成32个时间步,每个音符经量化操作以后,触发的时间必须落在这32个时间步上。实施例中,用标示<Pos_1>,<Pos_2>,…,<Pos_32>依次表示32个时间步的开始,每个时间步内的音轨标示和音符标示会依次添加到该时间步标示的后面组成一个时间步序列。在4/4拍的音乐片段中,每个时间步相当于一个三十二分音符的时长,这个时间粒度足以表现一首音乐的动态性,当粒度过大时,会损失大量的音乐信息,而当粒度过小时,会让自动作曲模型的学习变得极为困难。

音轨标示表示音符所属的音符轨道,该音轨标示直接添加到时间步标示后面。音轨标示分为6种:<Track_Melody>,<Track_Drum>,<Track_Piano>,<Track_String>,<Track_Guitar>,<Track_Bass>,分别表示旋律、鼓、钢琴、弦乐、吉他和贝斯轨道。当时间步序列中的某音符轨道发生变化时,首先添加一个新音轨标示,然后添加音符标示。

音符标示表示音符信息,这样将音符的所有属性集合表示成一个音符,音符属性包括音高信息、音长信息以及力度信息。音符属性结合位置标示和音轨标示,即可确定一个音符的所有信息。

其中,音高属性包含128种:<Pitch_1>,<Pitch_2>,…,<Pitch_128>,分别对应General MIDI中的128个音高表示。

General MIDI简称GM,是MIDI的统一规格。General MID要求包含了许多未在MIDI中规范,关于参数和控制讯息的解释,像是定义仪器可以拥有128个发声数,即128个音高表示。

音长包含32种:<Duration_1>,<Duration_2>,…,<Duration_32>,分别对应一个音符跨度从1个时间步到32个时间步,其中特别的是,<Duration_32>包含的音符跨度为32个时间步及以上。

下面结合一个2轨的MIDI格式文件具体说明MIDI多轨序列表示方法。

图1(a)所示为一个2轨的MIDI格式文件,利用实施例提供的MIDI多轨序列表示方法对图1(a)所示的MIDI格式文件编码后的序列如图1(b)所示。该MIDI格式文件包含两个轨道:钢琴轨和贝斯轨,分别包含8个音和4个音。序列开始于一个小节开始标示(<Bar>),紧接着一个时间步标示(<Pos_1>)和一个钢琴轨道标示(<Track_piano>)。接下来是2组音符标示,每组音符标示包含3个音符属性(Pitch,Velocity和Duration),即2组音符标示分别为<Pitch_50>、<Velocity_120>、<Duration_4>,<Pitch_54>、<Velocity_120>、<Duration_4>,当轨道更换时,需加入一个音轨标示(<Track_Bass>)表示当前时间步音符所属音轨。当某个时间步没有音符时,则直接省略该时间步。

该MIDI多轨序列表示方法适用于大部分主流的序列生成模型,从而实现自动作曲任务。

实施例还提供了一种基于深度学习模型的音乐生成方法,如图2所示,包括以下步骤:

S101,利用上述的MIDI多轨序列表示方法将原始MIDI音乐以小节序列为单位表示为音乐序列。

S102,将音乐序列编码成向量后,将音乐序列中小节开始标示、时间步标示、音轨标示以及音符标示按照在音乐序列中的排列顺序,以每次输入一个标示的方式将标示对应的向量输入至训练好的音乐生成模型中,经计算输出标示概率分布,其中,音乐生成模型包含依次连接的长短时期记忆网络和softmax分类器。

其中,音乐生成模型的训练过程为:

构建训练样本,将MIDI音乐按照上述MIDI多轨序列表示方法表示为音乐序列,将音乐序列中的每个标示向后移动一位,形成的新标示序列为训练样本;

利用训练样本中小节开始标示、时间步标示、音轨标示以及音符标示按照在新标示序列中的排列顺序,以每次输入一个标示的方式将标示对应的向量输入至音乐生成模型中,对音乐生成模型进行训练。

针对如图1(b)所示的序列,当该序列作为音乐生成模型的输入时,T时刻时,输入一个小节开始标示<Bar>对应的向量,T+1时刻,输入一个时间步标示时间步表示<Pos_1>对应的向量,T+2时刻会输入音轨标示<Track_Piano>对应的向量,T+2时刻会输入音符标示<Pitch_50>、<Velocity_120>、<Duration_4>对应的向量,针对音符标示,该音符标示三个属性对应的向量值直接相加后作为一个整体输入至音乐生成模型。当输入为小节开始标示<Bar>对应的向量,预测输出中一般采集以时间步表示<Pos_1>作为新标示。当输入为时间步表示<Pos_1>对应的向量,预测输出中一般采集以轨道标示<Track_piano>作为新标示。T时刻是指音乐生成模型的输入时刻,是指模型的时间步,模型的时间步与小节时间步不同。每个模型时间步,以序列中的一种标示对应的向量为输入。

S103,对每次输出的标示概率分布进行采样确定每次生成的新标示。

将位置标示(包括小节开始标示、时间步标示)、音轨标示以及音符标示的所有种类组成标示集合分布,音乐生成模型的输出实际是标示集合分布中每个标示对应一个0~1之间的概率值,这些概率值组成标示概率分布,针对每次输出的标示概率分布,采集概率值最大的标示作为每次生成的新标示。

S104,将每次生成的新标示按照生成顺序依次排出,形成生成音乐序列。

上述基于深度学习模型的音乐生成方法中,还可以包括S105,按照MIDI音乐到音乐序列的转换方式的逆序将生成音乐序列转换成MIDI音乐文件。

该音乐生成方法中,训练样本采用MIDI多轨序列表示方法编码生成,便于音乐生成模型同时学习训练样本的音符信息、小节信息以及轨道信息,并且学习到了小节之间的关联信息,利用训练好的音乐生成模型可以提升生成音乐的音乐性,即生成音乐的旋律更流畅,贴合人为创作音乐的特性。

以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。

8页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于电子陀螺仪和电子加速度计的电子乐器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!