基于重音分析的人声转乐谱系统的制作方法

文档序号:18089205发布日期:2019-07-06 10:40阅读:756来源:国知局
基于重音分析的人声转乐谱系统的制作方法

本发明涉及数字音频信号处理领域,具体涉及一种基于重音分析的人声转乐谱系统。



背景技术:

如今,使用计算机软件来进行作曲已经相当成熟,通过一些简单而且强大的作曲软件可以让即使没有进行过音乐知识培训的人也能够轻松制作出音乐。然而对于没有音乐理论基础的人来说,学习使用作曲软件通常会比较困难,制作音乐的门槛依然比较高。

另一方面,基于深度学习的自动作曲技术正在飞速发展,通过一个模型就可以实现简单的作曲。这种技术大大降低了作曲的成本,并且可以在短时间内大量作曲。一些类型的自动作曲模型还支持给主旋律进行配乐。这种模型的输入为一段主旋律的乐谱,输出为一个完整的多音轨乐谱。这种模型更加方便了特定类型音乐的创作。而若使得这种创作方式得到充分应用,需要一个快速创造乐谱的工具。

人声转乐谱系统使用人的歌声作为输入,通过提取其中的音高、时长、力度等声学特征,将其转换为乐谱作为输出。通过人声转乐谱系统,人们可以非常高效地输入和保存乐谱,而避免设计任何乐理或记谱知识。而配合自动作曲技术与自动配乐技术,人们就可以很快地创作出自己想要的音乐。

从上世纪七十年代到现在,人声转乐谱的相关技术一直有学者进行研究。目前虽然有一些人声转乐谱领域方面的研究,但是传统的人声转乐谱系统存在一些问题。音高判定的算法方面分为在时间维度上计算的时域法、在频率维度上计算的频域法、还有时频结合分析的方法。时域法通常有较高的复杂度,难以用于实时的转化的应用中,而频域法通常有较低的准确率。

许多人声转乐谱系统只进行音高分析,而对时间维度不进行任何处理。这样得到的是一个音高-时间的关系图。严格意义上来讲这种系统不能被称为人声转乐谱系统,因为一个完整的人声转乐谱系统的输出必须是乐谱。人声转乐谱系统需要对人声片段进行分析,计算出乐谱的进行速度,并且对每个音符划分时长。由于人的歌声不一定完全符合节奏,如何正确划分音符成了一个难点。

一些时候,一个完整的长音可能会被错误地分析为几个连续的短音符,而另一些时候,一些连续的短音又可能被分析为一个连续的长音符。此外,人声转乐谱系统比较容易受到人歌唱时的表现手法的影响。表现手法包括人的力度的变化,情感的波动、颤音、气流,甚至歌词的发音方式。这些影响通常会导致音高的识别错误。



技术实现要素:

本发明的目的是提供一种基于重音分析的人声转乐谱系统。该人声转乐谱系统能够时间将输入人声信号转化为乐谱。

为实现上述发明目的,本发明提供以下技术方案:

一种基于重音分析的人声转乐谱系统,包括计算机存储器、计算机处理器以及存储在所述计算机存储器中并可在所述计算机处理器上执行的计算机程序,所述计算机处理器执行所述计算机程序时实现以下步骤:

(1)对人声音频进行采样,获得多个样本片段,然后对每个样本片段进行频率分析;

(2)对每个样本片段进行重音分析;

(3)根据重音分析结果和频率分析结果,对人声音频进行音符分割;

(4)获得每个音符后,根据频率变化,测定每个音符的音高;

(5)在获得每个音符的音高后,基于绝对音高对乐谱进行调性分析和调整,以获得最终的乐谱。

该人声转乐谱系统中,以人声音频作为输入,通过提取其中的音高、时长、力度等声学特征,将其转换为乐谱作为输出。通过人声转乐谱系统,人们可以非常高效地输入和保存乐谱,而避免设计任何乐理或记谱知识。而配合自动作曲技术与自动配乐技术,人们就可以很快地创作出自己想要的音乐。

附图说明

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

图1是实施例提供的基于重音分析的人声转乐谱方法的流程图;

图2是实施例提供的波长计算的示意图;

图3是实施例提供的重音分析的示意图。

具体实施方式

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

本实施例提供了一种基于重音分析的人声转乐谱系统,该人声转乐谱系统能够实现将人声转化为乐谱,使得人人都可以创作音乐。

该人声转乐谱系统主要包括计算机存储器、计算机处理器以及存储在所述计算机存储器中并可在所述计算机处理器上执行的计算机程序,如图1所示,所述计算机处理器执行所述计算机程序时实现以下步骤,也就是实现人声转乐谱的步骤包括:

s101,对人声音频进行采样,获得多个样本片段,然后对每个样本片段进行频率分析。

人声音频可以是通过各种录音设备采集的wave文件,具体以波形的形式进行呈现。一般来说采集的人声音频波形过于紧密且可能存在一些噪声,不利于对音频进行分析和处理,因此需要对音频进行采样,本实施例中,以0.02s为时间间隔,对人声音频进行截取获得样本片段。

本实施例中,采用时域法对波形进行频率分析,即在时间维度上寻找一个波形的长度,根据波长计算频率。传统的时域法会遍历波长,把样本波形后移至猜测波长,然后与原波形做差。

一种典型的时域法是采用自相关函数进行波长搜素,自相关函数为:其中x为样本波形,l∈[0,n)为时间,随后选取该样本片段上的rx的除了0处的首个极大值。还有一些方法计算差的平方,即计算用来衡量两段波形的差。

