副歌提取装置和方法与流程

文档序号:11136041
副歌提取装置和方法与制造工艺

本申请涉及声音信号处理技术领域,尤其涉及一种歌曲的副歌提取装置和方法。



背景技术:

歌曲一般分为主歌和副歌部分。目前,现有技术中检测副歌(高潮)部分的技术,大部分都是建立在提取音频特征(例如chroma特征),然后进行特征向量的相似度矩阵计算,找出重复性片段,最后结合实际情况筛选出最有可能的副歌部分。

但是上述检测副歌的方法至少存在以下缺陷:

1、计算量较大,非常耗时。例如,对于一首4分钟的歌曲,使用普通的PC检测副歌,处理时间大约需要3分钟以上,其中,Chroma特征提取和相似度矩阵计算大约需要1分钟,去噪处理大约需要2分钟,此外还有其它的一些计算。

2、事实上,副歌部分的重复性片段,并不是完全一致的。更多的旋律变化仅仅相似,有时片段整体上会升一个调(key)、或者会延长、或者会加入一些新的乐器,伴奏和人声的变化都会影响特征值,进而影响到特征向量的相似度计算,影响准确度。

3、重复性的片段不一定是副歌部分,在非副歌部分也会出现一些重复性旋律的小片段,这样也会影响副歌检测的准确率。

综上所述,可知现有技术中的副歌检测技术存在计算量较大以及准确率较低的问题,因此有必要提出改进的技术手段解决上述问题。



技术实现要素:

本申请的主要目的在于提供一种歌曲的副歌提取装置和方法,以克服现有技术中的副歌检测计算量较大以及准确率较低的问题。

本申请实施例提供一种副歌提取装置,其包括:

预处理模块,用于对歌曲采样信号进行预滤波处理,得到预滤波处理后的信号;

子带获取模块,用于将预滤波处理后的信号划分为多个子带,并获取预定带宽的子带信号;

平滑处理模块,用于对所述子带信号进行平滑滤波处理,得到平滑处理后的子带信号;

包络提取模块,用于提取平滑处理后的子带信号的能量包络信号,其中,能量包络信号数据与子带信号数据之间的差值最小化;

副歌提取模块,用于采用最大类间方差法计算所述能量包络信号的动态阈值,并根据所述动态阈值确定副歌部分。

本申请实施例还提供一种副歌提取方法,其包括:

对歌曲采样信号进行预滤波处理,得到预滤波处理后的信号;

将预滤波处理后的信号划分为多个子带,并获取预定带宽的子带信号;

对所述子带信号进行平滑滤波处理,得到平滑处理后的子带信号;

提取平滑处理后的子带信号的能量包络信号,其中,能量包络信号数据与子带信号数据之间的差值最小化;

采用最大类间方差法计算所述能量包络信号的动态阈值,并根据所述动态阈值确定副歌部分。

根据本申请的技术方案,通过对歌曲采样信号分别进行预滤波、划分子带、平滑滤波处理、提取子带能量包络、动态调整阈值,从而确定副歌提取部分。本申请实施例具有计算量小及准确率高的优点,并具有良好的应用效果。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例的副歌提取装置的结构框图;

图2A至2D是根据本申请的划分子带的频谱的示意图;

图3A和图3B是根据本申请的平滑处理的频谱的示意图;

图4是根据本申请的能量包络提取的频谱的示意图;

图5是根据本申请的动态阈值设置的频谱的示意图;

图6是根据本申请的副歌检测的频谱的示意图;

图7是根据本申请实施例的副歌提取方法的流程图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

根据本申请实施例,提供一种歌曲的副歌提取装置。

图1是根据本申请实施例的副歌提取装置的结构框图,如图1所示,该副歌提取装置至少包括:预滤波处理模块110、子带获取模块120、平滑处理模块130、包络提取模块140和副歌提取模块150,下面详细描述各模块的结构和功能。

预处理模块110用于对歌曲采样信号进行预滤波处理,得到预滤波处理后的信号。

