APP下载

一种新型音乐速度谱图的生成算法

2018-07-26桂文明刘睿凡陶玉婷李燕萍

复旦学报(自然科学版) 2018年3期
关键词:音符分辨率原子

桂文明,刘睿凡,陶玉婷,李燕萍

(1.金陵科技学院 软件工程学院,南京 211169; 2.南京理工大学 计算机科学与工程学院,南京 210094;3.南京邮电大学 通信与信息工程学院,南京 210003)

音乐进行的快慢叫音乐速度(Tempo)[1],现代音乐中通常以“拍每分钟”(Beats Per Minute, bpm)来作为速度的度量,比如音乐速度标记“=120”表示该音乐的速度是每分钟120个四分音符,也就是每个四分音符的时值占0.5s.bmp值越大,速度越快.音乐速度和音乐的节拍、节奏等密切相关,是音乐的重要特征之一;音乐速度估计是音乐信息检索领域的一个重要课题,同时又是音乐节拍感知[2]、音乐结构分析[3]等研究方向的基础工作.

音乐速度估计是指基于音乐的内容,从mp3、wav等形式的,含音乐信号波形的文件出发,估计音乐的行进速度.音乐速度在音乐行进过程中是不断变化的,变化的一种原因是由于音乐作曲者根据需要,在音乐行进过程中,设定的速度本身是变化的,这种形式的变化次数在一首乐曲中一般不多,很多音乐从始至终甚至不发生变化;另一种原因是演奏或演唱的误差产生的,这种形式的变化难以避免,一般存在于音乐的所有部分.因此,估计音乐速度实际上是需要估计各时点的速度值.由于存在连音和休止符等现象,音乐速度模糊难辨,音乐速度估计是个困难的课题.我们可以把各时点的速度看成是多个速度分量组成的向量,即速度谱向量.一首音乐各时点的速度谱向量,可以组成音乐速度谱图(Tempogram),因此,一首音乐的速度,我们可以用音乐速度谱图来描述.音乐的速度可以从音乐速度谱图出发[4],通过动态规划、Viterbi等算法导出[5].音乐的节拍跟踪、节奏识别、类型识别等应用均可借助音乐速度谱图,提取有用信息,完成自身的识别工作.

1 现有音乐速度谱图的主要计算方式

音乐速度谱图的生成过程一般分成两个阶段: 第一阶段是音符起始点检测函数(Note Onset Detection Function)生成阶段,音符起始点是指音乐中每个音符开始演奏或演唱的那一刻,文献[6]称之为新颖曲线(Novelty Curve);第二阶段是谱图生成过程.

第一阶段主要包括信号变换、特征提取、起始点检测函数生成等几个部分.信号变换的目的是用信号变换的方法把音乐波形信号从一维的高频数据转换为低频表示,一般是先对信号分帧,然后对每帧信号进行信号变换,信号变换方法包括短时傅里叶变换(Short Time Fourier Transform, STFT)、小波变换(Wavelet Transform, WT)等.特征提取是从前一阶段的信号低频表示中,提取时域、频域以及时频表示等特征.时域特征典型的如幅度包络特征,频域特征典型的如谱波动特征(Spectral Flux)和频域能量特征等,时频表示特征主要是基于小波变换或Cohen类时频分布的特征表示.起始点检测函数生成是根据每帧信号提取的特征计算前后帧的变化情况,音符起始点一般存在于前后帧正向变化突然增大的情况中.典型的音符起始点检测函数生成过程可参考文献[6].

第二阶段是根据前一阶段音符起始点检测函数曲线,提取周期特性,形成音乐速度谱图.这一阶段目前主要的方法包括自相关函数(Auto Correlation Function, ACF)法、傅里叶变换(Fourier Transform, FT)法两种[6].

ACF法是通过对音符起始点检测函数加窗并进行自相关计算,根据延迟提取音符起始点的周期性,并将延迟转换成音乐速度度量,从而形成音乐速度谱图.其计算公式为:

(1)

式中:t,n为离散时间;取l=1,2,…,N为延迟;o(n)为音符起始点检测函数;W(n)为中心点是t=0,支撑为[-N,N]的矩形窗.设fs为o(n)的抽样频率,则延迟l对应的周期为l/fs,频率为fs/l,对应的音乐速度τ=60×fs/l.

FT法是对音符起始点检测函数进行加窗傅里叶变换,求得频域特性,并将频域度量转换成音乐速度度量,从而形成音乐速度谱图.其计算公式为:

(2)

