【发明内容】
本发明提供了一种音频指纹的提取方法及系统,能够在降低音频数据的传输量的同时提高从音频数据中提取的音频指纹的准确率。
本发明的具体技术方案如下:
根据本发明一优选实施例,一种音频指纹的提取方法,包括:
音频客户端对原始的音频数据进行降采样处理,得到低频带的音频数据,并对低频带的音频数据进行量化编码处理,得到编码值,将所述编码值发送到服务器;
服务器对收到的编码值进行逆量化解码处理,得到重建的音频数据,从重建的音频数据中提取音频指纹。
上述方法中,所述对原始的音频数据进行降采样处理具体为:
将原始的音频数据通过截止频率为1/M的低通滤波器,然后每M个样点抽取一个样点,得到样点的采样值,所述采样值为低频带的音频数据;其中,M为正整数。
上述方法中,所述对低频带的音频数据进行量化编码处理具体为:
计算当前输入的采样值与预设的预测采样值之间的差值;
利用存储的上一个采样值的量化步长索引查询预设的步长调整表,得到量化步长,如果所述差值为负数,则4位的编码值中的第3位的值设置为1,反之,设置为0;如果所述差值大于量化步长,则4位的编码值中的第2位的值设置为1,反之,设置为0;如果差值与量化步长的差值大于二分之一的量化步长,则4位的编码值中的第1位的值设置为1,反之,设置为0;如果差值减去量化步长再减去二分之一的量化步长后大于四分之一的量化步长,则4 位的编码值中的第0位的值设置为1,反之,设置为0。
上述方法中,该方法还包括:
利用得到的编码值查询预设的索引调整表,得到量化步长索引,将所述量化步长索引与存储的量化步长索引相加,得到新的量化步长索引,存储新的量化步长索引,所述新的量化步长索引在对下一个采样值进行量化编码时用于查询步长调整表。
上述方法中,所述对收到的编码值进行逆量化解码处理具体为:
利用预设的量化步长索引查询步长调整表,得到量化步长;
依据所述量化步长对当前的编码值进行逆量化处理,得到差值;
将预设的预测解码值与差值相加得到解码值,所述解码值为重建的音频数据。
上述方法中,该方法还包括:
存储所述解码值,所述解码值作为新的预测解码值;
用当前编码值调整量化步长索引,存储新的量化步长索引,所述新的量化步长索引用于进行下一个编码值的逆量化解码处理。
一种音频指纹的提取系统,包括:音频客户端、服务器;其中,
音频客户端,用于对原始的音频数据进行降采样处理,得到低频带的音频数据,并对低频带的音频数据进行量化编码处理,得到编码值,将所述编码值发送到服务器;
服务器,用于对收到的编码值进行逆量化解码处理,得到重建的音频数据,从重建的音频数据中提取音频指纹。
上述系统中,所述音频客户端进一步包括:
重采样单元,用于将原始的音频数据通过截止频率为1/M的低通滤波器,然后每M个样点抽取一个样点,得到样点的采样值,所述采样值为低频带的音频数据;其中,M为正整数。
上述系统中,所述音频客户端还包括:
ADPCM编码单元,用于计算当前输入的采样值与预设的预测采样值之间的差值;利用存储的上一个采样值的量化步长索引查询预设的步长调整表,得到量化步长,如果所述差值为负数,则4位的编码值中的第3位的值设置为1,反之,设置为0;如果所述差值大于量化步长,则4位的编码值中的第2位的值设置为 1,反之,设置为0;如果差值与量化步长的差值大于二分之一的量化步长,则4 位的编码值中的第1位的值设置为1,反之,设置为0;如果差值减去量化步长再减去二分之一的量化步长后大于四分之一的量化步长,则4位的编码值中的第 0位的值设置为1,反之,设置为0。
上述系统中,所述ADPCM编码单元,还用于利用得到的编码值查询预设的索引调整表,得到量化步长索引,将所述量化步长索引与存储的量化步长索引相加,得到新的量化步长索引,存储新的量化步长索引,所述新的量化步长索引在对下一个采样值进行量化编码时用于查询步长调整表。
上述系统中,所述服务器进一步包括:
ADPCM解码单元,用于利用预设的量化步长索引查询步长调整表,得到量化步长;依据所述量化步长对当前的编码值进行逆量化处理,得到差值;将预设的预测解码值与差值相加得到解码值,所述解码值为重建的音频数据。
上述系统中,所述ADPCM解码单元,还用于存储所述解码值,所述解码值作为新的预测解码值;用当前编码值调整量化步长索引,存储新的量化步长索引,所述新的量化步长索引用于进行下一个编码值的逆量化解码处理。
由以上技术方案可以看出,本发明提供的具有以下有益效果:
对原始的音频数据进行降采样处理,实现在保留了最重要的音频数据的同时去除了多余的其他频带的音频数据,从而减少音频客户端的处理数据量和传输数据量,提高音频客户端的工作效率,使得更多的移动终端能够支持这种音频客户端,提高音频客户端的应用范围;而且,利用对音频数据进行量化编码后发送到服务器,在对音频数据进行压缩的同时可以最大程度的保存原始的音频数据的音频信息,从而有利于音频数据中音频指纹的提取,提高提取的音频指纹的准确率,进而提高服务器的识别准确率。
【具体实施方式】
本发明的基本思想是:音频客户端对原始的音频数据进行降采样处理,得到低频带的音频数据,并对低频带的音频数据进行量化编码处理,得到编码值,将所述编码值发送到服务器;服务器对收到的编码值进行逆量化解码处理,得到重建的音频数据,从重建的音频数据中提取音频指纹。
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明提供一种利用音频指纹的提取系统,图1是本发明实现音频指纹的提取系统的优选实施例的结构示意图,如图1所示,该系统包括:音频客户端10、服务器11。
音频客户端10进一步包括:重采样单元101、ADPCM编码单元102、发送单元103。
服务器11进一步包括:接收单元111、ADPCM解码单元112、指纹提取单元113、音频识别单元114。
基于上述系统,本发明还提供一种音频指纹的提取方法,图2是本发明实现音频指纹的提取方法的优选实施例的流程示意图,如图2所示,该优选实施例包括以下步骤:
步骤S201,音频客户端对原始的音频数据进行降采样处理,得到低频带的音频数据。
具体的,在音频客户端,重采样单元对输入的原始的音频数据进行降采样处理,所述原始的音频数据指的是采样率为44.1KHz的音频数据;该降采样处理为:基于奈奎斯特采样定律,利用s i nc函数对原始的音频数据进行降采样处理,例如,采样率降低M倍,用x(k)表示输入的原始的音频数据,用y(m) 表示降采样后得到的音频数据,则降采样处理后得到的音频数据为。
其中h(m)=sinc(m/M),表示先将原始的音频数据通过截止频率为1/M的低通滤波器,然后每M个样点抽取一个样点,得到该样点的采样值,从而实现将采样率降低M倍,得到的采样值就是低频带的音频数据,重采样单元将得到的低频带的音频数据发送给ADPCM编码单元;其中,M为正整数,可以依据需要的采样率设置M的具体数值。实际应用中,一般将原始的音频数据的44.1KHz的采样率降为8KHz或5KHz的采样率。
音频信息在音频数据的全频带都会存在,但是从人耳的感知角度来说,音频数据中最重要的音频信息多位于低频带,即低频带的音频数据足够用来表征一个唯一的声学信号,例如一首歌曲;因此本优选实施例中对原始的音频数据进行降采样处理,得到其中的低频带的音频数据,在保留了最重要的音频数据的同时去除了多余的其他频带的音频数据,从而减少音频客户端的处理数据量和传输数据量,提高音频客户端的工作效率,使得更多的移动终端能够支持这种音频客户端,提高音频客户端的应用范围。
步骤S202,音频客户端对低频带的音频数据进行量化编码处理,得到编码值。
具体的,ADPCM(Adapt ive Different ia l Pu l se Code Modu l at ion,自适应差分脉冲编码调制)编码单元从重采样单元接收低频带的音频数据,这里,所接收的低频带的音频数据为一系列的采样值,下面以采样值是16b it 的二进制补码的音频数据为例,说明ADPCM编码单元对低频带的音频数据进行量化编码处理得到编码值的方法:
首先,依据预设的预测采样值Sp,计算当前输入的采样值Si与预测采样值Sp之间的差值d,其中,预测采样值Sp是通过对当前输入的采样值Si的上一个采样值进行量化编码后生成的,可以将预先生成的预测采样值Sp存储在预设的结构变量中。
然后,依据量化步长q对得到的差值d进行量化编码,得到4位的编码值 I,4位的编码值I中包括一个符号位和三个幅度位,具体为:预先设置索引调整表和步长调整表,所述索引调整表的输入为编码值I,输出为量化步长索引,所述步长调整表的输入为量化步长索引,输出为输入的量化步长索引对应的量化步长q;量化编码时,先利用结构变量中存储的上一个采样值的量化步长索引查询步长调整表,得到量化步长q,如果当前输入的采样值Si和预测采样值Sp之间的差值d为负数,则4位的编码值I中的第3位的值设置为1,反之,设置为0;如果当前输入的采样值Si和预测采样值Sp之间的差值d大于量化步长q,则4位的编码值I中的第2位的值设置为1,反之,设置为0;如果差值d与量化步长q的差值大于q/2,则4位的编码值I中的第1位的值设置为1,反之,设置为0;如果(d-q-q/2)大于q/4,则4位的编码值I中的第0 位的值设置为1,反之,设置为0,这样就得到了4位的编码值I。
最后,利用得到的编码值I查询索引调整表,得到量化步长索引,将该量化步长索引与结构变量中存储的量化步长索引相加,得到新的量化步长索引,将新的量化步长索引存储到结构变量中,替换原先存储的量化步长索引;在对下一个采样值进行量化编码时,利用新的量化步长索引来查询步长调整表。
ADPCM编码单元将对当前输入的采样值进行量化编码后得到的编码值I提供给发送单元,然后ADPCM编码单元还需要重复上述过程,继续对下一个采样值进行量化编码处理。
本优选实施例中,利用基于波形编码的ADPCM编码单元对音频数据进行量化编码,相对于基于参数编码的wma编码技术,在对音频数据进行压缩的同时可以最大程度的保存原始的音频数据的音频信息,从而有利于音频数据中音频指纹的提取;而且,ADPCM编码单元进行量化编码时,计算复杂度低,计算量较少,适合各种移动终端;而且,基于参数编码的wma编码技术中,利用wma编码器对原始的音频数据(如44.1KHz采样率的mp3音频数据)进行降采样处理,得到采样率为8KHz的音频数据,然后wma编码器再对采样率为8KHz的音频数据进行编码处理,将其编码为20k字节大小的wma格式的文件,本优选实施例中,ADPCM编码单元对降采样处理后得到的音频数据进行编码处理后,一般会得到10k字节的音频数据,因此,与现有技术相比,本优选实施例中,音频客户端传输给服务器的流量减少了一半。
步骤S203,音频客户端将编码值发送给服务器。
具体的,发送单元从ADPCM编码单元接收到编码值I后,通过网络将该编码值I发送到服务器的接收单元,接收单元从音频客户端的发送单元接收到音频数据的编码值,将所接收的编码值发送给ADPCM解码单元进行解码处理。
步骤S204,服务器对收到的编码值进行逆量化解码处理,得到重建的音频数据。
具体的,ADPCM解码单元对从接收单元得到的编码值I进行逆量化解码处理,该过程是步骤202中量化编码处理的逆过程,逆量化解码处理的方法为:
首先,利用预设的量化步长索引查询步长调整表,得到量化步长q;其中,由于编码值I的解码处理是ADPCM编码单元对音频数据进行量化处理的逆过程,因此,逆量化解码时利用的量化步长索引、索引调整表和步长调整表与音频客户端中ADPCM编码单元中的量化步长索引、索引调整表和步长调整表是一致的。
然后,依据量化步长q对当前编码值I进行逆量化处理,得到差值dq,其中,ADPCM解码单元收到的编码值为I=0000、I=0001、I=0010、I=0011、I=0100、 I=0101、I=0110、I=0111、I=1000、I=1001、I=1010、I=1011、I=1100、I=1101、 I=1110、I=1111,例如,对于编码值I=0000,dq=8/q,对于编码值I=0111, dq=q+q/2+q/4+8/q,对于编码值I=0110,则dq=q+q/2+8/q;如此,进行求编码值I的逆过程。
最后,将预设的预测解码值Sp与差值dq相加得到解码值Sr,该解码值Sr就是ADPCM解码单元依据编码值重建的音频数据;此外,用解码值Sr作为新的预测解码值Sp保存到预设的结构变量中,用当前编码值I调整量化步长索引,将新的量化步长索引保存到预设的结构变量中,以便进行下一个编码值的逆量化解码处理。
步骤S205,服务器从重建的音频数据中提取音频指纹。
具体的,指纹提取单元从ADPCM解码单元接收重建的音频数据,从该音频数据的第1帧开始,对于音频数据中的每一帧,利用如下公式得到音频指纹:
该公式中,F(n,m)表示音频数据中的第n帧的第m个频带对应的数值, E(n,m)-E(n,m+1)表示第n帧中第m个频带与第m+1个频带的能量变化,E(n-1,m)-E(n-1,m+1)表示第n-1帧中第m个频带与第m+1个频带的能量变化,利用该公式,可以得到当前帧的相邻频带的能量变化和当前帧的前一帧的相同的相邻频带的能量变化,如果当前帧的相邻频带的能量变化大于当前帧的前一帧的相同的相邻频带的能量变化,即 E(n,m)-E(n,m+1)-(E(n-1,m)-E(n-1,m+1))>0,则当前帧中相邻频带的前一个频带对应的数值为1,如果当前帧的相邻频带的能量变化小于等于当前帧的前一帧的相同的相邻频带的能量变化,即 E(n,m)-E(n,m+1)-(E(n-1,m)-E(n-1,m+1))≤0,则当前帧中相邻频带的前一个频带对应的数值为0,以此类推,为当前帧中除最后一个频带以外的每个频带得到一个对应的数值,将每个频带对应的数值组合得到该当前帧的音频指纹;如图3所示,本优选实施例中有33个频带,因此存在32组相邻频带,对应得到32个数值,依据得到32数值组成音频指纹,该音频指纹是由1和0组成的32bit的数据;利用该方法对音频数据中的每一帧都进行处理,对应每一帧都得到一个音频指纹;本优选实施例中重建的音频指纹有256帧,将得到255个32b i t的音频指纹;指纹提取单元将得到的音频指纹发送给音频识别单元进行匹配。
步骤S206,服务器依据提取的音频指纹在音频数据库进行匹配,得到匹配的音频信息。
具体的,音频识别单元从指纹提取单元接收到提取出的音频指纹,将255 个32b it的音频指纹与音频数据库中音频信息的255个32b i t的音频指纹进行匹配,进行匹配时,统计提取出的音频指纹与音频数据库中音频信息的音频指纹中,相应的32b i t的音频指纹中数值的不匹配个数,然后每个32b i t 的音频指纹中的不匹配个数相加,得到音频指纹与该音频信息的音频指纹的不匹配总数nomatchsum。
然后利用如下公式计算该音频信息的音频指纹的匹配分数:
score=1-nomatchsum/(255×32)
该公式中,score表示音频信息的音频指纹与提取的音频指纹的匹配分数,nomatchsum表示该音频信息的音频指纹与提取的音频指纹的不匹配总数。
用计算出的匹配分数与预设的匹配门限(如0.275)进行比较,如果计算出的匹配分数大于匹配门限,表示该音频信息的音频指纹与提取的音频指纹相匹配,如果计算出的匹配分数小于等于匹配门限,表示该音频信息的音频指纹与提取的音频指纹不匹配。
一般的,音频客户端将发送给服务器3×2×8000/4个或3×2×5000/4 个编码值,其中,3指的是3秒,2指的是双声道,8000或5000分别指的是采样率8KHz和采样率5KHz,4指的是压缩比,这些编码值将包括两段音频数据,从这两段中提取两个音频指纹,利用上述方法,将音频数据库中的音频指纹与提取的两段音频指纹进行匹配,当匹配结果是两个音频指纹都匹配时,表示音频数据库中的该音频指纹对应的音频信息是提取的音频指纹的音频信息;当匹配结果是两个音频指纹都不匹配或只有一个匹配时,表示该音频信息不是提取的音频指纹对应的音频信息,继续在音频数据库中进行匹配;如果存在多个音频信息都是提取的音频指纹的音频信息,则取其中匹配分数最高的音频信息作为最终的识别结果。
图1所示的音频指纹的提取系统中:
音频客户端10,用于对原始的音频数据进行降采样处理,得到低频带的音频数据,并对低频带的音频数据进行量化编码处理,得到编码值,将所述编码值发送到服务器11;
服务器11,用于对收到的编码值进行逆量化解码处理,得到重建的音频数据,从重建的音频数据中提取音频指纹。
其中,重采样单元101,用于将原始的音频数据通过截止频率为1/M的低通滤波器,然后每M个样点抽取一个样点,得到样点的采样值,所述采样值为低频带的音频数据;其中,M为正整数。
ADPCM编码单元102,用于计算当前输入的采样值与预设的预测采样值之间的差值;利用存储的上一个采样值的量化步长索引查询预设的步长调整表,得到量化步长,如果所述差值为负数,则4位的编码值中的第3位的值设置为1,反之,设置为0;如果所述差值大于量化步长,则4位的编码值中的第2位的值设置为1,反之,设置为0;如果差值与量化步长的差值大于二分之一的量化步长,则4位的编码值中的第1位的值设置为1,反之,设置为0;如果差值减去量化步长再减去二分之一的量化步长后大于四分之一的量化步长,则4位的编码值中的第0位的值设置为1,反之,设置为0。
其中,所述ADPCM编码单元102,还用于利用得到的编码值查询预设的索引调整表,得到量化步长索引,将所述量化步长索引与存储的量化步长索引相加,得到新的量化步长索引,存储新的量化步长索引,所述新的量化步长索引在对下一个采样值进行量化编码时用于查询步长调整表。
其中,ADPCM解码单元112,用于利用预设的量化步长索引查询步长调整表,得到量化步长;依据所述量化步长对当前的编码值进行逆量化处理,得到差值;将预设的预测解码值与差值相加得到解码值,所述解码值为重建的音频数据。
所述ADPCM解码单元112,还用于存储所述解码值,所述解码值作为新的预测解码值;用当前编码值调整量化步长索引,存储新的量化步长索引,所述新的量化步长索引用于进行下一个编码值的逆量化解码处理。
本发明的上述技术方案,对原始的音频数据进行降采样处理,实现在保留了最重要的音频数据的同时去除了多余的其他频带的音频数据,从而减少音频客户端的处理数据量和传输数据量,提高音频客户端的工作效率,使得更多的移动终端能够支持这种音频客户端,提高音频客户端的应用范围;而且,利用ADPCM编码技术对音频数据进行编码后发送到服务器,在对音频数据进行压缩的同时可以最大程度的保存原始的音频数据的音频信息,从而有利于音频数据中音频指纹的提取,提高提取的音频指纹的准确率,进而提高服务器的识别准确率;ADPCM编码方式的计算复杂度低,计算量较少,适合各种移动终端。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。