基于旋律结构的旋律生成方法及装置转让专利

申请号 : CN201910245130.4

文献号 : CN110120211B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴健刘晓光胡晓林

申请人 : 北京灵动音科技有限公司

摘要 :

本公开涉及一种基于旋律结构的旋律生成方法及装置,所述方法包括:根据预设的第一旋律结构,确定第一旋律片段的来源旋律片段以及所述第一旋律片段与所述来源旋律片段之间的关系类型;根据与所述第一旋律片段对应的和弦序列、所述来源旋律片段以及所述关系类型,生成所述第一旋律片段;根据生成的多个旋律片段,获得目标旋律,其中,所述关系类型包括重复、模进以及节奏模进中的任意一种。本公开实施例能够使得生成的目标旋律具有清晰的长程结构,提高了目标旋律的质量。

权利要求 :

1.一种基于旋律结构的旋律生成方法,其特征在于,包括:根据预设的第一旋律结构,确定第一旋律片段的来源旋律片段以及所述第一旋律片段与所述来源旋律片段之间的关系类型,其中,所述第一旋律片段是待生成的目标旋律的多个旋律片段中的任意一个,所述第一旋律结构用于表示所述多个旋律片段之间的关系;

根据与所述第一旋律片段对应的和弦序列、所述来源旋律片段以及所述关系类型,生成所述第一旋律片段;

根据生成的多个旋律片段,获得目标旋律,

其中,所述关系类型包括重复、模进以及节奏模进中的任意一种,所述根据预设的第一旋律结构,确定第一旋律片段的来源旋律片段以及所述第一旋律片段与所述来源旋律片段之间的关系类型,包括:在所述第一旋律片段不是所述目标旋律的第一个旋律片段时,根据所述第一旋律结构,判断在所述第一旋律片段之前的一个或多个旋律片段中是否存在与所述第一旋律片段相关的第二旋律片段;

在存在所述第二旋律片段时,将所述第二旋律片段确定为来源旋律片段。

2.根据权利要求1所述的方法,其特征在于,根据与所述第一旋律片段对应的和弦序列、所述来源旋律片段以及所述关系类型,生成所述第一旋律片段,包括:对所述和弦序列进行和弦特征提取,得到和弦特征序列;

对所述来源旋律片段进行来源特征提取,得到来源特征;

根据所述和弦特征序列、所述来源特征以及所述关系类型,生成所述第一旋律片段。

3.根据权利要求2所述的方法,其特征在于,所述第一旋律片段包括多个音符,其中,根据所述和弦特征序列、所述来源特征以及所述关系类型,生成所述第一旋律片段,包括:根据与目标音符的前序音符对应的特征向量、与所述前序音符对应的状态特征、所述和弦特征序列中与所述目标音符对应的和弦特征、所述来源特征以及所述关系类型,确定与所述目标音符对应的状态特征;

根据与所述目标音符对应的状态特征,确定所述目标音符,其中,在待生成的目标音符不是所述第一旋律片段的第一个音符时,所述前序音符为所述目标音符的前一个音符。

4.根据权利要求3所述的方法,其特征在于,在待生成的目标音符是所述第一旋律片段的第一个音符时,所述前序音符为所述第一旋律片段的前一个旋律片段的最后一个音符。

5.根据权利要求1所述的方法,其特征在于,根据预设的第一旋律结构,确定第一旋律片段的来源旋律片段以及所述第一旋律片段与所述来源旋律片段之间的关系类型,还包括:在所述第一旋律片段是所述目标旋律的第一个旋律片段,或不存在所述第二旋律片段时,将零旋律片段确定为来源旋律片段。

6.根据权利要求1-5中任意一项所述的方法,其特征在于,所述方法通过神经网络实现,所述神经网络包括旋律生成网络,所述旋律生成网络用于生成所述第一旋律片段。

7.根据权利要求6所述的方法,其特征在于,所述神经网络还包括结构生成网络,所述结构生成网络包括多个反卷积层,所述方法还包括:根据已训练的结构生成网络,生成所述第一旋律结构。

8.根据权利要求7所述的方法,其特征在于,所述神经网络还包括判别网络,所述方法还包括:根据预设的训练集,对抗训练所述结构生成网络与所述判别网络,其中,所述训练集中包括多个第一参考旋律。

9.根据权利要求1所述的方法,其特征在于,所述方法还包括:对预设的第二参考旋律进行结构提取,得到所述第一旋律结构。

说明书 :

基于旋律结构的旋律生成方法及装置

技术领域

[0001] 本公开涉及计算机技术领域,尤其涉及一种基于旋律结构的旋律生成方法及装置。

背景技术

[0002] 音乐是一种重要的艺术形式。通常,音乐包涵旋律和和弦两种成分,其中,旋律是一系列音符沿着时间顺序分布的集合,被广泛认为是音乐的重要组成部分。目前的旋律生成方法主要利用旋律中相邻音符的条件关系来训练模型并生成旋律,所生成的旋律质量较低。

发明内容