式中:t,n为离散时间;ω为频率;o(n)为音符起始点检测函数;W(n)为中心点是t=0,支撑为[-N,N]的汉宁窗.ω转换成音乐速度的公式为τ=60×ω.对于ω,目前有两种方法确定: 一种是根据文献[5]的离散傅里叶变换(Discrete Fourier Transform, DFT)法,将ω>0离散化为N个频点,间隔为fs/NHz;另一种是类似文献[6]的方法,取常用音乐速度范围τ∈[30,480] bpm,使ω=τ/60Hz,然后利用上述公式计算各时点ω对应的系数.

2 基于匹配追踪的音乐速度谱图生成算法

音乐速度谱图第二阶段的主要目的是从第一阶段生成的音符起始点检测函数曲线,提取周期特性.自相关函数法是通过计算检测函数曲线与自身的延迟曲线的相似程度来表示这种周期特性.傅里叶变换法是通过计算频率来导出周期,对DFT法来说,其系数也可看作是检测函数曲线和一定频率的正交基的相似程度.从用来和检测函数曲线进行相似性比较的曲线(或基)来看,ACF法把相似曲线限定为一系列一定延迟的自身曲线,DFT法则把相似曲线限定为一系列正交的具备一定频率的曲线.而和检测函数进行相似性比较的曲线,其要求是和正常的音乐速度相匹配,如果限制它的数量和形式,会使得匹配程度存在局限性,从而音乐速度谱图的准确性也会受到影响.另一方面,对音乐速度谱图来说,某一时刻的音乐速度系数大值分量越少,也就是说稀疏性越好,则该时刻的速度确定性越高,图的应用性质就越好,而自相关函数法和DFT法生成的音乐速度谱图在这一点上均有所欠缺.

本文提出的基于匹配追踪的音乐速度谱图生成算法能克服现有计算方法的缺陷.匹配追踪算法中的冗余字典使得我们可以灵活配置和检测函数曲线进行相似性比较的“原子”.本文配置的“原子”,其曲线形式和正常音乐速度匹配程度高,而且这些“原子”的灵活配置可以使得音乐速度谱图具有比现有算法更高的分辨率.同时,匹配追踪算法的特性决定了生成的音乐速度谱图具有更强的稀疏性.本节以下部分就具体描述该算法的实现,描述分成冗余字典的创建和算法实现两部分.

2.1 冗余字典的创建

冗余字典中的原子配置需和常用音乐速度相匹配,并且配置将决定音乐速度谱图的分辨程度.本算法取常用音乐速度区间,对该区间的每一音乐速度,创建对应的母原子,随后对该母原子进行移位操作,母原子和移位生成的原子共同构成该音乐速度对应的原子集合.最后,所有音乐速度对应的原子集合组装成该算法的冗余字典.具体步骤如下:

(1) 取常用音乐速度区间τ∈[30,600],τ∈,按一定的音乐速度分辨率要求把速度集合转换成频率集合.

本文中音乐速度分辨率用音乐速度谱图中速度分量的两个相邻有效点的间隔大小来表示.音乐速度分辨率取值可以是1,2,…等正整型值,也可取一定规律的有理数值,比如分辨率等比递增或递减等;分辨率可以在所有子区间相同,也可以划分子区间,并在各子区间进行不同的取值,比如在区间[80,150]取音乐速度分辨率为0.25,而其他子区间取0.5.为方便和自相关函数法以及傅里叶变换法比较,本文在实验中整个区间取音乐速度分辨率为1,即取τ∈[30,600],τ∈,转换成频率集合可进行如下操作:fb=τ/60,τ∈[30,31,…,600],其中b∈{1,2,…,B}为速度区间中的音乐速度序号,也是对应的频率集合中的频率序号.

(2) 对频率集合中的每一频率,创建一个对应的母原子.

针对频率集合每一频率fb,创建该频率的余弦函数为对应的母原子αb,其长度为o(n)的分帧长度M,形式为:αb=cos(2πfbt),t∈(0,1,…,M-1)/fo,fo为o(n)的抽样率.该母原子也就是对应音乐速度的母原子.因为音符起始点检测函数一般只取正数部分,所以,同样母原子αb也只取余弦函数的正数部分.

(3) 按一定粒度对所有母原子进行右移位操作,每移动一步生成一个原子,把这些移动生成的原子连同母原子一起组成该母原子对应的频率的原子集合.

母原子αb的支撑域为[0,M-1],移位粒度d=1,2,…是一个正整数,将母原子αb向右移动d×j位,j=1,2,…,母原子αb右移后,其左边[0,M-d×j-1]支撑域的值用cos(-2πfbt),t=(M-d×j,…,2,1)/fo补充,这样每移动一次,可以得到一个原子.因为母原子是周期函数,因此,最大移动位数设置为不超过一个周期.所有母原子αb和这些位移得到的原子一起组成了该母原子对应音乐速度的原子集合db.