通过分析大量歌曲的频谱发现,歌曲副歌部分(高潮部分)大都能量较 强,因此本申请通过对频谱图处理,突出能量显著性区域。具体地,通过对采样信号中的强频率分量分配较高的权重、对弱频率分量分配较低的权重,使强频率分量变得更强,使弱频率分量变得更弱,从而增强频谱的对比度。

下面歌曲“夏日倾情”为例详细说明。首先,对歌曲采样,采样率16000Hz,单声道。通过该歌曲的频谱图可以发现,其中包括三个能量比较突出的区域,即:01:15~1:40、2:20~2:45、3:10~3:35。

具体地,通过下面的公式对采样信号x[n]进行加窗短时傅里叶变换处理,其中帧长100ms,帧移50ms,选择矩形窗。

短时傅里叶变换公式为:其中,w[n]为矩形窗;

频率响应函数为:f(x)=x/(x+c),其中c为常数,例如可以取0.01或者其他的较小值。

计算得到的预处理后的第n帧的子带信号能量和为:

其中low~high对应于带宽由低到高的子带信号的傅里叶系数,Xp(n,k)=f(X(n,k))=X(n,k)/[X(n,k)+c]。

经过预处理模块110的滤波处理后,频谱的显著性区域的变得更加明显,有效增强了频谱的对比度。

子带获取模块120用于将预滤波处理后的信号划分为多个子带,并获取预定带宽的子带信号。在本申请的实施例中,子带获取模块120将预滤波处理后的信号划分为0~1000Hz、1000~4000Hz、4000~8000Hz等多个子带,并获取带宽为1000~4000Hz的子带信号,本申请中将1000~4000Hz的子带能量作为检测副歌部分的重要特征。

参考图2A至2D,其中图2A是歌曲“夏日倾情”的全局能量谱,图2B是0~1000Hz子带能量谱,图2C是1000~4000Hz子带能量谱,图2D是4000~8000Hz子带能量谱。通过对大量歌曲的样本数据并结合图2分析得出, 直接选用全局能量谱是不合适的,因为低频部分(0~1000Hz)能量都比较强,占很大比重,这会使边界变得模糊;而高频部分(4000~8000Hz)能量不稳定,没有突出副歌区域,没有利用价值;而对于1000~4000Hz部分,副歌部分有明显的增强。这是因为人声的能量主要集中在4000Hz以内,共振峰基本上都集中在这个区域。当歌曲进入副歌区域,歌手基频升高、共振峰频率提高、音量变大、能量增强,突出人声,增强情感。

需要说明,上述的带宽的取值范围并不限制本申请,本申请实施例还可以选用其他的数值范围,例如800~3500Hz、900~40000Hz、1000~3500Hz等,此处不再赘述。

平滑处理模块130用于对所述子带信号进行均值滤波处理以消除干扰性噪声,得到平滑处理后的子带信号。

对于节奏性的打击乐器或者鼓声比较丰富的歌曲类型,它们也会像副歌部分一样,有比较明显的峰值,这会对副歌检测造成误判。这些打击乐器不同人声增强部分,它是类似间歇性、周期性、突发性的峰值等干扰性噪声。

具体地,所述平滑处理模块130通过以下公式进行平滑滤波处理:

其中,Xp(n)为预处理后第n帧的子带能量和,M为样本点范围,也就是通过将当前点的值由前后M各点的均值代替进行平滑滤波,在实际应用中M可以取40。

参考图3A和图3B,图3A是获取的1000~4000Hz子带能量谱的示意图,图3B是子带能量谱经过平滑处理后的能量谱的示意图。通过比对3A和图3B可以明显看出,经过平滑处理后能够有效滤除掉间歇性、周期性、突发性的信号,减少了干扰性噪声。

包络提取模块140,用于提取平滑处理后的子带信号的能量包络信号。