对于人声波形,这些函数的结果通常都会比较接近余弦波的形状,即随着时间波形的相似性先增大,增大到极大值后减小,接近0。根据人声波形的特征,本实施例采用类似二分法的方法搜索样本片段中波形中的极点,以确定波长,如图2所示,对每个样本片段进行频率分析的具体方法为:

(a)将样本片段平均分成n份,考虑n份片段的n端点,并搜索寻找n个端点中自相关函数值的首次出现的极大值,或差值函数首次出现的极小值所在的那个片段;

(b)以该片段作为输入,按照步骤(a)再进行迭代搜索寻找,直到确定极值点为止;

(c)相邻两个极值点之间的距离即为波长,波长的倒数即为频率,以此获得每个样本片段的频率分析结果。

该频率确定方法,比传统的方法具有更优的时间复杂度,使得人声转乐谱的运行速度得到了提高。

s102,对每个样本片段进行重音分析。

重音可以理解为音量较高的音符,或者是持续时间较长的音符。本实施例结合音量以及音量的变化区域来实现对样本片段的重音分析。如图3所示,对每个样本片段进行重音分析的具体过程为:

首先,以每个样本片段中波形的平方和作为该样本片段的音量,根据音量和时间构建音量-时间变化曲线;

然后,计算音量-时间变化曲线相对于音量的离散导数,并以0.03秒对离散导数曲线进行采样获得采样点,分析音量的瞬间变化趋势,以变化剧烈的离散导数曲线对应的采样点作为重音的起始位置。

本实施例中,认为音量的离散导数曲线的斜率大于则认为音量的瞬间变化较剧烈,也就是离散导数曲线变化剧烈。

在获得重音后,还可以根据这些重音的起始位置以及重音的持续时间,即初步计算形成乐曲速度。

s103,根据重音分析结果和频率分析结果,对人声音频进行音符分割,具体过程为:

首先,对频率变化和音量变化赋予不同权重后,计算音符的把握度:

c(t)=wf×δ(f,t)+wv×δ(v,t)

其中,c(t)表示t时刻音符的把握度,δ(f,t)是频率f相对于时间t的变化函数,δ(v,t)是音量v相对于时间t的变化函数,wf为函数δ(f,t)的权重,wv为函数δ(v,t)的权重,且wf<wv;

然后,当音符的把握度大于阈值时,则在此时刻认为是音符开始的位置,即对音符进行分割。

本实施例中,当频率和音量同时变化时可以有更大的把握认为此处是音符的开始位置,一般认为重音出现更加意味着音符的开始,则设置音量变化权重大于频率变化权重,经实验验证,当wf与wv取值比例为为3:1时,音符分割的准确性较高,能够达到90%以上。

在另外一个实施方式中,根据重音分析结果和频率分析结果以及乐曲速度,对人声音频进行音符分割,具体过程为:

首先,对频率变化、音量变化以及乐曲速度(节拍信息)赋予不同权重后,计算音符的把握度:

c(t)=wf×δ(f,t)+wv×δ(v,t)+wbpm×b(t,bpm)

其中,wbpm表示函数b(t,bpm)的权重,b(t,bpm)表示据乐曲速度计算节拍信息的函数,t时刻越接近整拍则函数值越大;然后,当音符的把握度大于阈值时,则在此时刻认为是音符开始的位置,即对音符进行分割。

根据乐曲速度可以计算出每个音符在小节中的位置,整拍位置将被赋予更大的权重,即具有更大的把握度,这样结合频率变化、音量变化以及音符所在的位置能够更准确地实现对音符的分割。

s104,获得每个音符后,根据频率变化,测定每个音符的音高,具体过程为:

首先,计算音频的频率信息:

其中,x[i]表示音符中第i个采样点的频率,v[i]表示音符中第i个采样点处的音量,认为音量更大的位置拥有更大的权重;w(i,n)为位置权重函数,它调整一个音符的前中后位置的频率对整个音符的重要程度;

针对函数w(i,n),一般认为音符前部由于可能受到气流的干扰比较大,因此音符前部权重相对略低;音符后部可能出现颤音,因此音符后部的权重缓慢下降;音符中部是个最稳定的区间,因此音符的中部权重相对较高。

然后,根据十二等音律计算音高其中basepitch表示基准音高,即440hz对应的音高a5。

相比于直接计算频率的平均值获得的音高,利用该方法测定的音高准确率得到了明显提升。且具有更优的时间复杂度,使得人声转乐谱的运行速度得到了提高。

s105,在获得每个音符的音高后,基于绝对音高对乐谱进行调性分析和调整,以获得最终的乐谱。

具体地,基于绝对音高对乐谱进行调性分析和调整的过程为:

首先,采用标准的大调分析法进行调性分析,将所有音符映射到一个八度内,以能够使最多的音符落入大调的音阶(do、re、mi、fa、so、la、si)内的音符为主音,获得调性分析结果;

然后,根据调性分析结果对不属于调式主音上的音符进行判断,计算标准音高与人声音高的差值,分析音符出错的可能性p=wf×(f0-fpitch)+h(pitch),其中,wf为音高差值的权重,f0-fpitch为标准音高与人生音高的差值,h(pitch)为音乐理论中出现在大调音阶以外音符出现的频率的统计结果;

最后,根据音符出错可能性p,将不属于调式主音上的音符修正至高半音、低半音、或者不修正。

具体地,对于p>1的音符,计算人声的频率f0与高半音的频率fpitch+1、低半音的频率fpitch-1的差值,修正至这两个音当中频率差距更小的音。对于p≤1的音符不进行修正。

本实施例中,将调性分析纳入了人声转乐谱系统中,结合音乐理论计算音符偏差的可能性,自动修正偏差音符,提高了转化乐谱的准确性。

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

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