本发明属于音乐信息检索领域,涉及一种主旋律音高序列估计方法。
背景技术
音乐信息检索领域中的主旋律提取即从音乐信号中估计出主旋律音高序列,其主要依据是音乐中主旋律成分的显著性和时序连续性。传统的主旋律提取方法大多把主旋律提取问题分解成多音高估计和旋律轮廓构建两个子问题,导致无法同时兼顾两个特性,在多音高估计阶段没有考虑到连续帧音高的高度相关性。jo等提出采用贝叶斯滤波框架建模主旋律提取问题,并借助粒子滤波方法估计参数,但该方法在粒子滤波之前仍然需要进行多音高估计,且具有较多的参数需要估计(s.jo,c.d.yoo,anda.doucet,melodytrackingbasedonsequentialbayesianmodel,ieeejournalofselectedtopicsinsignalprocessing,2011,5(6):1216–1227.)。
此外,音乐信号非常复杂,具有典型非平稳性的本质特点,即某些短时强伴奏音功率可能超过主旋律成分,且主旋律音高频率分布较广,包含几个八度范围,导致现有方案在主旋律提取中来自于伴奏音的错误音高和八度误差广泛存在。
技术实现要素:
为了解决降低短时强伴奏的影响及八度误差的问题,本发明提出如下方案:一种主旋律音高序列估计方法,包括如下步骤:
(1)将每帧主旋律音高序列平滑估计值的上下八度范围作为该帧的主旋律音高的搜索范围;
(2)计算每帧主旋律音高搜索范围内每个频率点的显著度值s′t(f):
其中nh=10是最大谐波次数,|xt(hf)|为频率f的第h次谐波幅度;
(3)对每帧的s′t(f)进行归一化,得到st(f):
(4)利用动态规划算法得到最终的主旋律音高序列值,动态规划的初始条件为:
d(1,ft,j)=s1(fj)(11)
其中d(t,ft,j)是第t帧取ft,j作为旋律音高的累积代价函数,s1(fj)由公式(10)得到,是第1帧的显著度函数在第j个频点的取值,则求解主旋律音高序列最优解的递归公式为:
d(t,ft,j)=st(fj)+max{d(t-1,ft-1,k)-λd(ft-1,k,ft,j)},t=1,...,nfrm(12)
其中ft,j为第t帧主旋律音高的可能值,ft-1,k为第t-1帧主旋律音高估计值,d(ft-1,k,ft,j)为ft-1,k和ft,j的半音差,λ为惩罚因子;
不断迭代公式(12)得到最终主旋律音高序列估计。
作为技术方案的补充,λ=0.05。
本发明采用粒子滤波得到主旋律音高序列的粗略估计,然后将其作平滑处理,用以限定动态规划的主旋律音高搜索范围,再由动态规划在限定的范围内获得最终主旋律音高序列估计,降低了搜索范围外的强伴奏影响;本发明在动态规划阶段引入惩罚因子进一步减少了短时强伴奏的影响。
本发明在粒子滤波的似然函数中,引入谐波平滑性因子降低了八度误差;本发明的动态规划阶段在主旋律音高搜索范围内将每个频率点的显著度值定义为各次谐波分量幅度的加权和,进一步降低了八度误差。
具体实施方式
本公开涉及一种音乐主旋律提取方法,用于解决传统主旋律提取方法无法兼顾显著性和时序连续性的问题,同时用于降低音乐信号非平稳性导致的自于伴奏音的错误音高和八度误差。
其方案如下:在粒子滤波框架下,随机掷粒子,将粒子滤波的似然函数建模为各次谐波幅度平方和与谐波平滑性因子的乘积,用logistic分布拟合转移概率函数,由粒子滤波的预测和更新方程逐帧递归完成主旋律音高序列粗略估计,然后对其进行平滑处理,取平滑处理后的每帧音高的上、下八度范围作为该帧的主旋律音高的搜索范围,并于被限定的范围内执行动态规划算法以得到最终主旋律音高序列估计。
该方法将显著性和时序连续性融合到同一框架中;采用粒子滤波和动态规划相结合的两阶段方案,限定最终主旋律音高序列的可能范围,降低了主旋律音高估计中的短时强伴奏音影响;采用粒子滤波中的谐波平滑性因子和动态规划中加权求和的显著度函数,减少了主旋律音高估计中的八度误差。
该方法具体包括如下步骤:
s1、计算音乐信号的常q变换;
计算音乐音频信号的常q变换方法:对非平稳的音乐信号进行分帧,然后利用常q变换计算按照对数分布的各频率点的幅度值,每八度范围具有36个按对数分布的频率点。
s2、获得基于粒子滤波的主旋律音高序列的粗略估计;
获得基于粒子滤波的主旋律音高序列粗略估计的方法:
初始化:
迭代求解:
(1)按转移概率,预测第t帧旋律音高频率:
根据实际音乐中音高转移概率统计分析结果,将音高转移概率建模为logistic分布,其概率密度函数为:
其中x=f0,t/f0,t-1,f0,t为第t帧旋律音高频率,且μ=1.00003,s=0.0055045。
(2)计算粒子权重
其中p和s分别代表了第t帧第i个粒子的功率和谐波平滑性因子,分别定义为:
其中am,t为第t帧第i个粒子音高频率f0,t所对应的第m次谐波分量的幅度,h为最大谐波次数。
(3)归一化粒子权重
(4)计算有效粒子数量
若
(5)计算当前旋律音高估计
其中
(6)对粒子按照归一化权重进行重采样,并将所有重采样后的粒子权重都置为1/np。
(7)令t=t+1,若t≤nfrm(nfrm为音频的总帧数),跳到步骤(1);否则,结束迭代过程。
结束(1)-(7)的步骤后,由
s3、获得主旋律音高序列平滑估计序列;
获得主旋律音高序列平滑估计序列的方法:对前后100毫秒时间内的主旋律音高序列粗略估计结果取平均,作为当前帧的主旋律音高序列平滑估计值,各个帧的平滑估计值构成主旋律音高序列平滑估计序列。
s4、获得最终主旋律音高序列估计;
获得最终主旋律音高序列估计的方法:
(1)将每帧主旋律音高序列平滑估计值的上下八度范围作为该帧的主旋律音高的搜索范围。
(2)计算每帧主旋律音高搜索范围内每个频率点的显著度值s′t(f):
其中nh=10是最大谐波次数,|xt(hf)|为频率f的第h次谐波幅度。
(3)对每帧的s′t(f)进行归一化,得到st(f):
(4)利用动态规划算法得到最终的主旋律音高序列值,动态规划的初始条件为:
d(1,ft,j)=s1(fj)(11)
其中d(t,ft,j)是第t帧取ft,j作为旋律音高的累积代价函数,s1(fj)由公式(10)得到,是第1帧的显著度函数在第j个频点的取值。则求解主旋律音高序列最优解的递归公式为:
d(t,ft,j)=st(fj)+max{d(t-1,ft-1,k)-λd(ft-1,k,ft,j)},t=1,...,nfrm(12)
其中ft,j为第t帧主旋律音高的可能值,ft-1,k为第t-1帧主旋律音高估计值,d(ft-1,k,ft,j)为ft-1,k和ft,j的半音差,λ=0.05为惩罚因子。其中,ft,j、ft-1,k中的j、k使用不同的符号表示,是由于在迭代到第t帧时,第t-1帧主旋律音高估计值ft-1,k已经得到并为确定值,而第t帧主旋律音高的可能值ft,j还没确定,因而以示区别。
不断迭代公式(12)得到最终主旋律音高序列估计。
本发明将旋律的显著性和平滑性融合到粒子滤波框架中,显著性通过粒子滤波中似然函数的各次谐波幅度平方和方式体现,而平滑性则在粒子滤波中将转移概率拟合成logistic分布的方式实现,这样该框架同时完成多音高估计和旋律轮廓构建。为了减少短时强伴奏影响,本发明通过两个途径解决:(1)采用粒子滤波得到主旋律音高序列的粗略估计,然后将其作平滑处理,用以限定动态规划的主旋律音高搜索范围,再由动态规划在限定的范围内获得最终主旋律音高序列估计,降低了搜索范围外的强伴奏影响;(2)在动态规划阶段引入惩罚因子进一步减少短时强伴奏的影响。为了减少八度误差,本发明通过两个方式解决:(1)在粒子滤波的似然函数中,引入谐波平滑性因子降低八度误差;(2)动态规划阶段在主旋律音高搜索范围内将每个频率点的显著度值定义为各次谐波分量幅度的加权和,进一步降低八度误差。因此,本发明既将显著性和平滑性同时融合到了粒子滤波这一框架中,又降低了短时强伴奏的影响和八度误差。
也即由上述方案,本实施例所述方案具有如下有益效果:将显著性和平滑性融合到粒子滤波框架中,可同时完成多音高估计和旋律轮廓构建;通过粒子滤波和动态规划相结合的方案完成最终的主旋律音高序列估计,并在动态规划中限定主旋律音高搜索范围,还引入惩罚因子,降低了短时强伴奏的影响;通过在粒子滤波中引入谐波平滑性因子和动态规划中加权求和的显著度函数减少了主旋律音高估计中的八度误差。
本实施例所述的音乐主旋律提取方法,其与本公开背景技术中述及的jo等公开的方案相比较,区别如下:
1.本发明方法和jo等的方法的似然函数和转移概率密度都不一样,具有不同的音高显著度描述方法和转移概率密度表达式,尤其是概率密度,本发明的方法是在实际音乐音频的基础上作统计分析,将音高转移概率拟合为logistic分布,而jo等的方法是用常规的高斯密度拟合转移概率;本方法还在似然函数中引入了谐波平滑性因子用以减少八度误差;
2.jo等的方法先用多音高估计得到各帧的主旋律音高候选,然后采用粒子滤波的方法得到最终的主旋律音高序列。在某些主旋律音符结尾部分,功率可能小于某些强伴奏的场合,jo等的方法仍无法排除这些错误音高,准确性较差;
3.两个方法的流程不同,本发明的方法是先粒子滤波再动态规划,jo等的方法是先多音高估计再粒子滤波;
4.本方法具有较少的参数,参数调整容易;而jo等的方法具有较多的参数,调整困难。
由上述,音乐具有很强的非平稳特性,强伴奏音可能在某些短时间内超过主旋律功率,比如,在某些音符结尾部分,可能主旋律功率小于有些伴奏;此外,八度误差也经常存在,在某个音符演奏过程中,估计音高会因为各次谐波幅度比例的变化而在不同的八度之间切换。因此,若能事先确定主旋律的大致范围,将能滤除范围外的伴奏音高和八度误差。
jo等的方法先用多音高估计得到各帧的旋律音高候选,然后采用粒子滤波的方法得到最终的主旋律音高序列。该方法仍不能解决上述问题。本发明提出的方法首先用粒子滤波估计出旋律音高,同样也具有上述问题,但是粒子滤波方法估计的结果大部分都是准的,因此对估计序列作平滑处理就削弱了错误估计的影响,仍能确定旋律音高的大致范围,在被限制的范围内再利用动态规划作处理,就能滤除范围外的短时强伴奏音高和八度误差。
以上所述,仅为本发明创造较佳的具体实施方式,但本发明创造的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明创造披露的技术范围内,根据本发明创造的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明创造的保护范围之内。