在本申请实施例中,采用了基于峰值的频谱包络提取技术,也就是说, 通过放大峰值的突变区域,通过多次迭代计算,改变步长,使得包络频谱越来越逼近真实的能量频谱(即能量包络信号数据与子带信号数据之间的差值最小化),从而更好地确定副歌区域。

具体地,包络提取模块140使用以下公式进行计算:

初始的子带能量计算公式为:A0(n)=log(|Xs(n)|),Xs(n)表示平滑处理后第n帧的子带能量;

第i次迭代Ai(n)更新公式为:Ai(n)=max(Ai-1(n),Vi-1(n))。

初始的第n帧包络数据为:V0(n)=-∞;

初始的倒谱公式为:C0(n)=ifft(A0(n)),ifft表示傅立叶逆变换;

第i次迭代倒谱公式为:Ci(n)=λW(n)(Ci(n)'-Ci-1(n))+Ci-1(n),其中W(n)表示汉明窗;

上述公式中的Ci(n)'表示第i次迭代的目标倒谱,其中Ci(1)'=Ci(1),Ci(n)'=2*Ci(n),n=2~1+order,order为阶数,例如可以为25;

λ表示倒谱变化的权重系数,且

在上述公式中,EI表示order阶数以上的目标倒谱能量变化,EO表示order阶数以下的目标倒谱能量变化,并且

在本申请实施例中,当满足收敛条件(即包络谱逼近平滑处理后的能量谱)或者达到最大迭代次数(例如200次或其他的数值)时停止迭代计算。

具体地,通过公式diff=max(A0(n)-real(IV(n)))计算diff,当diff小于或等于收敛值时停止迭代计算,其中real()取复数的实部,而diff可以取值0.023或其他较小的数值;

上述公式中的IV(n)表示Ci(n)的离散傅里叶变换系数,且 IV(n)=fft(Ci(n));

最后计算得到的包络谱(能量包络信号)为E(n)=real(exp(IV(n)))。

参考图4,通过多次迭代计算后提取得到的子带能量包络线越来越接近子带能量谱,也就是说,最后提取的子带能量包络线与子带能量谱之间的差值达到最小化。从图中可以得出,通过多次迭代计算后提取的子带能量包络线,有效地放大了峰值的突变区域,从而能够更好地确定副歌区域。

副歌提取模块150,用于采用最大类间方差法计算所述能量包络信号的动态阈值,并根据所述动态阈值确定副歌部分。

本申请采用了基于区分性准则的动态阈值设定,该阈值不是固定的,而是根据不同的音频文件内容选择出最优化的阈值。采用最大类间方差法计算动态阈值的总体思想是:使包络提取模块140所提取的能量包络信号数据按照区分性最大化原则区分成两类数据:显著性数据(突出值)和非显著性(平稳值),即动态阈值将能量包络信号的数据能划分成样本值差异最大的上述两类数据。具体地,通过以下公式计算动态阈值k:

设置包络线有N个数据,数值范围为离散L个值(1~L)。

pi=numi/N,

其中,numi表示第i个离散值出现的次数,pi表示第i个离散值出现的概率;

设置以k为阈值作为划分突出值和平稳值两类数据的分界线,使目标函数g(k)=w0w110)2最大化,从而求解出最佳阈值k。其中,w0表示离散值在k以下出现的概率,w1表示离散值在k以上出现的概率,μ0表示离散值k以下区域的均值,μ1表示离散值k以上区域的均值;

并且,

简单来说,目标函数的意义就在于,使得包络信号大于k的区域和小于k的区域的均值统计量相差越大越好,有效区分能量包络信号的显著性区域和非显著性区域。

进一步地,副歌提取模块150将大于所述动态阈值的子带信号所对应的歌曲部分确定为副歌部分。参考图5,图中横线为计算得到的动态阈值k,从而确定阈值k以上的三个区域对应的歌曲部分为副歌部分。

另外,在实际应用时,副歌提取模块150还可以根据设置的条件对副歌进行筛选,具体包括:

