本发明属于计算机音乐与音乐工程交叉的,具体涉及一种音乐数据的结构化存储方法和装置。
背景技术:
1、自人工智能音乐生成技术发展以来,各种音乐数据集应运而生,涵盖了民谣、流行、爵士等音乐类型。音乐生成领域最大量且最常用的数据集均为符号化表示的音乐数据,而其存储方式包括多种。
2、第一种存储方式是采用midi格式存储。其中,midi为20世纪80年代初为解决电声乐器之间的通信问题而提出的乐器数字接口,是一种描述性的"音乐语言",它以字节的形式描述要演奏的音乐信息,如使用什么乐器、以什么音符开始、在什么时间结束。被广泛使用的jsb chorus、vgmidi、lakh midi dataset、giantmidi-piano等数据集都存储为midi格式。然而受限于midi格式的存储只存在于一个标记轨道,因此采用midi格式存储无法记录所有的音乐标记,以及音乐的段落结构、和弦进行、情感标签等,无法满足深度学习对于音乐数据的需求。
3、第二种存储方式是采用musicxml格式存储。其中,musicxml是一开发的基于xml格式用于记录西洋乐谱的格式,musicxml可以包含各种类型的音乐符号,如休止符、滑音、束音、巴音、调号和时间符号、衔接、组织标记等,这些都不包括在midi格式中。musicxml通常被用来存储领唱表。领唱表是一种音乐符号的形式,用来指定歌曲的基本要素:旋律、歌词、和声、重复记号等。被广泛使用的theorytab-database、hooktheory lead sheet dataset、musescore leed sheet dataset等数据集由musicxml格式存储。然而,musicxml通常不会记录一首完整的多轨道多乐器音乐的所有音符,因为每个音符都会成倍增加musicxml格式文件的复杂度。因此,该格式无法实现自动编曲任务。
4、第三种存储方式是采用abc格式存储。其中,abc格式是一种用纯文本记录音乐的方式,它最初是为起源于西欧的民间音乐设计的,后来被扩展到支持古典音乐乐谱的完整表述。abc格式的可扩展性极其有限,并且能记录的信息较少,一般只能记录一首歌曲的旋律信息、和弦信息等比较基础的信息,并且容易存在记录错误、遗漏、错位的情况。因此,采用abc格式存储也无法满足大批量大信息量的音乐数据的标注需求。
技术实现思路
1、鉴于上述,本发明的目的是提供了一种音乐数据的结构化存储方法和装置,该存储方法存储的数据能够满足人工智能音乐生成的所有需求。
2、为实现上述发明目的,实施例提供的一种音乐数据的结构化存储方法,包括以下步骤:
3、输入待存储的音乐数据;
4、为音乐数据确定数据格式,并设定音乐数据的文件头;
5、在文件头后记录每首音乐的根元素;
6、通过速度轨道元素记录音乐的每个速度轨道;
7、通过标记轨道元素记录音乐的每个标记轨道;
8、通过和弦轨道元素记录音乐的每个和弦轨道;
9、通过音符轨道元素记录音乐的每个音符轨道;
10、通过音频轨道元素记录音乐的每个音频轨道;
11、输出结构化存储的音乐数据。
12、优选地,所述头文件采用xml格式。
13、优选地,所述根元素用于记录每首音乐开始的属性,包括文件创建时间、文件修改人、最近一次文件修改时间、文件标题。
14、优选地,每个速度轨道通过一对速度轨道元素进行记录,速度轨道元素用于指示记录范围内的内容属性为速度轨道,速度轨道中记载音乐的速度信息和拍号信息;
15、其中,速度信息用于速度元素指示,包括速度改变的起始节拍时间点、速度值;
16、拍号信息用于拍号元素指示,包括拍号改变的节拍时间点、每小节的节拍数、以几分音符为一拍。
17、优选地,每个标记轨道通过标记轨道元素进行记录,标记轨道元素包括标记轨道索引、标记轨道名称以及标记块元素,每个标记块元素包括标记块名称、标记块持续时间、标记块编号以及标记块开始的节拍。
18、优选地,每个和弦轨道通过和弦轨道元素进行记录,和弦轨道元素包括和弦轨道索引、和弦轨道名称以及和弦块元素,每个和弦块元素包括和弦块名称、和弦块持续时间、和弦块编号以及和弦块开始的节拍。
19、优选地,每个音符轨道通过音符轨道元素进行记录,音符轨道元素包括音符轨道索引、音符轨道名称以及音符块元素,每个音符块元素包括音符块名称、音符块持续时间、音符块编号以及音符块开始的节拍;
20、每个音符块还包括音符元素,每个音符元素包括音高、音符起始节拍、音符持续拍数以及音符力度。
21、优选地,每个音频轨道通过音频轨道元素进行记录,每个音频轨道元素包括音频轨道索引、音频块元素,每个音频块元素包括音频块名称、音频块持续长度、音频块索引、音频路径来源以及音频块开始的节拍。
22、为实现上述发明目的,实施例还提供了一种音乐数据的结构化存储装置,包括数据输入模块、文件头设置模块、根元素记录模块、速度轨道记录模块、标记轨道记录模块、和弦轨道记录模块、音符轨道记录模块、音频轨道记录模块、数据输出模块,
23、所述数据输入模块用于输入待存储的音乐数据;
24、所述文件头设置模块用于为音乐数据确定数据格式标准,并设定音乐数据的文件头;
25、所述根元素记录模块用于在文件头后记录每首音乐的根元素;
26、所述速度轨道记录模块用于通过速度轨道元素记录音乐的每个速度轨道;
27、所述标记轨道记录模块用于通过标记轨道元素记录音乐的每个标记轨道;
28、所述和弦轨道记录模块用于通过和弦轨道元素记录音乐的每个和弦轨道;
29、所述音符轨道记录模块用于通过音符轨道元素记录音乐的每个音符轨道;
30、所述音频轨道记录模块用于通过音频轨道元素记录音乐的每个音频轨道;
31、所述数据输出模块用于结构化存储的音乐数据。
32、与现有技术相比,本发明具有的有益效果至少包括:
33、在确定音乐数据的数据格式基础上,通过对根元素、速度轨道、标记轨道、和弦轨道、音符轨道以及音频轨道采用结构化区别记录的方式进行存储,这样存储的音乐数据清楚有序,可以满足人工智能音乐生成的所有需求。
1.一种音乐数据的结构化存储方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的音乐数据的结构化存储方法,其特征在于,所述头文件采用xml格式。
3.根据权利要求1所述的音乐数据的结构化存储方法,其特征在于,所述根元素用于记录每首音乐开始的属性,包括文件创建时间、文件修改人、最近一次文件修改时间、文件标题。
4.根据权利要求1所述的音乐数据的结构化存储方法,其特征在于,每个速度轨道通过一对速度轨道元素进行记录,速度轨道元素用于指示记录范围内的内容属性为速度轨道,速度轨道中记载音乐的速度信息和拍号信息;
5.根据权利要求1所述的音乐数据的结构化存储方法,其特征在于,每个标记轨道通过标记轨道元素进行记录,标记轨道元素包括标记轨道索引、标记轨道名称以及标记块元素,每个标记块元素包括标记块名称、标记块持续时间、标记块编号以及标记块开始的节拍。
6.根据权利要求1所述的音乐数据的结构化存储方法,其特征在于,每个和弦轨道通过和弦轨道元素进行记录,和弦轨道元素包括和弦轨道索引、和弦轨道名称以及和弦块元素,每个和弦块元素包括和弦块名称、和弦块持续时间、和弦块编号以及和弦块开始的节拍。
7.根据权利要求1所述的音乐数据的结构化存储方法,其特征在于,每个音符轨道通过音符轨道元素进行记录,音符轨道元素包括音符轨道索引、音符轨道名称以及音符块元素,每个音符块元素包括音符块名称、音符块持续时间、音符块编号以及音符块开始的节拍;
8.根据权利要求1所述的音乐数据的结构化存储方法,其特征在于,每个音频轨道通过音频轨道元素进行记录,每个音频轨道元素包括音频轨道索引、音频块元素,每个音频块元素包括音频块名称、音频块持续长度、音频块索引、音频路径来源以及音频块开始的节拍。
9.一种音乐数据的结构化存储装置,其特征在于,包括数据输入模块、文件头设置模块、根元素记录模块、速度轨道记录模块、标记轨道记录模块、和弦轨道记录模块、音符轨道记录模块、音频轨道记录模块、数据输出模块,