模块化自动音乐制作服务器的制作方法

文档序号:21789083发布日期:2020-08-07 20:40阅读:222来源:国知局
模块化自动音乐制作服务器的制作方法

本公开内容涉及自动音乐制作。



背景技术:

基于人工智能(ai)的自动音乐制作是具有重大潜力的新兴技术。已经对训练ai系统(例如神经网络)进行了研究,以基于有限数量的输入参数来合成原始音乐。虽然这是令人兴奋的研究领域,但是迄今为止开发的许多方法存在音乐输出的品质和灵活性的问题,这又限制了这些方法在实际环境中的使用。



技术实现要素:

本公开内容的一个目的是提供一种具有改进的接口的自动音乐制作系统,该改进的接口允许与该系统的灵活且复杂的交互。这开辟了新的且令人兴奋的用例,其中该系统可以以适合音乐家、制作者等的个人需要和偏好的方式被用作他们的创建工具。

本发明的第一方面提供了一种用于合成音乐段的音乐合成系统,该音乐合成系统包括:计算机接口,该计算机接口包括至少一个外部输入,用于从外部设备接收对音乐合成的请求;控制器,该控制器被配置成基于在外部输入处接收的请求来确定用于音乐合成的多个音乐部分;以及合成引擎,该合成引擎被配置成针对所确定的音乐部分中的每个音乐部分,生成数字音乐符号格式的至少一个音乐段,该音乐段被配置成在同时演奏时在音乐上协作;其中,该计算机接口包括至少一个外部输出,该至少一个外部输出被配置成输出对所述请求的响应,所述请求包括或指示数字音乐符号格式的音乐段中的每个音乐段,用于在该外部设备处呈现为音频数据。

在实施方式中,控制器可以被配置成根据请求来确定标识用于合成的风格属性的风格参数,并且合成引擎被配置成基于风格参数来生成音乐段。

该合成引擎可以具有多个合成模块,其中,该合成引擎可以被配置成基于请求来选择合成模块中的一个或更多个合成模块。

合成模块中的一个或更多个合成模块可以基于风格参数。

合成模块中的每个合成模块可以与相应的风格指示符相关联,并且可以通过将风格参数与合成模块的风格指示符进行匹配来选择一个或更多个合成模块。

合成模块中的每个合成模块可以是概率序列模型的形式。

概率序列模型可以是训练的神经网络。

该合成引擎可以具有第一合成模块和第二合成模块,该第一合成模块被配置成针对音乐部分中的第一音乐部分生成至少第一音乐段,第二合成模块被配置成基于第一音乐段的数据来针对音乐部分中的第二音乐部分生成至少第二音乐段。

第一音乐段可以体现和弦序列,并且第二音乐段可以体现被合成为适合和弦序列的和声或旋律。

第一音乐段可以体现旋律,并且第二音乐段可以对体现旋律的配和声。

合成引擎可以具有被配置成接收打击乐部分的输入,并且段中的至少一个段可以基于打击乐部分来合成。

控制器可以被配置成使用概率选择过程从一组可用的合成参数中选择用于合成段的合成参数。

控制器可以被配置成基于请求来确定一组权重,并且可以根据所确定的权重来概率性地选择合成设置。

可以基于风格参数来确定权重。

合成引擎可以被配置成将音乐段中的每个音乐段与段标识符相关联地存储在数据库中。

计算机接口可以被配置成给请求指定作业标识符,该作业标识符与段标识符中的每个段标识符相关联。

对请求的响应可以包括作业标识符,并且由此指示音乐段。

本发明的第二方面提供了一种合成音乐段的方法,该方法包括在音乐合成系统处实现以下步骤:从外部设备接收对音乐合成的请求;基于该请求来确定用于音乐合成的多个音乐部分;通过合成引擎针对所确定的音乐部分中的每个音乐部分生成数字音乐符号格式的至少一个音乐段,该音乐段被配置成在同时演奏时在音乐上协作;以及输出对该请求的响应,该请求包括或指示数字音乐符号格式的音乐段中的每个音乐段,用于在外部设备处呈现为音频数据。

本发明的第三方面提供了一种计算机程序产品,包括存储在非暂态计算机可读存储介质上的可执行指令,并且该可执行指令被配置成当在音乐合成系统处执行时,使音乐合成系统实现该方法的步骤。

附图说明

为了更好地理解本发明,并且为了示出可以如何实现本发明的实施方式,参考以下附图,在附图中:

图1示出了音乐制作系统的示意框图;

图2示出了传入的作业请求可以如何由音乐制作系统处理;

图3示出了具有以堆叠排列的核心系统部件的音乐制作系统的高级概况;

图4示出了合成引擎的示意框图;

图5示出了用于生成多个音乐部分的音乐段的合成引擎的一个示例架构;

图6示出了响应于来自用户的请求而生成轨道的方法的流程图;

图7示出了设置数据库的可能结构的示意图;

图8示出了用于选择轨道设置的分级选择机制;

图9示出了音乐合成系统的一部分的示意框图;

图10示出了应用编程接口的示意框图;

图11示出了说明编辑音乐轨道的方法的流程图;以及

图12示出了ai音乐制作栈。

具体实施方式

现在将描述可以使用ai来合成和/或制作原始音乐的ai音乐制作系统。

ai音乐制作系统在下面可以被称为“jukedeck”系统。

传统上,合成音乐是人类的唯一领域。即使ai技术取得了所展示的进步,但是已经证明将这些技术应用于音乐合成是极其困难的,这是音乐的复杂性和性质。ai的一种形式,即机器学习,现在通常用于诸如图像和语音识别的领域。然而,ai在音乐上的应用之前很少看到成功。其原因包括如下:

1.音乐及其复杂;音乐是多维的,在音调和时间空间两者中操作,通常具有以许多不同方式同时交互的许多音乐成分。ai系统必须能够理解并解决这种复杂性。

2.历史上,音乐制作(编排片段、设置其音量水平、应用效果等)很大程度上是复杂的手动过程,其需要各种高级工具来完成。为了自动生成可以在当今使用音乐的各种环境中使用的音乐,系统必须不仅自动生成音乐乐谱;系统还必须使该复杂的音乐制作过程自动化。

jukedeck的技术介绍

jukedeck系统结合了全堆叠的基于云的音乐合成器,其解决了历史上如上所述将ai与音乐相关联的复杂性。该技术基于先进的音乐理论,并以新颖的方式组合神经网络,以在几秒内合成和制作独特的、专业品质的音乐。端到端技术栈可以总结如下:(i)选择流派和其他总体音乐属性,(ii)然后组合这些选择以形成透镜,通过该透镜合成各个音符和音符序列(音乐合成),(iii)然后将这些合成的音符制作为完整的音频轨道(音乐制作)。下面是从合成到制作到用户接口/api的栈的高级概览。

端到端技术栈

图12示出了ai音乐制作系统的示意功能框图,该ai音乐制作系统被示为包括自动合成引擎2、自动制作引擎3以及应用编程接口(api)形式的访问部件14。

自动音乐合成引擎

自动音乐合成引擎2执行生成音乐的第一步骤。传统上,基于ai的合成器或者是硬编码的、基于规则的系统(其通常制作听起来彼此非常相似的音轨),或者是基本的机器学习系统,这些系统缺乏复杂性,使其不能生成在任何环境下对用户有用的多面的、令人愉悦的音乐。

相比之下,合成引擎2利用新颖的神经网络结构来使其机器学习系统能够生成复杂的、结构良好的优质音乐输出。另外,这允许系统:

使音乐部分一起良好工作的能力最大化——新颖的技术确保系统以音乐上令人信服的方式生成彼此交互的音乐部分,显著地提高了所生成的音乐的整体品质。

更好地理解音乐选择的韵律上下文——其他ai系统难以具有长期记忆,该长期记忆是用于理解在进行合成选择时所需的韵律上下文所必需的。然而,本技术解决了这个问题,确保将韵律上下文因素纳入每个合成选择中,这提高了所生成的音乐的品质。

生成显著变化的输出——通过利用机器学习技术代替硬编码规则,合成引擎2提供更好地反映其所训练的数据集的特性的音乐输出。这意味着输出可以更多地变化,因为硬编码规则固有地限制了输出可能性的范围。