[0003] 有鉴于此,本公开提出了一种基于旋律结构的旋律生成方法及装置,提高生成旋律的质量。
[0004] 根据本公开的一方面,提供了一种一种基于旋律结构的旋律生成方法,包括:根据预设的第一旋律结构,确定第一旋律片段的来源旋律片段以及所述第一旋律片段与所述来源旋律片段之间的关系类型,其中,所述第一旋律片段是待生成的目标旋律的多个旋律片段中的任意一个,所述第一旋律结构用于表示所述多个旋律片段之间的关系;根据与所述第一旋律片段对应的和弦序列、所述来源旋律片段以及所述关系类型,生成所述第一旋律片段;根据生成的多个旋律片段,获得目标旋律,其中,所述关系类型包括重复、模进以及节奏模进中的任意一种。
[0005] 在一种可能的实现方式中,根据与所述第一旋律片段对应的和弦序列、所述来源旋律片段以及所述关系类型,生成所述第一旋律片段,包括:对所述和弦序列进行和弦特征提取,得到和弦特征序列;对所述来源旋律片段进行来源特征提取,得到来源特征;根据所述和弦特征序列、所述来源特征以及所述关系类型,生成所述第一旋律片段。
[0006] 在一种可能的实现方式中,所述第一旋律片段包括多个音符,其中,根据所述和弦特征序列、所述来源特征以及所述关系类型,生成所述第一旋律片段,包括:根据与目标音符的前序音符对应的特征向量、与所述前序音符对应的状态特征、所述和弦特征序列中与所述目标音符对应的和弦特征、所述来源特征以及所述关系类型,确定与所述目标音符对应的状态特征;根据与所述目标音符对应的状态特征,确定所述目标音符,其中,在待生成的目标音符不是所述第一旋律片段的第一个音符时,所述前序音符为所述目标音符的前一个音符。
[0007] 在一种可能的实现方式中,在待生成的目标音符是所述第一旋律片段的第一个音符时,所述前序音符为所述第一旋律片段的前一个旋律片段的最后一个音符。
[0008] 在一种可能的实现方式中,根据预设的第一旋律结构,确定第一旋律片段的来源旋律片段以及所述第一旋律片段与所述来源旋律片段之间的关系类型,包括:在所述第一旋律片段不是所述目标旋律的第一个旋律片段时,根据所述第一旋律结构,判断在所述第一旋律片段之前的一个或多个旋律片段中是否存在与所述第一旋律片段相关的第二旋律片段;在存在所述第二旋律片段时,将所述第二旋律片段确定为来源旋律片段。
[0009] 在一种可能的实现方式中,根据预设的第一旋律结构,确定第一旋律片段的来源旋律片段以及所述第一旋律片段与所述来源旋律片段之间的关系类型,还包括:在所述第一旋律片段是所述目标旋律的第一个旋律片段,或不存在所述第二旋律片段时,将零旋律片段确定为来源旋律片段。
[0010] 在一种可能的实现方式中,所述方法通过神经网络实现,所述神经网络包括旋律生成网络,所述旋律生成网络用于生成所述第一旋律片段。
[0011] 在一种可能的实现方式中,所述神经网络还包括结构生成网络,所述结构生成网络包括多个反卷积层,所述方法还包括:根据已训练的结构生成网络,生成所述第一旋律结构。
[0012] 在一种可能的实现方式中,所述神经网络还包括判别网络,所述方法还包括:根据预设的训练集,对抗训练所述结构生成网络与所述判别网络,其中,所述训练集中包括多个第一参考旋律。
[0013] 在一种可能的实现方式中,所述方法还包括:对预设的第二参考旋律进行结构提取,得到所述第一旋律结构。
[0014] 根据本公开的另一方面,提供了一种基于旋律结构的旋律生成装置,包括:关系类型确定模块,用于根据预设的第一旋律结构,确定第一旋律片段的来源旋律片段以及所述第一旋律片段与所述来源旋律片段之间的关系类型,其中,所述第一旋律片段是待生成的目标旋律的多个旋律片段中的任意一个,所述第一旋律结构用于表示所述多个旋律片段之间的关系;旋律片段生成模块,用于根据与所述第一旋律片段对应的和弦序列、所述来源旋律片段以及所述关系类型,生成所述第一旋律片段;目标旋律生成模块,用于根据生成的多个旋律片段,获得目标旋律,其中,所述关系类型包括重复、模进以及节奏模进中的任意一种。
[0015] 在一种可能的实现方式中,所述旋律片段生成模块,包括:和弦特征提取子模块,用于对所述和弦序列进行和弦特征提取,得到和弦特征序列;来源特征提取子模块,用于对所述来源旋律片段进行来源特征提取,得到来源特征;生成子模块,用于根据所述和弦特征序列、所述来源特征以及所述关系类型,生成所述第一旋律片段。
[0016] 在一种可能的实现方式中,所述生成子模块用于:根据与目标音符的前序音符对应的特征向量、与所述前序音符对应的状态特征、所述和弦特征序列中与所述目标音符对应的和弦特征、所述来源特征以及所述关系类型,确定与所述目标音符对应的状态特征;根据与所述目标音符对应的状态特征,确定所述目标音符,其中,在待生成的目标音符不是所述第一旋律片段的第一个音符时,所述前序音符为所述目标音符的前一个音符。
[0017] 在一种可能的实现方式中,在待生成的目标音符是所述第一旋律片段的第一个音符时,所述前序音符为所述第一旋律片段的前一个旋律片段的最后一个音符。
[0018] 在一种可能的实现方式中,所述关系类型确定模块,包括:第一确定子模块,用于在所述第一旋律片段不是所述目标旋律的第一个旋律片段时,根据所述第一旋律结构,判断在所述第一旋律片段之前的一个或多个旋律片段中是否存在与所述第一旋律片段相关的第二旋律片段;第二确定子模块,用于在存在所述第二旋律片段时,将所述第二旋律片段确定为来源旋律片段。
[0019] 在一种可能的实现方式中,所述关系类型确定模块,还包括:第三确定子模块,用于在所述第一旋律片段是所述目标旋律的第一个旋律片段,或不存在所述第二旋律片段时,将零旋律片段确定为来源旋律片段。
[0020] 在一种可能的实现方式中,所述装置通过神经网络实现,所述神经网络包括旋律生成网络,所述旋律生成网络用于生成所述第一旋律片段。
[0021] 在一种可能的实现方式中,所述神经网络还包括结构生成网络,所述结构生成网络包括多个反卷积层,所述装置还包括:第一旋律结构生成模块,用于根据已训练的结构生成网络,生成所述第一旋律结构。
[0022] 在一种可能的实现方式中,所述神经网络还包括判别网络,所述装置还包括:训练模块,用于根据预设的训练集,对抗训练所述结构生成网络与所述判别网络,其中,所述训练集中包括多个第一参考旋律。
[0023] 在一种可能的实现方式中,所述装置还包括:第二旋律结构生成模块,用于对预设的第二参考旋律进行结构提取,得到所述第一旋律结构。
[0024] 根据本公开的另一方面,提供了一种基于旋律结构的旋律生成装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
[0025] 根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
[0026] 根据本公开的实施例,能够根据旋律结构确定待生成旋律片段的来源旋律片段及其与来源旋律片段之间的关系类型,并根据和弦序列、来源旋律片段以及关系类型,生成旋律片段,然后根据生成的多个旋律片段,获得目标旋律,从而使得生成的目标旋律具有清晰的长程结构,提高了目标旋律的质量。
[0027] 根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

