具体实施方式
通过借助附图在下文中将描述本发明的优选实施例。在以下描述中,将不详细描述已成为现有技术的功能或结构,因为不必要的细节将导致本发明的介绍含混不清。
如图1和2所示,本发明的一个实施例提供了一种音频分类方法,其在对音频信号进行压缩编码前对音频信号进行分类。具体地,通过将待编码的音频信号判决为语音和音乐,使得在进行音频编码时,可根据上述分类结果来指导感觉音频编码器的参数自适应调整,使编码后的音频质量达到更优。所述的感觉音频编码器可以是任何现有技术音频编码器,例如中国国家标准GB/T 17975.3-2002《信息技术运动图像及其伴音信号的通用编码第3部分:音频》中规定的MPEG编码器、中国行业标准SJ/T11368-2006《多声道数字音频编解码技术规范》中规定的DRA编码器等,本发明并不对此加以限定。
下面结合附图,详细描述根据本发明的音频分类方法:根据本发明的音频分类方法可分为两大步骤,即:初次分类和再次分类。
在展开说明前,首先定义两个本发明中用到的术语:术语“音频类型的转换”(简称“转换”)是指当前帧的初次分类结果与上一帧的再次分类结果不一致的情况,即可能发生音频类型的转换;术语“音频类型的切换”(简称“切换”)是指经过再次分类平滑后,判断允许从语音切换到音乐,或者判断允许从音乐切换到语音的情况。
首先简要描述初次分类方法,其可针对每一帧数据给出判决结果,具体步骤如下:
(1)将待测的音频片断划分帧,取1024个采样点的整数倍为一帧,即可以为1024个、2048个、或4096个,优选为4096个,该帧长的选择要与后续音频编码器的帧长选择一致,并且还要与训练模板(对于本发明,仅包括音乐模板和语音模板)时选取的帧长相同。
(2)对每一帧提取MFCC系数,提取方式也与训练模板时相同。
(3)根据每一帧提取的MFCC系数矢量及现有的音乐模板和语音模板,分别计算每一帧MFCC系数到音乐模板的欧氏距离(disSpeech)和到语音模板的欧氏距离(disMusic)。
(4)当disSpeech≥disMusic时,将该帧判决为音乐,初次分类标志位flagClass设为0;当disSpeech<disMusic时,将该帧判决为语音,初次分类标志位flagClass设为1。
通过上述四个步骤逐帧地完成了对音频数据的初次分类,并输出了初次分类标志位flagClass作为本帧是语音还是音乐的标识。
示意性地选择一段合适长度(如48帧)的音频,经过上述步骤,得到对每一帧的初次分类判决结果,如表1所示。其中,0代表音乐,1代表语音。
表1初次分类结果表
帧索引 |
flagClass |
帧索引 |
flagClass |
帧索引 |
flagClass |
1 |
0 |
17 |
0 |
33 |
1 |
2 |
0 |
18 |
1 |
34 |
1 |
帧索引 |
flagClass |
帧索引 |
flagClass |
帧索引 |
flagClass |
3 |
0 |
19 |
0 |
35 |
0 |
4 |
0 |
20 |
0 |
36 |
0 |
5 |
0 |
21 |
1 |
37 |
1 |
6 |
1 |
22 |
1 |
38 |
1 |
7 |
0 |
23 |
1 |
39 |
0 |
8 |
1 |
24 |
1 |
40 |
1 |
9 |
0 |
25 |
1 |
41 |
1 |
10 |
0 |
26 |
0 |
42 |
1 |
11 |
0 |
27 |
1 |
43 |
1 |
12 |
1 |
28 |
1 |
44 |
1 |
13 |
1 |
29 |
1 |
45 |
1 |
14 |
0 |
30 |
1 |
46 |
1 |
15 |
0 |
31 |
1 |
47 |
1 |
16 |
0 |
32 |
1 |
48 |
1 |
下文结合表1,示例性地对根据本发明实施例的再次分类方法进行描述。
在本文实施例中,再次分类优选地选取缓存帧数为16:这表示当发生转换时,以发生转换的帧位置为起点,向后再缓冲15帧。但在实际使用时,可以根据延时、切换频度等指标来设置缓存帧数为其它数值,如8、24、32等。
根据不同的帧索引,本发明的再次分类方法包含两种情况:(A)本段音频数据中第1帧到第缓存帧数个帧(例如第16帧)的再次分类结果(本发明中简称为“判断初始值”),其统一以标志位flagClassfinalinit来表示,即这16帧共用一个再次分类结果。其中,flagClassfinalinit=0,代表音乐;flagClassfinalinit=1,代表语音。(B)其它帧的再次分类结果,以flagClassfinal来表示,每帧各有一个flagClassfinal值,并且flagClassfinal=0,代表音乐;flagClassfinal=1,代表语音。下面分别结合图1和图2对这两种再次分类的情况加以描述。
如图1所示,“判断初始值”具体包括下述步骤:
(1)在步骤10中,将所选音频片段的前16帧初次分类判决结果flagClass相加,得到nNumFlag:
其中,flagClassi表示第i帧的初次判断结果。
(2)接下来在步骤11,判断nNumFlag和阈值T0之间的大小关系。如果nNumFlag小于T0,则转到步骤11A,输出判决结果flagClassfinalinit=0;否则转到步骤11B,输出判决结果flagClassfinalinit=1。其中阈值T0的范围优选为8-16。
如图2所示,对于其它帧的再次分类方法包含如下步骤:
(1)首先在步骤20中,读入某段音频中各帧的初次分类结果flagClass和上一帧的再次分类结果flagClassfinalprev。
(2)在步骤21,判断上一帧被最终判断为语音(flagClassfinalprev=1)还是音乐(flagClassfinalprev=0)。
(3)对于上一帧被判定为音乐的情况,转到以步骤22开始的分支:
(3A)步骤22首先判断当前帧的初次分类结果是否等于上一帧的再次分类结果:
如等于,则表示未发生转换,直接在步骤22A判断当前帧不切换,结束本次的再次分类处理;
否则表示发生转换(以nLocTrans表示发生转换的帧的帧索引),此时转到步骤22B,计算第nLocTrans帧的初次分类结果及其后15帧的初次分类结果之和:
其中,flagClassi表示第i帧的初次判断结果。
(3B)然后在步骤24,比较nNumFlag和阈值T1。如果nNumFlag小于T1,则转到步骤24A,输出对当前帧的判决结果flagClassfinal=0;否则转到步骤24B,输出对当前帧的判决结果flagClassfinal=1。其中阈值T1的范围优选为9-16,更优选地为10-14,进一步优选为12。
(4)对于上一帧被判定为语音的情况,转到以步骤23开始的分支:
(4A)步骤23首先判断当前帧的初次分类结果是否等于上一帧的再次分类结果:
如等于,则表示未发生转换,直接在步骤23A判断当前帧不切换,结束本次的再次分类处理;
否则表示发生转换(以nLocTrans表示发生转换的帧所在的帧索引),此时转到步骤23B,计算第nLocTrans帧的初次分类结果及其后15帧的初次分类结果之和:
其中,flagClassi表示第i帧的初次判断结果。
(4B)然后在步骤25,比较nNumFlag和阈值T2。如果nNumFlag小于T2,则转到步骤25A,输出对当前帧的判决结果flagClassfinal=0;否则,转到步骤25B,输出对当前帧的判决结果flagClassfinal=1。其中阈值T2的范围优选为0-8,更优选地为4-8,进一步优选为8。
更详细地,结合表1的具体数据来说明本发明应用的一个实例。
首先进行“判断初始值”的计算:利用步骤10中给出的方法来计算前16帧的flagClass的总和,得出nNumFlag=4。经过步骤11的判断(T0优选取8),nNumFlag<T0=8。因此进入步骤11A,flagClassfinalinit=0,即第一个小段共16帧音频均被判断为音乐。
从第17帧开始,采用图2所示的流程进行其它帧的再次分类:
对于第17帧,flagClassfinalprev=0,进入以步骤22开始的分支。并且第17帧的flagClass=0=flagClassfinalprev,在步骤22中判断出未发生转换,进而转到步骤22A,输出最终的、对第17帧的再次分类结果:flagClassfinal=0(不切换)。
对于第18帧,flagClassfinalprev=0,进入步骤22开始的分支。并且第18帧的flagClass=1≠flagClassfinalprev,在步骤22中判断出发生了转换,进而转到步骤22B,将第18帧~33帧的flagClass值相加得到nNumFlag=13。进一步地,在步骤24中判断出nNumFlag≥T1(T1优选取值为12),此时进入步骤24B,输出对当前帧(第18帧)的判决结果flagClassfinal=1(发生切换)。
对第19帧,flagClassfinalprev=1,进入步骤23开始的分支。并且第19帧的flagClass=0≠flagClassfinalprev,在步骤23中判断出发生了转换,进而转到步骤23B,将第19帧~34帧的flagClass值相加得到nNumFlag=13。进一步地,在步骤25中判断出nNumFlag>T2(T2优选取值为8),此时进入步骤25B,输出对当前帧(第19帧)的判决结果flagClassfinal=1(不进行切换)。
以此类推,可获得以下各帧的再次分类结果flagClassfinal。综上可知,根据本发明的再次分类算法通常需要缓冲16帧。
同时,本发明还提供了一种音频分类装置31。音频分类装置31被设置在音频编码器32的前端,用于指导音频编码器32的工作方式,如图3所示。音频分类装置31包括初次分类器和再次分类器(均未示出)。初次分类器中的数据是以帧为单位,再次分类器则包括对初次分类结果进行平滑处理的平滑模块。进一步地,再次分类器在判决过程中使用预先设定的阈值。具体地,上述阈值包括“判断初始值”中使用的阈值T0(或者称之为再次分类中初始值的阈值)、从语音切换为音乐的阈值T2、从音乐切换为语音的阈值T2。T0、T1和T2的优选范围或取值同上。
更进一步地,平滑模块包括缓存模块和判断模块,缓存模块可以缓冲一定数量的帧。实际使用时,可以根据延时、切换频度等指标来设置缓存帧的数量。
初次分类器包括:
(1)分帧装置,其用于对待测的音频片断划分帧:取1024个采样点的整数倍为一帧,该帧长的选择要与后续音频编码器的帧长选择一致,并且还要与训练模板时选取的帧长相同;
(2)MFCC系数提取装置,用于针对每一帧提取MFCC系数;
(3)距离计算装置,用于根据每一帧提取的MFCC系数矢量及现有的音乐模板和语音模板,分别计算每一帧MFCC系数到音乐模板的欧氏距离(disSpeech)和到语音模板的欧氏距离(disMusic)。
(4)初次分类装置,用于根据disSpeech和disMusic的大小关系来判定本帧的数据类型:当disSpeech≥disMusic时,当前帧被判决为音乐,初次分类标志位flagClass设为0;否则,当前帧被判决为语音,初次分类标志位flagClass设为1。
再次分类器包括两种工作模式,即“判断初始值”的工作模式和计算其它帧再次分类结果的工作模式。下面对这两种模式进行简要说明。
再次分类器的平滑模块包括缓存模块和判断模块,其在“判断初始值”的工作模式下如下分工:
(1)缓存模块,用于将所选音频片段的前16帧初次分类判决结果flagClass相加,得到nNumFlag;
(2)判断模块,用于判断nNumFlag和阈值T0之间的大小关系。如果nNumFlag小于T0,则输出判决结果flagClassfinal=0;否则输出判决结果flagClassfinal=1。
上述缓存模块和判断模块在“计算其它帧再次分类结果”的工作模式下如下分工:
(1)缓存模块,用于:
(1A)读入某段音频中各帧的初次分类结果flagClass和上一帧的再次分类结果flagClassfinalprev;
(1B)在当前帧出现转换时(根据判断模块在2A中的判断结果),对当前帧及其后一定数量帧的初次判断结果求和。
(2)判断模块,用于:
(2A)根据1A中读入的数据,判断上一帧再次分类结果及是否发生转换;
(2B)当发生转换时,进一步判断是否发生切换。
其中,根据(2A)的判断结果,在(2B)中可能读入不同的预定阈值。
虽然结合目前被认为是最实际和最优的实施例描述了本发明,但本领域技术人员应当理解本发明不限于所公开的实施例,相反,本发明旨在覆盖所附权利要求的精神和范畴之内包括的各种各样的修改和等价结构。本领域技术人员能够理解的是:可如示于特定实施例地将多种变形和/或改进使用到本发明,而这并不脱离以宽广方式描述的本发明精神或范围。因此,本文的实施例被认为在各个方面是描述性的而非限定性的。