首页> 中国专利> 一种即兴伴奏生成装置

一种即兴伴奏生成装置

摘要

本发明公开了一种即兴伴奏生成装置,包括:旋律检测单元,用于对获取的音频数据进行旋律检测以得到旋律,所述旋律以节拍划分;和弦编配单元,用于利用基于CRF构建的和弦编配模型根据连续多个节拍的旋律音进行和弦编配,以得到多个节拍的旋律音对应的和弦并存储;和弦预测单元,用于利用基于CRF构建的和弦预测模型根据连续多个节拍的旋律音、多个节拍的旋律音对应的和弦、以及本节拍旋律音对应的小节序号进行和弦预测,以实时预测下一节拍的和弦;伴奏生成单元,用于根据音高变化速率为预测的和弦自动匹配弹奏模式后,根据预测的和弦和匹配的弹奏模式生成伴奏。该装置能够实时地为旋律进行即兴伴奏,且能保证即兴伴奏的和谐性。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-30

    实质审查的生效 IPC(主分类):G10H 1/00 专利申请号:202210328400X 申请日:20220330

    实质审查的生效

说明书

技术领域

本发明属于自动作曲技术领域,具体涉及一种即兴伴奏生成装置。

背景技术

自动作曲是指利用算法模型为给定的旋律寻找一个合适的和弦进行伴奏。现有自动作曲系统只能在录完歌声旋律后才能为人们生成歌曲,不能与歌手现场实时互动,因此迫切需求能够实时生成伴奏的即兴伴奏系统。

现有的实时伴奏模型基本可分为基于数据与基于规则两种,采用了如HMM、强化学习等多种算法。但是以上算法模型在音乐性、交互性与即时性等方面都存在或多或少的不足之处。如何平衡伴奏的即时性与音乐性之间的关系是最大的难题。为了能够实时地为演奏者进行即兴伴奏,要求使用的算法模型的计算复杂度不能太高,从而减少计算设备的负荷。但是算法简单的同时会导致生成的伴奏与旋律的和谐度降低,伴奏听觉效果变差。

为了解决伴奏实时性差的问题,有的研究者通过简单数据匹配的方法进行快速生成。比如专利文献CN104380371A公开的于自动生成输入音乐数据的实时伴奏的装置,通过分析器提取音乐数据信息,然后经过查询生成器生成对音乐数据库的查询,最后根据查询信息从音乐数据库中匹配合适的音乐从而快速生成伴奏。但该方法需要大型的音乐数据库,需要与云数据库进行联网,受网络影响严重,导致伴奏在时间上波动,实时性能不稳定,并且通过音乐数据查询的方式进行匹配,生成的音乐会较为死板。

除了上述方法外,有的研究者用优化算法搜索过程或者尽量简化机器学习模型,比如论文《基于人声旋律的流行音乐即时伴奏生成系统》中使用一个轻量级的Resnet18从人声中进行旋律的提取,然后利用简单的马尔科夫链来进行运算。这些方法能够实现实时和弦编配任务,但是无论如何都会导致一拍以上的延迟产生。

为了解决实时和弦编配产生的延迟过长的情况,有的学者提出采用和弦预测的方法进行和弦生成,但这又会导致exposure bias的问题(Nan Jiang et al.2020),即,如果基于之前预测得到的序列进行下一时刻的预测,一旦之前的预测出现错误,对于后续生成有毁灭性的后果。

发明内容

鉴于上述,本发明的目的是提供一种即兴伴奏生成装置,能够实时地为旋律进行即兴伴奏,且能保证即兴伴奏的和谐性。

为实现上述发明目的,实施例提供的即兴伴奏生成装置,包括:

旋律检测单元,用于对获取的音频数据进行旋律检测以得到旋律,所述旋律以节拍划分;

和弦编配单元,用于利用基于CRF构建的和弦编配模型根据连续多个节拍的旋律音进行和弦编配,以得到多个节拍的旋律音对应的编配和弦并存储为队列;

和弦预测单元,用于利用基于CRF构建的和弦预测模型根据连续多个节拍的旋律音、多个节拍的旋律音对应的编配和弦、以及本节拍的旋律音对应的小节序号进行和弦预测,以实时预测本节拍的和弦;

伴奏生成单元,用于根据音高变化速率和终止式检测结果为预测的和弦自动匹配弹奏模式后,根据预测的和弦和匹配的弹奏模式生成伴奏。

在一个实施例中,针对和弦编配模型,每条输入的节拍的旋律音经过根据编配特征模板进行特征提取后,提取的编配特征输入至和弦编配模型;

对节拍的旋律音根据编配特征模板进行特征提取,包括:

依据当前的总节拍数N,取第N、N-1、N-2、…、N-M-1拍内持续时间最长的音作为提取的旋律特征,以得到由M个旋律特征组成的编配特征,优选地,M的取值为8。

在一个实施例中,针对和弦预测模型,每条输入数据经过根据预测特征模板进行特征提取后,提取的预测特征输入至和弦预测模型;其中,输入数据包括多个节拍的旋律音、多个节拍的旋律音对应的编配和弦、本节拍的旋律音对应的小节序号;

对输入数据根据预测特征模板进行特征提取,包括:

依据当前的总节拍数N,取第N-1、N-2、…、N-M拍旋律内持续时间最长的音作为提取的旋律特征;

依据当前的节拍总数N,取第N-1、N-2、…、N-M拍旋律对应的编配和弦作为提取的和弦特征;

以本节拍的旋律音对应的小节序号为小节特征;

M个旋律特征、M个和弦特征以及1个小节特征组成预测特征,优选地,M的取值为8。

在一个实施例中,所述和弦编配模型和所述弦预测模型被应用前需要利用训练样本进行监督学习以优化模型参数;

其中,训练样本的构建过程包括:对获取的音乐数据集依次进行数据清洗、旋律与和弦数据的提取与采样、采样后数据的平移八度处理、调性统一处理;

其中,旋律与和弦数据的提取与采样,包括:将经过数据清洗的音乐文件转化为一个旋律轨道的midi文件,从midi文件中提取主旋律轨道数据并转化为包括时序数组、音高数组的二维数据,根据时序信息对音高进行采样以提取旋律音阶信息,得到旋律的一维时序数组;

