发明内容
本发明为了解决现有基于内容音频检索方法检索速度慢的问题,而提出了一种基于GPU实现的快速音频检索方法。
本发明的一种基于GPU实现的快速音频检索方法步骤如下:
步骤一:初始:判断图像处理器GPU中是否有音频片段的特征信息,
否,则进入步骤二,进行音频流数据的预处理;
是,则进入步骤三,进行音频片段的特征信息的向量滑动匹配;
步骤二:预处理:中央处理器CPU将输入音频检索系统的音频流数据分割成音频片段,对各个音频片段进行特征提取,并对音频片段的特征信息进行分组,之后将每组音频片段的特征信息依次传输到图像处理器GPU的纹理存储器中;
步骤三:音频片段向量滑动匹配:图像处理器GPU的纹理存储器中的向量滑动匹配模块利用音频片段的特征信息中的片段向量特征进行向量滑动匹配,记录向量滑动匹配结果;并通过图像处理器GPU将记录的向量滑动匹配结果发送到中央处理器CPU;
步骤四:第一阈值判断:在中央处理器CPU中顺序遍历所述向量滑动匹配结果,判断所述向量滑动匹配结果是否大于设定的第一阈值的结果,
否,则将所述向量滑动匹配结果的音频片段的特征信息传输到图像处理器GPU中;返回步骤一,
是,则将所述向量滑动匹配结果的音频片段的特征信息传输到图像处理器GPU的全局存储器中,进入步骤五;
步骤五:音频片段梅尔倒谱系数特征矩阵匹配:图像处理器GPU的全局存储器中的梅尔倒谱系数特征矩阵匹配模块利用音频片段的特征信息中的梅尔倒谱系数特征及其差分特征进行梅尔倒谱系数矩阵匹配,记录梅尔倒谱系数矩阵匹配结果;并通过图像处理器GPU将记录的梅尔倒谱系数矩阵匹配结果发送到中央处理器CPU;
步骤六:第二阈值判断:在中央处理器CPU中顺序遍历梅尔倒谱系数矩阵匹配结果,判断所述的梅尔倒谱系数矩阵匹配结果是否大于设定的第二阈值的结果,
否,则将所述梅尔倒谱系数矩阵匹配结果的音频片段的特征信息传输到图像处理器GPU中,返回步骤一;
是,则判定为匹配成功,对匹配成功的结果进行相应的处理。
本方法不仅极大的提高了音频检索速度,而且保证了检索的精确度。
具体实施方式
具体实施方式一:本实施方式的步骤如下:
步骤一:初始:判断图像处理器GPU中是否有音频片段的特征信息,
否,则进入步骤二,进行音频流数据的预处理;
是,则进入步骤三,进行音频片段的特征信息的向量滑动匹配;
步骤二:预处理:中央处理器CPU将输入音频检索系统的音频流数据分割成音频片段,对各个音频片段进行特征提取,并对音频片段的特征信息进行分组,之后将每组音频片段的特征信息依次传输到图像处理器GPU的纹理存储器中;
步骤三:音频片段向量滑动匹配:图像处理器GPU的纹理存储器中的向量滑动匹配模块利用音频片段的特征信息中的片段向量特征进行向量滑动匹配,记录向量滑动匹配结果;并通过图像处理器GPU将记录的向量滑动匹配结果发送到中央处理器CPU;
步骤四:第一阈值判断:在中央处理器CPU中顺序遍历所述向量滑动匹配结果,判断所述向量滑动匹配结果是否大于设定的第一阈值的结果,
否,则将所述向量滑动匹配结果的音频片段的特征信息传输到图像处理器GPU中;返回步骤一,
是,则将所述向量滑动匹配结果的音频片段的特征信息传输到图像处理器GPU的全局存储器中,进入步骤五;
步骤五:音频片段梅尔倒谱系数特征矩阵匹配:图像处理器GPU的全局存储器中的梅尔倒谱系数特征矩阵匹配模块利用音频片段的特征信息中的梅尔倒谱系数特征及其差分特征进行梅尔倒谱系数矩阵匹配,记录梅尔倒谱系数矩阵匹配结果;并通过图像处理器GPU将记录的梅尔倒谱系数矩阵匹配结果发送到中央处理器CPU;
步骤六:第二阈值判断:在中央处理器CPU中顺序遍历梅尔倒谱系数矩阵匹配结果,判断所述的梅尔倒谱系数矩阵匹配结果是否大于设定的第二阈值的结果,
否,则将所述梅尔倒谱系数矩阵匹配结果的音频片段的特征信息传输到图像处理器GPU中,返回步骤一;
是,则判定为匹配成功,对匹配成功的结果进行相应的处理。
具体实施方式二:本实施方式与具体实施方式一不同点在于音频片段的特征信息包括梅尔倒谱系数及其差分特征和片段向量特征,其中片段向量特征是梅尔倒谱系数及其差分特征的降维特征;其它步骤与具体实施方式一相同。
具体实施方式三:本实施方式与具体实施方式一或二不同点在于梅尔倒谱系数特征矩阵匹配模块和向量滑动匹配模块是采用下述方法获得的:
步骤A:中央处理器CPU根据音频检索系统功能及规模建立原始音频库;对所述的原始音频库内的每个音频文件进行特征提取,从而获得梅尔倒谱系数及其差分特征和片段向量特征两种特征信息,利用所述的特征信息建立参考模板库;
其中,梅尔倒谱系数及其差分特征信息的计算,是首先用快速傅里叶变换(Fast FourierTransform,简称FFT)将时域信号转化成频域信号,然后对所述频域信号的对数能量谱用依照Mel刻度分布的三角滤波器组进行卷积,最后对各个滤波器的输出构成的向量进行离散余弦变换(Discrete Cosine Transform,简称DCT),并取前N个系数作为特征信息。经常用到的梅尔倒谱系数有12维,13维(加入F0能量),39维(13维MFCC加上其一阶差分和二阶差分)。由于每一帧梅尔倒谱系数及其差分特征是一个向量,整个匹配过程的计算量相对较大。为了减少计算量,首先采用自相似加权距离法对音频特征数据进行降维处理,生成一级索引文件。对于第i帧n维特征向量Xi,对应的一维量化值pi:
其中,cj为加权系数,d(Xi,Xi-j)表示两个特征向量间的距离,Range为计算范围。自相似累积距离反映了音频数据自身的变化情况,对于两段内容相似的音频数据,其量化值(自相似累积距离数值)序列也必然存在较高的相似性。将音频数据按固定长度划分成片段,片段内的特征向量的一维量化值构成一个多维向量,称为片段向量;
步骤B:将所述的参考模板库传输到图像处理器GPU中,根据图像处理器GPU的显存容量的大小及参考模板库的大小选择不同的存储器:图像处理器GPU的全局存储器中存放梅尔倒谱系数特征矩阵形成梅尔倒谱系数特征矩阵匹配模块,图像处理器GPU的纹理存储器中存放片段向量特征形成向量滑动匹配模块。
其它步骤与具体实施方式一或二相同。
具体实施方式四:结合图1至图6说明本实施方式,本实施方式与具体实施方式三不同点在于所述向量滑动匹配是指计算两个向量之间的距离,所述距离可以为欧式距离或余弦距离。步骤三中所述向量滑动匹配是指一个长度较小的向量与一个长度较大向量的每个等长子向量依次进行向量滑动匹配。所述线程配置是指根据所用图像处理器GPU的处理能力设定逻辑线程数,并将线程按照所处理的任务进行相应组织;其中多个线程组成一个线程块,多个线程块组成一组线程组。本实施方式中的步骤三采用了两种向量滑动匹配方法;
步骤三所述的图像处理器GPU的纹理存储器中的向量滑动匹配模块利用音频片段的特征信息中的片段向量特征进行向量滑动匹配的第一种方法为:
步骤三1:根据输入图像处理器GPU的音频片段的个数进行线程配置,将全部线程分为线程组;
步骤三2:将参考模板库中的参考模板的片段向量特征传输到对应线程组内每个线程的共享存储器中,根据线程配置为每个线程分配大小相等的结果保存空间;
步骤三3:一个组内全部线程从各自对应纹理存储器内获取音频片段向量,与同一个参考模板进行向量滑动匹配,获得匹配结果。
所述线程配置是指根据所用图像处理器GPU的处理能力设定逻辑线程数,并将线程按照所处理任务进行相应组织。该方式中每个线程负责一个音频片段在参考模板库中的匹配工作,多个线程块组成一组负责输入图像处理器GPU全部音频片段的匹配工作,不同组使用相同的音频片段匹配参考模板库中的不同参考模板。同一个音频片段由多个组的不同线程共同负责,它们分别与不同参考模板进行匹配。线程块数量的计算公式为:
其中,Nb表示线程块的数量;p表示一次传输GPU的音频流片段个数;B表示一个线程块内的线程个数;Ng表示组的个数,即所有线程块能被分为Ng个组,它通过下式计算:
其中,Mb表示每个SM处理的线程块个数;Ns表示当前使用GPU内SM的个数,Nbg表示一个组内的线程块个数,即一次处理传入GPU所有音频流片段所需的最少线程块数,Nbg通过下式计算:
由于同一个组内的线程块处理同一个模板,那么每个组平均要处理的参考模板数由下式计算:
其中,S表示参考模板库的大小。如果S mod Ng=d且d≠0,则仅使用前d个组进行最后一次匹配。
步骤三所述的图像处理器GPU的纹理存储器中的向量滑动匹配模块利用音频片段的特征信息中的片段向量特征进行向量滑动匹配的第二种方法为:
步骤三a:根据图像处理器GPU内参考模板库中的参考模板的数量进行线程配置,一个参考模板对应一个线程块;
步骤三b:将参考模板的片段向量特征传输到对应线程块的共享存储器中,根据音频片段的个数为每个线程块分配大小相等的结果保存空间;
步骤三c:一个线程块内全部线程同时从纹理存储器内获取同一个音频片段向量,共同完成与同一个参考模板的向量滑动匹配,获得匹配结果。
所述方式中每个线程块负责所有音频流片段向量与一个模板向量滑动匹配,每个线程可以负责匹配模板向量内的一小段连续距离,或者跳跃式的匹配等间隔的位置。
其它步骤与具体实施方式三同。
具体实施方式五:结合图7说明本实施方式,本实施方式与具体实施方式四不同点在于步骤五中所述梅尔倒谱系数特征矩阵匹配是指两个大小相等矩阵所对应列向量距离的均值。由于一帧数据的梅尔倒谱系数特征是一个向量,将一段音频数据经过分帧及梅尔倒谱系数特征提取之后所得到的特征信息称为梅尔倒谱系数特征矩阵。
步骤五1:图像处理器GPU的全局存储器中输入两个i行j列的矩阵,并根据步骤四记录向量滑动匹配结果的个数进行分配,得到一个存放中间结果的j行k列矩阵和一个长度为k的最终结果向量的空间;
步骤五2:连续k次调用图像处理器GPU计算矩阵各列向量距离的内核函数,将所得结果向量存放在中间结果矩阵中相应的列;
步骤五3:调用图像处理器GPU计算矩阵各列向量均值的内核函数,得到最终结果向量,最终结果向量的元素表示两个矩阵的相似度;
步骤五4:将记录的最终结果向量发送到中央处理器CPU。
所述i是指所用梅尔倒谱系数特征的维度,j是指片段向量的帧数,k是指步骤四记录向量滑动匹配结果的个数。
所述内核函数是指图像处理器GPU用于完成一定功能所执行的一段代码。
本实施方式中使用两个图像处理器GPU内核函数共同完成一组音频流片段的梅尔倒谱系数矩阵匹配。其中计算矩阵各列向量距离的内核函数用于计算两个矩阵所对应列向量的相似度,结果是一个长度为音频流片段帧数的向量。计算矩阵各列向量均值的内核函数用于对中间结果矩阵各列向量元素求均值,结果为一个向量,向量长度为向量滑动匹配成功的结果个数。其它步骤与具体实施方式四相同。
具体实施方式六:本实施方式与具体实施方式一或五不同点在于步骤二中每组音频片段的特征信息组大小取2的幂次;“组”是指根据所用图像处理器GPU处理能力一次向其传输音频片段特征信息的个数,一般取32、64、128......等2的幂次。其它步骤与具体实施方式一或五相同。
本发明内容不仅限于上述各实施方式的内容,其中一个或几个具体实施方式的组合同样也可以实现发明的目的。