(4) 把频率集合中所有频率fb对应的原子集合db,组装成一个冗余字典D.

2.2 算法的实现

从音乐文件生成音乐速度谱图,首先需要生成音符起始点检测函数,然后对检测函数分帧后,对每一帧进行匹配追踪分解,最后根据每帧的分解系数生成音乐速度谱图.具体步骤如下:

(1) 输入音乐信号,生成音符起始点检测函数o(n).

输入的音乐信号一般是wav、mp3等形式、含有波形的文件.音乐速度谱图生成的第一阶段包括信号变换、特征提取、起始点检测函数生成等过程,输出为音符起始点检测函数o(n),即一个向量.这一阶段本文参照文献[6]进行.

(2) 对o(n)分帧,形成若干帧信号.

对o(n)进行分帧,分帧的帧长为6s(设帧内有M个点),每跳(Hopsize)约0.2s,形成行数为M、列数为N的检测函数矩阵X=X(m,n)m∈[1,M],n∈[1,N].

(3) 对o(n)的每一帧信号,运用冗余字典D,进行匹配追踪,循环一定次数,生成一系列分解系数和对应的原子.

对o(n)的每一帧信号,即对Xi,i∈[1,2,…,N],运用冗余字典D,实施匹配追踪算法:

a) 置剩余信号yn=Xi,n=0,开始执行循环;

b) 计算冗余字典的所有原子gj∈D和剩余信号yn的内积〈yn,gj〉,选择所有内积中绝对值最大者对应的原子gk为本次循环匹配的原子,保存第n次循环的分解系数Sn=|〈yn,gk〉|和对应原子gn=gk;

c) 重新计算剩余信号yn+1=yn-|〈yn,gk〉|gk;

d) 若循环次数或剩余信号与原信号能量比达到精度要求,则退出循环,否则置n=n+1,从步骤(2)开始继续执行.

本文按循环次数终止循环,可根据音乐速度谱图的要求设置循环次数,比如K=10次,20次,….循环终止后得到Sn,gn,n∈[1,K].

(4) 根据冗余字典中原子和音乐速度的关系,把o(n)的每一帧信号的分解系数归属于某一音乐速度的系数.

对每一帧信号的分解系数Sn,先根据对应的原子gn找到其母原子,然后找到对应的音乐速度序号b,把分解系数Sn当作该音乐速度的分解系数,如果存在多个原子对应相同的音乐速度序号,则将多个分解系数累加求和.最后,所有音乐速度的分解系数构成一个音乐速度谱向量S.

(5) 合并每帧信号的音乐速度谱向量,组成音乐速度谱图.

所有帧的音乐速度谱向量Sn,n∈[1,N],按列方式组装合并成音乐速度谱图S=S(b,n),b∈[1,B],n∈[1,N].

3 特性分析

本算法生成的音乐速度谱图,可达到更高的音乐速度分辨率,并且在稀疏性方面要优于现有算法.

3.1 音乐速度分辨率分析

本文中音乐速度分辨率是指音乐速度谱图中速度分量的两个相邻有效点的间隔大小,间隔越大说明分辨率越差,反之,间隔越小则越好.分辨率反映在音乐速度谱图中表现为音乐速度的辨识度或图的清晰程度.音乐速度分辨率在概念上类似频率分辨率,但不完全一致.这里的“有效点”是指可以计算的,而不是估算的.在音乐速度分辨可计算的情况下,可以通过计算相同分辨率下音乐速度谱图的图像清晰程度来进一步加以比较算法的优劣.

考察文献[5]中的DFT法,计算DFT时汉宁窗的长度为6s,因此,速度间隔为60×fs/N=60/6=10bpm.这样的分辨率显然不能满足音乐速度的精度要求.考察文献[6]的FT法,这种方法实际上是对信号加窗后,通过计算离散时间傅里叶变换(Discrete Time Fourier Transform, DTFT)的方法计算常用音乐速度对应的频率ω的系数,虽然其音乐速度分辨率达到1,但这种方法实际上只是对ω在离散点上进行近似抽样,其实际频率分辨率并没有得到提升,下文通过音乐速度谱图的比较说明了这一点.