1、设置副歌在歌曲中的开始时间。在设定时间(例如30秒)之前的部分直接过滤掉。

2、设置副歌的最小时间长度。例如设置副歌的长度至少为8秒以上,小于8秒的副歌直接过滤掉,从而过滤掉比较短的片段。

3、设置副歌之间的最小时间间隔。例如设置相邻两个副歌区域至少相隔6秒以上,如果副歌之间相隔小于6秒则直接合并。

根据上述条件对检测出的副歌区域重新更新起点和终点。参考图6,起点选择靠左(时间轴)最近的最小极值点,终点选择靠右最近的最小极值点,这样设置有利于用户试听,逐步进入到高潮部分。

经过实际评测,根据本申请实施例的副歌检测达到96%的准确率;并且平均一首歌的检测时间不超过3秒,能够较好的与实际情况相结合,达到比较好的使用效果。

根据本申请实施例还提供一种副歌提取方法,参考图7,所述方法包括:

步骤S702,对歌曲采样信号进行预滤波处理,得到预滤波处理后的信号;

其中,通过对采样信号X(n)中的不同的频率分量设置对应的权重,并通过以下公式进行加窗短时傅里叶变换计算得到能量显著性区域增强的信号:

其中w[n]为矩形窗,频率响应函数为f(x)=x/(x+c),,c为常数;

计算得到预滤波处理后的第n帧的子带信号能量和为:

其中low~high对应于由低到高频谱的傅里叶系数,Xp(n,k)=f(X(n,k))=X(n,k)/[X(n,k)+c]。

步骤S704,将预滤波处理后的信号划分为多个子带,并获取预定带宽的子带信号;

在本申请实施例中,获取频率范围在1000~4000Hz的子带信号。

步骤S706,对所述子带信号进行平滑滤波处理,得到平滑处理后的子带信号;

通过以下公式进行平滑滤波处理:其中M为样本点范围。

步骤S708,提取平滑处理后的子带信号的能量包络信号,其中,能量包络信号数据与子带信号数据之间的差值最小化;

具体地,通过多次迭代计算提取所述子带信号的能量包络信号,当满足收敛条件或者达到最大迭代次数时停止迭代计算,其中:

初始的第n帧包络数据为V0(n)=-∞;

初始的子带能量计算公式为:A0(n)=log(|Xs(n)|);

第i次迭代计算公式为:Ai(n)=max(Ai-1(n),Vi-1(n))。

步骤S710,采用最大类间方差法计算所述能量包络信号的动态阈值,并根据所述动态阈值确定副歌部分。

具体地,所述最大类间方差法通过以下公式计算动态阈值k:

使目标函数g(k)=w0w110)2最大化从而求解出动态阈值k,其中:

w0表示能量包络信号中小于k的数据出现的概率,

w1表示能量包络信号中大于k的数据出现的概率,

μ0表示能量包络信号中小于k的数据的均值,

μ1表示能量包络信号中大于k的数据的均值,

pi表示第i个离散值出现的概率。

具体地步骤S710包括:基于确定的动态阈值,将大于所述动态阈值的子带信号所对应的歌曲部分确定为副歌部分。并且,还可以通过以下设置的至少之一对确定的副歌进行筛选处理:设置副歌在歌曲中的开始时间;设置副歌的最小时间长度;设置副歌之间的最小时间间隔。最后,根据上述筛选条件对检测出的副歌区域重新更新起点和终点。

本申请的方法的操作步骤与装置的结构特征对应,可以相互参照,不再一一赘述。

根据本申请的技术方案,通过对歌曲采样信号分别进行预滤波、划分子带、平滑滤波处理、提取子带能量包络、动态调整阈值,从而确定副歌提取部分。本申请实施例具有计算量小及准确率高的优点,并具有良好的应用效果。另外,通过本申请实施例,不仅能确定副歌的起点,还能够确定副歌的终点,并且支持单首歌曲多个副歌区域的检测。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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