用于音乐生成器的比较训练的制作方法

文档序号:33700553发布日期:2023-03-31 18:37阅读:49来源:国知局
用于音乐生成器的比较训练的制作方法

1.本公开涉及音频工程,并且更具体地涉及生成音乐内容。


背景技术:

2.流媒体音乐服务通常经由互联网向用户提供歌曲。用户可以通过web浏览器或应用程序订阅这些服务并流式传输音乐。此类服务的示例包括pandora、spotify、grooveshark等。用户常常可以选择音乐流派或特定艺术家进行流式传输。用户通常可以对歌曲进行评级(例如,使用星级评级或喜欢/不喜欢的系统),并且一些音乐服务可以根据之前的评级来定制哪些歌曲被流式传输给用户。运行流媒体服务的成本(可能包括为每首流媒体歌曲支付版税)通常由用户订阅成本和/或歌曲之间播放的广告支付。
3.歌曲选择可能会受到许可协议和为特定流派创作的歌曲数量的限制。用户可能会厌倦听到特定流派的相同歌曲。此外,这些服务可能无法根据用户的口味、环境、行为等调整音乐。
附图说明
4.图1是示出示例性音乐生成器的示意图。
5.图2是示出根据一些实施例的用于基于来自多个不同源的输入生成输出音乐内容的系统的示例性概览的框图。
6.图3是示出根据一些实施例的被配置为训练音乐生成和音乐内容的分类的示例性音乐生成器系统的框图。
7.图4是示出根据一些实施例的示例性音乐分类子系统的框图。
8.图5是示出根据一些实施例的音乐生成子系统中的示例性音乐控制实施方式的框图。
9.图6是示出根据一些实施例的用于音乐分类子系统的示例性训练系统的框图。
10.图7是示出根据一些实施例的具有作曲子系统和演奏子系统的示例音乐生成器的框图。
11.图8是示出根据一些实施例的作曲子系统和演奏子系统的更详细实施例的框图。
12.图9a-图9b是示出根据一些实施例的图形用户界面的框图。
13.图10是示出根据一些实施例的包括分析模块和作曲模块的示例音乐生成器系统的框图。
14.图11是示出根据一些实施例的音乐内容的示例增进章节的示意图。
15.图12是示出根据一些实施例的用于布置音乐内容的章节的示例技术的示意图。
16.图13是根据一些实施例的用于训练音乐生成系统的流程图方法。
17.图14和图15是示出根据一些实施例的示例方法的流程图。
具体实施方式
18.于2013年8月16日提交的第13/969,372号美国专利申请(现为第8,812,144号美国专利)讨论了用于基于一个或多个音乐属性生成音乐内容的技术,该专利的全部内容以引用方式并入本文。就基于上述申请372的定义与本公开的其余部分之间的感知冲突作出的任何解释而言,本公开旨在进行支配。音乐属性可以由用户输入或者可以基于诸如环境噪声、照明等的环境信息来确定。上述公开372讨论了用于选择存储的循环和/或曲目(track)或生成新循环/曲目以及使选择的循环/曲目分层以生成输出音乐内容的技术。
19.于2019年5月23日提交的第16/420,456号美国专利申请(现为第10,679,596号美国专利)讨论了用于生成音乐内容的技术,该专利的全部内容以引用方式并入本文。就基于上述申请456的定义与本公开的其余部分之间的感知冲突作出的任何解释而言,本公开旨在进行支配。可以基于用户的输入或使用计算机实施的方法来生成音乐。上述公开456讨论了各种音乐生成器实施例。
20.如本文所使用的,术语“音频文件”是指针对音乐内容的声音信息。例如,声音信息可以包括将音乐内容描述为诸如wav、aiff或flac格式的原始音频的数据。音乐内容的属性可以包括在声音信息中。属性可以包括例如可量化的音乐属性,例如乐器分类、音高转录、节拍计时、拍子、文件长度和多个频率分段中的音频幅度。在一些实施例中,音频文件包括特定时间间隔内的声音信息。在各种实施例中,音频文件包括循环。如本文所使用的,术语“循环”是指单个乐器在特定时间间隔内的声音信息。参考音频文件讨论的各种技术也可以使用包括单个乐器的循环来执行。音频文件或循环可以以重复方式播放(例如,一个30秒的音频文件可以连续播放四次以生成2分钟的音乐内容),但音频文件也可以播放一次,例如不重复。
21.本公开最初参考图1和图2描述示例音乐生成器模块和具有多种应用程序的整体系统组织。用于训练音乐生成系统的技术将参考图3-图6进行讨论。用于音乐生成的技术将参考图7-图8进行讨论。图9a-9b示出了示例性应用程序界面。
22.在一些实施例中,一个或多个分类器在服务器系统上(例如,在云中)被训练,同时强化学习在用户设备上实施以改进音乐生成。所公开的技术可以有利地允许基于由多个系统使用的全局分类器模型的定制用户音乐生成器模块,从而减少训练时间和成本并且允许集中训练但具有个性化结果。
23.一般而言,所公开的音乐生成器包括音频文件、元数据(例如,描述音频文件的信息)以及用于基于元数据组合音频文件的技术。生成器可以创建音乐体验使用规则来基于元数据和音乐体验的目标特性识别音频文件。该生成器可以被配置为通过添加或修改规则、音频文件和/或元数据来扩展其可以创建的体验集。可以手动执行调整(例如,艺术家添加新的元数据),或者音乐生成器可以按照其监视给定环境内的音乐体验和期望的目标/特性来增加规则/音频文件/元数据。例如,可以实施听众定义的控件用于获取用户对音乐目标或特性的反馈。
24.示例性音乐生成器的概述
25.图1是示出根据一些实施例的示例性音乐生成器的示意图。在所示实施例中,音乐生成器模块160从多个不同源接收各种信息并生成输出音乐内容140。
26.在所示实施例中,模块160访问存储的(一个或多个)音频文件和针对存储的(一个
或多个)音频文件的对应属性110,并且组合音频文件以生成输出音乐内容140。在一些实施例中,音乐生成器模块160基于它们的属性选择音频文件并且基于目标音乐属性130组合音频文件。在一些实施例中,可以基于环境信息150结合目标音乐属性130来选择音频文件。在一些实施例中,环境信息150被间接用于确定目标音乐属性130。在一些实施例中,目标音乐属性130由用户明确地指定,例如,通过指定期望的能量水平、情绪、多个参数等。例如,可以实施本文描述的听众定义的控件以指定使用的听众偏好作为目标音乐属性。目标音乐属性130的示例包括能量、复杂性和多样性,但是也可以指定更具体的属性(例如,对应于所存储曲目的属性)。一般而言,当指定较高级别的目标音乐属性时,系统可以在生成输出音乐内容之前确定较低级别的特定音乐属性。
27.复杂性可以指作品中包含的音频文件、循环和/或乐器的数量。能量可能与其他属性相关或可能与其他属性不相关。例如,改变调式或拍子可能影响能量。然而,对于给定的拍子和调式,可以通过调整乐器类型(例如,通过添加高帽(high hats)或白噪声)、复杂性、音量等来改变能量。多样性可以指生成的音乐随时间的变化量。种类可以针对一组静态的其他音乐属性来生成(例如,通过为给定的拍子和调式选择不同的曲目),或者可以通过随时间改变音乐属性来生成(例如,通过在期望更大的多样性时更频繁地改变拍子和调式)。在一些实施例中,可以认为目标音乐属性存在于多维空间中,并且音乐生成器模块160可以缓慢地移动通过该空间,例如,如果需要的话则基于环境变化和/或用户输入进行路线校正。
28.在一些实施例中,与音频文件一起存储的属性包含关于一个或多个音频文件的信息,包括:拍子、音量、能量、种类、频谱、包络、调制、周期性、上升和衰减时间、噪声、艺术家、乐器、主题等。请注意,在一些实施例中,音频文件被分区,使得一组一个或多个音频文件特定于特定音频文件类型(例如,一种乐器或一种乐器类型)。
29.在所示实施例中,模块160访问存储的(一个或多个)规则集120。在一些实施例中,存储的(一个或多个)规则集120指定以下规则:要覆盖多少音频文件以使得它们同时播放(这可能对应于输出音乐的复杂性),在音频文件或乐句之间过渡时使用哪个大调式/小调式进程,要一起使用哪些乐器(例如,彼此具有亲和力的乐器)等,以实现目标音乐属性。换言之,音乐生成器模块160使用存储的(一个或多个)规则集120来实现由目标音乐属性(和/或目标环境信息)定义的一个或多个声明性目标。在一些实施例中,音乐生成器模块160包括一个或多个伪随机数生成器,其被配置为引入伪随机性以避免重复输出音乐。
30.在一些实施例中,环境信息150包括以下一项或多项:照明信息、环境噪声、用户信息(面部表情、身体姿势、活动水平、运动、皮肤温度、特定活动的表现、服装类型等)、温度信息、区域中的购买活动、一天中的时间、一周中的一天、一年中的时间、在场人数、天气状况等。在一些实施例中,音乐生成器模块160不接收/处理环境信息。在一些实施例中,环境信息150由基于环境信息确定目标音乐属性130的另一个模块接收。目标音乐属性130也可以基于其他类型的内容(例如视频数据)来导出。在一些实施例中,环境信息用于调整一个或多个存储的规则集120,例如,以实现一个或多个环境目标。类似地,音乐生成器可以使用环境信息来调整一个或多个音频文件的存储属性,例如,以指示与那些音频文件特别相关的目标音乐属性或目标观众特性。
31.如本文所使用的,术语“模块”是指被配置为执行指定操作的电路或存储指示其他
电路(例如,处理器)执行指定操作的信息(例如,程序指令)的实体非暂时性计算机可读介质。模块可以以多种方式实施,包括作为硬接线电路或作为其中存储有程序指令的存储器,这些程序指令可由一个或多个处理器执行以执行操作。硬件电路可以包括例如定制的超大规模集成(vlsi)电路或门阵列、现成的半导体,例如逻辑芯片、晶体管或其他分立组件。模块还可以实施在可编程硬件设备中,例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件或类似物。模块还可以是存储可执行以执行指定操作的程序指令的任何合适形式的非暂时性计算机可读介质。
32.如本文所使用的,短语“音乐内容”既指音乐本身(音乐的可听表示),也指可用于播放音乐的信息。因此,作为文件记录在存储介质(例如但不限于光盘、闪存驱动器等)上的歌曲是音乐内容的示例;通过输出该记录文件或其他电子表示(例如,通过扬声器)产生的声音也是音乐内容的示例。
33.术语“音乐”包括其公知的含义,包括乐器产生的声音以及人声。因此,音乐包括例如乐器演奏或录音、无伴奏合唱演奏或录音,以及包括乐器和声音的演奏或录音。本领域的普通技术人员将认识到“音乐”不包括所有的声音记录。不包含诸如节奏或韵律之类的音乐属性(例如,演讲、新闻广播和有声读物)的作品不是音乐。
34.一段音乐“内容”可以以任何合适的方式与另一段音乐内容区分开来。例如,对应于第一首歌曲的数字文件可以代表第一段音乐内容,而对应于第二首歌曲的数字文件可以代表第二段音乐内容。短语“音乐内容”还可用于区分给定音乐作品中的特定音程,使得同一首歌曲的不同部分可以被视为不同的音乐内容片段。类似地,给定音乐作品内的不同曲目(例如,钢琴曲目、吉他曲目)也可以对应于不同的音乐内容片段。在可能无穷无尽的生成音乐流媒体的上下文中,短语“音乐内容”可用于指代流媒体的特定部分(例如,几个小节或几分钟)。
35.本公开的实施例产生的音乐内容可以是“新音乐内容”——以前从未产生过的音乐元素的组合。一个相关的(但更广泛的)概念——“原创音乐内容”——将在下面进一步描述。为了便于解释该术语,描述了与音乐内容生成的实例相关的“控制实体”的概念。与短语“原创音乐内容”不同,短语“新音乐内容”不涉及控制实体的概念。因此,新音乐内容是指以前从未由任何实体或计算机系统生成的音乐内容。
36.从概念上讲,本公开将一些“实体”称为控制计算机生成的音乐内容的特定实例。此类实体拥有可能对应于计算机生成内容的任何合法权利(例如版权)(在任何此类权利可能实际存在的范围内)。在一个实施例中,创建(例如,编码各种软件例程)计算机实施的音乐生成器或操作(例如,提供输入到)计算机实施的音乐生成的特定实例的个体将是控制实体。在其他实施例中,计算机实施的音乐生成器可以由法律实体(例如,公司或其他商业组织)创建,例如以软件产品、计算机系统或计算设备的形式。在一些实例中,可以将这种计算机实施的音乐生成器部署到许多客户端。在各种实例中,根据与该音乐生成器的分发相关联的许可的条款,控制实体可以是创建者、分发者或客户端。如果不存在这样的明确法律协议,则计算机实施的音乐生成器的控制实体是促进(例如,提供输入并由此操作)音乐内容的计算机生成的特定实例的实体。
37.在本公开的含义内,控制实体对“原创音乐内容”的计算机生成是指1)控制实体或任何其他人以前从未生成过的音乐元素的组合,以及2)之前已生成但最初由控制实体生成
的音乐元素的组合。内容类型1)在本文中称为“新颖音乐内容”,其与“新音乐内容”的定义类似,不同之处在于“新颖音乐内容”的定义是指“控制实体”的概念,而“新音乐内容”的定义并不是。另一方面,内容类型2)在本文中称为“专有音乐内容”。请注意,上下文中的术语“专有”并不是指内容中任何隐含的合法权利(尽管可能存在此类权利),而仅用于表示音乐内容最初是由控制实体生成的。因此,控制实体“重新生成”由控制实体先前且最初生成的音乐内容构成本公开中的“原始音乐内容的生成”。针对特定控制实体的“非原创音乐内容”为并非是该控制实体的“原创音乐内容”的音乐内容。
38.一些音乐内容片段可以包括来自一个或多个其他音乐内容片段的音乐成分。以这种方式创建音乐内容被称为“采样”音乐内容,并且在特定音乐作品中很常见,特别是在特定音乐流派中。这样的音乐内容在本文中被称为“具有采样成分的音乐内容”、“衍生音乐内容”或使用其他类似术语。相比之下,不包括采样成分的音乐内容在本文中被称为“没有采样成分的音乐内容”、“非衍生音乐内容”或使用其他类似术语。
39.在应用这些术语时,应注意,如果任何特定音乐内容被减少到足够的粒度级别,则可以论证该音乐内容是衍生的(实际上意味着所有音乐内容都是衍生的)。在本公开中,术语“衍生物”和“非衍生物”没有在这个意义上使用。关于音乐内容的计算机生成,如果计算机生成从控制实体以外的实体的预先存在的音乐内容中选择成分的部分(例如,计算机程序选择流行艺术家作品的音频文件的特定部分以包含在正在生成的一段音乐内容中),则此类计算机生成被认为是衍生的(并产生衍生的音乐内容)。另一方面,如果计算机生成不利用此类预先存在的内容的此类成分,则音乐内容的计算机生成被认为是非衍生的(并产生非衍生音乐内容)。请注意,一些“原创音乐内容”的片段可能是衍生音乐内容,而一些片段可能是非衍生音乐内容。
40.要注意,术语“衍生”在本公开中意在具有比美国版权法中使用的术语“衍生作品”更广泛的含义。例如,根据美国版权法,衍生音乐内容可能是也可能不是衍生作品。本公开中的术语“衍生物”并非旨在传达负面含义;它仅用于表示特定音乐内容片段是否“借用”了另一部作品的部分内容。
41.此外,短语“新音乐内容”、“新颖音乐内容”和“原创音乐内容”不旨在包含与预先存在的音乐元素组合仅细微不同的音乐内容。例如,仅仅改变预先存在的音乐作品的几个音符不会产生新的、新颖的或原创的音乐内容,如本公开中使用的那些短语。类似地,仅仅改变预先存在的音乐作品的调式或拍子或调整频率的相对强度(例如,使用均衡器界面)不会产生新的、新颖的或原创的音乐内容。此外,短语、新的、新颖的和原创音乐内容并不旨在涵盖那些介于原创和非原创内容之间的音乐内容;相反,这些条款旨在涵盖毫无疑问且可证明是原创的音乐内容,包括有资格获得控制实体版权保护的音乐内容(在本文中称为“受保护的”音乐内容)。此外,如本文所使用的,术语“可用”音乐内容是指不侵犯除控制实体之外的任何实体的版权的音乐内容。新的和/或原创的音乐内容常常是受保护的和可用的。这在防止复制音乐内容和/或为音乐内容支付版税方面可能是有利的。
42.尽管本文讨论的各种实施例使用基于规则的引擎,但是各种其他类型的计算机实施的算法可以用于本文讨论的任何计算机学习和/或音乐生成技术。然而,基于规则的方法在音乐环境中可能特别有效。
43.可以在示例性音乐系统中使用的应用程序、存储元件和数据的概述
44.音乐生成器模块可以与多个不同的应用程序、模块、存储元件等交互以生成音乐内容。例如,终端用户可以为不同类型的计算设备(例如,移动设备、台式计算机、dj设备等)安装多种类型的应用程序之一。类似地,可以向企业用户提供另一种类型的应用程序。在生成音乐内容的同时与应用程序交互可以允许音乐生成器接收外部信息,该外部信息可以用于确定目标音乐属性和/或更新用于生成音乐内容的一个或多个规则集。除了与一个或多个应用程序交互之外,音乐生成器模块还可以与其他模块交互以接收规则集、更新规则集等。最后,音乐生成器模块可以访问一个或多个规则集、音频文件和/或存储在一个或多个存储元件中的生成的音乐内容。此外,音乐生成器模块可以将上面列出的任何项目存储在一个或多个存储元件中,该存储元件可以是本地的或经由网络访问的(例如,基于云的)。
45.图2是示出根据一些实施例的用于基于来自多个不同源的输入生成输出音乐内容的系统的示例性概览的框图。在所示实施例中,系统200包括规则模块210、用户应用程序220、web应用程序230、企业应用程序240、艺术家应用程序250、艺术家规则生成器模块260、所生成音乐270的存储和外部输入280。
46.在所示实施例中,用户应用程序220、web应用程序230和企业应用程序240接收外部输入280。在一些实施例中,外部输入280包括:环境输入、目标音乐属性、用户输入、传感器输入等。在一些实施例中,用户应用程序220安装在用户的移动设备上并包括允许用户与规则模块210交互/通信的图形用户界面(gui)。在一些实施例中,web应用程序230没有安装在用户设备上,但是被配置为在用户设备的浏览器内运行并且可以通过网站来访问。在一些实施例中,企业应用程序240是由更大规模的实体用来与音乐生成器交互的应用程序。在一些实施例中,应用程序240与用户应用程序220和/或web应用程序230结合使用。在一些实施例中,应用程序240与一个或多个外部硬件设备和/或传感器通信以收集关于周围环境的信息。
47.在所示实施例中,规则模块210与用户应用程序220、web应用程序230和企业应用程序240通信以产生输出音乐内容。在一些实施例中,音乐生成器160被包括在规则模块210中。请注意,规则模块210可以包括在应用程序220、230和240之一中,或者可以安装在服务器上并经由网络访问。在一些实施例中,应用程序220、230和240从规则模块210接收生成的输出音乐内容并且使该内容被播放。在一些实施例中,规则模块210请求来自应用程序220、230和240的例如关于目标音乐属性和环境信息的输入,并且可以使用该数据来生成音乐内容。
48.在所示实施例中,存储的(一个或多个)规则集120由规则模块210访问。在一些实施例中,规则模块210基于与应用程序220、230和240的通信来修改和/或更新存储的规则集120。在一些实施例中,规则模块210访问存储的(一个或多个)规则集120以生成输出音乐内容。在所示实施例中,存储的(一个或多个)规则集120可以包括来自艺术家规则生成器模块260的规则,下面将进一步详细讨论。
49.在所示实施例中,艺术家应用程序250与艺术家规则生成器模块260(例如,其可以是同一应用程序的一部分或者可以是基于云的)通信。在一些实施例中,艺术家应用程序250允许艺术家为他们的特定声音创建规则集,例如,基于先前的作品。第10,679,596号美国专利进一步讨论了此功能。在一些实施例中,艺术家规则生成器模块260被配置为存储生成的艺术家规则集以供规则模块210使用。用户可以在使用规则集通过他们的特定应用程
序生成输出音乐之前从特定艺术家那里购买规则集。针对特定艺术家的规则集可以称为签名包。
50.在所示实施例中,存储的(一个或多个)音频文件和对应的(一个或多个)属性110在应用规则以选择和组合曲目以生成输出音乐内容时由模块210访问。在所示实施例中,规则模块210将生成的输出音乐内容270存储在存储元件中。
51.在一些实施例中,在服务器上实施并通过网络访问图2的元件中的一个或多个,这可以称为基于云的实施。例如,存储的(一个或多个)规则集120、(一个或多个)音频文件/(一个或多个)属性110和生成的音乐270都可以存储在云上并由模块210访问。在另一个示例中,模块210和/或模块260也可以在云中实施。在一些实施例中,生成的音乐270被存储在云中并以数字方式进行水印。例如,这可以允许检测复制生成的音乐以及生成大量定制音乐内容。
52.在一些实施例中,所公开的模块中的一个或多个被配置为生成除了音乐内容之外的其他类型的内容。例如,系统可以被配置为基于目标音乐属性、确定的环境条件、当前使用的规则集等来生成视觉内容。作为另一个示例,系统可以基于正在生成的音乐的当前属性来搜索数据库或互联网,并且显示随着音乐的变化而动态变化并与音乐的属性相匹配的图像拼贴画。
53.示例性机器学习方法
54.如本文所述,图1所示的音乐生成器模块160可以实施多种人工智能(ai)技术(例如,机器学习技术)来生成输出音乐内容140。在各种实施例中,实施的人工智能技术包括深度神经网络(dnn)与更传统的机器学习技术和基于知识的系统的组合。这种组合可以将这些技术的各自优势和劣势与音乐作品和个性化系统中固有的挑战相结合。音乐内容具有多个层次的结构。例如,一首歌有章节、乐句、旋律、音符和质地。一些机器学习技术可以有效地分析和生成高级别和低级别细节的音乐内容。例如,dnn可以擅长将声音的质地分类为属于低级别的单簧管或电吉他,或者检测高级别的诗句和合唱。中间级别的音乐内容细节,例如旋律的构建、管弦乐编曲等可能会比较困难。dnn通常擅长在单个模型中收集广泛的风格,因此,dnn可以实施为具有大量表达范围的生成工具。
55.在一些实施例中,音乐生成器模块160通过将人类编写的音频文件(例如循环)作为音乐生成器模块使用的音乐内容的基本单元来利用专家知识。例如,专家知识的社会背景可以通过节奏、旋律和质地的选择被嵌入,以记录多级别结构中的启发式。与dnn和基于结构层面的传统机器学习的分离不同,专家知识可以应用于任何可以增加音乐性的领域,而不会对音乐生成器模块160的可训练性施加过强的限制。
56.在一些实施例中,音乐生成器模块160使用dnn来找出音频层如何组合的模式,通过将声音相互层叠来垂直组合,并且通过将音频文件或循环组合成序列来水平组合。例如,音乐生成器模块160可以实施lstm(长期-短期记忆)递归神经网络,该lstm递归神经网络在多曲目音频录音中使用的循环的mfcc(梅尔频率倒谱系数)音频特征上进行训练。在一些实施例中,网络被训练以基于对先前节拍的音频特征的了解来预测和选择即将到来的音乐节拍的循环的音频特征。例如,可以训练网络以基于对最后128个节拍的音频特征的了解来预测接下来8个节拍的循环的音频特征。因此,网络被训练为利用低维特征表示来预测即将到来的节拍。
57.在特定实施例中,音乐生成器模块160使用已知的机器学习算法将多曲目音频的序列组装成具有强度和复杂性的动态特征的音乐结构。例如,音乐生成器模块160可以实施分层隐马尔可夫模型,它可以像状态机一样进行状态转换,其概率由多级分层结构确定。例如,在增进章节之后可能更有可能发生特定种类的下降,但如果增进结束时没有鼓,则不太可能发生。在各种实施例中,概率可以被透明地训练,这与正在学习的内容更不透明的dnn训练形成对比。
58.马尔可夫模型可以处理更大的时间结构,因此可能不容易通过呈现示例曲目来训练,因为示例可能太长。反馈控制元件(例如用户界面上的拇指向上/向下)可用于随时对音乐提供反馈。然后可以使用音乐结构和反馈之间的相关性来更新用于作曲的结构模型,例如转换表或马尔可夫模型。该反馈也可以从心率、销售或系统能够确定明确分类的任何其他度量的测量结果中直接收集。如上所述,专家知识启发式也被设计为尽可能概率性,并以与马尔可夫模型相同的方式进行训练。
59.在特定实施例中,训练可以由作曲家或dj执行。此类训练可以与听众训练分开。例如,听众(例如典型用户)进行的训练可能仅限于分别基于正面和负面模型反馈来识别正确或不正确的分类。对于作曲家和dj而言,训练可能包括数百个时间步长,并包括有关使用的层和音量控制的详细信息,以提供更明确的细节来了解推动音乐内容变化的因素。例如,作曲家和dj执行的训练可以包括与上述dnn的全局训练类似的序列预测训练。
60.在各种实施例中,训练dnn以根据最近播放的音乐顺序预测dj随时可能与他们的音频界面发生的交互。在一些实施例中,这些交互可以被记录并用于开发更透明的新启发式。在一些实施例中,dnn接收许多先前的音乐度量作为输入,并且利用如上所述的低维特征表示,以及描述dj或作曲家已对曲目应用的修改的附加特征。例如,dnn可以接收音乐的最后32小节作为输入,并且利用低维特征表示以及附加特征来描述dj或作曲家对曲目应用的修改。这些修改可以包括调整特定曲目的增益、应用的滤波器、延迟等。例如,dj可能会在演奏期间使用相同的鼓循环重复五分钟,但可能会随着时间的推移逐渐增加曲目上的增益和延迟。因此,除了循环选择之外,还可以训练dnn来预测这种增益和延迟变化。当没有为特定乐器播放循环时(例如,没有播放鼓循环),对于该乐器而言特征集可能是全零,这可以允许dnn学习预测全零可能是一个成功的策略,这可能导致选择性分层。
61.在一些实例中,dj或作曲家使用混音器和诸如traktor(本地乐器gmbh)之类的设备录制现场演奏。这些录音通常以高分辨率捕获(例如,4曲目录音或midi)。在一些实施例中,系统将录音分解成其组成循环,从而产生关于作品中循环的组合以及每个单独循环的声音质量的信息。用该信息训练dnn(或其他机器学习)为dnn提供了将作品(例如,排序、分层、循环的定时等)和循环的声音质量相关联的能力,以告知音乐生成器模块160如何创建与艺术家演奏相似的音乐体验,而不使用艺术家在演奏中使用的实际循环。
62.具有比较训练的示例性音乐生成器
63.一种用于生成音乐内容的技术结合了生成器和分类器(或“鉴别器”)子系统以在生成的音乐中产生新的人工制品。一种命名技术是“生成对抗网络(或gan)”。gan利用训练音乐生成器的方法将分类器“愚弄”成不正确的分类,并且分类器使用正确和不正确的分类尝试作为训练和改进分类器的新数据。提供这样的输入是希望生成器能够更好地愚弄分类器,并且分类器能够更好地正确分类,从而创建一个反馈循环,使得在两者上产生更好性
能。训练这些子系统的过程常常依赖于将子系统构建为可通过反向传播过程进行训练的可区分网络。
64.然而,当复杂的不可区分过程是音乐生成器的一部分时,单独的反向传播可能不适合训练,并且可能需要更慢、更复杂的强化学习方法。与gan不同,强化学习包括机器学习,其中系统涉及“代理”和“环境”,并且环境的设计会对系统结果产生很大影响,但训练不是通过特定技术执行的。在一些实例中,强化学习可能会很慢、昂贵,并且会产生有趣但不一定是高质量的结果。为了克服这些缺陷,本发明人已认识到,可以通过实施一个系统来进行改进,该系统利用具有新的音乐特定环境的强化学习方法,该强化学习方法被设计为通过人在循环中(human-in-the-loop)过程并且利用高质量的音频处理来提高系统输出的音乐性。
65.图3是示出根据一些实施例的被配置为训练音乐生成和音乐内容的分类的示例性音乐生成器系统的框图。在所示实施例中,系统300包括音乐生成子系统310和音乐分类子系统320。在特定实施例中,音乐生成子系统310位于特定用户设备(例如,个人计算机、膝上型电脑、移动设备或便携式设备)上,而音乐分类子系统被远程定位(例如,在云中)。还设想了用于子系统的位置的其他实施例。在特定实施例中,音乐生成子系统310包括音乐生成器模块160和参数生成模块312。系统300还包括强化输入生成模块330,该强化输入生成模块330可以与音乐生成子系统310和音乐分类子系统320分开定位或者可以位于那些子系统中的一个子系统中。
66.在各种实施例中,音乐生成器模块160访问存储的音频文件302以生成输出音乐内容316。在特定实施例中,音乐生成器模块160从存储的音频文件302中的数字音乐片段生成输出音乐内容316。在各种实施例中,数字音乐片段是预先录制的音乐片段。数字音乐片段可以包括例如预先录制的数字音乐的样本或位(例如,歌曲或作曲的部分样本)。数字音乐片段还可以包括预先录制的乐器采样或其他预先录制的音乐采样。
67.在特定实施例中,输出音乐内容316是指定长度(例如,30秒或60秒)的音乐流或作曲。例如,输出音乐内容316可以是从多个音频文件、多个音频文件的部分或多个音乐片段生成的具有指定长度的作曲。在各种实施例中,输出音乐内容316包括不同输出音乐内容的阵列。例如,阵列可以包括从音乐片段的任何组合生成的指定长度的各种作曲。
68.在各种实施例中,输出音乐内容316中的阵列为系统300中的强化学习提供环境。在特定实施例中,提供环境包括用具有指定长度的任何数量的可能作曲填充阵列,这样的作曲可以通过由音乐生成器模块160从存储的音频文件取回的一组音乐片段来生成。在一些实施例中,可以用从一组音乐片段生成的指定长度的每个可能作曲填充阵列。在许多实施例中,对于从一组音乐片段可能产生大量的作曲,由音乐生成器模块160生成的作曲的一部分(可能只有一小部分)可能被一般人认为是音乐的。
69.在各种实施例中,音乐生成器模块160根据一个或多个音乐生成参数314从存储的音频文件302(例如,数字音乐片段)生成输出音乐内容316。如本文所使用的,音乐生成参数314可以包括控制对音乐片段或其他样本的选择和处理的参数,这些音乐片段或其他样本被组合以生成输出音乐内容316。在各种实施例中,音乐生成参数314限定用于生成音乐的策略。例如,策略可以描述数字音乐片段如何按顺序组合和在并发层中组合,然后用音乐制作音频效果(例如,通过本文描述的音乐控制)进行修改,包括混响、延迟、噪声门、均衡、增
益控制和带状滤波。这样的过程和效果在现代音乐制作中很普遍。在一些设想的实施例中,如果一组数字音乐片段由具有一些音乐知识的人策划(例如,通过音乐控制),则策略中过程的随机应用可以产生大多数人认为是音乐(以及很可能是好音乐)的音乐内容作曲的基线输出。
70.在各种实施例中,音乐生成参数314包括先前已经生成的参数(例如,通过参数生成模块312)或者已经由用户创建的参数(例如,使用音乐控制输入510,如图5所示)。在特定实施例中,音乐生成参数314由参数生成模块312生成。在所示实施例中,参数生成模块112和音乐生成子系统310的强化学习由从强化输入生成模块330接收的强化输入332提供。在特定实施例中,参数生成模块312实施算法(例如,训练的机器学习算法)以生成音乐生成参数314。例如,参数生成模块312可以实施基于来自其他系统的输入来调整音乐生成参数314的算法。因此,该算法基于强化输入332是可调的(例如,可训练的)并且音乐生成参数314可以被认为是音乐生成子系统310中的可调参数。
71.在一些实施例中,用于调节算法的输入包括来自音乐分类子系统320的输出。例如,强化输入332可以基于音乐分类子系统320对音乐源的预测以用于由音乐生成器模块160生成的输出音乐内容。图4是示出根据一些实施例的示例性音乐分类子系统320的框图。在所示实施例中,音乐分类子系统320包括分类器模块400。分类器模块400可以实施例如使用一个或多个分类器提供分类的机器学习算法。在特定实施例中,分类器模块400是使用一个或多个训练分类器402来提供音乐内容分类的训练分类器模块。对分类器模块400的训练在如下所述的图6的实施例中进一步详述。
72.在特定实施例中,分类器模块400接收输出音乐内容316(其可以包括不同音乐输出内容的阵列)作为输入。根据该输入,分类器模块400可以实施一个或多个训练分类器402以确定输出音乐内容316的音乐源预测410。音乐源预测410可以包括关于输出音乐内容316是由人类作曲家还是由音乐生成器模块160生成(例如,音乐源是人类作曲家还是音乐生成器模块)的预测。在一些实施例中,音乐源预测410预测包括输出音乐内容316由人类作曲家或由音乐生成器模块160生成的概率。例如,音乐源预测410可以是输出音乐内容316是由音乐生成器模块160生成的百分比概率。然后可以将音乐源预测410提供给强化输入生成模块330。
73.回到图3,在各种实施例中,针对输出音乐内容316的音乐源预测410可能无法由参数生成模块312和音乐生成器子系统310区分。因此,在特定实施例中,用于调节参数生成模块312中的算法的强化输入332可以由强化输入生成模块330根据音乐源预测410确定。在一些实施例中,强化输入生成模块330基于奖励型系统调节音乐源预测410。在这样的实施例中,强化输入生成模块330可以基于输出音乐内容316“欺骗”音乐分类子系统320以使其相信输出音乐内容是由人类作曲家生成的程度来奖励音乐生成子系统310。例如,强化输入生成模块330可以为音乐源预测410中输出音乐内容316是由人类作曲家生成的更高的概率提供更高的奖励,因为预测的概率越高,音乐分类子系统320越有可能被音乐生成子系统310欺骗以相信输出音乐内容是由人类作曲家生成的。
74.在一些实施例中,强化输入332可以是二元输入。可以提供二元输入作为可区分输入的替代,以用于调节参数生成模块312中的算法以生成音乐生成参数314。在各种实施例中,二元输入包括关于音乐内容是否满足收听阈值的二元决策。例如,当音乐内容被确定为
与“坏”(例如,非音乐)相对的“好”(例如,音乐)时,可以满足收听阈值。在一些实施例中,二元输入决策可以通过计算机算法(例如,训练的机器学习算法)来实施。在其他实施例中,二元输入可以被提供为对输出音乐内容316的人工输入318,如本文所述。
75.在各种实施例中,音乐生成参数314的生成(例如,音乐生成策略的生成)是人类可读和人类可修改的。使生成参数314为人类可读或人类可修改的可以减少制作音乐的时间和处理器成本。此外,通过促进用户更容易的手动优化并且在参数生成模块312中的算法的训练中提供强化以便生成音乐生成参数314,可以增加生成自然音乐作曲的可能性。在特定实施例中,使音乐生成参数314的生成为人类可读或人类可修改的实施方式包括在音乐生成过程中添加面向用户的音乐控制。
76.图5是示出根据一些实施例的音乐生成子系统310中的示例性音乐控制实施方式的框图。在所示实施例中,音乐控制500由参数生成模块312实施并提供给用户界面。然后,由参数生成模块312从用户界面接收来自用户的音乐控制输入510。如上所述,音乐生成参数314可以限定用于控制音乐生成器模块160的音乐生成过程的策略。音乐控制500可以允许对根据音乐制作者、音乐艺术家或其他音乐知识丰富的用户所熟悉的音乐制作方法表示的音乐制作进行用户输入。因此,用户可以能够通过经由音乐控制500提供输入来产生音乐内容,该音乐控制500有利地影响生成的输出音乐内容316。
77.在一些实施例中,参数生成模块312和音乐生成器模块160之间的音乐生成过程在音乐生成子系统310内是可区分的。例如,音乐控制输入510可以与音乐生成子系统310内的音乐生成参数314的生成区分开。因此,可以通过音乐控制510和参数生成模块312之间的反向传播找到音乐生成参数314的初始设置。初始设置的生成可以基于强化输入332为音乐生成参数314的改善(例如,调节)提供非随机起始位置314。例如,基于强化输入332改善音乐生成参数314可以从更加“已知的”音乐位置而不是随机的未知音乐位置开始。
78.实施音乐控制500还可以允许基于音乐事件(例如,生成的音乐内容的回放)生成音乐生成参数314。因此,大范围(可能以数百万或数十亿计)的各个分钟的输出音乐内容可以由音乐生成器模块160连续变化且不过于重复地生成。
79.如上所述,可以实施音乐控制500以限定音乐生成策略(通过音乐生成参数314),该音乐生成策略通过使用针对具有音乐知识的人的公共音乐控制来设计。因此,该人可以能够快速手动调节音乐生成策略以便减少训练音乐生成子系统310的时间和费用。在各种实施例中,音乐控制500应用于提供对以下项的控制:由音乐生成器模块160对音乐片段进行选择和处理以生成输出音乐内容316。在特定实施例中,音乐控制500提供对输出音乐内容316的一个或多个音频属性的控制。音乐控制500的示例包括但不限于:增益、高通截止、低通截止、混响发送水平、混响长度、延迟水平、延迟时间、低音、节拍、打击垫、顶部、旋律、背景旋律、和弦、效果以及其组合。音乐控制500可以应用于音频片段(例如,数字音乐片段)、音乐曲目(例如,输出音乐内容316)或其组合。
80.如上所述,应用音乐控制输入510以输出音乐内容316可以根据用户的音乐品味修改输出音乐内容。在各种实施例中,由音乐生成模块160生成的修改后的输出音乐内容316作为增强输入332被提供给参数生成模块312。在这样的实施例中,修改后的输出音乐内容316可以作为向量或向量组被输入到参数生成模块312中。将修改后的音乐内容作为(一个或多个)向量提供可以促进未处理的音频内容(例如,数字音乐片段)的选择(相比于生成)
以在由参数生成模块312进行强化学习之后播放输出音乐内容316。例如,由参数生成模块312确定的音乐生成参数可以促进在音频文件库(例如,存储的音频文件302)中搜索具有与策略所述的(如音乐生成参数314所述的)特征最接近的特征的数字音乐片段,并且使用那些选择的片段以生成输出音乐内容316。因此,音乐生成器模块160被实施为更类似于音乐编曲者(例如,选择和布置音乐片段)而不是音乐作曲家(例如,从各个音符创建新音乐)的角色。
81.作为示例,输出音乐内容316的30秒音频样本(其中用户已经应用音乐控制500来修改输出音乐内容)可以用作到参数生成模块312的向量形式的强化输入332。向量内容的非限制性示例可以包括例如:{0.1,0.2,0.1,0.4

0.7}——64元素向量,其描述了要在低音曲目上用于下一音乐节拍的音频的简化特征表示;{0.6},用于播放所选音频的音频信号增益;{20.0},应当应用20hz的高通滤波器;{16000.0},应当应用16000hz的低通滤波器;{0.1},0.1的混响辅助发送水平;{2.0},2节拍的衰减时间;{0.0},不应使用延迟;以及{1.0},1节拍的延迟长度。
82.诸如以上所述的向量可以通过机器学习算法或由数学变换产生(一个或多个)浮点数向量的其他算法来生成。例如,可以通过对简化特征的空间进行正则化的特征简化算法(例如,可变自动编码器)或公共音频内容分析向量来生成向量。在各种实施例中,可以将使用策略做出的决策的历史(例如,基于修改内容的调节历史)和选择的数字音乐片段内容存储在分类帐或其他库中。存储该信息可以允许从来自不同艺术家的内容库(例如,存储的音频文件302)确定文件的百分比和特定选择。
83.回到图3,如上所述,对输出音乐内容316的人工输入318可以由用户(例如,艺术家或听众)提供。在特定实施例中,实施人工输入318包括基于用户对输出音乐内容316的解释的输入。例如,人类用户可以提供关于音乐对用户来说好听还是不好听的输入。输入可以通过设备的用户界面提供(例如喜欢/不喜欢的选择)。
84.还设想了强化输入332中的人工输入实施方式的其他实施例。例如,分类器模块(例如,图4所示的分类器模块400,或系统中实施的另一分类器模块)可以被训练以基于听众做出的选择(例如,通过用户界面上的喜欢/不喜欢选择)在听众喜欢和不喜欢的音乐之间进行分类。当听众喜欢的音乐已经由音乐生成器模块160生成时,听众喜欢的音乐可以被提供给强化输入生成模块330并用作强化输入332,以强化(例如,提供正反馈):由参数生成模块312生成的音乐生成参数314正在为用户制作更喜欢的音乐。
85.图6是示出根据一些实施例的用于音乐分类子系统320的示例性训练系统600的框图。在训练的所示实施例中,分类器模块400接收输出音乐内容316或产生的音乐内容612。可以按指定长度(例如,30或60秒样本)接收任一类型的音乐内容。制作的音乐内容612可以包括例如专业制作的音乐内容或由音乐专家制作的其他音乐内容。在训练实施例中,输出音乐内容316或产生的音乐内容612可以被输入到分类器模块400,其中标签标识音乐内容的参数。例如,标签可以包括关于音乐是由音乐生成器模块160生成的还是音乐是专业制作的标识。还可以设想其他标签。
86.在特定实施例中,分类器模块400实施一个或多个分类器以为输入音乐内容确定音乐源预测614。例如,分类器模块400可以确定输入到模块中的音乐内容的源是音乐生成器模块160或人类(专业)制作者的预测。在各种实施例中,音乐源预测614包括输入音乐内
容是由音乐生成器模块160或由人类作曲家生成的概率。例如,音乐源预测614可以是输入音乐内容是由音乐生成器模块160生成的概率百分比。在一些实施例中,如图4所示,音乐源预测410(例如,输入到分类器模块400中的输出音乐内容316的音乐源预测)被输出到强化输入生成模块330。
87.在训练的所示实施例中,分类器的训练输入616(包括任一类型的音乐内容输入的音乐源预测614)被用作分类器模块400中用于反向传播的准确度测量的基础。将音乐源预测614传播回分类器模块400中包括提供标识音乐内容输入的源的标签和音乐内容输入的源的输出预测(音乐源预测614)。分类器模块400然后可以根据标签和音乐源预测614中的差异调整模块中的(一个或多个)分类器。在训练之后,分类器模块400可以输出训练的分类器618。训练的分类器618可以被提供给具有安装的音乐生成系统的设备(例如,在设备上安装了音乐生成系统应用程序的个人或便携式设备)。在一些实施例中,将训练的分类器提供给设备,作为在设备上安装的音乐生成系统的一部分。
88.设想了附加的实施例,其中分类器模块400被训练以对音乐内容进行其他分类。例如,设想了一些实施例,其中分类器模块400被训练以将音乐分类为由特定制作者创作。在这样的实施例中,标识音乐内容的特定制作者可以允许制作更可能被分类为来自特定制作者的音乐内容的策略的生成(通过参数生成模块312)。
89.回到图3,在各种实施例中,音乐生成子系统310和音乐分类子系统320被实施以制作基于来自听众(例如,用户)的反馈而改变的音乐。然而,在一些实施例中,对于安装在特定类型的设备(例如,移动设备)上的音乐生成子系统310大规模地实施基于人类输入(例如,喜欢/不喜欢音乐)的分类可能是不可取的或不可能的,这是由于这样的设备的有限存储容量以及分类器训练/学习需要存储的信息库。因此,在特定实施例中,音乐生成子系统310安装在具有初始训练参数(例如,初始训练的分类器)的设备上并且强化学习在设备上实施以改进系统的音乐生成。在这样的实施例中,来自一个或多个用户的关于喜欢/不喜欢(或其他类似选择)的输入可以用于训练分类器模块,该分类器模块位于连接到安装有音乐生成系统的设备的远程计算设备上(例如,位于云中的分类器模块)。
90.位于云中的分类器模块可以在音乐生成系统的操作期间基于来自(一个或多个)用户的输入(反馈)进行训练,以更好地预测(一个或多个)用户可能喜欢或不喜欢的音乐内容。在云中对分类器模块进行一些附加训练之后,可以生成用户的向量(或多个用户的向量组)。可以生成向量以表示特定用户的音乐品味。该向量例如可以是表示特定用户的音乐品味的64元素向量。然后可以将该向量提供给特定用户的设备以作为安装在该设备上的音乐生成子系统310的强化输入(例如,强化输入332)来实施。因此,不需要将对分类器的更新发送到设备并且不需要在设备上存储大量库。此外,可以为音乐生成子系统310实施单一初始综合训练过程,然后将其安装在特定设备上。安装在设备上的音乐生成子系统310然后可以通过从云接收作为输入的强化学习来更新,以避免需要在每个设备上完全训练每个音乐生成子系统。这可能是有利的,因为数百万个独特的音乐生成子系统可以分布在移动设备上,并且单个分类器模块针对所有子系统进行训练,从而减少训练时间和成本并允许集中管理的训练环境,同时获得每个音乐生成器的个性化结果。
91.基于用户定义控制元素的示例音乐生成的概述
92.公开了用于生成音乐内容的各种技术,其利用作曲模块和演奏模块之间的交互。
一般来说,作曲子系统可以选择和布置音频文件以用于创作音乐内容,而演奏子系统可以对所选择的音频文件进行过滤、添加效果、混音、掌握等,以生成要实际播放的输出音乐内容。
93.在一些公开的实施例中,作曲子系统和演奏子系统两者都基于对音乐控制元素的用户输入(可以经由一个或多个用户界面显示)进行操作。例如,艺术家可以向作曲子系统(例如,可以在服务器系统上实施)提供用户输入,并且终端用户可以向演奏子系统(可以在用户设备上实施,例如手机)提供用户输入。在其他实施例中,同一用户可以向两个模块提供输入。
94.在一些实施例中,系统允许用户定义他们自己的音乐控制并实施机器学习或其他算法以基于对用户定义的控制的调整(这可能更抽象)来调整音乐参数。例如,用户可以定义“和谐”、“快乐”或“喜怒无常”的控制,并且作曲子系统可以确定要调整的较低级别参数的类型和调整量以实现艺术家对该控制元素的想象。在一些实施例中,所有用户定义的音乐控制或用户定义的音乐控制的子集在演奏子系统上也是可用的,例如,使得用户可以实施艺术家定义的控制。在一些实施例中,两个子系统可以通信以便基于用户定义的音乐控制提供适当的演奏参数。所公开的技术可以有利地允许艺术家向终端用户提供自定义的音乐控制元素。此外,所公开的技术可以允许对自动音乐作曲的特定方面进行集中控制,同时仍然允许终端用户定制生成音乐的实时演奏。
95.作曲子系统和演奏系统可用的音乐控制的子集可能重叠也可能不重叠。此外,在一些实施例中,演奏模块的用户可以指定他们自己的抽象音乐控制,其可以与由作曲模块定义的抽象音乐控制结合使用。
96.通常,所公开的技术可以促进音乐生成器系统生成更像人类的音乐作曲。本发明人已经认识到,提供对音乐生成的抽象控制允许音乐生成器系统根据用户的风格、结构或艺术偏好来生成音乐内容。
97.图7是示出根据一些实施例的包括作曲子系统710和演奏子系统720的示例音乐生成器系统700的框图。
98.在所示实施例中,作曲子系统710基于用户输入生成作曲控制输出信息。在一些实施例中,作曲控制输出信息识别要组合的选定音频文件并指示它们包含在输出音乐内容中的相对时间。作曲子系统710可以确定如何布置音乐内容的章节以及如何以及何时在章节之间转换,如下面进一步详细讨论的。
99.在所示的实施例中,作曲子系统710还为演奏子系统720生成控制元素配置信号。在一些实施例中,这些信号配置演奏子系统720以实施用户输入以按预期的方式使音乐控制抽象。例如,配置可以指定如何基于对用户定义的音乐控制的调整来调整各种演奏操作(例如,过滤、添加效果、混音、掌握等)。
100.如图所示,作曲子系统710接收用户输入。例如,该用户输入可以指定自定义音乐控制元素。用户输入还可以为特定艺术家的先前作曲提供标签信息。例如,对于抽象控制元素“和谐”,艺术家可以基于艺术家对他们和谐度的感知以0到n的比例标记先前的作曲,以允许训练机器学习模型来调整音乐作曲参数以反映不同和谐度控制元素的水平。注意,音乐控制元素可以具有各种编码,包括接受指定特定值、增加/减少、二元输入(例如,好/坏)等的用户输入。
101.在所示实施例中,演奏子系统720被配置为基于来自作曲子系统710的作曲控制和控制元素配置信息来生成输出音乐内容。如图所示,演奏子系统720还接收用户输入,例如,可能用于由作曲子系统710实施的音乐控制元素的子集中的所有项(在一些实施例中,演奏子系统720还可以实施附加的音乐控制元素)。在一些实施例中,可用于演奏子系统720上的用户输入的控制元素集由对作曲子系统710的用户输入控制。
102.在各种实施例中,多级的作曲控制可以有利地提供音乐输出,同时允许用户针对各种音乐风格进行定制。注意,在其他实施例中,在所公开的实施例中由作曲子系统710执行的各种功能可以移动到演奏子系统720,反之亦然。所公开的功能分离可以在特定上下文中提供良好的结果,但不旨在限制本公开的范围。因此,在各种实施例中,图7的作曲控制信息可以包括从原始选择的音频文件到至少部分混合的输出内容的范围内的各种类型的信息。
103.在一些实施例中,作曲子系统710和演奏子系统720在不同的计算机系统上实施并且经由网络通信。如下面详细讨论的,接口之间的通信可以使用自定义字符串操作和存储技术,以允许实时监视和控制api(例如,使用开放式声音控制(osc)协议)。在其他实施例中,子系统在同一计算机系统上实施。
104.注意,演奏子系统720还可以将控制元素配置信息发送到作曲子系统710(未明确示出),例如以便终端用户调整影响作曲操作,例如选择要组合的音频文件。一般公开的技术可以允许在一个设备/接口上定义的用户定义的控制元素可用于其他设备/接口上的用户并且潜在地控制其他子系统或设备上的参数调整。
105.具有作曲子系统和演奏子系统的详细示例音乐生成器
106.图8是示出根据一些实施例的更详细的示例音乐生成器系统的框图。在所示实施例中,作曲子系统710包括用于定制音乐控制的模块810a、(一个或多个)作曲模块820和机器学习模块830。在所示实施例中,演奏子系统720包括用于定制音乐控制的模块810b和(一个或多个)演奏模块850。注意,下面参考图6讨论了被包括在不同子系统中的(一个或多个)作曲模块820和(一个或多个)演奏模块850的更详细示例。
107.模块810a可以基于用户输入与机器学习模块830通信以确定如何使用较低级别的参数来实施自定义音乐控制。如图所示,机器学习模块830可以访问先前的作曲840(其可以由用户根据一个或多个自定义音乐控制被标记为整体或不同部分的标签)以确定如何使用较低级别的作曲参数(并且这些参数可以包括子系统710和子系统720两者使用的参数)实施抽象控制。训练可以使用各种适当的机器学习模型,例如深度神经网络,以确定用户指定的控制元素的目的。如图所示,模块810a将控制元素配置信息传送到模块810b,该模块810b与(一个或多个)演奏模块850通信以基于用户输入调整演奏参数。类似地,(一个或多个)作曲模块820基于来自模块810a的信号调整作曲参数。
108.在一些实施例中,艺术家可以明确指定自定义音乐控制和较低级别参数之间的关系。例如,对于“和谐”控制,艺术家可以指定不同的参数来创建紧张感(tension)(例如,添加层次、提升效果、剪切旋律等),以用于具有更强和声运动的作品,而不是具有较少和声的作品。在一些实施例中,显式控制可以单独使用或与机器学习分析结合使用以生成较低级别的参数。
109.以下讨论列出了可以经由自定义用户界面元素间接控制的各种参数,例如,基于
机器学习或用户对控制和参数之间关系的指示。注意,在一些实施例中,音乐生成器系统可以展示抽象和较低级别的控制。
110.在一些实施例中,连续音乐的生成是通过算法定义的音乐章节和过渡的组合来实现的。章节可以根据它们的音乐功能来定义,例如,建立、维持和减少紧张感。在一些实施例中,通过重复音乐内容、具有更响亮或更多层次的声音混合或播放相互对比的音乐节奏或音高来缓慢地产生紧张感的章节。相比之下,紧张感可能会因违背听众的期望而迅速建立起来。例如,在重复周期的中途结束重复的乐句,突然改变音调,引入以前在音乐中没有出现过的新质地,音量的突然增加等都可能会迅速建立紧张感。如果经常重复相同的制造紧张感的技术,听众可能会开始对它们有预期,并且它们制造紧张感的效果会大大降低。
111.在一些实施例中,通过减少层次、调整先前对比声音的节奏或音调或停止重复乐句来缓慢释放紧张感。可以通过返回到先前建立的期望来快速释放紧张感,例如在暂时暂停较早的乐句后恢复重复,解决和声不和谐或提供标记章节结束的高潮点,例如响亮的铙钹撞击声。
112.有效连续音乐的创作可能源于以不同方式对紧张的建立和释放进行排序。
113.在一些实施例中,作曲子系统710展示具有默认值或可选值的特定控制。例如,控制可以包括增益混合、音频效果链、随时间变化的音乐编排以及乐句的并发分层。与只有用户添加的作曲过程具有音乐效果的标准作曲工具不同,在未使用选项值的情况下,机器学习算法可用于影响作曲过程。
114.例如,由作曲子系统710控制的参数的示例可以包括单个可循环音频片段的最大重复、合成噪声的使用和默认eq水平。在一些实施例中,最大重复可以被设置为硬性限制或保留在无穷大,其中没有限制,但是其他作曲过程可能在没有它的情况下驱动偏离重复。“合成噪声”控制可以用作二元开关,以用于在作曲的一些点启用或禁用合成噪声,而无需控制何时应用。时间可能会受到其他控制和机器学习算法的影响。默认eq水平可以允许8个频段的频率、增益和带宽的参考水平,这可以通过其他作曲过程进行调整,包括由机器学习算法主导的那些过程。作曲子系统710可以定义在作曲的不同时间结构中可以使用哪些类型的音频文件,而无需准确定义时间结构将在作曲中发生的时间。
115.通常,可以在不同的音乐编排结构中启用或禁用各种音频文件类别或“组”。在一些实施例中,启用组意味着它可以被子系统利用但不保证是。以下是组的示例:
116.·
节拍:定义节奏床,通常是架子鼓——无音调
117.·
低音:低音线——有音调
118.·
和声:丰富和声音调的复调中音——有音调
119.·
打击垫:背景音景或无人机——有音调
120.·
顶部:额外的节奏内容,常是打击乐,通常是切分音——无音调
121.·
旋律:主要是单音旋律线——有音调
122.·
有音调fx:具有强烈调性的额外音效——有音调
123.·
无音调fx:额外的非调性音效,例如噪音——无音调
124.对于这些组中的每一个,可能存在可调整的控制以设置这些质量的参考值:
125.·
音量
126.·
混响量
127.·
延迟打击概率
128.·
延迟湿润
129.在一些实施例中,可以利用以下章节:增进:紧张感的缓慢增加;维持:保持紧张感水平;下降:高潮点之后是低紧张感;分解:紧张感缓慢下降。此外,可以利用以下过渡:添加层:紧张感突然增加;移除层:紧张感突然下降;提升效果:紧张感快速增加;中途切断旋律:紧张感快速增加。例如,作曲子系统710可以学习如何基于艺术家组中的特定艺术家的作曲演奏来应用各个章节和过渡。
130.在一些实施例中,基于概率的规则指导过渡的顺序以鼓励对紧张的缓慢建立和释放的变化,并且过渡用于在这些较慢的趋势中产生意想不到的转移。过渡的过度使用可能会减少它们占据的章节的整体紧张感运动,因此过渡的最大和最小频率可以按比例缩放到章节长度。
131.下表提供了不同章节的过渡概率示例。在一些实施例中,作曲子系统710的用户修改这样的表以改变逐步音乐结构而无需章节的预定绝对定时:
132.从/到介绍增进下降分解维持介绍0.01.00.00.00.0增进0.00.00.50.30.2下降0.00.30.00.50.2分解0.00.40.30.00.3维持0.01.00.00.00.0
133.在该示例中,从分解章节的过渡移动到40%时间的增进章节、30%时间的下降章节、30%时间的维持章节。
134.作曲子系统可以进一步分解章节以创建章节和子章节的层次结构。示例子章节包括:
135.·
只播放乐句的第一节拍,并使用带有反馈的延迟来为每个旋律或和声循环创建新的节奏乐句。
136.·
专门去除鼓层。
137.·
和声循环每8节拍静音4节拍。
138.·
淡出当前低音线并逐渐淡入新低音线。
139.·
将子章节的最后8拍的节奏层静音。
140.·
所有层的低通滤波器逐渐从20000hz降低到500hz。
141.由于每个子章节在其开始、结束和一些情况下的中间部分产生过渡,因此特定子章节仅出现在特定章节或在章节的特定点。作为子章节规则的示例:
142.·
移除节拍的子章节不会出现在下降章节的开头。
143.·
改变低音线的子章节不会出现在增进章节期间。
144.·
移除任何层的子章节不会出现在播放的总层数小于4的章节中,除非它是分解章节。
145.可以确定每个章节中使用的层的数量和选择以塑造音乐紧张感。示例层组合包括:
146.·
介绍:一直的低音和鼓。
147.·
增进:一直的低音和鼓,逐渐淡入打击乐、旋律和打击垫。
148.·
下降:一直的低音、鼓、打击乐、打击垫和旋律。
149.·
分解:一直的低音和鼓,逐渐淡出所有其他层。
150.·
维持:与上一章节结束使用的层相同。
151.除了子章节之外,可以使用简短的音乐偏差来创建变化和微紧张感,这在基于循环的重复音乐中特别有效。例如,在一些实施例中使用了以下推导技术:
152.·
延迟-打击:鼓的最后一拍或第一节拍在没有反馈的情况下延迟一个节拍或半拍再次播放。
153.·
高通滤波器在8个节拍内从0增加到50hz,然后立即降回0hz以提供强烈的节拍脉冲。
154.·
重混响应用于单个循环。
155.在一些实施例中,子章节和偏差可以在作曲子系统中被启用或禁用,并且在一些情况下可以被参数化。因此,一般来说,作曲子系统可以为用户(例如,艺术家)提供相对于演奏子系统更多的作曲参数的控制。
156.在一些实施例中,演奏子系统720被配置为对来自作曲子系统的作曲控制信息(例如,作曲脚本)进行操作以生成输出音乐内容。
157.在一些实施例中,作曲子系统710通过将由演奏子系统720调解的反馈数据与脚本中的音乐控制相关联来做出确定。例如,除了明确的拇指向上/向下反馈外,播放演奏控制子系统的行为还被动地建议某种程度的偏好。对用户消费的作曲和提供的反馈进行追溯分析将有助于驱动机器学习系统调整用户设备上的表示循环和作曲技术。演奏控制子系统可以使用反馈分析以从其核心集查找具有相似风格和属性的音频内容。
158.正如艺术家可以使用规则、启发式方法和训练数据来设计艺术家包一样,演奏控制子系统可以允许终端用户使用演奏子系统提供的一组循环来完成相同的任务。在这种情形下,演奏子系统可以提供大量(并且还在不断增加)的循环集以供回放。用户的输入可以包括拇指向上/向下,这将有助于演奏控制子系统学习在为他们创建音景时使用哪些类型的循环和混合技术。此外,可以向用户提供ux控制,这将允许他们对演奏控制子系统混合内容的方式进行更细粒度的控制。这可以包括混合水平、章节长度、音乐的复杂性、混合技术的使用,例如构建和下降等。这些微调实质上将让听众创建他们自己的“风格”,演奏控制子系统将在创建音景时使用这些风格。此外,用户可以使用他们自己的自定义控制元素或使用模块810a定义的自定义控制元素来对下面讨论的各种作曲方面进行更高级别的控制。
159.当用户选择拇指向上/向下时,可以考虑当前作曲的许多不同元素。这些可以包括:
160.·
当前混合级别,例如各层的增益。
161.·
与输入时间循环相关联的属性。
162.·
环境输入,例如一天中的时间、天气、位置等。
163.·
通过上述附加的ux控制进行显式输入。
164.这些品质可能会被演奏子系统捕获,然后与正反馈或负反馈相关联。随着时间的推移,该数据将有助于指导演奏控制子系统使用正强化和负强化训练机器学习模块(图8中未明确显示),并且可以允许演奏控制子系统调整音乐播放参数(例如,规则引擎的参数)。
用于调整这些参数的模型不需要归属于单个用户。例如,机器学习可以用于基于音乐应用程序上的聚合反馈对作曲和播放应用更改。换句话说,如果给定用户拇指向下并且此时识别的模式与许多其他用户拇指向下的模式相匹配,则系统可以以与对其他用户所做的相同的方式相应地调整音乐。这允许演奏控制子系统为用户进行个性化更改,但仍然使这些个性化更改基于从许多用户收集的聚集数据。
165.反馈与音乐性质的相关性可以通过环境测量来调节。以这种方式,构建了用户偏好的更细微的模型。例如,演奏控制子系统可能不会学习“该听众喜欢这些类型的节拍”,而是学习“该听众在一天中的这个时间或下雨时喜欢这些类型的节拍”。
166.终端用户个性化的成功可以最终由与回放相关联的积极事件来衡量。这些包括诸如“拇指向上”、游戏时间等事件。除了这些事件之外,其他参数可以与成功的个性化相关联。例如,经营演奏控制子系统的餐厅可以将每小时销售额的关联增长作为成功的度量。演奏控制子系统可以监视pos和每小时销售额的相关积极变化,并积极反映作曲。以这种方式,演奏控制子系统可以在不需要显式输入的情况下隐式地训练自己。这种训练模型可以应用于任何基础循环集,因为训练既涉及音乐的作曲,也涉及所使用的确切循环。
167.作曲子系统和演奏子系统之间的示例通信技术
168.在一些实施例中,子系统之间的通信实施实时监视和控制,例如,使用osc上的api。下面详细讨论的公开技术可以促进这样的上下文中的实时演奏。注意,在分布式实施例中,当监视所有参数和rms水平时,通过网络发送的数据量可能会变得很大——尽管与例如完整的音频流相比仍然很小。然而,因为这些消息可能会被单独解析,所以涉及的字符串操作可能会变得非常昂贵。创建要从实时线程发送的此类字符串可能需要小心执行,以减少内存分配和阻塞调用。
169.osc使用纯文本正斜杠分隔字符串(类似于url)来寻址端点,例如“/master/compressor/threshold”或“/performance_module/effect_module/parameter_c”。这些字符串可以用于将各种信息从作曲模块路由到演奏模块内的适当端点,例如,以及在另一个方向上,例如用于监视目的。因此,在一些实施例中,分隔字符串的操作是常见的操作——特别是类似于“拆分”和“连接”的功能,它们在分隔字符串和字符串数组之间进行转换,以及添加和附加到给定分隔字符串。
170.实施拆分/连接等的传统字符串操作库在设计时可能并未考虑实时操作。具体而言,例如,他们的存储模型通常会在分隔分隔字符串时创建组件令牌的副本。在一些实施例中,为了减少分配,所公开的系统使用专门的分隔字符串容器。分隔字符串类可以使用实际的分隔字符串作为后备存储,并且在其上展示了类似列表的api——本质上是指向标记令牌的全字符串的指针偏移数组。可以在任一侧使用备用容量创建后备字符串,从而可以容易地添加/附加额外的令牌,而无需昂贵的重新分配。
171.分隔字符串类也可以被设计为允许在任一端进行有效的“修剪”。在这些实施例中,osc消息的接收者(例如,演奏子系统720)将osc地址视为分层路由机制,并且通常通过委托链向下传递消息,该委托链在每个阶段去掉地址中的第一令牌。分隔字符串可以通过简单地将引用偏移的“head”指针移动到完整字符串后备存储中来有效地进行管理。分隔字符串还可以管理状态堆栈,以存储状态,迭代地去掉部分地址,然后恢复状态。这可以允许再次使用相同的分隔字符串。
172.示例性用户和企业gui
173.图9a至图9b是示出根据一些实施例的图形用户界面的框图。在所示的实施例中,图9a包含由用户应用程序910显示的gui,而图9b包含由企业应用程序930显示的gui。在一些实施例中,图9a和图9b显示的gui由网站而不是由应用程序生成。在各种实施例中,可以显示各种适当元件中的任何一个,包括以下元件中的一个或多个:转盘(例如,控制音量、能量等)、按钮、旋钮、显示框(例如,为用户提供更新信息)等。
174.在图9a中,用户应用程序910显示包含用于选择一个或多个艺术家包的章节912的gui。在一些实施例中,包914可替代地或附加地包括主题包或用于特定场合(例如,婚礼、生日派对、毕业典礼等)的包。在一些实施例中,章节912中显示的包的数量大于可以在章节912中一次显示的数量。因此,在一些实施例中,用户在章节912中向上和/或向下滚动以查看一个或多个包914。在一些实施例中,用户可以基于他/她想要听到输出音乐内容来选择艺术家包914。在一些实施例中,例如可以购买和/或下载艺术家包。
175.在所示实施例中,选择元件916允许用户调整一个或多个音乐属性(例如,能量水平)。在一些实施例中,选择元件916允许用户添加/删除/修改一个或多个目标音乐属性。在各种实施例中,选择元件916可以呈现一个或多个ui控制元件(例如,音乐控制500)。
176.在所示实施例中,选择元件920允许用户让设备(例如,移动设备)收听环境以确定目标音乐属性。在一些实施例中,设备在用户选择选择元件920之后使用一个或多个传感器(例如,相机、麦克风、温度计等)收集关于环境的信息。在一些实施例中,应用程序910还基于当用户选择元件920时由应用程序收集的环境信息来选择或建议一个或多个艺术家包。
177.在所示实施例中,选择元件922允许用户组合多个艺术家包以生成新规则集。在一些实施例中,新规则集基于用户为同一艺术家选择一个或多个包。在其他实施例中,新规则集基于用户为不同艺术家选择一个或多个包。用户可以指示不同规则集的权重,例如,使得高权重的规则集比低权重的规则集对生成的音乐具有更大的影响。音乐生成器可以以多种不同方式组合规则集,例如,通过在来自不同规则集的规则之间切换、对来自多个不同规则集的规则的值进行平均等。
178.在所示实施例中,选择元件924允许用户手动调整一个或多个规则集中的规则。例如,在一些实施例中,用户希望通过调整用于生成音乐内容的规则集中的一个或多个规则来以更精细的水平调整正在生成的音乐内容。在一些实施例中,这允许应用程序910的用户通过使用在图9a中的gui中显示的控件成为他们自己的唱片骑师(dj),来调整由音乐生成器使用的规则集以生成输出音乐内容。这些实施例还可以允许对目标音乐属性进行更精细的控制。
179.在图9b中,企业应用程序930显示还包含具有艺术家包914的艺术家包选择章节912的gui。在所示实施例中,由应用程序930显示的企业gui还包含用于调整/添加/删除一个或多个音乐属性的元件916。在一些实施例中,显示在图9b中的gui在商业或店面中用于通过生成音乐内容来生成特定环境(例如,用于优化销售)。在一些实施例中,员工使用应用程序930来选择先前已被展示以增加销售额的一个或多个艺术家包(例如,给定规则集的元数据可以指示在现实世界上下文中使用规则集的实际实验结果)。
180.在所示实施例中,输入硬件940将信息发送到正在显示企业应用程序930的应用程序或网站。在一些实施例中,输入硬件940是以下各项之一:收银机、热传感器、光传感器、时
钟、噪声传感器等。在一些实施例中,使用从上面列出的硬件设备的一个或多个发送的信息调整目标音乐属性和/或用于为特定环境生成输出音乐内容的规则集。在所示实施例中,选择元件938允许应用程序930的用户选择一个或多个硬件设备从其接收环境输入。
181.在所示实施例中,显示934基于来自输入硬件940的信息向应用程序930的用户显示环境数据。在所示实施例中,显示932示出了基于环境数据对规则集的改变。在一些实施例中,显示932允许应用程序930的用户看到基于环境数据所做的改变。
182.在一些实施例中,图9a和图9b中所示的元件用于主题包和/或场合包。也就是说,在一些实施例中,使用由应用程序910和应用程序930显示的gui的用户或企业可以选择/调整/修改规则集以生成用于一个或多个场合和/或主题的音乐内容。
183.详细的示例音乐生成器系统
184.图10至图12示出了关于音乐生成器模块160的具体实施例的细节。请注意,尽管为了说明的目的公开了这些具体示例,但它们并不旨在限制本公开的范围。在这些实施例中,由诸如个人计算机、移动设备、媒体设备等的客户端系统执行从循环构建音乐。如图10至图12中讨论所用的,术语“循环”可以与术语“音频文件”互换。通常,如本文所述,循环包括在音频文件中。循环可以分为专业策划的循环包,可以称为艺术家包。可以针对音乐属性分析循环,并且可以将属性存储为循环元数据。可以分析(例如,实时)和过滤构造曲目中的音频以混合和控制输出流媒体。可以将各种反馈发送到服务器,包括诸如来自用户与滑块或按钮的交互的显式反馈和隐式反馈(例如由传感器基于音量变化、基于收听长度、环境信息等生成)。在一些实施例中,控制输入具有已知效果(例如,直接或间接指定目标音乐属性)并由作曲模块使用。
185.以下讨论介绍了参考图10至图12使用的各种术语。在一些实施例中,循环库是可以由服务器存储的循环的主库。每个循环可以包括音频数据和描述音频数据的元数据。在一些实施例中,循环包是循环库的子集。循环包可以是针对特定艺术家、针对特定心情、针对特定事件类型等的包。客户端设备可以下载循环包以供离线收听或按需下载循环包的部分,例如用于在线收听。
186.在一些实施例中,生成的流媒体是指定用户在使用音乐生成器系统时听到的音乐内容的数据。请注意,对于给定的生成流媒体,实际输出的音频信号可能会略有不同,例如,基于音频输出设备的能力。
187.在一些实施例中,作曲模块从循环包中可用的循环构建组合。作曲模块可以接收循环、循环元数据和用户输入作为参数并且可以由客户端设备执行。在一些实施例中,作曲模块输出发送到演奏模块和一个或多个机器学习引擎的演奏脚本。在一些实施例中,演奏脚本概述了将在生成的流媒体的每个曲目上播放哪些循环以及将对流媒体应用什么效果。演奏脚本可以利用节拍相关时间来表示事件发生的时间。演奏脚本还可以对效果参数进行编码(例如,用于诸如混响、延迟、压缩、均衡等效果)。
188.在一些实施例中,演奏模块接收演奏脚本作为输入并将其呈现为生成的流媒体。演奏模块可以产生由演奏脚本指定的多个曲目并将这些曲目混合成一个流媒体(例如,立体声流媒体,尽管该流媒体在各种实施例中可以具有各种编码,包括环绕编码、基于对象的音频编码、多声道立体声等)。在一些实施例中,当提供特定的演奏脚本时,演奏模块将总是产生相同的输出。
189.在一些实施例中,分析模块是服务器实施的模块,其接收反馈信息并配置作曲模块(例如,实时地、定期地、基于管理员命令等)。在一些实施例中,分析模块使用机器学习技术的组合来将用户反馈与演奏脚本和循环库元数据相关联。
190.图10是示出根据一些实施例的包括分析和作曲模块的示例音乐生成器系统的框图。在一些实施例中,图10的系统被配置为生成潜在无限的音乐流媒体,用户可以直接控制音乐的情绪和风格。在所示实施例中,系统包括分析模块1010、作曲模块1020、演奏模块1030和音频输出设备1040。在一些实施例中,分析模块1010由服务器实施,作曲模块1020和演奏模块1030由一个或多个客户端设备实施。在其他实施例中,模块1010、1020和1030都可以在客户端设备上实施或者可以都在服务器端实施。
191.在所示实施例中,分析模块1010存储一个或多个艺术家包1012并实施特征提取模块1014、客户端模拟器模块1016和深度神经网络1018。
192.在一些实施例中,特征提取模块1014在分析循环音频之后将循环添加到循环库中(尽管注意一些循环可以与已经生成的元数据一起被接收并且可能不需要分析)。例如,可以分析诸如wav、aiff或flac之类格式的原始音频以获取可量化的音乐属性,例如乐器分类、音高转录、节拍计时、拍子、文件长度和多个频率仓中的音频幅度。分析模块1010还可以存储更抽象的音乐属性或循环的情绪描述,例如,基于艺术家的手动标记或机器收听。例如,可以使用多个离散类别来量化情绪,其中每个类别的值范围用于给定循环。
193.例如,考虑循环a,它被分析以确定使用了音符g2、bb2和d2,第一个节拍在文件6毫秒处开始,节拍数为122bpm,文件长度为6483毫秒,并且循环在五个频率仓内具有0.3、0.5、0.7、0.3和0.2的归一化幅度值。艺术家可以将循环标记为具有以下情绪值的“放克流派”:
194.超越和平力量喜悦悲伤紧张高高低中无低
195.分析模块1010可以将该信息存储在数据库中并且客户端可以下载该信息的子章节,例如,作为循环包。尽管出于说明的目的示出了艺术家包1012,但是分析模块1010可以向作曲模块1020提供各种类型的循环包。
196.在所示实施例中,客户端模拟器模块1016分析各种类型的反馈以提供深度神经网络1018支持的格式的反馈信息。在所示实施例中,深度神经网络1018还接收由作曲模块生成的演奏脚本作为输入。在一些实施例中,深度神经网络基于这些输入来配置作曲模块,例如,以改进生成的音乐输出类型和期望反馈之间的相关性。例如,深度神经网络可以周期性地向实施作曲模块1020的客户端设备推送更新。请注意,深度神经网络1018是出于说明的目的而示出的,并且可以在所公开的实施例中提供强大的机器学习性能,但并不旨在限制本公开的范围。在各种实施例中,可以单独或以各种组合实施各种类型的机器学习技术以执行类似的功能。请注意,机器学习模块可用于在一些实施例中直接实施规则集(例如,排列规则或技术),或者可用于控制实施其他类型的规则集的模块,例如,在所示实施例中使用深度神经网络1018。
197.在一些实施例中,分析模块1010为作曲模块1020生成组合参数以改进期望的反馈和特定参数的使用之间的相关性。例如,实际的用户反馈可用于调整组合参数,例如,以尝试减少负面反馈。
198.作为一个示例,考虑模块1010发现负反馈(例如,明确的低排名、低音量收听、短收
听时间等)与使用大量层的作品之间的相关性的情况。在一些实施例中,模块1010使用诸如反向传播的技术来确定调整用于添加更多曲目的概率参数会降低此问题的频率。例如,模块1010可以预测将概率参数减少50%将减少8%的负反馈,并且可以确定执行减少并将更新的参数推送到作曲模块(请注意,概率参数在下面详细讨论,但可以类似地调整统计模型的各种参数之一)。
199.作为另一个示例,考虑模块1010发现负反馈与用户将情绪控件设置为高度紧张相关的情况。还可以发现带有低度紧张标签的循环与要求高度紧张的用户之间的相关性。在这种情况下,模块1010可以增加一个参数,使得当用户请求高度紧张音乐时选择具有高度紧张标签的循环的概率增加。因此,机器学习可以基于各种信息,包括作曲输出、反馈信息、用户控件输入等。
200.在所示实施例中,作曲模块1020包括章节定序器1022、章节排列器1024、技术实施模块1026和循环选择模块1028。在一些实施例中,作曲模块1020基于循环元数据和用户控件输入(例如,情绪控制)来组织和构造作曲的章节。
201.在一些实施例中,章节定序器1022对不同类型的章节进行定序。在一些实施例中,章节定序器1022实施有限状态机以在操作期间连续输出下一种类型的章节。例如,作曲模块1020可以被配置为使用不同类型的章节,例如前奏、增进、下降、分解和桥接,如下面参考图10进一步详细讨论的。此外,每个章节可以包括定义音乐如何在整个章节中变化的多个子章节,例如,包括转入(transition-in)子章节、主要内容子章节和转出(transition-out)子章节。
202.在一些实施例中,章节排列器1024根据排列规则构造子章节。例如,一条规则可以指定通过逐渐添加曲目来转入。另一个规则可以指定通过逐渐增加一组曲目的增益来转入。另一条规则可以指定切分人声循环来创建一个旋律。在一些实施例中,循环库中的循环被附加到曲目的概率是章节或子章节中的当前位置、在另一个曲目上在时间上重叠的循环以及诸如情绪变量之类的用户输入参数(可用于确定生成的音乐内容的目标属性)的函数。例如,可以通过基于机器学习调整系数来调整函数。
203.在一些实施例中,技术实施模块1020被配置为通过添加例如由艺术家指定的或通过分析特定艺术家的作品确定的规则来促进章节排列。“技术”可以描述特定艺术家如何在技术层面实施排列规则。例如,对于指定通过逐渐添加曲目来转入的排列规则,一种技术可以指示按鼓、低音、打击垫、然后人声的顺序添加曲目,而另一种技术可以指示按低音、打击垫、人声、然后鼓的顺序添加曲目。类似地,对于指定切分人声循环以创建旋律的排列规则,一种技术可以指示在每第二个节拍上切分人声并在移动到下一个切分章节之前重复循环的切分章节两次。
204.在所示实施例中,循环选择模块1028根据排列规则和技术选择循环,以包括在章节排列器1024的章节中。一旦章节完成,就可以生成相应的演奏脚本并将其发送到演奏模块1030。演奏模块1030可以以各种间隔尺寸接收演奏脚本部分。这可以包括例如用于特定长度的演奏的整个演奏脚本、每个章节的演奏脚本、每个子章节的演奏脚本等。在一些实施例中,排列规则、技术或循环选择是统计实施的,例如,不同的方法使用不同的时间百分比。
205.在所示实施例中,演奏模块1030包括滤波器模块1031、效果模块1032、混合模块1033、主模块1034和执行模块1035。在一些实施例中,这些模块处理演奏脚本并以音频输出
设备1040支持的格式生成音乐数据。演奏脚本可以指定要播放的循环、它们应该在什么时候播放、模块1032应该应用什么效果(例如,在每个曲目或每个子章节的基础上)、模块1031应该应用什么滤波器等。
206.例如,演奏脚本可以指定在特定曲目上从0到5000毫秒应用从1000到20000赫兹的低通滤波器。作为另一个示例,演奏脚本可以指定在特定曲目上从5000到15000毫秒应用0.2湿度设置(wet setting)的混响。
207.在一些实施例中,混合模块1033被配置为对被组合的曲目执行自动级别控制。在一些实施例中,混合模块1033使用组合曲目的频域分析来测量具有太多或太少能量的频率,并将增益应用于不同频带中的曲目以均匀混合。在一些实施例中,主模块1034被配置为执行多频带压缩、均衡(eq)或限制程序以生成用于由执行模块1035进行最终格式化的数据。图10的实施例可以根据用户输入或其他反馈信息自动生成各种输出音乐内容,而机器学习技术可以允许随着时间的推移改进用户体验。
208.图11是示出根据一些实施例的音乐内容的示例增进章节的图示。图10的系统可以通过应用排列规则和技术来组成这样的章节。在所示示例中,增进章节包括三个子章节和用于人声、打击垫、鼓、低音和白噪声的单独曲目。
209.在所示示例中,子章节中的过渡包括鼓循环a,该循环也针对主要内容子章节重复。子章节中的过渡还包括低音循环a。如图所示,该章节的增益从低开始并在整个章节中线性增加(尽管可以设想非线性增加或减少)。在所示示例中,主要内容和转出子章节包括各种人声、打击垫、鼓和低音循环。如上所述,用于自动排序章节、排列章节和实施技术的公开技术可以基于各种用户可调整的参数生成近乎无限的输出音乐内容的流媒体。
210.在一些实施例中,计算机系统显示类似于图11的界面并允许艺术家指定用于组成章节的技术。例如,艺术家可以创建结构,如图11所示,其可以被解析为作曲模块的代码。
211.图12是示出根据一些实施例的用于布置音乐内容的章节的示例技术的图示。在所示实施例中,生成的流媒体1210包括多个章节1220,每个章节包括开始子章节1222、开发子章节1224和过渡子章节1226。在所示示例中,每个章节/子章节的多种类型示于通过虚线连接的表格中。在所示实施例中,圆形元件是排列工具的示例,其可以使用如下所述的特定技术进一步实施。如所示,可以根据统计百分比伪随机地执行各种作曲决策。例如,可以统计地确定子章节的类型、特定类型或子章节的排列工具或用于实施排列工具的技术。
212.在所示示例中,给定章节1220是以下五种类型之一:前奏、增进、下降、分解和桥接,每一种都具有控制该章节的强度的不同功能。在该示例中,状态子章节是以下三种类型之一:缓慢构建、突然转换或最小,每种都有不同的行为。在该示例中,开发子章节是以下三种类型之一:减少、转换或增加。在该示例中,过渡子章节是以下三种类型之一:折叠、渐变或提示。例如,可以基于规则选择不同类型的章节和子章节,或者可以伪随机选择。
213.在所示示例中,不同子章节类型的行为是使用一种或多种排列工具来实施的。对于缓慢构建,在该示例中,40%的时间应用低通滤波器,80%的时间添加层。对于转换开发子章节,在该示例中,25%的时间循环被切分。示出了各种附加的排列工具,包括单次、压差节拍、应用混响、添加打击垫、添加主题、删除层和白噪声。包括这些示例是为了说明的目的,并不旨在限制本公开的范围。此外,为了便于说明,这些示例可能并不完整(例如,实际排列通常可能涉及更多数量的排列规则)。
214.在一些实施例中,一个或多个排列工具可以使用特定技术来实施(其可以是艺术家指定的或基于对艺术家内容的分析而确定的)。例如,单次可以使用音效或人声来实施,循环切分可以使用卡顿或半切技术来实施,去除层可以通过去除合成器或去除人声来实施,白噪声可以使用渐变或脉冲函数等来实施。在一些实施例中,为给定的排列工具选择的特定技术可以根据统计函数来选择(例如,30%的时间去除层可以去除合成器,70%的时间可以去除给定艺术家的人声)。如上所述,可以通过分析现有的作品,例如使用机器学习来自动确定排列规则或技术。
215.示例方法
216.图13是根据一些实施例的用于训练音乐生成系统的流程图方法。图13所示的方法可以与本文公开的任何计算机电路、系统、设备、元素或组件等结合使用。在各种实施例中,所示的一些方法元素可以以与所示不同的顺序同时执行,或者可以被省略。还可以根据需要执行附加的方法元素。
217.在1310,在所示实施例中,计算机系统上的音乐生成器从多个数字音乐片段生成指定长度的输出音乐内容,其中输出音乐内容包括从多个数字音乐片段生成的不同输出音乐内容的阵列,并且其中音乐生成器通过遵循一组解释规则顺序地解释一个或多个音乐生成参数来生成音频格式的不同输出音乐内容的阵列。
218.在1320,在所示实施例中,音乐生成器接收从所生成的输出音乐内容确定的强化输入。
219.在1330,在所示实施例中,使用算法基于强化输入调整音乐生成器的音乐生成参数,其中音乐生成参数包括先前生成的音乐生成参数或用户创建的音乐生成参数中的至少一者。
220.在1340,在所示实施例中,基于经调整的音乐生成参数从多个数字音乐片段生成指定长度的新输出音乐内容。
221.图14是根据一些实施例的用于控制用户特定音乐控制元素的流程图方法。图14所示的方法可以与本文公开的任何计算机电路、系统、设备、元素或组件等结合使用。在各种实施例中,所示的一些方法元素可以以与所示不同的顺序同时执行,或者可以被省略。还可以根据需要执行附加的方法元素。
222.在1410,在所示实施例中,计算系统接收指定用户定义的音乐控制元素的用户输入。
223.在1420,在所示实施例中,计算系统接收针对一个或多个音乐作曲指定用户定义的音乐控制元素的标签的用户输入。
224.在1430,在所示实施例中,计算系统基于标签训练一个或多个机器学习模型以:基于对用户定义的音乐控制元素的用户输入,调整一个或多个作曲参数,以用于选择要组合的音频曲目以生成输出音乐内容;并且基于对用户定义的音乐控制元素的用户输入,调整一个或多个演奏参数,以用于基于所选择的音频曲目生成输出音乐内容。
225.在1440,在所示实施例中,计算系统根据一个或多个作曲参数和一个或多个演奏参数,通过组合多个音频曲目来生成输出音乐内容。
226.在一些实施例中,计算系统基于一个或多个机器学习模型将配置信息传输到用户设备,其中配置信息指示如何基于对用户定义的音乐控制元素的用户输入来调整演奏参
数。在一些实施例中,计算系统根据一个或多个机器学习模型,基于对用户定义的音乐控制元素的用户输入来调整一个或多个作曲参数。在一些实施例中,计算系统的用户设备根据配置信息,基于对用户定义的音乐控制元素的用户输入来调整一个或多个作曲参数。
227.在一些实施例中,传输使用分隔字符串来指定数据目标,其中该方法还包括基于具有指向字符串中的偏移的指针的数据结构来形成字符串,其中字符串形成包括向现有字符串进行在前附加或在后附加。
228.在一些实施例中,训练还基于用户输入,该用户输入明确指定作曲参数与对用户定义的音乐控制元素的用户输入之间的关系。
229.在一些实施例中,一个或多个作曲参数包括用于以下项的参数:建立、维持和降低音乐章节之间的紧张感,启用或禁用音频文件类别,调整一个或多个音频文件类别的以下音乐方面中的一个或多个:音量、混响量、延迟打击概率和延迟湿度等。一些实施例中,一个或多个演奏参数包括以下类型参数中的至少一者:滤波器参数、效果参数和混音参数。
230.图15是根据一些实施例的用于基于用户特定音乐控制元素生成音乐内容的流程图方法。图15所示的方法可以与本文公开的任何计算机电路、系统、设备、元素或组件等结合使用。在各种实施例中,所示的一些方法元素可以以与所示不同的顺序同时执行,或者可以被省略。还可以根据需要执行附加的方法元素。
231.在1510,在所示实施例中,计算系统接收配置信息,其中配置信息指定如何基于对用户定义的音乐控制元素的用户调整来调整一个或多个演奏参数,并且其中一个或多个演奏参数用于基于所选择的音频曲目生成输出音乐内容。
232.在1520,在所示实施例中,计算系统经由第一用户界面接收用户输入,其中用户输入指定对用户定义的音乐控制元素的调整。
233.在1530,在所示实施例中,计算系统基于用户输入和配置信息来调整一个或多个演奏参数中的一个或多个。
234.在1540,在所示实施例中,计算系统根据一个或多个经调整的演奏参数通过组合多个音频文件来生成输出音乐内容。
235.在一些实施例中,计算系统接收作曲控制信息(例如,作曲脚本),该作曲控制信息指示要组合的多个音频文件并且指示音乐章节之间的过渡。在一些实施例中,作曲控制信息是基于指定对用户定义的音乐控制元素的调整的用户输入(例如,由艺术家经由艺术家用户界面或终端用户经由第一用户界面)而生成的。
236.在一些实施例中,用户定义的音乐控制元素经由由传输配置信息的服务器系统生成的第二用户界面来定义。在一些实施例中,用户定义的音乐控制元素由与经由第一用户界面提供用户输入的用户不同的用户来定义。
237.在一些实施例中,计算系统使用指针来解析配置信息,该指针指向指示配置信息的目标的分隔字符串内的位置。
238.在本文的各种实施例中,公开了涉及自动生成新音乐内容的技术。在一些实施例中,计算系统接收指定用户定义的音乐控制元素的用户输入。计算系统可以训练机器学习模型以基于对用户定义的音乐控制元素的用户调整来改变作曲参数和演奏参数两者。在作曲子系统和演奏子系统位于不同设备上的实施例中,一个设备可以将配置信息传输到另一设备,其中配置信息指定如何基于对用户定义的音乐控制元素的用户输入来调整参数。所
公开的技术可以促进集中学习像人类的音乐制作,同时允许对单个用户进行个性化定制。此外,所公开的技术可以允许艺术家定义他们自己的抽象音乐控制并且使这些控制对终端用户可用。
239.以下编号的条款列出了本文公开的各种非限制性实施例:
240.集合a
241.a1.一种方法,包括:
242.由计算系统接收指定用户定义的音乐控制元素的用户输入;
243.由计算系统接收针对一个或多个音乐作曲指定用户定义的音乐控制元素的标签的用户输入;
244.由计算系统基于标签训练一个或多个机器学习模型以执行以下操作:
245.基于对用户定义的音乐控制元素的用户输入,调整一个或多个作曲参数,以用于选择要组合的音频曲目以生成输出音乐内容;和
246.基于对用户定义的音乐控制元素的用户输入,调整一个或多个演奏参数,以用于基于所选择的音频曲目生成输出音乐内容;以及
247.根据一个或多个作曲参数和一个或多个演奏参数,通过组合多个音频曲目来生成输出音乐内容。
248.a2.根据集合a中的任何先前条款所述的方法,其中计算系统是服务器系统,该方法还包括:
249.基于一个或多个机器学习模型将配置信息发送到用户设备,其中配置信息指示如何基于对用户定义的音乐控制元素的用户输入来调整演奏参数。
250.a3.根据集合a中的任何先前条款所述的方法,还包括:
251.由计算系统根据一个或多个机器学习模型,基于对用户定义的音乐控制元素的用户输入来调整一个或多个作曲参数。
252.a4.根据集合a中的任何先前条款所述的方法,还包括:
253.由用户设备根据配置信息基于对用户定义的音乐控制元素的用户输入来调整一个或多个作曲参数。
254.a5.根据集合a中的任何先前条款所述的方法,其中传输使用分隔字符串来指定数据目标,其中该方法还包括基于具有指向字符串中的偏移量的指针的数据结构来形成字符串,其中该字符串形成包括向现有字符串进行在前附加或在后附加。
255.a6.根据集合a中的任何先前条款所述的方法,其中训练还基于用户输入,该用户输入明确指定作曲参数和对用户定义的音乐控制元素的用户输入之间的关系。
256.a7.根据集合a中的任何先前条款所述的方法,其中一个或多个作曲参数包括用于以下项的参数:
257.建立、维持和降低音乐章节之间的紧张感。
258.a8.根据集合a中的任何先前条款所述的方法,其中一个或多个作曲参数包括用于以下项的参数:
259.启用或禁用音频文件类别;和
260.调整一个或多个音频文件类别的以下音乐方面中的一个或多个:音量、混响量、延迟打击概率和延迟湿度。
261.a9.根据集合a中的任何先前条款所述的方法,其中一个或多个演奏参数包括以下类型参数中的至少一种:
262.滤波器参数、效果参数和混音参数。
263.a10.一种非暂时性计算机可读介质,其上存储有指令,所述指令可由计算设备执行以执行操作,所述操作包括:
264.接收配置信息,其中配置信息指定如何基于对用户定义的音乐控制元素的用户调整来调整一个或多个演奏参数,其中一个或多个演奏参数用于基于所选择的音频曲目生成输出音乐内容;
265.经由第一用户界面接收用户输入,其中用户输入指定对用户定义的音乐控制元素的调整;
266.基于用户输入和配置信息来调整一个或多个演奏参数中的一个或多个;以及
267.根据一个或多个经调整的演奏参数,通过组合多个音频文件来生成输出音乐内容。
268.a11.根据集合a中的任何先前条款所述的非暂时性计算机可读介质,还包括接收作曲控制信息,该作曲控制信息指示要组合的多个音频文件并且指示音乐章节之间的过渡。
269.a12.根据集合a中的任何先前条款所述的非暂时性计算机可读介质,其中作曲控制信息是基于指定对用户定义的音乐控制元素的调整的用户输入而生成的。
270.a13.根据集合a中的任何先前条款所述的非暂时性计算机可读介质,其中用户定义的音乐控制元素经由由传输配置信息的服务器系统生成的第二用户界面来定义。
271.a14.根据集合a中的任何先前条款所述的非暂时性计算机可读介质,其中用户定义的音乐控制元素由与经由第一用户界面提供用户输入的用户不同的用户来定义。
272.a15.根据集合a中的任何先前条款所述的非暂时性计算机可读介质,还包括:
273.使用指针来解析配置信息,该指针指向指示配置信息的目标的分隔字符串内的位置。
274.a16.一种装置,包括:
275.一个或多个处理器,被配置为:
276.接收配置信息,其中配置信息指定如何基于对用户定义的音乐控制元素的用户调整来调整一个或多个演奏参数,其中一个或多个演奏参数用于基于所选择的音频曲目生成输出音乐内容;
277.经由第一用户界面接收用户输入,其中用户输入指定对用户定义的音乐控制元素的调整;
278.基于用户输入和配置信息来调整一个或多个演奏参数中的一个或多个;以及
279.根据一个或多个经调整的演奏参数,通过组合多个音频文件来生成输出音乐内容。
280.a17.根据集合a中的任何先前条款所述的装置,其中一个或多个处理器还被配置为:
281.接收作曲控制信息,该作曲控制信息指示要组合的多个音频文件并且指示音乐章节之间的过渡,其中作曲控制信息是由机器学习模型基于指定对用户定义的音乐控制元素
的调整的用户输入而生成的。
282.a18.根据集合a中的任何先前条款所述的装置,其中用户定义的音乐控制元素经由由传输配置信息的服务器系统生成的第二用户界面来定义。
283.a19.根据集合a中的任何先前条款所述的装置,其中一个或多个处理器还被配置为:
284.使用指针来解析配置信息,该指针指向指示配置信息的目标的分隔字符串内的位置。
285.a20.根据集合a中的任何先前条款所述的装置,其中该装置是移动设备,该移动设备包括被配置为显示第一用户界面的显示器和被配置为连接到无线网络的一个或多个无线电装置。
286.a21.一种非暂时性计算机可读介质,其上存储有指令,所述指令可由计算设备执行以执行操作,所述操作包括:
287.由集合a中的任何先前条款所述的方法执行的操作的任何组合。
288.a22.一种装置,包括:
289.一个或多个处理器;和
290.一个或多个存储器,其上存储有程序指令,所述程序指令可由一个或多个处理器执行以:
291.执行由集合a中任何先前条款所述的方法执行的操作的任何组合。
292.本公开包括对“一个实施例”或多组“实施例”(例如,“一些实施例”或“各种实施例”)的引用。实施例是所公开概念的不同实现方式或实例。对“一个实施例”、“实施例”、“特定实施例”等的引用不一定指代相同的实施例。设想了大量可能的实施例,包括具体公开的那些,以及落入本公开的精神或范围内的修改或替代。
293.本公开可以讨论可以从所公开的实施例中产生的潜在优势。并非这些实施例的所有实现方式都必然表现出任何或所有潜在优势。对于特定实现方式是否实现优势取决于许多因素,其中一些因素超出了本公开的范围。事实上,落入权利要求范围内的实现方式可能无法展示任何已公开优势中的部分或全部的原因有很多。例如,特定实现方式可能包括本公开范围之外的其他电路,这些其他电路结合所公开的实施例之一否定或减少了所公开的优势中的一个或多个。此外,特定实现方式的次优设计执行(例如,实施技术或工具)也可能否定或减少所公开的优势。即使假设有熟练的实现方式,优势的实现可能仍取决于其他因素,例如部署实现方式的环境情况。例如,提供给特定实现方式的输入可能会防止本公开中解决的一个或多个问题在特定场合出现,结果可能无法实现其解决方案的好处。鉴于存在本公开之外的可能因素,明确表示本文所述的任何潜在优势不应被解释为证明侵权必须满足的权利要求限定。相反,这种潜在优势的识别旨在说明受益于本公开的设计者可用的各种类型的改进。宽容地描述了这些优势(例如,声明“可能出现”特定优势)并不是要表达对这些优势是否真的可以实现的怀疑,而是要认识到实现这些优势通常取决于附加因素的技术现实。
294.除非另有说明,否则实施例是非限制性的。也就是说,所公开的实施例并不旨在限制基于本公开起草的权利要求的范围,即使其中关于特定特征仅描述了单个示例。所公开的实施例意在是说明性的而不是限制性的,除非本公开有任何相反的陈述。因此,本技术旨
在允许涵盖所公开的实施例的权利要求以及对于受益于本公开的本领域技术人员显而易见的此类替代、修改和等同物。
295.例如,本技术中的特征可以以任何合适的方式组合。因此,在本技术(或要求其优先权的申请)的审查过程中,可以针对任何此类特征组合制定新的权利要求。特别地,参考所附权利要求,来自从属权利要求的特征可以在适当的情况下与其他从属权利要求的特征组合,包括从属于其他独立权利要求的权利要求。类似地,可以适当地组合来自各个独立权利要求的特征。
296.因此,虽然可以起草所附的从属权利要求以使得每一个都依赖于一个单独的其他权利要求,但是也可以设想额外的从属关系。设想到的与本公开内容一致的任何从属权利要求中的特征的组合,并且可以在本技术或另一申请中对之要求保护。简而言之,组合不限于所附权利要求中具体列举的组合。
297.在适当的情况下,还设想到以一种格式或法定类型(例如,设备)起草的权利要求旨在支持另一种格式或法定类型(例如,方法)的相应权利要求。
298.由于本公开是一份法律文件,各种术语和短语可能会受到行政和司法解释的约束。特此公告,以下段落以及整个公开中提供的定义将用于确定如何解释基于本公开起草的权利要求。
299.对单数形式的项目(即名词或名词短语前面有“一”、“一个”或“该”)的提及旨在意味着“一个或多个”,除非上下文另有明确规定。因此,在没有附带上下文的情况下,权利要求中对“项目”的提及并不排除该项目的其他实例。“多个”项目指的是一组两个或多个项目。
[0300]“可以”一词在本文中是在许可的意义上使用的(即,有可能、能够),而不是在强制的意义上(即,必须)使用的。
[0301]
术语“包含”和“包括”及其各种形式是开放式的,意思是“包括,但不限于。
[0302]
当术语“或”在本公开中关于选项列表使用时,通常将理解为以包容性意义使用,除非上下文另有规定。因此,“x或y”的叙述等同于“x或y,或两者兼而有之”,因此涵盖1)x但不包括y,2)y但不包括x,以及3)x和y。另一方面,诸如“要么x要么y,但不能两者兼而有之”这样的短语清楚地表明“或”的使用具有排他性。
[0303]
描述“w、x、y或z,或其任何组合”或“w、x、y和z至少其中之一
…”
旨在涵盖涉及单个元素的所有可能性,直至集合中的元素总数。例如,给定集合[w,x,y,z],这些短语涵盖集合中的任何单个元素(例如w但不包括x、y或z)、任何两个元素(例如w和x,但不包括y或z),任何三个元素(例如,w、x和y,但不包括z),以及所有四个元素。短语“w、x、y和z中至少一个
…”
因此指的是集合[w、x、y、z]中的至少一个元素,从而涵盖了该元素列表中的所有可能组合。该短语不应解释为要求存在至少一个w的实例、至少一个x的实例、至少一个的y实例和至少一个z的实例。
[0304]
在本公开中,各种“标签”可以位于名词或名词短语之前。除非上下文另有规定,否则用于特征的不同标签(例如,“第一电路”、“第二电路”、“特定电路”、“给定电路”等)指的是该特征的不同实例。此外,标签“第一”、“第二”和“第三”在应用于特征时并不暗示任何类型的排序(例如,空间、时间、逻辑等),除非另有说明。
[0305]
短语“基于”用于描述影响确定的一个或多个因素。该术语不排除其他因素可能影
响确定的可能性。即,确定可以仅基于指定因素或基于指定因素以及其他未指定因素。考虑短语“基于b确定a”。该短语指定b是用于确定a或影响a的确定的因素。该短语并不排除a的确定也可能基于某些其他因素,例如c。该短语也旨在以涵盖a仅基于b确定的实施例。如本文所使用的,短语“基于”与短语“至少部分地基于”同义。
[0306]“响应”和“响应于”这两个短语描述了一个或多个触发效果的因素。该短语不排除其他因素可能影响或以其他方式触发效果的可能性,无论是与指定因素一起还是独立于指定因素。也就是说,影响可能仅是响应于这些因素,也可能是响应于指定因素以及其他未指定因素。考虑短语“响应于b执行a”。此短语指定b是触发a的执行的因素,或者触发a的特定结果地因素。此短语并不排除执行a也可能响应于某些其他因素,例如c。此短语也确实不排除执行a可以联合地响应于b和c。该短语还旨在涵盖a单独响应于b而执行的实施例。如本文所使用的,短语“响应”与短语“至少部分响应”同义。类似地,短语“响应于”与短语“至少部分地响应于”同义。
[0307]
在本公开中,不同的实体(可以不同地称为“单元”、“电路”、其他组件等)可以被描述或声称为“被配置”以执行一个或多个任务或操作。这种表述——[实体]被配置为[执行一项或多项任务]——在本文中用于指代结构(即实体的东西)。更具体地,该表述用于指示该结构被布置成在操作期间执行一个或多个任务。结构可以说是“配置为”执行一些任务,即使该结构当前没有被操作。因此,被描述或叙述为“被配置为”执行某些任务的实体指的是一些实体的东西,例如设备、电路、具有处理器单元的系统和存储可执行以实现任务的程序指令的存储器等。该短语在此不用于指代无形的东西。
[0308]
在一些情况下,各种单元/电路/组件在本文中可以被描述为执行一组任务或操作。应理解,即使没有特别说明,这些实体也“配置为”执行这些任务/操作。
[0309]
术语“被配置为”并不意味着“可配置为”。例如,未编程的fpga不会被视为“被配置为”执行特定功能。然而,这种未编程的fpga可能是“可配置为”执行该功能。经过适当的编程后,该fpga可以说是“被配置为”执行该特定功能,
[0310]
出于基于本公开的美国专利申请的目的,在权利要求中陈述一种结构“被配置为”执行一项或多项任务明确表示对于该权利要求要素不援引35u.s.c.
§
112(f)。如果申请人希望在基于本公开的美国专利申请的审查期间援引第112(f)节,它将使用“用于[执行功能]的装置来叙述权利要求要素。
[0311]
本公开中可以描述不同的“电路”。这些电路或“电路系统”构成硬件,包括各种类型的电路元件,例如组合逻辑、时钟存储设备(例如,触发器、寄存器、锁存器等)、有限状态机、存储器(例如,随机存取存储器、嵌入式动态随机存取存储器)、可编程逻辑阵列等。电路可以是定制设计的,也可以从标准库中获取。在各种实施方式中,电路可以适当地包括数字组件、模拟组件或两者的组合。特定类型的电路通常称为“单元”(例如,解码单元、算术逻辑单元(alu)、功能单元、存储器管理单元(mmu)等)。这样的单元也指电路或电路系统。
[0312]
因此,所公开的电路/单元/组件和图中所示和本文所述的其他元件包括硬件元件,如前一段中所述。在许多实例中,可以通过描述特定电路的功能来指定该电路内硬件元件的内部布置。例如,特定的“解码单元”可以被描述为执行“处理指令的操作码并将该指令路由到多个功能单元中的一个或多个”的功能,这意味着解码单元被“配置为”执行该功能。对于计算机领域的技术人员来说,这种功能规范足以暗示电路的一组可能结构。
[0313]
在各个实施例中,如前一段所述,电路、单元和其他元件可以由其配置为实现的功能或操作定义。该布置和这种电路/单元/组件彼此之间的关系以及它们相互作用的方式形成了硬件的微架构定义,该硬件最终在集成电路中制造或编程到fpga中以形成微架构定义的实体实施方式。因此,本领域技术人员认识到微架构定义是可以从中导出许多实体实施方式的结构,所有这些都属于微架构定义所描述的更广泛的结构。也就是说,根据本公开提供的微架构定义所呈现的技术人员可以在没有过度实验的情况下并在普通技术人员的应用下,通过以硬件描述语言(hdl)(例如verilog或vhdl)对电路/单元/组件的描述进行编码来实施该结构。hdl描述常常以一种可能看起来具有功能性的方式表达。但是对于本领域的技术人员来说,这种hdl描述是将电路、单元或组件的结构转换为下一级实施细节的方式。这样的hdl描述可以采取行为代码(通常不可合成)、寄存器传输语言(rtl)代码(与行为代码不同,rtl代码通常可合成)或结构代码(例如,指定逻辑门及其连接的网表)的形式。hdl描述随后可以针对为给定集成电路制造技术设计的单元库进行合成,并且可以针对时序、功率和其他原因进行修改,以产生最终设计数据库,该最终设计数据库被传输到铸造厂以生成掩模并最终生产集成电路。一些硬件电路或其部分也可以在原理图编辑器中定制设计,并与合成电路一起被捕获到集成电路设计中。集成电路可以包括晶体管和其他电路元件(例如,诸如电容器、电阻器、电感器等的无源元件)以及晶体管和电路元件之间的互连。一些实施例可以实施耦合在一起以实施硬件电路的多个集成电路,和/或在一些实施例中可以使用分立元件。替代地,hdl设计可以被合成到可编程逻辑阵列,例如现场可编程门阵列(fpga),并且可以在fpga中实施。一组电路的设计与这些电路的后续低层实施方式之间的这种解耦通常导致这样的情况,即电路或逻辑设计者从未为低层实施方式指定超出电路被配置为做什么的描述的特定结构集合,因为该过程是在电路实施方式过程的不同阶段执行的。
[0314]
电路元件的许多不同的低级组合可用于实现电路的相同规格的这一事实导致该电路具有大量等效结构。如上所述,这些低级电路实施方式可以根据制造技术的变化、选择用于制造集成电路的铸造厂、为特定项目提供的单元库等而变化。在许多情况下,由不同的设计工具或方法做出的选择可以是任意的。
[0315]
此外,对于给定实施例,电路特定功能规范的单个实施方式通常包括大量器件(例如,数百万晶体管)。因此,该信息的巨大量使得提供用于实施单个实施例的低级结构的完整描述变得不切实际,更不用说大量的等效可能实施方式。因此,本公开使用工业中常用的功能速记来描述电路的结构。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1