自动音乐制作引擎

自动音乐合成作引擎2负责合成音乐(以midi或其他数字音乐符号的形式),而自动音乐制作引擎3负责将音乐制作技术应用于该合成的音乐以创建演播室品质的音频轨道。制作引擎3自动地将自动音乐合成引擎2的输出组装成完全编排和制作的歌曲,然后将其输出到音频文件。制作引擎3对每个音乐部分使用哪些乐器和声音进行选择,并在复杂的、基于云的音频引擎(在图1中由附图标记12表示——参见下文)中自动地呈现、混合和控制音频。这允许根据用户期望的音乐设置(例如流派、情绪和持续时间)自动生成和制作歌曲,从而允许用户在没有音乐概念或音乐制作技术的先验知识的情况下创建新颖的歌曲。

自动音乐制作引擎3具有若干个关键的区别特征,包括:

高性能、基于云的音频引擎——大多数音频引擎被设计成在本地机器上运行并经由用户接口被控制以操纵音频。相比之下,jukedeck系统的音频引擎12在云中运行,并且被设计成在没有用户输入的情况下自动制作音频。这意味着jukedeck系统可以被各种应用和用户利用,不需要专业音乐知识,并且是高度可扩展的。

影响在音乐内的特定点发生什么的能力——视频创建者几乎总是在他们完成创建他们的视频之后提供音乐。在视频中经常存在创建者希望通过音乐的使用来强调的某些点。例如,在这些点处动作或多或少是强烈的,并且如果音乐匹配,则视频将更有效。现有的为视频提供音乐的方法通常不允许用户在音乐中设置某些事件应当发生的特定点。相比之下,本公开内容提供了“同步点”和“强度”特征,其又向视频创建者提供了使得他们的视频声轨更有效并且减少了编辑时间的功能。

同步点——jukedeck系统允许用户将他们轨道内的同步点设置为最近的毫秒。也就是说,jukedeck系统允许特定音乐事件(例如片段改变)被定位在轨道内的特定时间点。该特征允许音乐与另一媒体同步(例如,与在伴随的视频中发生的某个事件同步)。jukedeck系统能够在音频轨道内的多个不同时间点设置多个同步点。

强度——jukedeck系统允许用户指定音乐强度应在轨道过程中改变的方式。定义的强度曲线映射到声音的多个属性,并且进一步使得所生成的音乐能够被自动整形以适合伴随的媒体,从而允许诸如逐步累积到高潮的音乐结构在特定时间点发生。

这不是允许用户使用如下输入来创建音乐的简单情况,该输入影响使用预先呈现的音频分支(stem)的片段内的特定点处的声音;相反,jukedeck的引擎响应于用户输入实时生成原始音频。实时呈现音频允许在整个过程中对音乐的变化进行大得多的控制。虽然基于分支的系统只能将效果应用于用于构造歌曲的音频,但是jukedeck系统能够在经历任何效果之前直接改变正在播放的音符,以及改变用于每个音乐序列的声音。这给系统提供了在响应于期望同步点或强度的变化时听起来更逼真的潜力。例如,在人潜入水中的慢动作视频中,同步点或强度峰值可以被选择为与他或她击中水的点一致,以创建累积到高潮的音乐效果。

编辑先前生成的音频轨道的能力——可编辑性特征确保了任何先前生成的音频轨道都可以编辑,并且可以通过请求其遵循新的高级设置(例如修改的持续时间)来创建新版本。这意味着用户可以自动生成听起来与原始歌曲相似同时并入了所需的编辑的先前制作的歌曲的修订版本。这允许用户快速且有效地改变例如任何歌曲的持续时间,而不需要具有该任务传统上所需的任何专家编辑技能。

基于神经网络的音频合成——该技术的扩展是训练神经网络以将midi数据转换成音频数据而不需要第三方虚拟乐器的能力。

自动编排预先呈现的、人类合成的音频分支的能力——jukedeck系统的架构是模块化的,这意味着对于需要这种功能的情况,自动音乐制作引擎3还可以动态地重新编排预先再现的、人类合成的音频分支,以代替自动音乐合成引擎2的输出。这意味着本技术可用于将预先呈现的音频分支调整至媒体,其中需要精确同步点。

应用编程接口(api)

api14使得第三方开发者能够将ai合成音乐(音频或midi)的生成和定制直接并入其自身的应用程序中(应用程序、浏览器或移动环境中)。

所描述的ai音乐制作系统的关键特征是应用编程接口(api),api使开发者能够访问ai合成和制作系统的全部功能,从而允许用户大规模自动地创建专业品质的定制音乐。通过点击按钮可以访问一系列音乐类型。

api是用于音频和midi的api。也就是说,利用api,用户可以以midi格式生成音频文件及其底层作品两者。所提供的一些可能的选项总结在下表中:

可以使用音频及midiapi来支持广泛的应用,包括视频创建、游戏、音乐制作、生成音乐以伴随各种环境的视觉内容或其他内容、播客及内容自动化。

一些益处包括以下:能够通过单击、个性化音乐给予用户创建体验;通过独特特征增加用户参与度;仅通过几行代码将完整的音频轨道返回到平台;以及向用户提供人工创建的音乐,用户可自由使用该人工创建的音乐而没有与记录的音乐相关联的一些习惯限制。

图3示出了ai音乐制作系统的框图,其给出了后面将进一步详细描述的ai音乐制作系统的核心功能中的一些的高级概述。

本文中,在广义上使用术语人工智能,并且因此覆盖机器学习(ml)系统和不是ml系统的专家(基于规则的)系统,以及既不是ml系统也不是专家系统的其他形式的ai系统。尽管在下文中具体参考ml系统和专家系统或以上的组合,但是说明书同样适用于其他形式的ai系统。

该系统被示为包括合成引擎2和制作引擎3,其大体表示该系统的功能的两个核心方面。这些被示出为以堆叠的方式编排的层,其中合成引擎在制作引擎下方以反映它们各自的功能。后面描述堆叠的不同可能结构,但这些结构都广泛地遵循合成与制作之间的这种划分。

合成引擎2以数字音乐符号格式合成音乐段。本文中,数字音乐符号格式表示计算机可读形式的音乐乐谱的数字表示。一种这样的格式是基于事件的格式,其中音乐音符由具有开始时间/停止时间的事件指示。这种符号是已知的。这可以是如下格式,其中音乐音符被表示为音高值和表示音符的开始时间和结束时间(或以其开始时间和持续时间或“维持”的另一种方式来看)的相关定时数据。例如,音符可以单独表示或者以和弦表示。

音高值通常被量化为音乐半音,但是这不是必需的,并且量化的水平可以取决于音乐的类型。通常,其他音乐数据也将以格式来体现,例如每个音符的音高调制或速度。速度参数追溯到原声乐器,并且通常直观地对应于诸如钢琴或吉他的乐器应演奏的力度。该格式使得它可以由合成器(例如虚拟乐器)解释,该合成器实际上通过根据其内部音乐合成逻辑解释各种参数来“演奏”乐谱以创建音频。这种格式的一个示例是midi,midi是一种标准化的和广泛使用的表示乐谱的方式,但是该术语更一般地适用于包括定制格式的其他格式。以下通过示例来参考midi段,但所述描述同样适用于任何其他音乐符号格式。合成引擎优选地基于机器学习(ml)来操作,如后面所描述的。

本文中,术语“音乐段(musicsegment)”和“音乐的段(musicalsegment)”是同义词,并且通常是指数字音乐符号格式的任何音乐段。每个段可以例如是音乐小节、小节的一部分(例如四分音符、八分音符、半八分音符长度的段等)或多个小节的序列,这取决于上下文。音乐段可以是较长音乐乐谱中的段。音乐乐谱可以由多个音乐部分(对应于不同的表演语音,例如,有声部分、乐器、特定乐器的左手和右手部分等)构成。在活页音乐符号中,通常在单独的五线谱上对每个部分编谱(尽管例如可以使用和弦符号来对和弦部分编谱),并且从这个角度来看,每个音乐段可以对应于用于部分之一的小节、小节的一部分或小节序列。这同样适用于midi段,其中midi段是指midi格式的音乐段。虽然个别midi段可体现于单独midi文件或数据流中,但不同midi段可体现于同一midi文件或数据流内。如所属领域中已知的,还可以例如针对不同部分使用不同midi通道来在同一midi文件或数据流内体现针对不同音乐部分的midi段。因此,在以下描述中,midi循环和midi循环或部分的个别段两者均可以被称为音乐段。在上下文中将会清楚所指的内容。