从经过数据清洗的音乐文件中将带有和弦标记的数据单独提取出来,并将同一时间点处的和弦音高信息转换为midi音高形式的组成音,按照组成音存储和弦,得到包括组成音音高数组、时序数据的二维数据,根据时序信息对组成音的和弦信息进行采样,得到和弦组成音的一维时序数组。

在一个实施例的所述伴奏生成单元中,根据音高变化速率和终止式检测结果为预测的和弦自动匹配弹奏模式,包括:

根据输入和弦计算当前音符与前一音符之间的音高差绝对值的变化速率以确定音高变化速率,根据音高变化速率判断当前乐句属于的主歌或副歌类型,以进行主歌弹奏模式、副歌弹奏模式的切换;

当为主歌类型时,为和弦匹配预设的多种主歌弹奏模式;

当为副歌类型时,为和弦匹配预设的多种副歌弹奏模式;

通过和弦终止式检测并判断乐句是否结束,在检测到乐句进行中时,当为主歌类型时,匹配的多种主歌常规弹奏模式交替演奏;当为副歌类型时,匹配的多种副歌常规弹奏模式交替演奏;

在检测到乐句结束时,会在乐句结束处以主歌加花模式或副歌加花模式演奏作为乐句之间的过度。

优选地,主歌弹奏模式和副歌弹奏模式可采用钢琴、吉他、贝斯、大提琴弹奏;

其中,弹奏模式描述为[和弦组成音由低到高的第几个音,开始时间(拍),持续时间(拍),乐器名]。

在一个实施例的即兴伴奏生成单元中,通过和弦终止式检测并判断乐句是否结束,包括:

以当前拍的和弦为起始,溯源到前K个节拍的和弦,如果能组成终止/半终止和弦进行,就进行和弦断句,认为乐句结束。

在一个实施例中,所述弹奏模式的文本输入描述为[和弦组成音由低到高的第几个音,开始时间(拍),持续时间(拍),乐器名]。

将弹奏模式文本格式转化为数字化格式,该数字化格式与midi指令为一对一的关系,示例性给出数字化格式0:0->1|0,0=>1|0,其中,0:表示等待0/16拍后执行此行,->表示设置音轨所使用的乐器,因此0->1表示设置1号音轨为0号乐器,|0表示等待0毫秒后执行此语句,=>表示播放指定的音符,因此0=>1表示在1号音轨播放第0个音符。

在一个实施例的即兴伴奏生成装置还包括混响单元,用于对人声采集的音频数据进行降噪处理,降噪处理后的音频数据输入至旋律检测单元进行旋律检测;

还用于将伴奏生成单元生成的伴奏与降噪处理后的音频数据进行混合并输出。

在一个实施例的即兴伴奏生成装置还包括:

人声采集单元,用于采集人声的音频数据;

播放单元,用于对混响单元输出的带有伴奏的音频数据进行播放;

可视化编辑单元,通过可视化界面控制伴奏的开始或停止、配置参数,其中,参数包括:调性、节拍器的速度(拍速)、过零率、最低识别音量、是否开启节拍器及节拍器间隔、是否过滤所有半音、是否过滤起始半音、和弦和谐度、和弦约束。

与现有技术相比,本发明具有的有益效果至少包括:

实施例提供的即兴伴奏生成装置将伴奏生成分为了和弦编配阶段和和弦预测阶段,并为这两个阶段创新性地提出一种新组合模型,即弦编配模型和弦预测模型,从而在准确率还可以的情况下,做到了在0.05s的时间内进行实时和弦生成。而在和声演奏方面,伴奏生成单元提供的多种伴奏弹奏模式,根据输入旋律的特征、所生成和声的特征实时地自动切换,为用户提供良好的伴奏享受。

附图说明

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

图1是实施例提供的即兴伴奏生成装置的结构示意图;

图2是实施例提供的音高识别的流程图;

图3是实施例提供的mxl格式音乐文件的内容展示图;

图4是实施例提供的和弦编配模型的示意图;

图5是实施例提供的和弦预测模型的示意图;

图6是实施例提供的依据编配特征模板和预测特征模板进行特征提取的流程图;

图7是实施例提供的对和弦预测模型的验证流程;

图8是实施例提供的伴奏模式的midi卷帘窗可视化示例;

图9是实施例提供的伴奏模式切换过程示意图;

图10是实施例提供的伴奏模式的五线谱示例图;

图11是实施例提供的伴奏生成流程图;

图12是实施例提供的利用即兴伴奏生成装置进行即兴伴奏的流程图。

具体实施方式

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

为了解决现有伴奏装置存在实时性和和谐性的问题,实施例提供了一种如图1所示的即兴伴奏生成装置,包括旋律检测单元、和弦编配单元、和弦预测单元以及伴奏生成单元,这四个单元共同作用,能够实时地生成和弦并为旋律进行实时即兴伴奏,且能保证即兴伴奏的和谐性。

针对旋律检测单元

旋律检测单元用于对获取的音频数据进行旋律检测以得到旋律,所述旋律以节拍划分。实施例中,旋律检测过程包括音高识别阶段和调性识别阶段。

如图2所示,音高识别阶段包括:首先,计算输入的音频数据的过零率,根据过零率大小判断是否输入了人声对应的音频数据,如果过零率超过了阈值,则认为是噪声,输出的音高和响度均为0,否则进行音高识别过程。然后,进行音高识别,包括:为了减少频谱数据泄露,会对音频数据进行加窗处理,并通过短时傅里叶变换构建出三维频谱图(其中,横坐标为时间,纵坐标为频率,每个点的深度为当前时刻的响度)。由于噪声原因,构建的频谱图存在大量的毛刺,不适合直接用于音高识别。因此还需将频谱图转换为包络谱,即将某一个时刻频谱的每一个响度的峰值处用曲线连起来,同时还根据每个峰值端点两边的斜率大小将斜率大于一定值的点当作噪声点并筛选掉,从而大大提高了抗噪声能力。将经过筛选的包络谱峰值对应的频率作为当前时刻存在的所有频率。这些频率中有一个是基音,其余的是泛音。因为泛音是基音频率的整数倍,可以利用这一特点通过计算识别出基音的频率,以得到当前基音的音高和响度(也就是音量)。最后,将基音的音量和音高进行卡尔曼滤波,从而进一步减少噪音的影响,接近其真实值,并且根据音量是否达到阈值判断是否为输入了人声。