而本文算法的音乐速度谱图的分辨率决定于创建冗余字典的过程中音乐速度集合转换成频率集合时的音乐速度分辨率,可以调整为全局是1,甚至更小.图1是针对MIREX(Music Information Retrieval Evaluation eXchange)的训练数据集[7]中的一首音乐(train1.wav),分别采用自相关函数法(a)、傅里叶变换法(b)和本算法(c)生成的音乐速度谱图.为方便比较,所有算法的音乐速度分辨率均要求为1,即要求计算音乐速度区间τ∈[30,600],τ∈上各点的系数.本算法的循环次数为571,分辨率设为1,移位粒度为2.从图中看出,在图1(a)和图1(b)中均出现了或宽或窄的横状条纹,而本算法图1(c)呈现的是清晰的线条或点.显然本文算法的图像的清晰程度要高.

图1 音乐速度谱图对比Fig.1 The comparison of tempograms

3.2 谱图稀疏性分析

音乐速度谱图的稀疏性是指谱图系数的非零元素的个数,非零元素个数少,其稀疏性强.谱图越稀疏,其辨析度就越好,这也说明谱图的能量集中,性质好,应用效果好.

对ACF法,在音乐速度超过51bpm时,分量的系数在正常精度(比如1bpm)下,需通过插值方法计算系数,必然造成稀疏性下降.而对FT法来说,DFT和DTFT也需要通过插值或抽样的方法计算系数,造成能量分散,稀疏性下降.而在本文提出的匹配追踪算法中,经过冗余字典的配置,可以保证更强的稀疏性.从图1中也可看出本算法的音乐速度谱图相对自相关函数法和傅里叶变换法更稀疏,大值系数更少.

4 应用示例

为了说明本算法生成的音乐速度谱图的应用,这里提供一个计算恒定音乐速度的简单示例,实验采用的仍然是MIREX的训练数据集[7]中的音乐train1.wav,采样率为22050Hz,音符起始点检测函数精度为23ms,MP循环次数为571,音乐速度分辨率为1,移位粒度为2.

设本算法生成的音乐速度谱图为S=S(b,n),b∈[1,B],n∈[1,N],b为音乐速度序号,n为时间.我们可以通过如下步骤计算音乐速度.

(1) 计算音乐速度曲线.将音乐速度谱图的各音乐速度系数按时间求和,得到音乐速度曲线:

(3)

为计算方便,我们把音乐速度域从τ∈[30,600],τ∈,扩充为τ∈[1,600],τ∈,因此,b∈[1,600],其中T(1∶29)=0.显然音乐速度曲线中系数大者是主导分量,如图2(a)所示.

(2) 音乐速度曲线光滑处理.上一步得到的音乐速度曲线是不光滑的,如图2(a)中最大的系数旁边出现了分叉现象,需要进行光滑处理.我们采用文献[8]的高斯核光滑技术对音乐速度曲线进行光滑处理,得到如图2(b)的音乐速度曲线,记为M(b).

(3) 梳状模板调整音乐速度分布.由于音乐的节拍结构是带有层次的,在音乐速度的倍数上存在着“谐速”.音乐速度曲线中系数最大者往往是最小节拍的音乐速度,而真正的音乐速度往往是相对最大系数的较小“谐速”.因此,本示例中采用类似文献[9]的梳状模板对原始音乐速度曲线进行调整,我们这里的加权梳状模板为:

(4)

式中: 取τ∈[30,300],τ∈;l∈[1,600],l∈,P=4.调整后的音乐速度曲线为:

(5)

式中:τ∈[30,300],τ∈,如图2(c).

(4) 取占主导地位的两个音乐速度为计算结果.按照MIREX的音乐速度评估标准,先取系数最大的音乐速度T1为第一个计算结果.因为事实音乐速度存在于“谐速”上,所以先去掉T1前后0.8×T1内的系数,再取系数最大者T2为第二个占主导地位的音乐速度.本算法实验结果为T1=65,T2=129,标注的结果为[64.5,129.5,0.12],因此算法的结果pscore=1.

图2 计算音乐速度简单示例Fig.2 The example of tempo estimation

5 结 语

本文提出一种基于匹配追踪的音乐速度谱图生成算法,该算法比自相关函数法和傅里叶变换法具有更高的音乐速度分辨率,更强的稀疏性.更高的音乐速度分辨率有利于在应用时提供更准确的音乐速度信息,更强的稀疏性说明能量更集中,应用性质更好.为了说明该算法的应用,本文给出了一个简单的示例.下一步的工作是运用本算法生成的音乐速度谱图的优良特性,在音乐速度检测、节拍跟踪等领域进行更深层次的应用,提升这些领域的研究效果.

猜你喜欢

音符分辨率原子
原子究竟有多小?
原子可以结合吗?
带你认识原子
EM算法的参数分辨率
美妙音符
春天的音符
原生VS最大那些混淆视听的“分辨率”概念
基于深度特征学习的图像超分辨率重建
一种改进的基于边缘加强超分辨率算法
变脸