制作引擎3的核心功能是获取一个或更多个midi段的集合且将其转换为可回放的音频数据。这是一个复杂的过程,其中通常仔细选择多个虚拟乐器和音效(混响、延迟、压缩、失真等)以将不同的midi片段呈现为单独的音频数据,将其协同地“混合”(组合)以形成具有所需的总体音乐和声音效果或“声景”的最终“轨道”,其中轨道基本上是音乐录音。制作引擎的角色类似于人类音乐制作者的角色,并且可以基于专家人类知识来配置制作引擎。然而,在使用中,制作过程是由相对少量的选定制作参数驱动的完全自动化的过程。制作引擎也是ai部件,并且可以被实现为专家(基于规则的)系统、非ml系统、ml系统或基于规则的和ml处理的组合。

由系统提供的一个关键服务是“从头开始”创建音频轨道形式(例如wav、aiff、mp3等)的音乐,其涉及合成创建midi段,这些midi段形成轨道的基础,轨道由制作引擎通过根据midi段合成音频部分,然后以上述方式混合这些音频部分而产生。关键服务在本文被称为“全栈”服务。

然而,系统架构的益处是其能够将制作引擎或合成引擎的功能的各个部分作为服务提供。

一种这样的服务在本文被称为“midi即服务”,由此人类制作者可以获得ml生成的midi段(例如,循环),他可以例如在数字音频工作站(daw)中对ml生成的midi段应用他自己的个人制作方法。从核心来讲,这本质上提供合成引擎的功能作为独立服务,尽管如将变得明显,取决于实现系统的方式,这可以利用制作引擎的元素(如后面所解释的,制作与合成之间的划分在一定程度上是特定于实现的)。这对于具有制作技能但缺乏合成技能或音乐灵感的用户特别有用。

另一种这样的服务是“制作即服务”,由此,创作者可以向系统提供他已经合成的midi段,其中,在该上下文中,ai系统承担制作者的角色,从这些midi段创建完成的音频轨道。这提供制作引擎的功能作为独立服务,并且本质上与midi即服务相反。制作即服务对于缺乏制作技能或倾向的创作者特别有用。

所有服务都可以经由应用编程接口(api)形式(例如webapi)的访问部件14来访问,由此经由诸如因特网的计算机网络在系统的api服务器与外部设备之间发送和接收api请求和响应。访问部件14包括如后面所描述的用于接收内部请求和外部请求的计算机接口。

关于合成与制作之间的划分,尽管这些中的每个具有限定特征的特定核心,但是就系统架构而言,在哪里划定界线存在一些灵活性。最后,该系统的结构符合其操作所依据的音乐原理。

简单地说,传统音乐创建过程可以分为以下阶段:

1.合成

2.演奏(或人性化)

3.制作

根据上下文,某些形式的合成可以被分成两个相对不同的子阶段:元素合成和编排。这里,元素合成指的是构成轨道的基本音乐元素的创建,然后对基本音乐元素进行编排以创建具有令人信服的长期结构的音乐段。这些都可以落入合成器的控制范围内,或者它们可以是完全分离的阶段,并且历史上这在一定程度上取决于于音乐的类型。然而,在其他上下文中,合成和编排可以基本上作为一个整体来执行。本文所用的术语“合成”可以指根据上下文并入编排或要素合成的合成。传统上,演奏是由人类演奏者引入的变化(例如定时/速度变化等)的元素,并且制作在录音中捕捉该演奏的过程。然而,随着时间的推移,这些方面之间的界线变得更加模糊,尤其是对于更现代的电子音乐更是如此,电子音乐可以使用midi音序等用不超过最小的人类演奏来创建,导致在某些情况下比起演奏更强调制作。现在,术语制作可以覆盖宽范围的事物,例如平衡各个通道的电平、均衡、动态控制(压缩、限制等)和其他音效(混响、延迟、失真等)、选择虚拟乐器以生成用于各个通道的音频等。

在ai音乐制作系统的实现方式方面,可将合成、编排和演奏功能实现为制作引擎的实质上独立的功能,其从合成引擎取得midi段,且分别对其进行编排和人性化。例如,midi片段可以为严格时间量化为小节的一部分(例如,1/16或1/32)的短循环。然后,可以对这些midi段进行编排(例如,根据主歌副歌类型结构),并且可以通过增加变化程度(时间、速度、音高等)来增加演奏,以接近不完美的人类演奏。通过此方法,可以方便地在制作引擎中实现这些功能以及作为最终音乐制作过程的一部分而执行的midi处理。

然而,同样可行的方法将是将这些功能中的一个或两个与合成本身合并,由此ml合成引擎被训练成在合成引擎内以令人信服的长期结构和可能的人性化来合成音乐。

因此,可以在制作引擎、合成引擎或两者的组合中实现编排和演奏。

在实际的环境中,系统的架构将在某种程度上反映了音乐合成和编排所采用的方法。

注意,人性化尤其是可选成分,并且可能不是每种类型的音乐(例如,某些类型的电子音乐)所期望的。

合成引擎:

下面描述合成引擎2的可能结构。首先讨论了形成合成引擎2的设计的某些基本原理。

概率序列模型(psm)是确定值或项的序列上的概率分布的组件。该分布可以从示例序列的数据集中学习到,或者例如由领域专家先验地固定。通过选择适当的数据集或对适当的专家知识进行编码,可以使psm反映感兴趣的域中的典型的时间结构,例如音乐中的典型的和弦或音符序列。

psm可以被用于根据其分布、通过根据在给定到目前为止采样的项的前缀下可能的下一项的隐含概率分布一次采样一项来生成序列。也就是说,根据由psm基于已经选择的一个或更多个项而生成的可能项的概率分布来选择每个项。在合成引擎的上下文中,项是音乐段,其可以例如对应于合成引擎级别的小节的一部分(例如1/16、1/32等),但是其可以是取决于如何配置psm的任何长度的段。每个音乐段例如可以对应于序列中特定点处的单独音符或和弦。

概率分布提供了一组针对序列选择的候选音乐段(音符、和弦等)——这基于已经为该序列选择的一个或更多个音乐段——以及每个候选音乐段的相关联的概率值,其定义了该音乐段被选择为序列中的下一个音乐段的可能性。因为输出是概率性的,所以这引入了变化元素,由此相同的合成设置可以产生不同的合成(如下所述,在选择合成设置本身时还可以引入附加的概率性元素)。

psm的示例包括马尔可夫链、概率语法和具有概率最终层(柔性最大传递函数(softmax)等)的递归神经网络。

合成引擎(ce)是能够将少量的合成参数转换成完整的音乐乐谱或更短的音乐节的系统,可能具有任意数量的部分。部分被理解为是在演奏性语音之间的音乐材料的划分,其然后可以以不同的方式被呈现。这种区别是音乐制作实践的基础;例如,不同的乐器和空间参数可以被分配给每个部分,以便模拟物理音乐演奏。

可以构建相对基本的合成引擎,其可以向多个部分提供单个psm,例如神经网络。也就是说,通过多部分合成的所有方面的完整的逐时描述上构建单个psm。这种方法是可行的,然而,对于更复杂的合成,这可能需要一些内部折衷以简化模型并使其可行。虽然这在一些情况下可能是足够的,但是当涉及更错综复杂的合成时,其他方法可能是有益的。

因此,根据复杂性的级别,在多个psm之间划分任务可能是适当的,其中每个psm具有专门的作用,例如集中于属性的特定组合或特定种类的部分。在这种情况下,重要的建模决策是每个psm的范围应多么具体。