经过音高识别阶段识别的音高是绝对音高,需要根据调性,换算出对应调性的旋律。因此,在调性识别阶段,首先,利用频率和音阶的换算公式将音高转化为音阶格式,换算公式为:t=round(log

实施例中,如果设置为固定调性,则将音阶直接换算成固定调性的简谱记谱形式。如果设置为自动识别调性,需要利用大部分音乐都极少出现半音和第一小节都会出现这个调的主和弦的至少两个音的规则,具体自动识别调性包括:首先将每次识别出的音阶进行模12运算得出pitv,并将其累加到noteCount的第pitv个位置中;然后将noteCount中12个音换算成12个调性下的简谱形式,统计里面半音的数量到baseNoteProb中的相应调性的位置,从baseNoteProb中找出半音数量最少的调性的集合,并从集合中找出第一小节旋律音为该调性主和弦的音最多的一个作为确定的调性;最后将得到的旋律转变为识别出的音阶在该调性下的简谱形式。

针对和弦编配单元和和弦预测单元

和弦编配单元用于利用基于CRF构建的和弦编配模型根据连续多个节拍的旋律音进行和弦编配,以得到多个节拍的旋律音对应的编配和弦并存储为队列。和弦预测单元用于利用基于CRF构建的和弦预测模型根据连续多个节拍的旋律音、多个节拍的旋律音对应的编配和弦、以及本节拍的旋律音对应的小节序号进行和弦预测,以实时预测本节拍的和弦。具体而言,和弦编配模型利用前M拍(例如8拍)的旋律音符,为前一拍的旋律音进行和弦的编配任务,编配的和弦会存放到一个队列里存储,以为弦预测模型提供更加准确的和弦输入。和弦预测模型利用前M拍(例如8拍)、和弦编配模型提供的编配的前M拍(例如8拍)对应的和弦以及小节特征作为输入,通过模型的维特比算法来运算预测本节拍可能的和弦及其概率,然后按照用户设置的是否过滤所有半音或起始处半音、和谐度和和弦约束的要求进行筛选,最后在所有符合规则的候选项中选择概率最大的和弦进行伴奏播放,从而实现实时伴奏的效果。

实施例中,和弦编配模型与和弦预测模型被应用前需要利用训练样本进行监督学习以优化模型参数。其中,训练样本的构建过程包括:对获取的音乐数据集依次进行数据集清洗、旋律与和弦数据的提取与采样、采样后数据的平移八度处理、调性统一处理等。

其中,获取的音乐数据集6672首歌曲的乐谱,采用mxl格式存储为音乐文件,音乐文件可采用Musescore等软件打开,如图3所示,示例性的每首歌曲文件中除了旋律音符、标题、歌词和节拍信息外,还包含了曲子的调性以及伴奏和弦标记信息,非常适合用于实时和弦编配模型和和弦预测模型的训练。

数据集清洗包括去除不符合训练样本拍子数的乐曲,例如去除节奏为三拍子的乐曲,从而保证数据集中乐曲均为4/4拍或2/4拍,方便后面进行旋律和和弦16:4采样。还包括对音乐文件解析后,从中读取每个和弦的开始时间,并利用每个和弦的开始时间减去相应的下个和弦的开始时间,求出每个和弦的持续时间,从而找出乐曲的和弦最短持续时间。如果乐曲和弦的最短时间小于1拍,就抛弃该乐曲。这样做可以保证训练样本的有效性,因为在按拍采样的情况下,时值太短的和弦会令模型学习到错误的和弦走向。

旋律与和弦数据的提取与采样是指将音乐文件中的旋律和和弦数据提取出来,并分别用一维的时序数组进行标识,以便于模型训练与和弦生成。具体包括:将经过数据清洗的音乐文件转化为一个旋律轨道的midi文件,midi文件由若干个格式相同的子数据构成,这些子数据在多音轨的格式中记录了一个轨道的所有信息,从midi文件中提取主旋律轨道数据并转化为包括时序数组、音高数组的二维数据,由于二维数据不适用于直接用于模型训练,因此,根据时序信息并按照十六分音符(即四分之一拍)对音高进行采样以提取旋律音阶信息,得到旋律的一维时序数组,其中,音高标注采用MIDI音阶标注方法,如钢琴上的中央C对应的MIDI值为60。实施例中,还解析经过数据清洗的音乐文件并获得Score乐谱数据,从Score数据中读取其调性(Key)信息用于后面统一调性,然后从Score数据中将带有和弦标记的数据单独提取出来,并将同一时间点处的和弦音高信息转换为midi音高形式的组成音,比如将时间1出现的C4,E4,G4和时间2出现的[60,64,67],[62,65,69],按照组成音存储和弦,得到包括组成音音高数组、时序数据的二维数据,这种非直接储存mxl文件中的和弦名,可以最大程度保存和弦的信息、涵盖更丰富的和弦,并可方便后续进行平移八度和统一调性的操作。根据时序信息四分音符(即一拍)对组成音的和弦信息进行采样,得到和弦组成音的一维时序数组。

平移八度处理是为了提升训练性能并避免生成的和声与旋律处在同一八度导致听觉效果混乱,对上面采样后的数据进行了平移八度处理,其流程包括:规定和弦标准八度为MIDI协议的48处(即八度的第4行)、旋律标准八度为MIDI协议的72处(即八度的第6行);统计旋律与和弦中各个音符所在的八度段,分别得到包含最多数据的八度;分别计算八度数据与相应的旋律或和弦的标准八度之间的距离;将旋律与和弦数据进行平移,得到统一至标准八度的音乐数据。

调性统一处理是指根据每首乐曲的调性信息,如果其是大调,则移动其与C大调之间的音程差;如果其是小调,则移动其与A小调之间的音程差。这样即可将所有的大调音乐转为C大调、所有的小调音乐转为A小调,以此降低训练成本,提升训练效果。

实施例中,将经过数据清洗、旋律与和弦数据的提取与采样、采样后数据的平移八度处理、调性统一处理的数据按照文件名{调性|[旋律]|[和弦组成音]}的格式保存到一个txt文本文件中,方便模型训练时进行读取。

实施例中,和弦编配模型与和弦预测模型均以条件随机场(CRF)为基础构建,CRF为一种无向图模型,假设X,Y分别表示需要标记的观测序列和相应标记序列的联合分布随机变量,那么条件随机场(X,Y)就是一个以观察序列为条件的无向图模型。实施例中,将CRF模型改进成符合音乐作曲的形式,然后将两个改进的弦编配模型和和弦预测模型组合在一起进行即兴伴奏的生成。其中,和弦编配模型其依据前面八拍采集到的旋律音,通过概率运算得出前一拍对应的编配和弦,并存放到一个队列容器中供和弦预测模型调用;和弦预测模型利用前八拍的旋律音以及和弦编配模型生成的前八拍的编配和弦,预测本节拍和弦并进行播放。这两个模型的示意图分别如图4和图5所示。图4和图5中,n表示输入的旋律音,n

实施例中,根据和弦编配任务的要求,申请者设计了以下格式作为输入数据的格式,其格式样例如表1所示。其中,在获取本拍内持续时间最长的音时,如果拍内的每个音都不同,则提取这一拍内持续时间最长的音。另外,还使用空行对每首曲子进行了分割。

表1

实施例中,由于和弦预测任务相比于和弦编配更为复杂,因此输入数据的内容也更加复杂,为和弦预测模型设计的数据格式样例如表2所示。与和弦编配模型1不同的是,和弦预测模型增加了和弦作为输入,该输入在实际运行时采用的是和弦编配的输出而不是自身模型的和弦输出。因为在实际运行时,预测输出的和弦由于自身的预测性,不一定与当前节拍的旋律相和谐,因此需要和弦编配模型对以往预测出的和弦进行修正。另外,新增加的小节特征为1到8的顺序排列的小节序号,其用于指示是否在同一小节,每四拍变换一次,也可用作和弦模板的约束。

表2

由于旋律与和弦在乐曲中出现具有一定随意性和关联性,仅仅依靠旋律结构进行分析很难取得好的生成效果,因此,需要对旋律和和弦同时进行前后关系的挖掘。由于CRF模型能够通过特征模板的形式来表达长距离的前后依赖信息,并有效地将各种相关或者不相关的信息融合在一起。需要注意的是前后关系是由当前输出和弦与前面的旋律音或和弦所组成的观察窗口。理论上来讲,窗口越长,观测到的特征信息就越多,但是这样同时会导致训练效率和运行效率的降低,甚至还会出现过拟合现象;而窗口过小,特征信息获取的不够充分,影响和弦生成的效果。因此,经过权量,本CRF模型最长将选取到前面8拍的特征进行分析,设计了一元的旋律特征模板。

针对和弦编配任务,由于只考究其旋律与和弦之间的关系,因此只设计了旋律的一元特征模板用于提取编配特征作为和弦编配模型的输入。另外需要注意的是编配模型的训练时的输入和预测时的输入是相差一拍的,这是由于编配时需要的是对应时间的旋律的对应和弦,模型训练时的输出只能为当前拍对应的和弦,因此这里训练的时候需要用到当前拍内持续时间最长的音。在预测时,将输入往前推一拍,就能生成前面一拍的编配和弦。其编配特征模板设计如表3所示:

表3

实施例中,对当前拍和前七拍的旋律音根据编配特征模板进行特征提取,提取的编配特征输入至和弦编配模型;其中,提取过程为以旋律音的当前拍为起始,向前0、1、2、3、…、7拍旋律内持续时间最长的音作为提取的旋律特征,以得到由8个旋律特征组成的编配特征,具体地,针对该编配特征模板,会将提取的最长音转变为二值函数进行特征提取运算,当特征函数取特定值时,编配特征模板即被示例化。例如,根据表3的编配特征模板提取的表1所示的训练数据为例,那么特征函数将取值为:

If(y==’1-3-5’&&x1==’4’)return 1else return 0;

If(y==’1-3-5’&&x1==’6’)return 1else return 0;

If(y==’1-3-5’&&x1==’2’)return 1else return 0;

If(y==’1-3-5’&&x1==’4’)return 1else return 0;

If(y==’1-3-5’&&x1==’3’)return 1else return 0;

If(y==’1-3-5’&&x1==’3’)return 1else return 0;

If(y==’1-3-5’&&x1==’1’)return 1else return 0;

If(y==’1-3-5’&&x1==’5’)return 1else return 0。

针对和弦预测任务,考虑到当前和弦生成与前面编配的和弦具有很大关系的因素,因此设计的预测特征模板需要比编配特征模板更加复杂。该预测特征模板包括一元的旋律特征模板、一元的和弦特征模板以及一元的小节特征模板。编配特征模板设计如表4所示:

表4

实施例中,对输入数据根据预测特征模板进行特征提取,提取的预测特征输入至和弦预测模型,其中,提取过程包括:依据旋律音的当前拍为起始,向前1、2、3、…、8拍旋律内持续时间最长的音作为提取的旋律特征;依据旋律音的当前拍为起始,向前1、2、3、…、8拍旋律对应的和弦作为提取的和弦特征;以本节拍旋律音对应的小节序号为小节特征,8个旋律特征、8个和弦特征以及小节特征组成预测特征。具体地,针对该预测特征模板,会将提取的最长音、和弦以及小节特征转变为二值函数进行特征提取运算,当特征函数取特定值时,预测特征模板即被示例化。例如,根据表3的编配特征模板提取的表2所示的训练数据为例,那么特征函数将取值为:

If(y==’4-6-1’&&x1==’4’)return 1else return 0;

If(y==’4-6-1’&&x1==’4’)return 1else return 0;

If(y==’4-6-1’&&x1==’6’)return 1else return 0;

If(y==’4-6-1’&&x1==’2’)return 1else return 0;

If(y==’4-6-1’&&x1==’4’)return 1else return 0;

If(y==’4-6-1’&&x1==’3’)return 1else return 0;

If(y==’4-6-1’&&x1==’3’)return 1else return 0;

If(y==’4-6-1’&&x1==’1’)return 1else return 0;

If(y==’4-6-1’&&x2==’4-6-1’)return 1else return 0;

If(y==’4-6-1’&&x2==’4-6-1’)return 1else return 0;

If(y==’4-6-1’&&x2==’4-6-1’)return 1else return 0;

If(y==’4-6-1’&&x2==’2-4-6’)return 1else return 0;

If(y==’4-6-1’&&x2==’2-4-6’)return 1else return 0;

If(y==’4-6-1’&&x2==’6-1-3’)return 1else return 0;

If(y==’4-6-1’&&x2==’6-1-3’)return 1else return 0;

If(y==’4-6-1’&&x2==’6-1-3’)return 1else return 0;

If(y==’4-6-1’&&x3==’III’)return 1else return 0。

具体地,依据编配特征模板和预测特征模板进行特征提取的流程图如图6所示。从训练数据提取出来的特征集其特征数量一般都非常大,但并非所有特征都是有效的,过多的特征会使系统运行的效率降低,为了得到有代表性、冗余少的特征需要考虑对特征进行筛选。在这里选择常见易用的阈值法作为筛选方法,其通过对特征出现的次数作为删除标准,当出现的次数少于设定的阈值时,则删除该特征,否则将其保留。其中,阈值设定为3。

实施例中,可以采用CRF++0.58工具进行模型训练。由于CRF模型为机器学习中的概率统计模型,与深度学习模型相比,没有大量的矩阵运算,因此该工具没有GPU训练模式,只能通过CPU来供其训练。而CPU训练模型需要大量的内存来缓存数据,如果想要增加训练速度,需要尽可能地增加线程。由于本模型希望保留和弦的多样性,因此表示和弦使用的是音高方式而不是和弦符号,最终得到的和弦数量从基本的432个增加到1000多个,从而进一步增加了需要使用的内存量。因此正常的工作站难以满足该要求。综上考虑,可以使用了云服务器ecs.r6.26xlarge进行模型训练,其具有104核的CPU和768GB的内存进行训练。训练时,CRF++工具会根据特征模板运用特征生成算法从训练数据中进行特征提取从而得出概率矩阵,然后按照其内部的训练算法更新概率矩阵中的参数直至收敛,最终得出概率矩阵模型。用该云服务器训练和弦编配模型使用时长为15个小时,而和弦预测模型使用时长为20个小时。具体训练时,通过L-BFGS算法对概率矩阵进行参数优化。

训练结束后,还对两个模型进行实时和弦生成验证。在模型预测时,由于和弦编配模型和和弦预测模型并没有使用到二元特征,即没有状态转移矩阵,所以可以使用更简化形式的维特比算法进行和弦预测生成,直接将其特征向量值进行相加计算其概率即可。

针对和弦编配模型,进行和弦编配时,会根据编配特征模板的形式,将识别到的前8拍的旋律音进行输入,然后根据每个输出和弦对应的特征矩阵进行概率值统计得到每个和弦的出现概率值,将输出概率值最大的和弦作为前一拍的编配和弦输入到一个容量为4的队列中,队列中的和弦内容为模型2的一部分输入。根据验证集转换为训练集相同形式,然后进行模型验证,得到的和弦编配的准确性高达90.4%,并且每拍的和弦编配时间小于0.0021s。该准确度和运算效率可满足实时和弦生成的编配任务的需求。

针对和弦预测模型,进行和弦预测时,需要根据预测特征模板顺序读取前8拍的旋律音、当前小节的特征与和弦编配模型输出的前8拍的编配和弦,然后对当前拍每个可能输出和弦对应的特征矩阵进行概率值统计得到每个和弦的出现概率值,具体流程如图7所示。根据验证集转换为训练集相同形式,然后进行模型验证,得到的和弦预测的准确性高达84.6%,并且每小节预测时间小于0.0025s。该准确度和运算效率可满足实时和弦生成的预测任务的需求。

针对伴奏生成单元

伴奏生成单元用于根据音高变化速率和终止式检测的结果为预测的和弦自动匹配弹奏模式后,根据预测的和弦和匹配的弹奏模式生成伴奏。在伴奏生成单元中,根据设定的伴奏弹奏模式,根据输入旋律的特征、所生成和弦的特征实时地自动切换,将生成的和弦转化成饱满的伴奏形式进行播放,提升了音乐的悦耳性与丰富度。

实施例中,根据设定的伴奏弹奏模式,自动为生成的和弦分配根音、三度音、五度音、七度音、九度音的播放顺序和播放时间。其中,和弦的弹奏模式可以描述为如下格式:[和弦组成音由低到高的第几个音,开始时间(拍),持续时间(拍),乐器名]。其简要示例如下:[1,0,1,Piano],[2,1,1,Piano],[3,2,1,Piano],[2,3,1,Piano]。该简要示例表示依次用钢琴弹出和弦中第1、2、3、2个音,每个音持续一拍。例如当组成音为36、40、43(C3、E3、G3)时,该示例的实际演奏结果可通过以下midi卷帘窗可视化表示出来,如图8所示。

按照这种弹奏模式格式,对装置内部的弹奏模式进行了设置,其中需要注意的以下几点:1.主要针对3-5个组成音的和弦进行弹奏模式设计,但其对含5个以上组成音的和弦具有兼容性。2.将钢琴伴奏和弦的第二、三个音升高一个八度,吉他演奏在主歌部分要将和弦第二个音升高一个八度,在副歌部分要将第一、二个音都升高一个八度。该设置会在程序内部通过改变组成音实现。例如当组成音为36、40、43(C3、E3、G3)时,要将和弦第二个音升高一个八度,那么程序会将其组成音变为36、43、52,并将更新后的组成音顺序用于对应的乐器进行播放。3.如果第4、5个组成音不存在,则按照不播放处理。

实施例中,举例给出了各弹奏模式和对应的详细格式如下:

主歌钢琴1:为最舒缓的弹奏模式,和弦中低音部分弹二分音符,高音部分弹四分音符,具体格式如下:[1,0,2,Piano],[2,0,1,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1,1,Piano],[3,1,1,Piano],[4,1,1,Piano],[5,1,1,Piano],[1,2,2,Piano],[2,2,1,Piano],[3,2,1,Piano],[4,2,1,Piano],[5,2,1,Piano],[2,3,1,Piano],[3,3,1,Piano],[4,3,1,Piano],[5,3,1,Piano]。

主歌钢琴2:模仿流行音乐中电贝司的弹法。在主歌钢琴1的基础上,在每小节最后半拍加一个和弦最低音的八分音符,具体格式如下:[1,0,2,Piano],[2,0,1,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1,1,Piano],[3,1,1,Piano],[4,1,1,Piano],[5,1,1,Piano],[1,1.5,0.5,Piano],[1,2,2,Piano],[2,2,1,Piano],[3,2,1,Piano],[4,2,1,Piano],[5,2,1,Piano],[2,3,1,Piano],[3,3,1,Piano],[4,3,1,Piano],[5,3,1,Piano],[1,3.5,0.5,Piano]。

主歌钢琴3:应用于主歌太长的情况。其设计为小节中第一、二、四拍的第二个音改为后半拍开始。具体格式如下:[1,0,2,Piano],[2,0.5,1,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1.5,0.5,Piano],[3,1,1,Piano],[4,1,1,Piano],[5,1,1,Piano],[1,2,2,Piano],[2,2,1.5,Piano],[3,2,1,Piano],[4,2,1,Piano],[5,2,1,Piano],[2,3.5,0.5,Piano],[3,3,1,Piano],[4,3,1,Piano],[5,3,1,Piano]。

主歌钢琴加花:用于主歌乐句过渡处,具体为在主歌钢琴2的基础上,最后一拍取代为以十六分音符弹当前和弦高八度的1232音。具体格式如下:[1,0,2,Piano],[2,0,1,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1,1,Piano],[3,1,1,Piano],[4,1,1,Piano],[5,1,1,Piano],[1,1.5,0.5,Piano],[1,2,2,Piano],[2,2,1,Piano],[3,2,1,Piano],[4,2,1,Piano],[5,2,1,Piano],[1,3,1,Piano],[2,3.25,0.75,Piano],[3,3.5,0.5,Piano],[2,3.75,0.25,Piano]。

吉他主歌:为体现情绪递进,从第二段主歌才开始加入吉他。具体格式如下:[2,0.5,1,Guitar],[3,1,1,Guitar],[4,1,1,Guitar],[5,1,1,Guitar],[2,1.5,0.5,Guitar],[2,2.5,1.5,Guitar],[3,3,1,Guitar],[4,3,1,Guitar],[5,3,1,Guitar]。

与主歌弹奏模式不一样的是副歌弹奏模式的每小节各有不同,因此下面副歌弹奏模式将每小节单独列出来。

副歌钢琴1:设计形式为在每小节的第一、二拍的第二个音变为后半拍开始;每小节第二拍的最后四分之一拍添加一个根音;每小节第三拍后半拍添加当前和弦第二个音;每小节第三拍的最后四分之一拍添加当前和弦所有除了根音之外的16分音符;每小节最后一拍第一个16分空掉,后三个依次弹当前和弦高八度的321音;第四小节最后一拍的三个音的顺序改成123音(Cmaj7就是CEG)。各小节具体格式如下:第一小节:[1,0,1.75,Piano],[2,0.5,1,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1.5,0.5,Piano],[3,1,1,Piano],[4,1,1,Piano],[5,1,1,Piano],[1,1.75,0.25,Piano],[1,2,2,Piano],[2,2,0.5,Piano],[2,2.5,0.25,Piano],[2,2.75,1.25,Piano],[3,2,0.75,Piano],[3,2.75,1.25,Piano],[4,2,0.75,Piano],[4,2.75,1.25,Piano],[5,2,0.75,Piano],[5,2.75,1.25,Piano],[3,3.25,0.75,Piano],[2,3.5,0.5,Piano],[1,3.75,0.25,Piano];第二小节:[1,0,2,Piano],[2,0.5,1,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1.5,0.5,Piano],[3,1,1,Piano],[4,1,1,Piano],[5,1,1,Piano],[1,1.75,0.25,Piano],[1,2,2,Piano],[2,2,0.5,Piano],[2,2.5,0.25,Piano],[2,2.75,1.25,Piano],[3,2,0.75,Piano],[3,2.75,1.25,Piano],[4,2,0.75,Piano],[4,2.75,1.25,Piano],[5,2,0.75,Piano],[5,2.75,1.25,Piano],[3,3.25,0.75,Piano],[2,3.5,0.5,Piano],[1,3.75,0.25,Piano];第三小节:[1,0,2,Piano],[2,0.5,1,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1.5,0.5,Piano],[3,1,1,Piano],[4,1,1,Piano],[5,1,1,Piano],[1,1.75,0.75,Piano],[1,2,2,Piano],[2,2,0.5,Piano],[2,2.5,0.25,Piano],[2,2.75,0.25,Piano],[3,2,0.75,Piano],[3,2.75,0.25,Piano],[4,2,0.75,Piano],[4,2.75,0.25,Piano],[5,2,0.75,Piano],[5,2.75,0.25,Piano],[3,3.25,0.75,Piano],[2,3.5,0.5,Piano],[1,3.75,0.25,Piano];第四小节:[1,0,2,Piano],[2,0.5,1,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1.5,0.5,Piano],[3,1,1,Piano],[4,1,1,Piano],[5,1,1,Piano],[1,1.75,0.25,Piano],[1,2,2,Piano],[2,2,0.5,Piano],[2,2.5,0.25,Piano],[2,2.75,1.25,Piano],[3,2,0.75,Piano],[3,2.75,1.25,Piano],[4,2,0.75,Piano],[4,2.75,1.25,Piano],[5,2,0.75,Piano],[5,2.75,1.25,Piano],[1,3.25,0.75,Piano],[2,3.5,0.5,Piano],[3,3.75,0.25,Piano]。

副歌钢琴2:是副歌钢琴1的变形,情绪上更加递进一些。各小节具体格式如下:第一小节:[1,0,2,Piano],[2,0.75,0.75,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1.5,0.25,Piano],[3,1,0.75,Piano],[4,1,0.75,Piano],[5,1,0.75,Piano],[2,1.75,0.25,Piano],[3,1.75,0.25,Piano],[4,1.75,0.25,Piano],[5,1.75,0.25,Piano],[1,2,2,Piano],[2,2.25,0.25,Piano],[2,2.5,0.25,Piano],[2,2.75,1.25,Piano],[3,2.25,0.5,Piano],[3,2.75,1.25,Piano],[4,2.25,0.5,Piano],[4,2.75,1.25,Piano],[5,2.25,0.5,Piano],[5,2.75,1.25,Piano],[3,3.25,0.75,Piano],[2,3.5,0.5,Piano],[1,3.75,0.25,Piano];第二小节:[1,0,2,Piano],[2,0.5,1,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1.5,0.25,Piano],[3,1,0.75,Piano],[4,1,0.75,Piano],[5,1,0.75,Piano],[2,1.75,0.25,Piano],[3,1.75,0.25,Piano],[4,1.75,0.25,Piano],[5,1.75,0.25,Piano],[1,2,2,Piano],[2,2,0.5,Piano],[2,2.5,0.25,Piano],[2,2.75,1.25,Piano],[3,2,0.75,Piano],[3,2.75,1.25,Piano],[4,2,0.75,Piano],[4,2.75,1.25,Piano],[5,2,0.75,Piano],[5,2.75,1.25,Piano],[3,3.25,0.75,Piano],[2,3.5,0.5,Piano],[1,3.75,0.25,Piano];第三小节:[1,0,2,Piano],[2,0.75,0.75,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1.5,0.25,Piano],[3,1,0.75,Piano],[4,1,0.75,Piano],[5,1,0.75,Piano],[2,1.75,0.25,Piano],[3,1.75,0.25,Piano],[4,1.75,0.25,Piano],[5,1.75,0.25,Piano],[1,2,2,Piano],[2,2.25,0.25,Piano],[2,2.75,1.25,Piano],[3,2.25,0.25,Piano],[3,2.75,1.25,Piano],[4,2.25,0.25,Piano],[4,2.75,1.25,Piano],[5,2.25,0.25,Piano],[5,2.75,1.25,Piano],[3,3.25,0.75,Piano],[2,3.5,0.5,Piano],[1,3.75,0.25,Piano];第四小节:[1,0,2,Piano],[2,0.5,1,Piano],[3,0,1,Piano],[4,0,1,Piano],[5,0,1,Piano],[2,1.5,0.25,Piano],[3,1,0.75,Piano],[4,1,0.75,Piano],[5,1,0.75,Piano],[2,1.75,0.25,Piano],[3,1.75,0.25,Piano],[4,1.75,0.25,Piano],[5,1.75,0.25,Piano],[1,2,2,Piano],[2,2,0.5,Piano],[2,2.5,0.25,Piano],[2,2.75,1.25,Piano],[3,2,0.75,Piano],[3,2.75,1.25,Piano],[4,2,0.75,Piano],[4,2.75,1.25,Piano],[5,2,0.75,Piano],[5,2.75,1.25,Piano],[1,3.25,0.75,Piano],[2,3.5,0.5,Piano],[3,3.75,0.25,Piano]。

副歌钢琴加花:副歌加花时用,是一小节的长音。具体格式如下:[1,0,4,Piano],[2,0,4,Piano],[3,0,4,Piano],[4,0,4,Piano],[5,0,4,Piano]。

吉他副歌:只根据和弦前三个音设计。各小节具体格式如下:第一小节:[1,0.5,1.25,Guitar],[2,0.75,1.25,Guitar],[3,1.25,0.75,Guitar],[1,1.75,0.25,Guitar],[1,2,1.75,Guitar],[3,2,0.75,Guitar],[2,2.5,0.75,Guitar],[3,2.75,1.25,Guitar],[2,3.25,0.75,Guitar],[1,3.75,0.25,Guitar];第二小节:[1,0,1.75,Guitar],[2,0.75,1.25,Guitar],[3,1.25,0.75,Guitar],[1,1.75,0.25,Guitar],[2,2,0.75,Guitar],[1,2.5,1.5,Guitar],[2,2.75,1.25,Guitar],[3,3.25,0.75,Guitar];第三小节:[2,0,0.75,Guitar],[1,0.5,1.25,Guitar],[2,0.75,1.25,Guitar],[3,1.25,0.75,Guitar],[1,1.75,0.25,Guitar],[1,2.25,1.5,Guitar],[2,2.5,1,Guitar],[3,2.75,1.25,Guitar],[2,3.25,0.75,Guitar],[1,3.75,0.25,Guitar];第四小节:[1,0,1.75,Guitar],[2,0.75,1.25,Guitar],[3,1.25,0.75,Guitar],[1,1.75,0.25,Guitar],[1,2,1.75,Guitar],[2,2.5,1,Guitar],[3,2.75,1.25,Guitar],[2,3.25,0.75,Guitar],[1,3.75,0.25,Guitar]。

在生成伴奏时,以上弹奏模式则会被转换为下面易于处理器理解的数字化格式,并逐行执行。该格式与真实midi指令为一对一的关系,独创地将midi指令写成文本的格式。该格式下的文本示例如下:0:0->1|0,0=>1|0,16:0<=1|0,1=>1|0,16:1<=1|0,2=>1|0,16:2<=1|0,1=>1|0。其具体含义为比如从左到右看0:0->1|0,0:表示等待0/16拍后执行此行,->表示设置音轨所使用的乐器,因此0->1表示设置1号音轨为0号乐器(即钢琴,其他含义可在midi乐器具体表中查阅),|0表示等待0毫秒后执行此语句,=>表示播放指定的音符,因此0=>1表示在1号音轨播放第0个音符;对于下一个16:0<=1|0,1=>1|0,等待16/16拍(即1拍),<=表示停止播放指定音符,因此0<=1表示停止播放1号音轨的第0个音。

上述格式的文本通过程序解析成为midi指令,midi指令可通过midifile输出成midi格式文件、也可调用音源库tiny sound font直接播放。

实施例中,弹奏形式由开发人员预先设定在内部。如图9所示,在即兴伴奏装置开始的过程中,根据音高变化速率为预测的和弦自动匹配弹奏模式,即根据输入和弦计算当前音符与前一音符之间的音高差绝对值的变化速率以确定音高变化速率,并根据音高变化速率判断当前乐句属于的主歌或副歌类型,以进行主歌弹奏模式、副歌弹奏模式的切换。当为主歌类型时,依据为和弦匹配预设的多种主歌弹奏模式进行演奏;当为副歌类型时,依据为和弦匹配预设的多种副歌弹奏模式进行演奏。

实施例中,根据预测的和弦和匹配的弹奏模式生成伴奏,包括:将预测的和弦以匹配的弹奏模式进行演奏以生成伴奏,当为主歌类型时,匹配的多种主歌常规弹奏模式交替演奏;当为副歌类型时,匹配的多种副歌常规弹奏模式交替演奏;在主歌和副歌之间以主歌加花模式或副歌加花模式演奏;通过和弦终止式检测并判断乐句是否结束,在检测到乐句结束时,会在乐句处以加花模式演奏作为乐句之间的过度。

具体地,如图实施例会通过和弦终止式检测来判断识别乐句、乐段是否结束。当检测到乐句、乐段结束时,系统将会在乐句、乐段衔接处播放1小节的加花模式伴奏作为乐句之间的过渡;而当乐句正常进行时,会播放常规弹奏模式,并在同一种常规弹奏模式播放四小节后切换到下一种常规弹奏模式。实施例按照四小节来切换,是因为在一般情况下,歌曲的乐段长度往往是四小节的正整数倍。其具体的切换方式如下:由于绝大多数歌曲的开头都为主歌,因此申请者在最开始时,会固定先顺序播放主歌钢琴1和主歌钢琴2,播放完后才进行每四小节检测一次是否进入副歌阶段。如果进入了副歌阶段,则按照副歌钢琴1和副歌吉他、副歌钢琴2和副歌吉他的顺序进行循环播放;如果进入了主歌阶段,则按照主歌钢琴1和主歌吉他、主歌钢琴2和主歌吉他、主歌钢琴3和主歌吉他的顺序进行循环播放。

实施例中,通过和弦终止式检测并判断乐句是否结束,包括:以当前拍的和弦为起始,溯源到前K个节拍的和弦,如果能组成终止/半终止和弦进行,就进行和弦断句,认为乐句结束。例如,每次生成拍的和弦,会溯源前面4小节即16拍,看里面是否能组成终止/半终止和弦进行,如果能就进行和弦断句。终止/半终止和弦进行是指用来结束乐曲的和声进行,其主要分为:1.正格终止,V-I的终止进行;2.变格终止,即IV-I、II-I、VI-I的终止进行;3.阻碍终止,即原本为V7-I的进行被V7-VI的进行。

图10给出了弹奏模式一部分钢琴弹奏模式的五线谱示例图,方便审稿人理解织体的变化趋势。如图10所示,其中1、2分别是主歌钢琴1和主歌钢琴2,3至6为副歌钢琴1。其节奏和听感的设计分别对应了主歌和副歌的情绪变化。

在生成伴奏的过程中,还需要按照节拍间隔和速度进行节拍器(例如鼓声)的播放。具体地,鼓声播放的流程如图11所示。

实施例中,旋律检测单元、和弦编配单元、和弦预测单元以及伴奏生成单元均通过带ARM架构芯片的主板实现,该芯片通过对旋律检测单元、和弦编配单元、和弦预测单元以及伴奏生成单元的总体流程进行控制,只需支持Android 4.0以上运行环境即可。

混响单元

如图1所示,实施例提供的即兴伴奏生成装置还包括混响单元,用于对人声采集的音频数据进行降噪处理,降噪处理后的音频数据输入至旋律检测单元进行旋律检测;还用于将伴奏生成单元生成的伴奏与降噪处理后的音频数据进行混合并输出。其中,混响单元采用混响DSP芯片:对麦克风的输入的人声进行降噪、混响操作获得湿声(指不包含音乐本身并经过处理的纯人声)并输出给安卓模块进行处理,最后将湿声和安卓主板生成的伴奏进行混音。

人声采集单元

如图1所示,实施例提供的即兴伴奏生成装置还包括人声采集单元,用于采集人声的音频数据。其中,人声采集单元可以采用麦克风进行人声音频数据的采集。

播放单元

如图1所示,实施例提供的即兴伴奏生成装置还包括播放单元,用于对混响单元输出的带有伴奏的音频数据进行播放。实施例中,播放单元可以采用音响实现。

可视化编辑单元

如图1所示,实施例提供的即兴伴奏生成装置还包括可视化编辑单元,通过可视化界面控制伴奏的开始或停止、配置参数。其中,参数包含调性、节拍器的速度(拍速)、过零率、最低识别音量、是否开启节拍器及节拍器间隔、是否过滤所有半音、是否过滤起始半音、和弦和谐度、和弦约束。

其中,针对过滤所有半音,如果和弦对应的音名中出现了半音标记“#”,就将该和弦筛去;针对过滤起始半音,如果和弦的根音(即第一个音)对应的音名,出现了半音标记“#”,就将该和弦筛去。

针对和弦和谐度的运算,首先,计算两个音之间的音程差的绝对值,并进行模12运算。根据上值规定这两个音之间的和谐度大小如下所示:note_harmony[12]={144,11,20,27,32,35,36,35,32,27,20,11};然后,根据note_harmony[12],获取和弦中的每个音与当前旋律音的和谐度并进行累加并求平均,只有该和弦的平均和谐度达到设定的阈值才能作为伴奏和弦播放。

针对和弦约束,即使生成的伴奏和弦与相应和弦模板的匹配程度的运算方法,包括:按照系统内定的所有和弦模板(比如1 5 6 3 4 1 2 5或者4 5 3 6 2 5 1)和当前播放的一段时间内的和弦进行对比,计算各自的绝对音程差,并按照上面的方法计算出所有模板的平均和谐度,从这些模板的平均和谐度中找出最大的一个,只有最大的平均和谐度达到设定的和弦约束的阈值才能将其作为伴奏和弦进行播放。

总之,实施例提供的即兴伴奏生成装置的应用过程包括:如图12所示,在通过屏幕的人机交互界面设置好系统各类参数后,点击开始装置中的程序便会自动通过麦克风将经过混响模块的降噪后的人声进行数据录入。当数据采集够一拍后,提取其基音并换算成音阶,并根据调性得出相应调性下的旋律。然后利用提取的旋律作为上一拍的旋律,其输入和弦编配模型并进行上一节拍和弦编配,编配后的和弦输入和弦预测模型进行和弦的预测,生成完后程序会根据系统内设定的伴奏弹奏形式实时地进行伴奏生成。同时在运行的过程中程序会根据音高变化的速度区分主歌和副歌部分并根据终止式检测的结果进行伴奏弹奏形式的转换,给予用户更好的听觉效果。

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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号