具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中,音频文件可以包括但不限于:歌曲、歌曲片段、清唱歌曲、清唱歌曲片段、音乐、音乐片段、演奏乐、演奏乐片段等文件。本发明实施例的音频分类方案可以应用于互联网领域的多个场景中,例如:可以应用于对互联网音频库中的音频文件添加智能标签的场景;或者,可以应用于对互联网音频库中的音频文件进行归类管理的场景;或者,可以应用于对未知的音频文件进行分类的场景;或者,可应用于音频文件的分类搜索,以提升搜索的效率和匹配度的场景;或者,可应用于基于类别进行音频文件的推荐的场景,等等。
下面将结合附图1-附图4,对本发明实施例提供的音频文分类方法进行详细介绍。需要说明的是,附图1-附图4所示的音频分类方法可以由本发明实施例提供的音频分类装置所执行,该音频分类装置可运行于终端设备或服务器中,其中,终端设备可包括但不限于:PC(Personal Computer,个人计算机)、PAD(平板电脑)、手机、智能手机、笔记本电脑等设备。
请参见图1,为本发明实施例提供的一种音频分类方法的流程图;该方法可包括以下步骤S101-步骤S103。
S101,对待分类的音频文件进行Pitch检测,获得所述音频文件的Pitch序列。
其中,Pitch(音高)指各种不同高低的声音,即音的高度,音的基本特征的一种。一个音频文件可以表示为多帧音频帧信号组成的一个帧序列。本步骤中,对待分类的音频文件进行Pitch检测,可以为对该音频文件的每一帧音频帧信号进行Pitch检测,获得该音频文件的每一帧音频帧信号的Pitch值,从而构建该音频文件的Pitch序列。
S102,根据所述Pitch序列,查找所述音频文件的主音。
音频文件均包含调式,调式指若干高低不同的乐音,围绕某一有稳定感的中心音,按照一定音程关系组织在一起,成为一个有机的体系,该体系即称为调式,该中心音即称为主音(Key)。Key属于音频文件的调式中的核心音,调式中的其他音或围绕着Key,或支撑着Key,或靠近Key。本步骤中,可基于音频文件的Pitch序列,查找该音频文件的Key。
S103,根据所述音频文件的主音,对所述音频文件进行调式检测以确定所述音频文件的类别。
由于Key属于音频文件的调式中的核心音,调式中的其他音或围绕着Key,或支撑着Key,或靠近Key。本步骤中,基于音频文件的Key可对该音频文件进行调式检测,确定音频文件的调式,从而确定音频文件的类别。其中,音频文件的调式可以包括大调式或小调式,音频文件的类别可以包括大调式类别和小调式类别。通常,大调式类别的音频文件色彩明亮、欢快激进;小调式类别的音频文件柔和暗淡。
下面将结合附图2-附图4,对图1所示的音频分类方法中的各步骤进行详细介绍。
请参见图2,为图1所示的步骤S101的具体流程图;该步骤S101可包括以下步骤s1101-s1104。
s1101,对所述音频文件的每一帧音频帧信号进行预处理。
本发明实施例中,设定所述音频文件包含M帧音频帧信号,M为正整数,则该音频文件包含的任一帧音频帧信号可表示为xi(n),其中,i表示所述音频文件中该帧音频帧信号的顺序,i为正整数且i=1,2,...M;n为正整数且n=0,1,2,N-1,其中N为该帧音频帧信号的长度,即N为该帧音频帧信号的采样点数。本步骤对xi(n)的预处理过程可包括以下A-B两个步骤:
A、将所述音频文件的每一帧音频帧信号进行加窗处理。
步骤A可采用矩形窗函数据ω(n)对xi(n)进行加窗处理,加窗处理后的每一帧音频帧信号可表示为如下公式(1):
xiω(n)=ω(n)*xi(n) (1)
B、对所述加窗处理后的每一帧音频帧信号进行带通滤波处理。
步骤B中,采用bpf(n)表示带通滤波器,该带通滤波器的下截止频率可表示为wl,上截止频率可表示为wh。对加窗处理后的每一帧音频帧信号xiω(n)进行带通滤波处理后,可得到如下公式(2):
xiaω(n)=xiω(n)·bpf(n) (2)
上述公式(2)中,“·”表示卷积操作;优选地,wl可设置为50,wh可设置为1500。
s1102,对所述预处理后的每一帧音频帧信号进行自相关计算,获得所述音频文件的每一帧音频帧信号的自相关函数。
本步骤中,所述预处理后的每一帧音频帧信号的自相关函数(AutocorrelationFunction,ACF)Ri(k)可以采用下述公式(3)进行计算:
上述(3)式中,k为正整数且k=0,1,2,N-1。
s1103,根据所述音频文件的每一帧音频帧信号的自相关函数,计算所述音频文件的每一帧音频帧信号的Pitch值。
本步骤中,根据音频文件的音频帧信号的频率特征,可以假设该音频文件的每一帧音频帧信号的Pitch值均位于[pl,ph]的区间范围,其中,pl为音频文件的每一帧音频帧信号的Pitch值的下限,ph为音频文件的每一帧音频帧信号的Pitch值的上限。音频文件的采样率可表示为fs,采用fs可以确定检索该音频文件的每一帧音频帧信号的位置,该位置可位于[DL,DH]的区间范围,其中,DL为音频文件的每一帧音频帧信号的Pitch值的检索位置下限,DH为音频文件的每一帧音频帧信号的Pitch值的检索位置上限,且DL满足下述公式(4):
DL=fs/ph,DL>=wl (4)
DH满足下述公式(5):
DH=fs/pl,DH<=wh (5)
在所述音频文件的每一帧音频帧信号的自相关函数Ri(k)中,将[DL,DH]区间范围作为检索区域,查找最大值Ti(DL<=Ti<=DH),再根据下述公式(6),即可得到所述音频文件的每一帧音频帧信号的Pitch值pi(n),该公式(6)可表示如下:
pi(n)=fs/Ti (6)
s1104,按照所述音频文件中各帧音频帧信号的顺序对所述音频文件的每一帧音频帧信号的Pitch值进行排列,构建所述音频文件的Pitch序列。
所述音频文件中各帧音频帧信号的顺序,即指各帧音频帧信号在所述音频文件的帧序列中的顺序。本步骤中,按照所述音频文件中各帧音频帧信号的顺序,可构建所述音频文件的Pitch序列为pi(n)。
请参见图3,为图1所示的步骤S102的具体流程图;该步骤S102可包括以下步骤s1201-步骤s1203。
s1201,将所述Pitch序列转换为MIDI(Musical Instrument Digital Interface,乐器数字接口)序列。
本步骤中,可采用下述公式(7)将所述Pitch序列pi(n)转换为MIDI序列mdi(n),该公式(7)可表示如下:
mdi(n)=69+12*log2(pi(n)/44100+j) (7)
上述公式(7)中,log2指求取以2为底数的对数,j为远小于0.00001的数。
需要说明的是,MIDI序列mdi(n)包含乐器数字,例如:md1(n)表示一个乐器数字,md2(n)也表示一个乐器数字,mdM(n)也表示一个乐器数字,等等。
s1202,根据所述MIDI序列包含的乐器数字以及每个乐器数字的出现频率,生成统计序列。
其中,统计序列可以采用His(v)进行表示。本步骤中,可首先采用下述公式(8),求得mv:
mv=max(mdi(n)) (7)
其次,根据mv以及mdi(n)可生成统计序列His(v),His(v)表示mdi(n)序列中的乐器数字的出现频率,其中,v=0,1,2,3...mv。
s1203,将所述统计序列中的出现频率最大的乐器数字,确定为所述音频文件的主音。
本步骤中,可查找统计序列His(v)的最大值(其中,最大值不等于His(0)),将该最大值所对应的乐器数字,确定为所述音频文件的Key。
请参见图4,为图1所示的步骤S103的具体流程图;该步骤S103可包括以下步骤s1301-步骤s1305。
s1301,根据大调式音阶特征,设置第一矩阵。
大调式音阶特征主要为:由七个基本音构成,其音程结构为“全-全-半-全-全-全-半”。本步骤中,根据大调式音阶特征,可设置第一矩阵为:A=[1,0,1,0,1,1,0,1,0,1,0,1,1]。
s1302,根据小调式音阶特征,设置第二矩阵。
小调式音阶特征主要为:由七个基本音构成,其音程结构为“全-半-全-全-半-全-全”。本步骤中,根据小调式音阶特征,可设置第二矩阵列为:B=[1,0,1,1,0,1,0,1,1,0,1,0,1]。
需要说明的是,本实施例中,步骤s1301和步骤s1302在时序上可不分先后,即也可以先执行步骤s1302,再执行步骤s1301;或者同时执行步骤s1301和步骤s1302。
s1303,采用所述音频文件的主音、所述统计序列和所述第一矩阵,计算所述音频文件的第一调式特征值。
本步骤中,可设置下式(8):
在上述(8)的条件下,本步骤可计算所述音频文件的第一调式特征值为VA,该VA可采用下述(9)计算获得。
上述(9)式中,α为正整数且α=0,1,2,3...12。
s1304,采用所述音频文件的主音、所述统计序列和所述第二矩阵,计算所述音频文件的第二调式特征值。
在上述(8)的条件下,本步骤可计算所述音频文件的第二调式特征值为VB,该VB可采用下述(10)计算获得。
需要说明的是,本实施例中,步骤s1303和步骤s1304在时序上可不分先后,即也可以先执行步骤s1303,再执行步骤s1304;或者同时执行步骤s1303和步骤s1304。
s1305,根据所述音频文件的第一调式特征值与所述音频文件的第二调式特征值,确定所述音频文件的类别。
其中,音频文件的类别可以包括大调式类别和小调式类别。通常,大调式类别的音频文件色彩明亮、欢快激进;小调式类别的音频文件柔和暗淡。本步骤对所述音频文件的类别的确定过程可包括以下C-D两个步骤,其中步骤D包含两个分支步骤D1和D2。
C、判断所述音频文件的第一调式特征值是否大于或等于所述音频文件的第二调式特征值。
步骤C需要对VA与VB的值进行比较判断,即判断VA与VB是否满足VA>=VB。当步骤C判断VA>=VB时,可进入步骤D1。当步骤C判断VA<VB时,可进入步骤D2。
D1、确定所述音频文件的类别为大调式类别。步骤D1通常可表明所述音频文件色彩明亮、欢快激进。
D2、确定所述音频文件的类别为小调式类别。步骤D2通常可表明所述音频文件柔和暗淡。
通过上述附图1-附图4所示实施例的描述,本发明实施例可通过对待分类的音频文件进行音高检测、查找主音以及调式检测,自动进行音频文件的类别确定,避免了人工方式所带来的资源耗费,降低了音频文件的分类成本,有效地提高了分类效率,提升了智能性。
下面将结合附图5-附图10,对本发明实施例提供的音频分类装置进行详细介绍。需要说明的是,附图5-附图10所示的音频分类装置可运行于终端设备或服务器中,用于执行附图1-附图4所示的音频分类方法。其中,终端设备可包括但不限于:PC、PAD、手机、智能手机、笔记本电脑等设备。
请参见图5,为本发明实施例提供的一种音频分类装置的结构示意图;该装置可包括:音高检测模块101、主音查找模块102和分类模块103。
音高检测模块101,用于对待分类的音频文件进行Pitch检测,获得所述音频文件的Pitch序列。
其中,Pitch(音高)指各种不同高低的声音,即音的高度,音的基本特征的一种。一个音频文件可以表示为多帧音频帧信号组成的一个帧序列。所述音高检测模块101对待分类的音频文件进行Pitch检测,可以为对该音频文件的每一帧音频帧信号进行Pitch检测,获得该音频文件的每一帧音频帧信号的Pitch值,从而构建该音频文件的Pitch序列。
主音查找模块102,用于根据所述Pitch序列,查找所述音频文件的主音。
音频文件均包含调式,调式指若干高低不同的乐音,围绕某一有稳定感的中心音,按照一定音程关系组织在一起,成为一个有机的体系,该体系即称为调式,该中心音即称为主音(Key)。Key属于音频文件的调式中的核心音,调式中的其他音或围绕着Key,或支撑着Key,或靠近Key。所述主音查找模块102可基于音频文件的Pitch序列,查找该音频文件的Key。
分类模块103,用于根据所述音频文件的主音,对所述音频文件进行调式检测以确定所述音频文件的类别。
由于Key属于音频文件的调式中的核心音,调式中的其他音或围绕着Key,或支撑着Key,或靠近Key。所述分类模块103基于音频文件的Key可对该音频文件进行调式检测,确定音频文件的调式,从而确定音频文件的类别。其中,音频文件的调式可以包括大调式或小调式,音频文件的类别可以包括大调式类别和小调式类别。通常,大调式类别的音频文件色彩明亮、欢快激进;小调式类别的音频文件柔和暗淡。
下面将结合附图6-附图10,对图5所示的音频分类装置的各模块进行详细介绍。
请参见图6,为图5所示的音高检测模块的实施例的结构示意图;该音高检测模块101可包括:预处理单元1101、自相关计算单元1102、音高计算单元1103和序列构建单元1104。
预处理单元1101,用于对所述音频文件的每一帧音频帧信号进行预处理。
本发明实施例中,设定所述音频文件包含M帧音频帧信号,M为正整数,则该音频文件包含的任一帧音频帧信号可表示为xi(n),其中,i表示所述音频文件中该帧音频帧信号的顺序,i为正整数且i=1,2,...M;n为正整数且n=0,1,2,N-1,其中N为该帧音频帧信号的长度,即N为该帧音频帧信号的采样点数。
请一并参见图7,为图6所示的预处理单元的实施例的结构示意图;该预处理单元1101可包括:加窗处理子单元1111和滤波处理子单元1112。
加窗处理子单元1111,用于将所述音频文件的每一帧音频帧信号进行加窗处理。
所述加窗处理子单元1111可采用矩形窗函数据ω(n)对xi(n)进行加窗处理,加窗处理后的每一帧音频帧信号可表示为图2所示实施例中的公式(1)。
滤波处理子单元1112,用于对所述加窗处理后的每一帧音频帧信号进行带通滤波处理。
所述滤波处理子单元1112可采用bpf(n)表示带通滤波器,该带通滤波器的下截止频率可表示为wl,上截止频率可表示为wh。对加窗处理后的每一帧音频帧信号xiω(n)进行带通滤波处理后,可得到图2所示实施例中的公式(2)。
自相关计算单元1102,用于对所述预处理后的每一帧音频帧信号进行自相关计算,获得所述音频文件的每一帧音频帧信号的自相关函数。
所述自相关计算单元1102可以采用图2所示实施例中的公式(3)计算获得所述音频文件的每一帧音频帧信号的自相关函数Ri(k)。
音高计算单元1103,用于根据所述音频文件的每一帧音频帧信号的自相关函数,计算所述音频文件的每一帧音频帧信号的Pitch值。
根据音频文件的音频帧信号的频率特征,可以假设该音频文件的每一帧音频帧信号的Pitch值均位于[pl,ph]的区间范围,其中,pl为音频文件的每一帧音频帧信号的Pitch值的下限,ph为音频文件的每一帧音频帧信号的Pitch值的上限。音频文件的采样率可表示为fs,采用fs可以确定检索该音频文件的每一帧音频帧信号的位置,该位置可位于[DL,DH]的区间范围,其中,DL为音频文件的每一帧音频帧信号的Pitch值的检索位置下限,DH为音频文件的每一帧音频帧信号的Pitch值的检索位置上限,且DL满足图2所示实施例的公式(4),DH满足图2所示实施例的公式(5)。
所述音高计算单元1103可在所述音频文件的每一帧音频帧信号的自相关函数Ri(k)中,将[DL,DH]区间范围作为检索区域,查找最大值Ti(DL<=Ti<=DH),再根据图2所示实施例中的公式(6),得到所述音频文件的每一帧音频帧信号的Pitch值pi(n)。
序列构建单元1104,用于按照所述音频文件中各帧音频帧信号的顺序对所述音频文件的每一帧音频帧信号的Pitch值进行排列,构建所述音频文件的Pitch序列。
所述音频文件中各帧音频帧信号的顺序,即指各帧音频帧信号在所述音频文件的帧序列中的顺序。所述序列构建单元1104按照所述音频文件中各帧音频帧信号的顺序,可构建所述音频文件的Pitch序列为pi(n)。
请参见图8,为图5所示的主音查找模块的实施例的结构示意图;该主音查找模块102可包括:转换单元1201、统计序列生成单元1202和主音确定单元1203。
转换单元1201,用于将所述Pitch序列转换为MIDI序列。
所述转换单元1201可采用图3所示实施例中的公式(7)将所述Pitch序列pi(n)转换为MIDI序列mdi(n)。需要说明的是,MIDI序列mdi(n)包含乐器数字,例如:md1(n)表示一个乐器数字,md2(n)也表示一个乐器数字,mdM(n)也表示一个乐器数字,等等。
统计序列生成单元1202,用于根据所述MIDI序列包含的乐器数字以及每个乐器数字的出现频率,生成统计序列。
其中,统计序列可以采用His(v)进行表示。所述统计序列生成单元1202在生成统计序列的过程中,可首先采用图3所示实施例中的公式(8),求得mv;其次,根据mv以及mdi(n)可生成统计序列His(v),His(v)表示mdi(n)序列中的乐器数字的出现频率,其中,v=0,1,2,3...mv。
主音确定单元1203,用于将所述统计序列中的出现频率最大的乐器数字,确定为所述音频文件的主音。
所述主音确定单元1203可查找统计序列His(v)的最大值(其中,最大值不等于His(0)),将该最大值所对应的乐器数字,确定为所述音频文件的Key。
请参见图9,为图5所示的分类模块的实施例的结构示意图;该分类模块103可包括:第一设置单元1301、第二设置单元1302、第一特征计算单元1303、第二特征计算单元1304和分类单元1305。
第一设置单元1301,用于根据大调式音阶特征,设置第一矩阵。
大调式音阶特征主要为:由七个基本音构成,其音程结构为“全-全-半-全-全-全-半”。所述第一设置单元1301根据大调式音阶特征,可设置第一矩阵为:A=[1,0,1,0,1,1,0,1,0,1,0,1,1]。
第二设置单元1302,用于根据小调式音阶特征,设置第二矩阵。
小调式音阶特征主要为:由七个基本音构成,其音程结构为“全-半-全-全-半-全-全”。所述第二设置单元1302根据小调式音阶特征,可设置第二矩阵列为:B=[1,0,1,1,0,1,0,1,1,0,1,0,1]。
第一特征计算单元1303,用于采用所述音频文件的主音、所述统计序列和所述第一矩阵,计算所述音频文件的第一调式特征值。
所述第一特征计算单元1303在计算过程中,可设置图4所示实施例中的公式(8),在公式(8)的条件下,可计算所述音频文件的第一调式特征值为VA,该VA可采用图4所示实施例中的公式(9)计算获得。
第二特征计算单元1304,用于采用所述音频文件的主音、所述统计序列和所述第二矩阵,计算所述音频文件的第二调式特征值。
所述第二特征计算单元1304在计算过程中,可设置图4所示实施例中的公式(8),在公式(8)的条件下,可计算所述音频文件的第二调式特征值为VB,该VB可采用图4所示实施例中的公式(10)计算获得。
分类单元1305,用于根据所述音频文件的第一调式特征值与所述音频文件的第二调式特征值,确定所述音频文件的类别。
其中,音频文件的类别可以包括大调式类别和小调式类别。通常,大调式类别的音频文件色彩明亮、欢快激进;小调式类别的音频文件柔和暗淡。
请一并参见图10,为图9所示的分类单元的实施例的结构示意图;该分类单元1305可包括:判断子单元1351和类别确定子单元1352。
判断子单元1351,用于判断所述音频文件的第一调式特征值是否大于或等于所述音频文件的第二调式特征值。
类别确定子单元1352,用于如果判断结果为是,则确定所述音频文件的类别为大调式类别;或者,用于如果判断结果为否,则确定所述音频文件的类别为小调式类别。
所述判断子单元1351需要对VA与VB的值进行比较判断,即判断VA与VB是否满足VA>=VB。当所述判断子单元1351判断VA>=VB时,所述类别确定子单元1352可确定所述音频文件的类别为大调式类别。当所述判断子单元1351判断VA<VB时,所述类别确定子单元1352可确定所述音频文件的类别为小调式类别。
通过上述附图5-附图10所示实施例的描述,本发明实施例可通过对待分类的音频文件进行音高检测、查找主音以及调式检测,自动进行音频文件的类别确定,避免了人工方式所带来的资源耗费,降低了音频文件的分类成本,有效地提高了分类效率,提升了智能性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,附图5-附图10所示音频分类装置的模块或单元对应的程序可存储在终端设备或服务器的可读存储介质内,并被该终端设备或服务器中的至少一个处理器执行,以实现上述音频文件的处理方法,该方法包括图1至图4中各方法实施例所述的流程。该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。