以模块化方法将松散耦合的psm集合聚集在一起,这在如何服务对ce的各个请求方面具有很大的灵活性的潜力。

使用下面描述的技术,可以协调每个psm以便与其他psm一致地作业,而不限制任何单独psm的能力。也就是说,这些原理提供了以灵活的方式解决在多个psm之间共享信息的问题的解决方案。该技术的主要要素可以总结如下:

1.模块化可扩展系统,用于处理音乐属性,使得其可以形成到psm的输入或来自psm的输出的部分。

2.多个psm负责对属性和/或部分的受限组合进行建模。

3.用于根据另一属性或从外部约束所产生的属性来限制从psm采样的事件的机制。

现在将详细描述这些要素。

1.模块化可扩展系统,用于处理音乐属性,使得音乐属性可以形成到psm的输入或来自psm的输出的部分。

音乐事件是复杂对象,其可以根据与事件有关的潜在无限数量的方面或属性来描述,包括固有属性(例如,音高、持续时间、颤音等)以及事件与其上下文的关系(例如,基本的和声、其在时间上的位置、音符是高于还是低于前一音符等)。集中于有限数量的这些“视点”允许psm集中于捕获音乐序列的某些方面中的概率结构(以便获得易处理的模型),同时将其他的留待由某个其他系统处理。两个psm可以通过共享一个或更多个视点来协调;例如,可以从一个psm生成视点的值,并将其作为对另一psm的采样空间的约束馈入。这极大地降低了建模问题的复杂性。与视点一起工作的模块化方法意味着psm可以容易地被创建以对视点的任意组合进行建模,同时在训练和生成两者期间确保psm之间的一致协调。

2.具有负责对属性和/或部分的受限组合进行建模的多个psm。

解决复杂的合成问题的“分治”方法是为特定的音乐属性(特别是类型)提供专门的psm。例如,一个psm可以专门制作具有持续时间的和弦符号,而另一个psm可以专门制作和弦符号以及旋律音符音高及持续时间。这意味着每个psm可以集中于精确地对其属性组合建模,从而产生高品质、音乐上令人信服的输出。psm的松散耦合意味着它们可以在服务于合成请求的点上选择的组合中自由地使用,允许系统在选择可以为一个合成生成的部分的数量和种类方面是灵活的。

3.根据另一psm产生的属性来限制从psm采样的事件的能力。

某些psm可以以允许一个psm的输出成为另一个psm的(可能是部分)输入的方式被使用。例如,具有和弦符号的旋律音符上的psm可以被调节以匹配由不同psm制作的和弦符号。这促进了部分之间的一致性,并且允许合成引擎2利用多psm方法的模块性而不牺牲音乐品质。

图4示出了根据上述原理的合成引擎2的一种可能配置的另外的细节。在这种情况下,任务在多个神经网络之间划分,但是这些神经网络可以是如所示的psm的其他形式。

合成引擎2被示出具有输入402和输出404,它们分别是内部输入和输出。合成引擎输入402被配置成接收对midi段的请求,每个midi段具有如下所述的分配的作业标识符(id)。

合成引擎的关键功能是为不同的音乐部分生成音乐上协作的音乐段,这些音乐段被构造成同时演奏以创建一段连贯的音乐。midi段可以是midi“循环”,其可以被循环(重复)以便构建更复杂的轨道。如果为不同的音乐部分提供不同的midi循环,则这些midi循环可以同时循环以实现一起表演部分的效果。替选地,可在单个midi循环中捕获多个部分。然而,可以扩展这些原理,使得合成引擎2提供更长的音乐节,并且甚至为跨越音轨持续时间的每个部分提供完整的音乐节。

可以在单个作业请求中请求用于多个音乐部分的(一个或多个)音乐段。在分别请求不同段落的音乐(例如,主歌和副歌)的情况下,这些可以由单独的作业请求来请求,尽管在单个作业请求中请求这样的音乐段落(例如,一起请求主歌和副歌)的可能性也是可行的。这些(一个或多个)作业请求对应于图2的作业请求(下面描述),但是在图4中被标记为406a、406b。注意,这些作业请求可以直接从访问部件的外部输入接收(参见图1,如下),或者作为内部作业请求接收,如参照图2所解释的。每个作业请求包括作业id和一组合成参数,在该示例中,该组参数是:

如上所述,并非所有这些合成参数都是必需的,并且在不同的实现中可以定义其他不同类型的合成参数。该系统的关键方面是用户能够定义他们想要的类型(替选地,该系统可以在类型未被指定的情况下自动地选择类型-参见下文),并且合成引擎2可以根据后面描述的架构来提供不同类型的合成。

合成层2被示出为包括多个合成模块,标记为408a和408b。每个合成模块都是训练过的神经网络的形式,每个合成模块都已经在非常特定类型的音乐训练数据上训练过,从而它可以产生特定类型的音乐。在以下示例中,合成模块被称为网络,但是该描述同样适用于其他形式的ml或psm合成模块。

每个作业请求406a、406b中的合成参数既用于选择网络408a、408b中的适当的一个,也作为到所选网络的输入。在该示例中,每个预定类型与相应的多个网络相关联。作为示例,图4示出了与第一类型(类型a)相关联的第一网络408a和与第二类型(类型b)相关联的第二网络408b。

在每个类型组408a、408b内,可以为手头的任务选择合适的网络。如将理解的,选择网络的方式将取决于如何根据上述原理优化这些网络。

对于每个作业请求406a、406b,合成引擎2的合成控制器408选择网络的适当子集来服务该作业请求。基于与作业请求中指定的音乐类型相关联地子集选择网络子集。

如上所述,在同一作业请求中可以请求多个部分,例如和弦和旋律。这适用于对合成引擎2的内部请求和外部请求两者。

一旦生成,响应于每个作业请求506a、506b而生成的(一个或多个)midi段与所分配的作业id相关联地存储在作业数据库(24,图1)中。替选地,midi段可存储在单独的数据库中,且在此上下文中关于作业数据库的所有描述同样适用于所述事件中的单独数据库。

参照图5,与特定类型相关联的网络协作以制作多个音乐上协作的元素。这是通过以分级关系提供网络的输出作为到其他网络的输入来实现的。

为了说明这个基本原理,图5示出了与类型a相关联的三个网络:和弦(cn)、旋律(mn)和和声(hn),其对应于图4中的第一网络408a。

在该示例中,网络cn、mn和hn中的每个被示为配置成接收由合成引擎2的合成控制器408以上述方式确定的合成参数502作为输入。尽管被示为相同的输入,但是网络不需要接收完全相同的参数,并且例如每个可以接收合成参数的不同选择。

和弦网络cn被配置成基于参数502生成和弦序列(级数)504。这不必是midi,并且可以例如是符号和弦表示,但是将其转换为midi以用于后续处理可能是方便的(尽管不是必需的)。将所生成的和弦序列与适用的作业id相关联地存储在作业数据库中。

此外,旋律网络mn接收所生成的和弦序列504作为输入,并且基于和弦序列504和合成设置502生成旋律506,以便以音乐的方式伴奏和弦序列。也就是说,旋律506在音乐意义上围绕和弦序列504构建。所生成的旋律506也与适用的作业id相关联地存储在作业数据库24中。

此外,旋律506被输入到和声网络hn。和声网络hn基于合成设置502和旋律506生成和声508,和声508输出作为midi段,其是旋律506在音乐意义上的和声。尽管在图5中未示出,但是和声网络hn也可以适当地接收和弦序列504作为输入,使得可以协调旋律506并且还使和声508与和弦序列504相符。所生成的和声508也与适用的作业id相关联地存储在作业数据库24中。

和弦序列504、旋律506以及和声508可以在同一作业请求中被请求,并且在这种情况下,其与同一作业id相关联地一起存储在作业数据库24中。

每个网络的输出可以是但不必是midi,它可以是一些其他数字音乐符号格式,例如定制格式(参见上文)。在输出不是midi的情况下,后面将输出转换为midi可能是方便的,但这不是必需的。

网络还可以将外部midi例如用户生成的或库midi段作为输入,并围绕其进行合成。