[0028] 包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
[0029] 图1示出了音乐基本概念的示意图。
[0030] 图2示出根据本公开一实施例的基于旋律结构的旋律生成方法的流程图。
[0031] 图3示出了一段旋律的示意图。
[0032] 图4示出了使用有向无环图表示的第一旋律结构示意图。
[0033] 图5示出了使用邻接矩阵表示的第一旋律结构示意图。
[0034] 图6示出了根据本公开一实施例的结构生成网络的示意图。
[0035] 图7示出了根据本公开一实施例的通过旋律生成网络生成旋律片段的过程的示意图。
[0036] 图8示出了根据本公开一实施例的判别网络的结构示意图。
[0037] 图9示出根据本公开一实施例的基于旋律结构的旋律生成装置的框图。
[0038] 图10示出了根据本公开一实施例的一种电子设备的框图。
[0039] 图11示出了根据本公开一实施例的一种电子设备的框图。

具体实施方式

[0040] 以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
[0041] 在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
[0042] 另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
[0043] 旋律作为音乐的重要组成部分,具有一个独特的属性,即旋律通常拥有多个时间尺度上的特征,包括从音符、拍、小节到乐句。其中,每个音符包含音高和时长两个要素,音高决定了音符的频率高低,时长决定了音符将被弹奏多久;拍是旋律的一个基本时间单元,通常包涵一个或几个音符;小节是更高等级的一个时间单元,通常在一个旋律片段中一个小节包含固定数量的拍;乐句一般被认为是具有完整乐感的最小音乐单元,一个乐句通常包括两个或四个小节。几个乐句可以组成一个乐段(或乐句组),通常组成一个乐段的乐句之间往往有相互呼应的关系,即前后的乐句之间存在着显著的相似性,特别是在旋律的节奏上,这种高层次的前后关系可以认为是旋律的一种长程结构。
[0044] 图1示出了音乐基本概念的示意图。如图1所示,图中旋律的调号为bB,拍号为4/4,共包含两个乐句,其中,每个乐句包含4个小节,每个小节包含4拍。图中旋律的前后两个乐句之间还存在着显著的相似性,因此,图1中的旋律具有长程结构。
[0045] 图2示出根据本公开一实施例的基于旋律结构的旋律生成方法的流程图。如图2所示,该方法包括:
[0046] 步骤S21,根据预设的第一旋律结构,确定第一旋律片段的来源旋律片段以及所述第一旋律片段与所述来源旋律片段之间的关系类型,其中,所述第一旋律片段是待生成的目标旋律的多个旋律片段中的任意一个,所述第一旋律结构用于表示所述多个旋律片段之间的关系;
[0047] 步骤S22,根据与所述第一旋律片段对应的和弦序列、所述来源旋律片段以及所述关系类型,生成所述第一旋律片段;
[0048] 步骤S23,根据生成的多个旋律片段,获得目标旋律,
[0049] 其中,所述关系类型包括重复、模进以及节奏模进中的任意一种。
[0050] 根据本公开的实施例,能够根据旋律结构确定待生成旋律片段的来源旋律片段及其与来源旋律片段之间的关系类型,并根据和弦序列、来源旋律片段以及关系类型,生成旋律片段,然后根据生成的多个旋律片段,获得目标旋律,从而使得生成的目标旋律具有清晰的长程结构,提高了目标旋律的质量。
[0051] 在一种可能的实现方式中,所述第一旋律结构用于表示多个旋律片段之间的关系。也就是说,第一旋律结构可以是基于旋律片段之间的关系类型定义的、多个旋律片段之间的关系的集合。其中,所述关系类型可以包括重复、模进以及节奏模进中的任意一种。两个旋律片段完全相同为重复关系;两个旋律片段的节奏相同且音符之间的音程关系也相同为模进关系;两个旋律片段的节奏相同为节奏模进关系。
[0052] 在一种可能的实现方式中,所述第一旋律结构可以使用多种方式来表示。例如,可以使用一个形状为(k,x,x)的邻接矩阵来表示第一旋律结构,即可以使用k个x*x的邻接矩阵来表示第一旋律结构,其中,k表示旋律片段之间的关系类型的种类,x表示旋律片段的总数。旋律片段之间的关系可使用矩阵中的值[i,j,z]来表示,其中,i表示第i种关系类型,j和z分别表示第j个旋律片段和第z个旋律片段。当值[i,j,z]为1时,表示第j个旋律片段和第z个旋律片段是第i种关系类型。
[0053] 在一种可能的实现方式中,可以使用有向无环图来表示第一旋律结构。在有向无环图中,可以使用节点表示一个旋律片段,节点之间的边表示旋律片段之间的关系。
[0054] 图3示出了一段旋律的示意图。如图3所示,该旋律包括32个小节,可以以小节为单位将该旋律划分成32个旋律片段。
[0055] 图4示出了图3中的旋律使用有向无环图表示的第一旋律结构示意图。如图4所示,不同的线条代表不同的关系类型,例如实线表示两个旋律片段之间是重复关系,虚线表示两个旋律片段之间是节奏模进关系。
[0056] 图5示出了图3中的旋律使用邻接矩阵表示的第一旋律结构示意图。如图5所示,不同形状的点代表不同的关系类型,例如圆点表示重复关系,正方形的点表示节奏模进关系。
[0057] 应当理解,以上仅作为示例描述了第一旋律结构的表示方式,本领域技术人员可以根据实际情况,采用其他方式来表示,本公开对第一旋律结构的表示方式不作限制。
[0058] 在一种可能的实现方式中,所述方法通过神经网络实现,所述神经网络包括结构生成网络,所述结构生成网络包括多个反卷积层,所述方法还可以包括:根据已训练的结构生成网络,生成所述第一旋律结构。
[0059] 图6示出了根据本公开一实施例的结构生成网络的示意图。如图6所示,结构生成网络包括全连接层和线性整流及形状变换处理层51,反卷积层和线性整流处理层52,反卷积层和线性整流处理层53,以及反卷积层和线性整流及激活(sigmod)处理层54,其中,反卷积层的卷积核为2×2,步长为2。
[0060] 在一种可能的实现方式中,可以将一个信号(向量),例如一个32维的随机向量,输入结构生成网络中处理,首先全连接层和线性整流及形状变换处理层51对输入的32维随机向量依次进行全连接、线性整流及形状变换处理,得到形状为(64,4,4)的矩阵;之后反卷积层和线性整流处理层52对形状为(64,4,4)的矩阵进行第一次反卷积和线性整流处理,得到形状为(32,8,8)的矩阵;之后反卷积层和线性整流处理层53对形状为(32,8,8)的矩阵进行第二次反卷积和线性整流处理,得到形状为(16,16,16)的矩阵;之后反卷积层和线性整流及激活(sigmod)处理层54首先对形状为(16,16,16)的矩阵进行第三次反卷积和线性整流处理,得到形状为(k,32,32)的矩阵A,再对矩阵A进行激活(sigmod)处理,然后对每个位置进行概率采样,根据预设的概率阈值,可以确定出多个旋律片段之间的关系类型,进而生成形状为(k,32,32)的邻接矩阵B,将邻接矩阵B作为第一旋律结构。
[0061] 应当理解,结构生成网络的输入可以是各种类型的信号,本领域技术人员可以根据实际情况设置,本公开对结构生成网络的输入不作限制。
[0062] 通过这种方式,可以使用已训练的结构生成网络方便、快捷地生成第一旋律结构,提高了生成第一旋律结构的效率。
[0063] 在一种可能的实现方式中,所述方法还可包括:对预设的第二参考旋律进行结构提取,得到所述第一旋律结构。其中,预设的第二参考旋律可以是已有的旋律。可以将第二参考旋律以小节或乐句或其他旋律时间单元进行切割,得到多个旋律片段。对于每个旋律片段,可以依次判断该旋律片段与之前的旋律片段(从该旋律片段的前一个旋律片段开始至第一个旋律片段)是否是重复关系;若无重复关系,则可以依次判断该旋律片段与之前的旋律片段是否是模进关系;若无模进关系,可以依次判断该旋律片段与之前的旋律片段是否是节奏模进关系;若无节奏模进关系,则认为该旋律片段与之前的旋律片段之间没有关系。根据上述方法,可以对预设的第二参考旋律进行结构提取,得到第一旋律结构。
[0064] 应当理解,本领域技术人员可以根据实际需要采用其他方法对参考旋律进行结构提取,本公开对对第二参考旋律进行结构提取的方法不作限制。
[0065] 通过这种方式,可以提取出已有旋律的结构,并使用该旋律结构来生成新的旋律,从而可以使生成的旋律与已有旋律具有相同的旋律结构。
[0066] 在一种可能的实现方式中,也可以人工制定待生成的目标旋律的第一旋律结构。例如,可以将待生成的目标旋律以小节或乐句或其他旋律时间单元进行切割,得到多个旋律片段,然后人工定义旋律片段之间关系类型,并将定义的多个旋律片段的关系的集合作为目标旋律的第一旋律结构。
[0067] 在一种可能的实现方式中,在确定第一旋律结构后,可以在步骤S21中,根据预设的第一旋律结构,确定第一旋律片段的来源旋律片段以及所述第一旋律片段与所述来源旋律片段之间的关系类型,其中,所述第一旋律片段是待生成的目标旋律的多个旋律片段中的任意一个,来源旋律片段是第一旋律片段之前的、与第一旋律片段之间存在关系的旋律片段。例如,当第一旋律结构使用形状为(k,x,x)的邻接矩阵表示时,矩阵中的值[i,j,z]为1时,可表示第j个旋律片段和第z个旋律片段是第i种关系类型,其中,第j个旋律片段为第一旋律片段,第z个旋律片段为第一旋律片段的来源旋律片段,两者之间的关系类型是第i种关系。
[0068] 在一种可能的实现方式中,步骤S21可包括:在所述第一旋律片段不是所述目标旋律的第一个旋律片段时,根据所述第一旋律结构,判断在所述第一旋律片段之前的一个或多个旋律片段中是否存在与所述第一旋律片段相关的第二旋律片段;在存在所述第二旋律片段时,将所述第二旋律片段确定为来源旋律片段。
[0069] 举例来说,第一旋律结构可以使用形状为(k,x,x)的邻接矩阵来表示,在第一旋律片段不是目标旋律的第一个旋律片段时,例如第一旋律片段是第8个旋律片段,当邻接矩阵中的值[1,8,3]为1时,可以确定第一旋律片段(第8个旋律片段)之前的多个片段中存在相关的第二旋律片段(即第3个旋律片段),此时,可将第3个旋律片段作为第一旋律片段的来源旋律片段。通过这种方式,可以确定出第一旋律片段的来源旋律片段,用于第一旋律片段的生成。
[0070] 在一种可能的实现方式中,步骤S21可包括:在所述第一旋律片段是所述目标旋律的第一个旋律片段,或不存在所述第二旋律片段时,将零旋律片段确定为来源旋律片段。
[0071] 在一种可能的实现方式中,当第一旋律片段是目标旋律片段的第一个旋律片段时,第一旋律片段之前没有旋律片段,可以将零旋律片段作为其来源旋律片段。其中,零旋律片段可以是数据全部为零、时间长度与第一旋律片段相同的旋律片段。
[0072] 在一种可能的实现方式中,当第一旋律片段不是目标旋律片段的第一旋律片段,且根据第一旋律结构,也不存在与其相关的第二旋律片段时,可以将零旋律片段作为其来源旋律片段。
[0073] 通过这种方式,可以为没有相关旋律片段的第一旋律片段设置来源旋律片段(零旋律片段),从而使得生成的目标旋律具有清晰的结构。
[0074] 在一种可能的实现方式中,确定第一旋律片段的来源旋律片段及两者之间的关系类型后,可以在步骤S22中,根据与所述第一旋律片段对应的和弦序列、来源旋律片段以及所述关系类型,生成第一旋律片段。其中,和弦序列可以是预先设置的、与第一旋律片段相对应的和弦序列。根据和弦序列、来源旋律片段以及关系类型来生成第一旋律片段,可以使得生成的第一旋律片段具有清晰的结构。
[0075] 在一种可能的实现方式中,步骤S22可包括:对所述和弦序列进行和弦特征提取,得到和弦特征序列;对所述来源旋律片段进行来源特征提取,得到来源特征;根据所述和弦特征序列、所述来源特征以及所述关系类型,生成所述第一旋律片段。也就是说,可以首先对和弦序列和来源旋律片段分别进行特征提取,得到和弦特征序列和来源特征,然后根据和弦特征序列、来源特征以及关系类型来生成第一旋律片段。通过这种方式,可以提高生成的第一旋律片段的质量。本公开对特征提取的方式不作限制。
[0076] 在一种可能的实现方式中,所述第一旋律片段包括多个音符,当所述第一旋律片段是待生成的旋律(目标旋律)的第一个片段,且目标音符是第一旋律片段的第一个音符时,可以根据和弦特征序列中与目标音符对应的和弦特征、来源特征以及关系类型,确定与目标音符对应的状态特征,并根据与目标音符对应的状态特征,确定所述目标音符。在该情况下,也可以将一个随机音符或预设音符或其他音符作为目标音符。本公开对整个旋律的第一个音符的具体生成方式不作限制。
[0077] 在一种可能的实现方式中,根据所述和弦特征序列、所述来源特征以及所述关系类型,生成所述第一旋律片段,可包括:根据与目标音符的前序音符对应的特征向量、与所述前序音符对应的状态特征、所述和弦特征序列中与所述目标音符对应的和弦特征、所述来源特征以及所述关系类型,确定与所述目标音符对应的状态特征;根据与所述目标音符对应的状态特征,确定所述目标音符,其中,在待生成的目标音符不是所述第一旋律片段的第一个音符时,所述前序音符为所述目标音符的前一个音符。
[0078] 举例来说,在生成目标音符时,可以使用前序音符的相关特征。在待生成的目标音符不是第一旋律片段的第一个音符时,其前序音符为目标音符的前一个音符。在生成目标音符时,可以首先根据目标音符的前序音符对应的特征向量、与前序音符对应的状态特征、和弦序列中目标音符对应的和弦特征、来源特征以及关系类型,来确定与目标音符对应的状态特征;然后根据与目标音符对应的状态特征,来确定目标音符。
[0079] 在一种可能的实现方式中,在待生成的目标音符是所述第一旋律片段的第一个音符时,所述前序音符为所述第一旋律片段的前一个旋律片段的最后一个音符。也就是说,在生成第一旋律片段的第一个音符时,使用的前序音符为第一旋律片段的前一个旋律片段的最后一个音符。
[0080] 通过上述方法,在生成目标音符时,既使用了旋律的长程结构(来源特征和关系类型)以及和弦特征,也使用了已生成旋律的相关特征(前序音符的特征向量和状态特征),从而使得生成的目标音符具有更高的质量。
[0081] 根据上述方法,可以依次生成第一旋律片段的多个音符,将生成的多个音符连接起来,可以得到生成的第一旋律片段。
[0082] 在一种可能的实现方式中,可以通过步骤S21和步骤S22,依次生成目标旋律的多个旋律片段,然后在步骤S23中,根据生成的多个旋律片段,可获得目标旋律,也就是说,可以将生成的多个旋律片段进行拼接,得到最终的目标旋律,目标旋律的结构与第一旋律结构相同。
[0083] 在一种可能的实现方式中,所述方法通过神经网络实现,所述神经网络包括旋律生成网络,所述旋律生成网络可用于生成所述第一旋律片段。
[0084] 图7示出了根据本公开一实施例的通过旋律生成网络生成旋律片段的过程的示意图。如图7所示,旋律生成网络包括来源旋律特征提取模块61、和弦特征提取模块62和旋律生成器63。其中,来源旋律特征提取模块61由嵌入层和门控反馈单元GRU组成,用来对来源旋律片段进行来源特征提取;和弦特征提取模块62由嵌入层和门控反馈单元GRU组成,用来对和弦序列进行和弦特征提取;旋律生成器63由嵌入层、门控反馈单元GRU和全连接层组成,用来生成第一旋律片段。
[0085] 在一种可能的实现方式中,可以将目标旋律划分为多个第一旋律片段M0…MP(其中,P为整数且P≥1),其中,第一旋律片段Mi(i为整数,且1≤i≤P)可表示为m0…mN(其中,N为整数且N≥1);与第一旋律片段Mi对应的和弦序列可表示为c0…cN;第一旋律片段Mi的来源旋律片段可表示为s0…sN;关系类型可表示为k+1维的独热向量r,表示第一旋律片段与来源旋律片段的关系类型或者第一旋律片段与其之前的旋律片段没有关系。
[0086] 在一种可能的实现方式中,可以将第一旋律片段Mi的来源旋律片段s0…sN输入来源旋律特征提取模块61中处理。来源旋律特征提取模块61的嵌入层将来源旋律片段s0…sN映射为向量表示序列WSs0,…,WssN,门控反馈单元将向量表示序列WSs0,…,WssN转化为来源特征,可以使用下述公式来(1)来表示来源特征:
[0087] hS=GRU(WSs)                  (1)
[0088] 在公式(1)中,hS表示来源特征,GRU()表示门控反馈单元,WSs表示来源旋律向量表示序列WSs0,…,WssN。
[0089] 在一种可能的实现方式中,可以将与第一旋律片段Mi对应的和弦序列c0…cN输入和弦特征提取模块62中处理。和弦特征提取模块62的嵌入层将和弦序列c0…cN映射为向量表示序列WCc0,…,WCcN,门控反馈单元将向量表示序列WCc0,…,WCcN转化为和弦特征序列,可以使用下述公式(2)来表示和弦特征序列:
[0090] hC=GRU(WCc)                  (2)
[0091] 在公式(2)中,hC表示和弦特征序列,GRU()表示门控反馈单元,WCc表示和弦向量表示序列WCc0,…,WCcN。
[0092] 在一种可能的实现方式中,在待生成目标音符mt(t为整数且0≤t≤N)不是第一旋律片段Mi的第一个音符m0时,其前序音符为前一个音符mt-1,可以将与目标音符mt的前序音符mt-1对应的特征向量、与前序音符mt-1对应的状态特征、和弦特征序列中与目标音符mt对应的和弦特征、来源特征以及关系类型,输入旋律生成器63中处理。首先,旋律生成器63中的嵌入层将已生成的音符m0…mt-1映射为向量特征序列W1m0,…,W1mt-1;然后根据与目标音符mt的前序音符mt-1对应的特征向量、与前序音符mt-1对应的状态特征(即门控反馈单元t-1时刻的状态特征)、和弦特征序列中与目标音符mt对应的和弦特征 来源特征hS以及关系类型rt,来确定与目标音符mt对应的状态特征ht,即门控反馈单元当前时刻(t时刻)的状态特征;然后对与目标音符mt对应的状态特征进行全连接处理,并进行概率分布及随机采样,得到目标音符mt。其中,概率分布可以使用Softmax函数或其他函数进行归一化,本公开对此不作限制。
[0093] 在一种可能的实现方式中,可以使用下述公式(3)来表示门控反馈单元当前时刻(t时刻)的状态特征:
[0094]
[0095] 在公式(3)中,ht表示门控反馈单元当前时刻(t时刻)的状态特征,即目标音符mt对应的状态特征;W1mt-1表示与目标音符mt的前序音符mt-1对应的特征向量;ht-1表示与前序音符mt-1对应的状态特征; 表示和弦特征序列中与目标音符mt对应的和弦特征;hS表示来源特征;r表示关系类型向量。
[0096] 在一种可能的实现方式中,可以使用下述公式(4)来表示与目标音符mt对应的特征状态在经过全连接后的概率分布:
[0097] yt=Softmax(W2ht)                    (4)
[0098] 其中,W2表示全连接;ht表示门控反馈单元当前时刻(t时刻)的状态特征,即目标音符mt对应的状态特征;Softmax()表示归一化指数函数;yt表示ht进行全连接后的概率分布。对yt进行采样(例如随机采样),可以得到目标音符mt。类似地,可以使用上述方法,依次生成mt+1…mN。
[0099] 在一种可能的实现方式中,在目标音符mt是第一旋律片段Mi的第一个音符m0时,其前序音符为前一个旋律片段Mi-1的最后一个音符mN。可以将与目标音符m0的前序音符mN(前一个旋律片段Mi-1中的最后一个音符)对应的特征向量、与前序音符mN(前一个旋律片段Mi-1中的最后一个音符)对应的状态特征、和弦特征序列中与目标音符m0对应的和弦特征、来源特征以及关系类型,输入旋律生成器63中处理,具体处理方法与上述目标音符mt的类似,在此不再赘述。
[0100] 在一种可能的实现方式中,所述神经网络还包括判别网络,所述方法还包括:根据预设的训练集,对抗训练所述结构生成网络与所述判别网络,其中,所述训练集中包括多个第一参考旋律。可以将训练集中的第一参考旋律输入结构生成网络中处理,生成第一旋律结构;然后将生成的第一旋律结构和与第一参考旋律对应的参考旋律结构输入判别网络中进行处理,得到判别结果。通过对结构生成网络与判别网络的多次对抗训练,可以使其性能逐步提升,从而可以利用结构生成网络可以生成更为逼真的第一旋律结构。
[0101] 在一种可能的实现方式中,在训练过程中,可以通过损失函数来训练结构生成网络和判别网络,并按照损失函数最小化的方向来调整网络参数值。当损失函数降低到一定程度或收敛于一定阈值内时,可以停止训练,得到训练好的神经网络。
[0102] 在一种可能的实现方式中,可以使用下述公式(5)来确定结构生成网络的网络损失L1,使用下述公式(6)来确定判别网络的网络损失L2:
[0103]
[0104]
[0105] 其中,表示生成的第一旋律结构;x表示参考旋律结构;其中, x~Pr,∈~U[0,1],Pg是生成的第一旋律结构的分布,Pr是参考旋律结构的分布;D表示判别网络,D(x)表示D对x的评分;E表示对分布取期望,λ表示网络超级参数,可以根据需要进行设定,例如λ=0.1。
[0106] 图8示出了根据本公开一实施例的判别网络的结构示意图。如图8所示,判别网络可以包括卷积层和线性整流处理层71,卷积层和线性整流处理层72,卷积层和线性整流处理层73和形状变换及全连接层74,其中,卷积层的卷积核为3×3,步长为2。
[0107] 在一种可能的实现方式中,可以将结构生成网络根据第一参考旋律生成的第一旋律结构和与第一参考旋律对应的参考旋律结构输入判别网络中进行处理,得到判别结果。例如,生成的第一旋律结构和参考旋律结构可以是形状为(k,32,32)的矩阵,将两者输入判别网络中处理,首先卷积层和线性整流处理71对输入的形状为(k,32,32)的矩阵进行第一次卷积和线性整流处理,得到形状为(16,16,16)的矩阵;之后卷积层和线性整流处理72对形状为(16,16,16)的矩阵进行第二次卷积和线性整流处理,得到形状为(32,8,8)的矩阵;
之后,卷积层和线性整流处理73对形状为(32,8,8)的矩阵进行第三次卷积和线性整流处理,得到形状为(64,4,4)的矩阵;之后形状变换及全连接层74对形状为(64,4,4)的矩阵进行形状变换及全连接处理,得到对输入的矩阵的真实性的评分,即,得到生成的第一旋律结构真实性的评分。
[0108] 在一种可能的实现方式中,在使用旋律生成网络生成旋律片段前,可使用包含多个旋律的训练集可例如一个曲库,对旋律生成网络进行训练。在训练过程中,可按照使损失函数最小化的方向来调整网络参数值,当损失函数降低到一定程度或收敛于一定阈值内时,停止调整,获得已训练的结构生成网络,从而可以提高旋律生成网络进行旋律生成时的性能。
[0109] 在一种可能的实现方式中,可以使用下述公式(7)来确定旋律生成网络的网络损失L3:
[0110]
[0111] 其中,θ表示旋律生成网络中的所有参数, 表示训练集,M表示训练集中的一个旋律。
[0112] 根据本公开实施例的基于旋律结构的旋律生成方法,能够根据基于旋律片段之间的关系类型的旋律结构,确定待生成旋律片段的来源旋律片段及其与来源旋律片段之间的关系类型,并根据和弦序列、来源旋律片段以及关系类型,生成旋律片段;根据生成的多个旋律片段,获得目标旋律,从而可以生成具有清晰的长程结构的目标旋律,提高了目标旋律的质量。
[0113] 需要说明的是,尽管以上述实施例作为示例介绍了基于旋律结构的旋律生成方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
[0114] 图9示出根据本公开一实施例的基于旋律结构的旋律生成装置的框图。如图9所示,所述装置包括:
[0115] 关系类型确定模块91,用于根据预设的第一旋律结构,确定第一旋律片段的来源旋律片段以及所述第一旋律片段与所述来源旋律片段之间的关系类型,其中,所述第一旋律片段是待生成的目标旋律的多个旋律片段中的任意一个,所述第一旋律结构用于表示所述多个旋律片段之间的关系;
[0116] 旋律片段生成模块92,用于根据与所述第一旋律片段对应的和弦序列、所述来源旋律片段以及所述关系类型,生成所述第一旋律片段;
[0117] 目标旋律生成模块93,用于根据生成的多个旋律片段,获得目标旋律,其中,所述关系类型包括重复、模进以及节奏模进中的任意一种。
[0118] 在一种可能的实现方式中,所述旋律片段生成模块92,包括:和弦特征提取子模块,用于对所述和弦序列进行和弦特征提取,得到和弦特征序列;来源特征提取子模块,用于对所述来源旋律片段进行来源特征提取,得到来源特征;生成子模块,用于根据所述和弦特征序列、所述来源特征以及所述关系类型,生成所述第一旋律片段。
[0119] 在一种可能的实现方式中,所述生成子模块用于:根据与目标音符的前序音符对应的特征向量、与所述前序音符对应的状态特征、所述和弦特征序列中与所述目标音符对应的和弦特征、所述来源特征以及所述关系类型,确定与所述目标音符对应的状态特征;根据与所述目标音符对应的状态特征,确定所述目标音符,其中,在待生成的目标音符不是所述第一旋律片段的第一个音符时,所述前序音符为所述目标音符的前一个音符。
[0120] 在一种可能的实现方式中,在待生成的目标音符是所述第一旋律片段的第一个音符时,所述前序音符为所述第一旋律片段的前一个旋律片段的最后一个音符。
[0121] 在一种可能的实现方式中,所述关系类型确定模块91,包括:第一确定子模块,用于在所述第一旋律片段不是所述目标旋律的第一个旋律片段时,根据所述第一旋律结构,判断在所述第一旋律片段之前的一个或多个旋律片段中是否存在与所述第一旋律片段相关的第二旋律片段;第二确定子模块,用于在存在所述第二旋律片段时,将所述第二旋律片段确定为来源旋律片段。
[0122] 在一种可能的实现方式中,所述关系类型确定模块91,还包括:第三确定子模块,用于在所述第一旋律片段是所述目标旋律的第一个旋律片段,或不存在所述第二旋律片段时,将零旋律片段确定为来源旋律片段。
[0123] 在一种可能的实现方式中,所述装置通过神经网络实现,所述神经网络包括旋律生成网络,所述旋律生成网络用于生成所述第一旋律片段。
[0124] 在一种可能的实现方式中,所述神经网络还包括结构生成网络,所述结构生成网络包括多个反卷积层,所述装置还包括:第一旋律结构生成模块,用于根据已训练的结构生成网络,生成所述第一旋律结构。
[0125] 在一种可能的实现方式中,所述神经网络还包括判别网络,所述装置还包括:训练模块,用于根据预设的训练集,对抗训练所述结构生成网络与所述判别网络,其中,所述训练集中包括多个第一参考旋律。
[0126] 在一种可能的实现方式中,所述装置还包括:第二旋律结构生成模块,用于对预设的第二参考旋律进行结构提取,得到所述第一旋律结构。
[0127] 在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
[0128] 本公开实施例还提出了一种基于旋律结构的旋律生成装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
[0129] 本公开实施例还提出了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
[0130] 图10示出了根据本公开一实施例的一种电子设备800的框图。例如,装置800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0131] 参照图10,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。
[0132] 处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
[0133] 存储器804被配置为存储各种类型的数据以支持在装置800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
[0134] 电源组件806为装置800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
[0135] 多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当装置800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0136] 音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
[0137] I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0138] 传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到装置800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0139] 通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。
在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
[0140] 在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
[0141] 在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器804,上述计算机程序指令可由装置800的处理器820执行以完成上述方法。
[0142] 图11示出了根据本公开一实施例的一种电子设备1900的框图。例如,装置1900可以被提供为一服务器。参照图11,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
[0143] 装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出(I/O)接口1958。装置1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
[0144] 在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由装置1900的处理组件1922执行以完成上述方法。
[0145] 本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
[0146] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0147] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0148] 用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0149] 这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0150] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0151] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0152] 附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0153] 以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。