网络可以合成的输入的另一个示例是打击乐器,其可以是用户或ml生成的。这里,打击乐器可以例如驱动所合成的段的节奏,或者强调被置于某些音符上(其中强调/速度在合成引擎2处被处理)。

全栈:

图1是示出音乐制作系统的一种可能配置的示意框图。音乐制作系统被组织成四个层或部件。从下文中将明显看出,在各个层或部件的功能之间可能存在一些交叠,但是以下描述清楚地示出了在音乐制作系统中如何组织音乐的生成。音乐制作系统操作以接收一组设置(后面将更详细地描述),并且生成一段音乐。在下文中,一段音乐被称为“轨道”,但是将理解,系统可以制作任何长度/字符的音乐。轨道可以以数字音乐乐谱符号(例如midi)或者以音频生成为音乐乐谱。在使用除midi之外的乐谱格式的情况下,将其转换为midi以供后面处理可能是方便的(但不是必需的)。为此,可以在系统内提供将符号乐谱转换成midi的转换层(未示出)。将了解,此转换层可以形成合成引擎本身的一部分或可以形成系统中可以接收乐谱且出于使用midi的目的而转换为midi的另一层的一部分。

制作管理部件(控制器)13以如下所述的方式管理系统的层。控制器13处理内部和外部请求两者,并且根据需要在一个或更多个层上启动功能,以便为每个请求提供服务。

附图标记2表示合成引擎。合成引擎操作以接收一组设置(后面将更详细地描述),并且生成待编排且制作到音轨中的midi段。合成引擎以符号格式生成要编排和制作到音轨中的音乐段。合成引擎使用psm的集合来生成音乐段。这些psm已经在被选择来例示特定音乐类型的音乐轨道的数据集上被训练。合成引擎基于输入设置确定采用哪些psm。

附图标记4表示编排层。编排层具有将由合成引擎2产生的midi段编排成音乐编排的作业。可以认为编排层以两个阶段操作。在第一阶段,编排层接收后面将描述的编排参数,并且根据这些参数产生音乐编排作为定义定时和所需序列等的包络。编排层的编排功能被标记为6。该包络定义了一段音乐的编排。如后面将更详细描述的,这些设置可用于通过制作管理器从合成引擎2请求midi段。编排层的第二阶段是排序功能8。根据排序功能,将midi段根据编排包络排序为完成的一段音乐。midi段可以由合成引擎(如先前所提及)提供,或可以从可由合成引擎2预先生成的合适midi段的预先存在的库存取。制作管理部件13可以例如检查库以查看合适的预先存在的midi是否可用,并且如果不可用,则向合成引擎2发起请求以生成合适的midi。替选地,可以响应于请求在合成引擎2处执行库检查,或者可以完全省略库检查。此外,midi段可由外部用户引入,如后面将更详细描述的。编排层4提供midi形式的一段编排的音乐。在一些情况下,这段“原始”的音乐可能适合于一些目的。然而,在这些情况下,它将不能以任何有用的形式播放。因此,提供了演奏层10,演奏层10向编排层4制作的一段音乐添加了演奏质量结构。

在编排部分中存在基于输入设置操作的决策树。这个决策树体现了人类专业知识,即人类音乐制作者的专业知识。编排层使用设置生成音乐编排结构,该音乐编排结构具有一组时间排序部,然后该音乐编排结构从合成引擎(或者别处,例如从库)请求midi,并且midi又根据编排结构被排序。

再次注意,这仅仅是可以为一段音乐创建多长形式的结构的一个示例。作为对此单独编排层的替选,其“不可知”地操作待排序的midi,可以在编排引擎2中将编排作为合成本身的一部分来处理。

演奏层输出midi的演奏质量的一段音乐。这在许多应用中是有用的。然而,类似地,存在需要一段音乐的音频版本的其他应用。为此,提供了音频呈现层12(音频引擎),其输出在音频中呈现的演奏质量的一段音乐。

一段音乐从midi到音频的转换或呈现可以以许多不同方式完成,且将不进一步描述,因为这些方式包含该领域中已知的方式。

如上所述,音乐制作引擎具有可以以api(应用编程接口)的形式实现的访问部件14。该访问部件使得能够在音乐制作系统内进行通信(具体地,制作管理部件13可以经由访问部件14与合成引擎2通信-参见下文),并且还使得能够将功能提供给外部用户。为了说明起见,访问部件14的面向音乐制作系统的一侧将被认为负责经由制作管理部件的层之间的内部路由,而背对的一侧将负责来自外部用户的输入和输出。将理解,这完全是示意性的,并且api可以以任何合适的方式实现。如本领域所公知的,使用api内的在处理器上执行的软件来实现api,以实现api的功能。

api具有用于从外部用户接收作业请求的至少一个外部输入16和用于将完成的作业返回给外部用户的至少一个外部输出18。另外,在一些实施方式中,api使得能够在音乐制作系统的内部层之间进行通信,如将描述的。

在输入16处可以请求的作业包括以下。

对标签的请求可以由用户输入,该用户检索可用于提供设置以创建音乐轨道的标签列表。标签包括音乐类型,例如钢琴、民谣音乐等等。下面仅通过示例的方式给出标签的完整列表。标签被保存在标签存储器20中。如果需要,这种请求还可以用于请求在系统内可用的设置。

可以定义不同类型的标签,例如情绪和流派标签。流派标签的示例包括:钢琴、民谣、摇滚、环境、电影、流行、舒放、团体、鼓乐和低音、综合流行。情绪标签的示例包括:令人振奋、忧郁、阴郁、愤怒、简单、沉思、幻想、动作、情绪、容易收听、平静(tec)、攻击性、热情、令人激动。可能的是,系统被配置成仅允许流派和情绪标签的某些组合,但这是设计选择。注意,这不是标签的穷举列表,可以使用任何合适的标签集合,这将在适当的时候如当描述在系统内选择制作和合成设置中的标签角色时变得明显。

可以在输入16处提供库查询,库查询生成对保存在轨道存储22中或替选地保存在作业数据库24中的音频库轨轨的分页列表的搜索。这些可以以后面描述的可编辑的格式存储。这些是已经由音乐制作系统创建的或者从某个其他地方上载到库的轨道。它们以使它们适于后面编辑的方式存储,如将在轨道制作过程中描述的。

对轨道的库查询返回以下参数:

作业id——这是已被识别的轨道的唯一标识,特别是允许轨道编辑的唯一id

标签——这些是与轨道相关联的标识类型的标签

资产——这表示资产的类型,即midi或waf

持续时间——这表示一段音乐的长度。在歌曲创建中,一段音乐的长度通常为大约3分钟。然而,可以出于多种目的生成一段音乐,并且

一段音乐可以具有任何合适的持续时间。

如将理解的,这些仅仅是示例,并且请求可以在不同的实现中返回不同的参数。

输入16还可以接收创建作业的请求。作业可以是不同类型的。

第一种类型的作业是创建音频轨道。为了实现这个作业,用户可以提供多个音频轨道创建设置,包括:

音乐类型

持续时间——音轨长度

一个或更多个标签——定义了轨道的类型

节奏——轨道的音乐节奏

同步点——在轨道或其他事件中存在强度集中的任何特定位置,例如在特定点的特定乐器输入或将音乐特征引入音轨的任何其他事件。

强度曲线——同步点的一般化允许以更大的灵活性将音轨中的期望强度变化定义为随时间的曲线。

注意,不是所有这些参数都是必需的。该系统能够基于最少的信息做出一些自主决定。例如,如果音频轨道仅被提供有持续时间,则系统能够创建音频轨道。制作管理部件13本身将确定该事件中的标签、节奏和同步点。实际上,系统能够在没有输入设置情况下生成轨道,如果在轨道请求中没有提供设置,则系统可以自动地选择任何设置。

制作管理部件还可以基于音乐类型来生成用于一个或多于一个层的设置。当生成完整的音轨时,这涉及基于类型来生成音用于频制作引擎3的音频制作参数和用于合成引擎2的合成参数,如以下更详细地描述的。

在下文中,某些参数可以根据需要被提及。如将理解的,这简单地涉及一种可能的实现,其中这些参数是作为设计选择的所需参数。然而,对于用户提供的任何参数没有基本要求,因为总是可以配置系统以自动地选择用户未提供的任何期望的参数。

第二类型的作业是请求要被创建的midi轨道。这项作业还需要输入至少持续时间,以及可选地至少一个标记、节奏和同步点。替选地,持续时间也可以是可选参数,并且如果没有提供持续时间,则系统可以自动地选择持续时间。

对音频轨道的请求涉及使用音乐制作系统的所有部件,包括音频呈现层来产生以音频呈现的轨道。在此示例中,创建midi轨道的请求使用合成引擎、编排层和演奏层来产生midi的轨道。它不使用音频呈现层。如上所述,编排层和演奏层是可选部件,并且可以在没有这些部件的情况下实现该系统。举例来说,合成引擎2可以被配置成在需要时生成具有人性化的完全编排的midi。

后面描述轨道制作。

第三种类型的请求是编辑现有的音频轨道。轨道以如下所述的方式存储在由唯一作业标识符标识的轨道库中。用户必须提供作业的id以进行编辑。注意,这可以通过执行先前提到的库查询以便识别需要编辑的轨道的正确作业id来实现。用户可以为轨道提供新的持续时间。可选地,可以定义节奏和同步点。其输出是现有音轨的新版本,如新设置所定义的那样编辑。替选地,如果用户不改变持续时间并且希望编辑音轨的一些其他(一个或多个)方面,则可以使用现有持续时间(或者如果没有提供持续时间,但是仍然希望改变持续时间,则系统甚至可以被配置成自动地选择持续时间)。系统能够处理编辑请求,因为如下所述,与系统在每个阶段做出的决定有关的足够信息被针对轨道id存储在作业数据库24中。

系统还可以被装备成处理编辑midi轨道的请求,如后面描述的。这些可以以与音频轨道编辑请求几乎相同的方式处理,但所得输出是midi而非音频。

第四作业是创建midi循环。这是由合成引擎执行的作业,并且可以接受与其他作业不同的参数组。其至少接收要生成的midi循环的小节长度(1、2、4或8,但此仅为示例)。替选地,长度可以是可选参数,并且如果没有提供长度,则系统可以自动地选择长度。此外,可以指定类型,例如钢琴、民谣、摇滚、电影、流行、舒放、团体、鼓和低音、环境、综合流行中的一个。这些可以被指定为上述意义上的标签。例如,可以提供主音数字[0-11],以及0=c,以及/或者可以提供音调作为例如天然性_主要和天然性_次要之一。如稍后将描述,合成引擎能够根据这些参数生成midi循环。此外,可提供启用参数,其打开midi的速度、时序和人性化。替选地,可以提供单独的参数以允许独立地启用/禁用这些参数。

类似的作业是创建音频循环。这类似于midi循环请求,但涉及制作引擎。这可以通过制作引擎请求midi循环,然后使其被呈现以提供可循环的音频来实现。

图9示出了用于实现api14的架构的一个示例。在这个架构中api14的关键特征是它可以以相同的方式处理内部作业请求和外部作业请求两者。也就是说,源自音乐制作系统外部的作业请求和由系统本身的部件发起的、被引导到系统的其他部件的作业请求两者。这种情况的特定示例是由合成引擎2提供的“midi即服务”功能,该功能既可用于外部用户,也可用于系统本身的部件,例如制作管理器13。

api14处的每个传入请求(无论是内部还是外部)根据请求的类型而被分配给许多作业队列31中的一个。在该示例中,合成作业队列34被示为耦合到合成引擎2。制作作业队列32和midi作业队列32a被示出为耦合到制作管理部件13,这两个队列32、32a被提供用于保持由制作管理部件13处理的不同类型的请求。分配给制作作业队列32的作业涉及音频引擎12的音频轨道,而分配给midi作业队列32a的作业涉及midi而不涉及音频引擎12。也就是说,制作管理部件可以处理音频请求和midi请求两者。

某些类型的请求“绕过”制作引擎3和制作管理部件13,并且被分配给合成作业队列34以便由合成引擎2处理,而不涉及制作引擎3或制作管理部件13。这样的请求可以源自外部设备或源自制作管理部件13。

将由制作管理部件13服务的请求——例如对整个轨道的请求或对轨道进行编辑的请求(见下文)——在音频的情况下被分配到制作作业队列32,以及在midi的情况下被分配到midi作业队列32a,以便由制作管理部件13进行处理。如后面进一步详细描述的,在制作管理部件13处接收到的这种请求可以导致制作管理部件13经由同一api14向合成引擎2发起其自己的一个或更多个内部请求,这些内部请求又被分配给合成作业队列34以供合成引擎2处理。

尽管在图9中未示出,但是可以方便地为api14可以处理的每种类型的请求提供单独的作业队列。因此,实际上可以有多个音频类型作业队列(例如音频创建和音频编辑)和多个midi类型作业队列(例如midi创建和midi编辑)耦合到制作管理部件13。

现在将参照图2描述音轨创建任务。在图2中,圆圈中的数字表示方法的步骤,并且不同于表示结构的特定元件的参考数字。图2所示结构的元件对应于图1中所讨论的元件,并且用对应于图1中的参考数字来标记。

在步骤1中,人类用户可以在api14的输入16提供作业请求30。作业请求30原则上可以为上述任何作业类型,但本说明书的当前部分涉及音频轨道或midi轨道的创建。如上所述,作业请求30定义至少一个参数以用于定义这些轨道的创建。替选地,如所述,作业请求30可以不定义参数,并且在该事件中所有参数可以由系统自动选择。在步骤2处,在api14内,作业标识符被分配给作业请求30。这在本文被称为ida。然后,将该作业分配给与制作管理器13相关联的制作作业队列32。将作业ida分配给制作队列由步骤3表示。

在步骤4处,制作管理器操作以制作轨道。制作管理器13可以访问编排层4、演奏层10和音频呈现层12。注意,在图2中,演奏层没有单独示出,而是被认为可供制作管理者根据需要使用。制作管理器13根据在制作层中实施的人工智能模型与编排层4相关联地操作。这可以通过决策树来实施,该决策树结合了人类专业知识和知识来引导制作层完成音轨的制作,然而其他实现方式也是可能的。例如,如已经提到的,制作引擎可以使用ml来实现。该决策树使制作管理器13访问编排层4,如步骤5处所示。编排层4操作以提供音乐编排,该音乐编排至少包括定时和期望的时间标记(小节的拍数),并将编排包络返回给制作管理器13,如步骤5a所示。然后,制作管理器13被激活以请求midi段,这些midi段将被排序成由编排层4提供的编排。如上所述,这仅仅是通过示例描述的一种可能的实现。特别地,如上所提到的,该系统可以在没有编排层4和演奏层8中的一个或两个的情况下实现,当需要时,这些层的功能在系统中的其他地方处理,例如并入合成引擎2的操作中。该请求也可以通过api输入(在本文中称为内部api输入17)来施加。例如,制作管理器13可以生成多个midi作业请求;例如,这些在图2中所示的分别标记为b1、b2、b3的作业请求。将每个midi作业请求施加到api14的内部输入17,api14将作业标识符分配给midi作业请求,该作业标识符被表示为idb1、idb2和idb3,并且在步骤8中,将用唯一标识符标记的这些作业提供给midi作业队列34。标识符被返回到制作管理器13。这由步骤7示出。

具有其唯一标识符的作业被分配给合成引擎2,这可以使用人工智能/机器学习各个midi段来生成。合成引擎已经如上所述地被训练。

合成引擎2将如步骤9处指示的midi段输出到作业数据库24中。midi段可以存储在单独的数据库中,或者可以存储在与要描述的其他已完成作业相同的作业数据库中。每个midi段与其唯一识别符相关联地存储,使得其可被再调用。制作管理器13周期性地轮询api14以查看由idb1、idb2和idb3标识的作业是否已经完成,如在下一段中所描述的。这在步骤10中示出。当它们准备好访问时,它们被返回到制作管理器13,该制作管理器可以如上所述的将它们提供给编排层以便地排序。排序的段经由制作管理器13返回到输出(当需要midi轨道时),或者当需要音频轨道时返回到音频呈现层12(步骤12)。

以这种方式分配作业id具有各种益处。因为当接收到请求时将作业id分配给该请求,所以在请求实际上被处理之前(取决于请求的性质,这可能花费几秒或者更长时间,特别是在音频的情况下),api14可以立即将包括作业id的对该请求的响应返回到请求的源。例如,可以在实际生成或检索音频或midi之前返回对音频或midi的请求。然后请求的源可以使用返回的作业id来查询系统(如果必要的话重复地查询)以查询所请求的数据(例如音频或midi)是否准备就绪,并且当准备就绪时,系统可以作为响应返回所请求的数据。这避免了在处理请求的同时保持连接打开的需要,这在可靠性和安全性方面是有益的。

音频引擎:

现在接着描述在本文中描述的音乐制作系统中如何再现音频。参照图1和图2。对音频轨道的请求是上述可以在api14的输入16处接收的作业类型之一。在此上下文中,api提供用于接收对音频轨道的请求的计算机接口。在这一点上,音频轨道是一段任何适当长度的音频再现的音乐。假设它是一段完整的音乐,在某种意义上说,它可以在音频数据中再现并且作为完整的音乐作品被收听。该传入请求被分配了作业id。如上所述,请求可以包括用于创建音频轨道的一个或更多个参数。注意,还如前所述,可以在不提供任何轨道创建参数的情况下请求轨道,在这种情况下,系统可以使用例如涉及默认参数的默认轨道创建过程。这样的默认参数将响应于输入16处的请求而在制作管理部件13处产生。例如,可以以90秒预配置默认持续时间。其他默认长度是可能的。基于该请求,确定多个音乐部分。这些可以在制作管理部件13处基于在输入16处提供的请求中的输入参数或者根据由制作管理部件生成的参数来确定。替选地,音乐部分可以由作出请求的用户在请求本身中提供。在这种情况下,可以从制作管理部件13的请求中提取音乐部分。这为音乐制作系统提供了广泛的灵活性。也就是说,它可以在没有来自用户的输入的情况下作业,或者在由用户提供的许多约束的情况下作业,包括轨道创建参数和/或音乐部分。在步骤s602中示出了音乐部分的确定。还根据该请求生成音频制作设置。这在步骤s603中示出。注意,步骤s602和s603可以顺序地或并行地执行。它们可以由制作管理部件或音乐制作系统内的任何适当部件来执行。

在步骤s604处,音频制作设置和音乐部分被提供给音频呈现部件。此外,数字音乐符号格式的音乐段序列被提供给音频呈现部件。该序列由合成引擎生成或在别处获得,并且是midi段的形式。这些midi段可如本说明书中前面相关部分的描述而生成,尽管这些midi段不需要以此方式生成。此外,应当理解,可以将midi段的编排序列提供给音频呈现部件12。该编排顺序可以从如前所述的编排部件4得出,或者可以是由组合的合成引擎和编排引擎生成的编排顺序。或者,可以由作出音频轨道请求的用户提供编排的midi序列。

在步骤s605处,音频呈现部件12使用音频制作设置、音乐部分和midi序列来呈现音乐轨道的音频数据。在步骤s606处,音乐轨道通过api部件的输出端口18被返回给作出请求的用户。

现在将给出步骤603的更详细的描述,在步骤603中选择音频制作设置。制作管理部件13使用一个或更多个标签来访问图1中标记为23的设置数据库。一个或更多个标签可以在输入16处输入的请求中定义,或者可以由制作管理部件根据输入请求中的信息生成,或者在制作管理部件处自动地生成。

例如,如果在请求中定义了类型参数,则可以从标签数据库20请求适合于该类型参数的标签。替选地,一个或更多个标签可以由制作部件13随机选择。在图7中示出设置数据库23的结构。数据库23可使用标签查询,因为每个编排设置数据库对象与一个或更多个标签相关联。对可以与单个编排设置对象相关联的标签的数量没有限制。可以通过提供一个或更多个标签并返回标记有所有所提供的标签的所有编排设置对象来查询编排设置对象的数据库。在数据库23中示出了与标签t1和t2相关联的编排设置对象o1,但是对象o1可以与任意数量的标签相关联。每个编排设置对象包括三组设置。存在一组编排设置70、一组合成设置72和一组音频设置74。这仅仅是示例,并且可以有更多或更少的设置组。如将理解的,设置的分组反映了系统的架构,其可以如所述灵活地设计。例如,编排设置70可以被并入到合成设置72中,其中编排作为合成的一部分来处理。

这些组被定义为根据由(一个或多个)标签指示的类型在完成的音乐段中协同操作。如已经描述的,标签可以定义诸如流派/情绪/乐器之类的事物。由制作管理部件13从设置数据库23调用的设置用于控制音乐的制作。可以从每个音乐部分的每个组中选择设置的特定集合,或者一个或更多个设置可以应用于多个音乐部分。参考图8以示出用于音频制作的选择流程。从用于特定标的一个或多个签签的音频设置组中为每个部分选择乐器。这在图8中用交叉影线表示。为每个部分选择乐器的一种方式是从适合于该部分的设置组中随机选择乐器。在音频设置内,可以存在与每个部分相关联的设置类别,例如低音、旋律、和声等等。

通过从一组声音设置中选择一设置来选择该乐器的特定声音。这种选择可以是随机的。可以为每个声音选择一个或更多个音效。再次,这可以从适合于特定声音的一组音效中随机选择。为了实现这些选择,制作管理部件13使用决策树,其中已经嵌入了关于特定乐器对于特定部分、特定声音、特定乐器和特定音效的适合性的知识。

在这个上下文中的术语“声音”是指虚拟乐器预置。虚拟仪器是本领域的术语,并且是指软件合成器,并且虚拟仪器预置指的是优选地与用于配置该虚拟仪器的一个或更多个设置的集合一起的特定的虚拟仪器。虚拟乐器预置定义了特定的虚拟乐器和虚拟乐器的音色或音质。不同的虚拟仪器预置可以涉及相同或不同的虚拟仪器。例如,对于模拟钢琴的虚拟乐器,可以存在使虚拟乐器听起来像大钢琴的预置,并且存在使其听起来像直立钢琴的另一预置。当为乐器选择声音时,系统在这些预置之间进行选择。将构成虚拟仪器的设置捆绑到单个文件中是方便的。

与标签相关联的合成设置可被提供给合成引擎2以用于控制midi段的输出以结合到轨道中。与标签相关联的编排设置70可以应用于编排层4,以用于确定来自合成引擎的midi段应当如何在标签的支配下被编排。

完成的轨道与分配给传入请求的作业id一起存储在作业数据库24中。

音轨可以按照被选择来生成轨道的设置(轨道设置80)连同从合成引擎2输出的排序midi和/或(一个或多个)未排序midi循环或(一个或多个)其片段一起而不是作为音频数据本身被存储。然后,可以将该排序的midi与音乐部分和所选择的音频制作设置一起提供给音频呈现部件12(如图6的流程的步骤s604中那样),以重新生成轨道。轨道设置80不仅由所选择的音频设置组成,而且由合成设置和编排设置组成。也就是说,轨道设置80包含由制作管理部件13所做出的所有选择,并且因此包含完全再现音轨所需的所有设置。为了再现相同的轨道,这些存储的轨道设置80可以在图6中的步骤s604处被使用来创建相同的轨道。在该背景下音,轨道设置80被称为再现性设置。

返回图2,在对轨道的请求的上下文中,所分配的作业id(ida)构成轨道的标识符。轨道设置80与轨道标识符ida相关联地存储在作业数据库24中。此外,标识符idb1、idb2和idb3与轨道标识符ida相关联地存储在作业数据库24中,使得可以使用轨道标识符ida来检索用于构建音轨的midi片段。这些midi段可以是排序的或未排序的midi段,或者是两者的组合。与ida相关联地存储在作业数据库24中的信息足够全面,使得可以在后面的时间使用该信息来再现音轨。

现在将参照图11描述用于编辑现有轨道的示例过程,其示出了在步骤s1102中在api14处接收编辑请求52。编辑请求52被示为包括要编辑的轨道的作业id54和至少一个新设置56,轨道应当根据该新设置编辑。编辑请求实际上是创建全新音乐轨道的请求,但是使用用于生成较早轨道的设置和/或midi段中的至少一个来这样做。编辑的轨道可以是音频轨道或midi轨道。在步骤s1104处,将对编辑请求52的响应59返回到请求52的源。响应59包括作业id58,作业id58是分配给编辑请求52本身的作业id。注意,编辑请求52本身的该作业id58不同于被分配给导致创建该轨道的较早请求的要编辑的轨道的作业id54(该较早请求可以是从头创建轨道的请求,或者本身可以是编辑现有轨道的请求)。在步骤s1106处,编辑请求52以上述方式被提供给制作管理部件13。使用要编辑的轨道的作业id54,制作管理器13使用作业id54查询(s1108)作业数据库24,以便检索与其在步骤s1110接收的作业id54相关联的轨道设置80。在轨道设置80包括对用于创建轨道的midi段的一个或多个引用的情况下,如果需要,这些也可由制作管理器13检索。如所述,此类引用可以是作业id的形式,其中midi段存储在作业数据库24中,或者它们可以是对其中保存midi段的单独数据库的引用。从这一点来看,除了用于创建音轨的编辑版本的轨道设置是从作业数据库24检索的一个或更多个轨道设置80与在编辑请求52中提供的一个或更多个新设置56的组合这一事实之外,该方法以与参照图6描述的相同方式进行。

新设置56的一个示例是轨道持续时间,如果用户想要创建现有轨道的更长或更短版本,则用户可以提供该轨道持续时间。在简单的情况下,所有原始轨道设置80可以用于创建轨道的编辑版本连同原始midi段,但是用新持续时间替换原始持续时间。替选地,可合成更适合于新持续时间的新midi段,其涉及对合成引擎2的内部请求。这仅仅是一个简单的示例,并且设想了更复杂的轨道编辑。注意,尽管在图11的示例中,在编辑请求52中提供了一个或更多个新设置56,但是在更复杂的场景中,制作管理器13实际上可以响应于编辑请求52而选择这样的(一个或多个)新设置56本身,例如通过基于编辑请求52中指示的设置来选择附加设置,或者通过由一些其他手段自动地选择(一个或多个)新设置。

如图11中的步骤s1112所示,分配给编辑请求52的作业id58以与其他请求相同的方式连同被标记为80’的编辑轨道的轨道设置存储在作业数据库24中。轨道设置80’是已经用于生成轨道的编辑版本的设置,并且如上所述,这些设置由一个或更多个原始轨道设置80与以上述方式响应于编辑请求52而确定的(一个或多个)新设置56的组合构成。

上面提到的各种部件,尤其是制作管理部件13、制作引擎3(即,音频呈现部件12、演奏部件10和编排部件4)和合成引擎2是用软件实现的系统的功能部件。也就是说,合成系统包括一个或更多个处理单元,例如通用cpu、专用处理单元诸如gpu或其他专用处理硬件、或通用处理硬件和专用处理硬件的组合,所述一个或更多个处理单元被配置成执行计算机可读指令(代码),这使得一个或更多个处理单元实现本文描述的每个部件的功能。诸如gpu等专用处理硬件可特别适用于实现制作引擎2的ml功能的某些部分,并且在使用ml来实现这些功能时也可实现其他部件。(一个或多个)处理单元可以在计算机设备或协作计算机设备的网络(例如服务器或服务器网络)中实施。

图10示出了说明api14的一些结构的示意框图,其被示出为包括计算机接口42和耦合到计算机接口42的请求管理器44。请求管理器44管理在如上所述的计算机接口42处接收的请求。特别地,请求管理器44将每个请求分配给作业队列31中的适当的一个,并且将唯一的作业标识符(id)分配给每个请求(内部请求和外部请求两者)。作业id服务于后面描述的各种目的。api14可以被实现为服务器(api服务器)或服务器池。对于后者,请求管理器42可以被实现为服务器池,并且计算机接口42可以至少部分地由负载平衡器提供,该负载平衡器代表服务器池接收请求并将每个请求分配给服务器池44的服务器之一,该服务器又将其分配给适当的作业队列。更一般地,api14是至少一个计算机设备(例如服务)和被配置成执行本文描述的api功能的任何相关联的硬件的形式。计算机接口42表示发送和接收请求的硬件和软件的组合,并且请求管理器44表示管理那些请求的硬件和软件的组合。请求被定向到计算机接口的网络地址,例如与其相关联的url或uri。api14可以是webapi,具有至少一个为此目的而提供的web地址。可以提供一个或多个这样的网络地址用于接收传入请求。

根据反馈自动学习

该系统例如在如后面描述的合成引擎2中并入了诸如神经网络之类的机器学习(ml)部件。这些是可训练的部件,其可以根据用户参与系统时提供的反馈进行学习。

基础技术利用图12中由附图标记1200表示的高效反馈回环:用户越多地与jukedeck的ai软件交互以创建、收听、改变并最终下载轨道,则随着用户数据被反馈到系统中,ml部件在合成音乐时就越能完成。利用该用户数据的能力允许基于用户交互来持续改进基础技术。

因此,jukecapo系统的至少一个部件,例如合成引擎2或制作引擎3,可以被配置成基于从系统的用户收集的信息来调整其操作。此信息可从各种源——例如轨道或midi创建请求、检索请求、编辑请求、下载请求等——收集,或可从从系统的用户获得的任何其他信息源收集。

应用

该技术可应用于使用音乐的任何情况,使其与多个类别相关,包括用于视觉/沉浸式媒体(例如,视频、社交媒体、电视、广告、游戏、虚拟现实等)的音频、个人收听(例如,音乐流、无线电等)以及音乐创建工具(例如,音乐制作软件)。

视觉/沉浸式媒体(例如,视频、社交媒体、广告、游戏、ar/vr等)

相比以前,更多的内容被创建,包括用户生成的视频、视频广告、游戏以及增强和虚拟现实内容。然而,为该内容寻找音乐传统上是极其困难的;音乐通常是昂贵的,权利是限制性的,并且需要手动编辑以使音乐适合所讨论的内容。

本技术解决了这些问题,大规模地提供低成本、权利清晰、个性化的内容。此外,系统响应于各种各样的数据输入而创建音频轨道的能力开辟了视听体验的全新的境界,允许基于诸如音乐品味(流派、节奏等)、情境数据(情绪、一天中的时间等)和人口统计数据(位置、年龄、性别等)的输入来向内容消费者提供个性化音乐,从而使内容显著地更有效。

另外,自动音乐制作引擎3重新编排预先再现的、人工合成的分支的能力是指可以使现有制作库中的人工合成的歌曲适于适合用户的需要。例如,可以自动生成不同长度的轨道的多个不同版本。

个性化用例

一个用例是动态音乐创建,通过该动态音乐创建,可以针对各个用户生成针对他们对音乐的品味的独特的个性化音乐,并且该独特的个性化音乐受到各种其他因素的影响,包括他们的心情、一天中的时间、他们的位置以及其他上下文输入。此外,本技术使得音乐能够实时地对这些因素做出反应。

音乐创建工具(例如音乐制作软件)

历史上,由于音乐的高度复杂性,音乐创建主要是专家的领域。随着时间的推移,连续的技术进步(例如合成器、数字音频工作站)已经允许更多的人参与音乐制作过程。本技术是进一步的进步:它可以用于向对音乐不太熟悉的人提供音乐帮助(例如协调他们的旋律)或者向对音乐更熟悉的人提供音乐灵感以及增加的效率。

总结

本文公开的动态音乐创建能力可以用于:针对各种类型的内容以及在各种场景(例如,视频、广告、视频游戏、零售)中提供声音轨道,(ii)提供用于经由传统音乐分发通道(流服务等)分发的音频轨道,其可以动态地响应于收听者特定的因素,以及(iii)向音乐家提供工具以在创建过程中帮助他们。

虽然以上对具体实施方式进行了,但是这些不是穷举性的。本发明的范围不是由所描述的实施方式限定,而是仅由所附权利要求限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1