HI,欢迎来到起点商标网!
24小时服务QQ:2880605093

音频信号的处理方法及系统、音频处理芯片、蓝牙设备与流程

2021-01-28 15:01:52|301|起点商标网
音频信号的处理方法及系统、音频处理芯片、蓝牙设备与流程

本发明涉及通讯技术领域,具体涉及一种音频信号的处理方法及处理系统、音频处理芯片、蓝牙设备、计算机可读介质。



背景技术:

随着通讯技术的发展,常常会在不同设备之间传输音频信号帧,或者直接采集音频信号帧,以作进一步处理。但是,实际传输中,受环境、带宽或者接收设备的能力等原因在传输中常常会带入干扰,造成音频信号发生丢包,对听感带来极大不适。因此,现有技术中,在收到音频信号帧后,首先会判断音频信号帧是否为丢包信号,如果是,则直接要求重新发送该音频信号;如果否,则直接将该音频信号输出。

显然,上述这种对音频信号的处理方法,对系统资源的占用太大,尤其是对丢包信号的处理方式,每次遇到丢包信号就要重新发送,在重发过程中必然会占用带宽,增加传输带宽的负担,且影响时效性。



技术实现要素:

基于上述现状,本发明的主要目的在于提供一种音频信号的处理方法及处理系统、音频处理芯片、电子设备、计算机可读介质,以解决现有音频处理方法尤其是在音频信号为丢包信号时对系统资源占用大的问题。

为实现上述目的,本发明采用的技术方案如下:

本发明的第一方面提供了一种音频信号的处理方法,包括步骤:

s1:获取音频信号帧,并将所述音频信号帧转换成第一信号,所述第一信号为频域信号,对所述第一信号求能量谱,得到音频能量谱;

s2:判断所述音频信号帧是否包含丢包数据;若否,则执行s3;若是,则执行s8;

s3:对所述音频能量谱作傅里叶变换,得到第二信号;

s4:计算所述第二信号中低频分量在整个频谱内的占比b;并根据所述占比b与预估可能性p1估算所述音频信号帧中包含有人声的实际可能性p2;其中,所述预估可能性p1的初始值为0;

s5:将所述实际可能性p2作为预估可能性p1,并判断所述实际可能性是否大于人声可能性阈值;若是,则所述音频信号帧包含有人声,执行s6;若否,则所述音频信号帧不包含有人声,执行s7;

s6:根据所述实际可能性和所述音频能量谱更新背景声估计频域能量谱,并将所述第一信号作为预输出信号,然后执行s9;

s7:直接使用所述音频能量谱更新背景声估计频域能量谱,并将所述第一信号作为预输出信号,然后执行s9;

s8:判断上一音频信号帧是否包含有人声,若是,则对所述第一信号进行修正,得到预输出信号,然后执行s9;若否,使用上一个未包含丢包数据的音频信号帧的背景声估计频域能量谱生成预输出信号,然后执行s9;

s9:对所述预输出信号作傅里叶反变换,得到实际输出信号;

其中,背景声估计频域能量谱的初始值为0。

优选地,所述步骤s4包括:

s41:计算所述第二信号中低频分量在整个频谱内的所述占比b;

s42:计算所述音频信号帧包含有人声的预估最小可能性m=0.9×min(m,(1-b))+0.1×(1-b);其中,所述预估最小可能性m的初始值为0;

s43:计算实际可能性p2=p1×0.7+(1-b-m)×0.5/(1-m)。

优选地,所述步骤s5中的人声可能性阈值为0.4~0.7。

优选地,所述步骤s6包括:

s60:求所述背景声估计频域能量谱q与所述音频能量谱中的较小者,并用所述较小者更新所述背景声估计频域能量谱q;

s61:再次更新背景声估计频域能量谱q=(q×(1-p2)+p2×音频能量谱)×0.6+音频能量谱×0.4;

s62:将所述第一信号作为预输出信号,然后执行s9。

优选地,所述步骤s7包括:

s70:求所述背景声估计频域能量谱q与所述音频能量谱中的较小者,并用所述较小者更新所述背景声估计频域能量谱q;

s71:再次更新背景声估计频域能量谱q=(q×0.09+0.01×音频能量谱);

s72:将所述第一信号作为预输出信号,然后执行s9。

优选地,所述步骤s1还包括:

获取所述音频信号帧中各音频数据包对应的丢包判断信号,其中,所述丢包判断信号为各所述音频数据包的差错标志形成的序列,若所述音频数据包中的数据为丢包数据,则该数据对应的差错标志为0,否则为1;

所述步骤s8包括:

s81:判断上一音频信号帧是否包含有人声,若是,则执行s82;若否,则执行s83;其中,默认音频信号帧的初始状态为包含有人声;

s82:对丢包判断信号进行傅里叶变换,并求能量谱,得到丢包能量谱,选取所述丢包能量谱中主瓣和与其相邻的部分旁瓣生成调制信号;选取所述音频能量谱中能量最大的l个峰值,以每一个能量最大的峰值作为主峰,并选取所述音频能量谱中该主峰左右两侧对称的多个次峰生成调制能量谱,然后通过所述调制信号和各所述调制能量谱生成对应各所述调制能量谱的增益系数,使用多个所述增益系数对所述第一信号进行多次调制修正处理,得到所述修正信号;其中,所述调制能量谱中各峰值的位置使用其所在的所述音频能量谱中的位置,且各所述调制能量谱中次峰的个数为其主峰所在音频能量谱中左侧次峰个数和右侧次峰个数较少的一者,然后执行s9;

s83:使用上一个未包含丢包数据的音频信号帧的背景声估计频域能量谱生成所述预输出信号,然后执行s9。

优选地,所述步骤s82包括:

s821:对丢包判断信号进行傅里叶变换,并求能量谱,得到丢包能量谱;然后选出所述丢包能量谱中主瓣和与其相邻的部分旁瓣,并对其进行归一化处理,且所述主瓣的幅值使用其倒数代替,生成所述调制信号delta;

s822:记所述音频能量谱为amp,选出其幅值最大的五个峰值记为amp[ki]i;其中,以每一个amp[ki]i作为主峰,并选取所述音频能量谱中该主峰左右两侧的多个次峰生成调制能量谱,amp[ki]i表示所述音频能量谱中的第i个峰值,其位于所述音频能量谱中的第ki个位置;ki为0、1、2、…、n-1;i为1、2、3、…、5;n为所述调制信号detla的长度;

s823:设置i=1;

s824:设置j=0,使用delta[j]×amp[ki+j]i更新第一信号中的第ki个位置处的值;其中,delta[j]指调制信号delta第j个位置的值;amp[ki+j]i指音频能量谱amp中第[ki+j]个位置的值;

s825:计算j=j+1;

判断rate1=1-delta[j]×amp[ki]i/amp[ki+j]i是否小于0;若是,则将第一信号中的第[ki+j]个位置的值设置为0;若否,则将第一信号中的第[ki+j]个位置的值与rate1相乘,作为第一信号中第[ki+j]个位置的值;

判断rate2=1-delta[j]×amp[ki]i/amp[ki-j]i是否小于0;若是,则将第一信号中的第[ki-j]个位置的值设置为0;若否,则将第一信号中的第[ki-j]个位置的值与rate2相乘,作为第一信号中第[ki-j]个位置的值;

s826:判断j是否小于n,如果小于n,则返回s825;若否,则执行s827;

s827:判断i是否小于6,若是,则i=i+1,然后返回s824;若否,则执行s828;

s828:将修正后的第一信号作为所述预输出信号,然后执行s9;

其中,每一个i值对应的delta[0]、各rate1、各rate2形成所述amp[ki]i对应的增益系数。

优选地,所述步骤s828中,在将修正后的第一信号作为所述预输出信号之后,还包括:

求所述预输出信号的频域能量谱与所述相关性频域能量谱的相关度;判断所述相关度是否小于相关性阈值,若是,则设置帧叠窗长为第一窗长;否则,设置帧叠窗长为第二窗长,其中,所述第二窗长大于所述第一窗长;

所述步骤s9具体包括:

s91:对所述预输出信号作傅里叶反变换,得到中间输出信号;

s92:按照所述帧叠窗长使用帧叠信号对所述中间输出信号进行加窗帧叠,得到所述实际输出音频信号帧,同时使用所述中间输出信号更新所述帧叠信号;

s93:使用所述预输出信号的频域能量谱更新相关性频域能量谱;

其中,所述相关性频域能量谱的初始值为0;所述帧叠信号的初始值为0。

优选地,

所述步骤s3还包括:

同时设置连续非丢包信号个数加1;

所述步骤s8还包括:设置所述连续非丢包信号个数为0;

其中;所述连续非丢包个数的初始值为0;

所述步骤s6和所述s7均包括:

s0:判断所述连续非丢包信号个数是否大于2,若是,帧叠窗长设为第一窗长;否则,帧叠窗长设为第二窗长,其中,所述第一窗长小于所述第二窗长;

所述步骤s9具体包括:

s91:对所述预输出信号作傅里叶反变换,得到中间输出信号;

s92:按照所述帧叠窗长使用帧叠信号对所述中间输出信号进行加窗帧叠,得到所述实际输出信号,同时使用所述中间输出信号更新所述帧叠信号;

其中,所述帧叠信号的初始值为0。

本发明的第二方面提供了一种音频信号的处理系统,包括:

获取模块,用于获取音频信号帧,并将所述音频信号帧转换成第一信号,所述第一信号为频域信号,对所述第一信号求能量谱,得到音频能量谱;还用于判断所述音频信号帧是否包含丢包数据;若否,则将所述第一信号以及所述音频能量谱发送至所述非丢包处理模块;若是,则将所述第一信号以及所述音频能量谱发送至所述丢包处理模块;

非丢包处理模块,用于对所述音频能量谱作傅里叶变换,得到第二信号;然后计算所述第二信号中低频分量在整个频谱内的占比b;并根据所述占比b与预估可能性p1估算所述音频信号帧中包含有人声的实际可能性p2;其中,所述预估可能性p1的初始值为0;以将所述实际可能性p2作为预估可能性p1,并判断所述实际可能性是否大于人声可能性阈值;若是,则所述音频信号帧包含有人声,根据所述实际可能性和所述音频能量谱更新背景声估计频域能量谱,并将所述第一信号作为预输出信号;若否,则所述音频信号帧不包含有人声,直接使用所述音频能量谱更新背景声估计频域能量谱,并将所述第一信号作为预输出信号;最后将所述预输出信号发送至所述输出模块;

丢包处理模块,用于判断上一音频信号帧是否包含有人声,若是,则对所述第一信号进行修正,得到所述预输出信号;若否,使用所述背景声估计频域能量谱生成所述预输出信号;然后将所述预输出信号发送至所述输出模块;

输出模块,用于对所述预输出信号作傅里叶反变换,得到实际输出信号;

其中,所述获取模块与所述非丢包处理模块、所述丢包处理模块均连接,所述丢包处理模块和所述非丢包处理模块分别与所述输出模块连接。

本发明的第三方面提供了一种音频处理芯片,所述音频处理芯片能够执行上述任一项所述的音频信号的处理方法。

本发明的第四方面提供了一种蓝牙设备,具有上述所述的音频处理芯片;其中,所述音频处理芯片处理的音频信号帧为通过蓝牙获得的语音信号;

所述蓝牙设备为手机、蓝牙麦克、蓝牙音响或蓝牙耳机。

本发明的第五方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程被执行时实现如上任一项所述的包含丢包数据的音频信号的处理方法。

本发明的音频信号的处理方法中,在判断音频信号为非丢包信号后,先判断该音频信号是否包含有人声,然后根据不同情况对背景声频域能量谱以不同的方式进行更新,以备在后续发生丢包信号时使用给背景声频域能量谱对丢包信号进行修正;且在为丢包信号时,也需要判断上一信号帧是否包含有人声,然后根据不同的情况对丢包信号进行修正。这种方法,在非丢包情况下对背景声频域能量谱进行更新,在丢包情况下在上一音频信号帧包含人声时,才需要对音频信号进行重发或者其他方式进行修正;而在上一音频信号帧不包含有人声时则直接使用之前更新的背景声频域能量谱;显然,这种分情况对丢包信号的处理方式能够减少对系统资源的占用,尤其是减小对带宽的负担;且对于背景声频域能量谱的更新也是对不同的情况采用不同的方式进行的,如此,能够提高背景声频域能量谱的准确性,进而在丢包发生使用其进行更新时能够使丢包的音频信号更接近于实际音频信号,提高使用者的听感。

本发明的其他有益效果,将在具体实施方式中通过具体技术特征和技术方案的介绍来阐述,本领域技术人员通过这些技术特征和技术方案的介绍,应能理解所述技术特征和技术方案带来的有益技术效果。

附图说明

以下将参照附图对本发明的优选实施方式进行描述。图中:

图1为本发明提供的音频信号的处理方法的另一种优选实施例的流程图;

图2为本发明提供的音频信号的处理方法中,丢包信号的丢包判断信号的一种优选实施例的波形图;

图3为图2所示实施例中丢包信号对应的丢包能量谱和与该丢包信号对应的正确信号的丢包能量谱的波形对比图;

图4为本发明提供的音频信号处理方法中,丢包信号本身和其对应的实际输出信号的波形对比图;

图5为本发明提供的音频信号帧的处理系统的一种优选实施例的系统图。

具体实施方式

以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分,为了避免混淆本发明的实质,公知的方法、过程、流程、元件并没有详细叙述。

此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。

除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。

在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

需要说明的是,本发明的附图中虽然示出了一些实施例的逻辑顺序,但是本发明并不限于附图所给的逻辑顺序,在某些情况下,可以以不同于附图的逻辑顺序执行本发明对音频信号帧的处理方法。

本发明提供了一种音频信号的处理方法,能够识别音频信号帧中是否包含有人声以及对丢包信号进行处理,这种处理方法可以应用于各种电子设备之间的音频信号传输时对信号的处理,该方法可以直接应用于如手机等终端,或者麦克、音响、耳机等音频设备中。

参考图1,音频信号的处理方法包括步骤:

s1:获取音频信号帧,并将音频信号帧转换成第一信号,第一信号为频域信号,可以直接对音频信号帧作傅里叶变换得到第一信号,然后对第一信号求能量谱,得到音频能量谱;

s2:判断音频信号帧是否包含丢包数据,即判断音频信号帧是否为丢包信号;若否,则说明该音频信号帧为正常信号,然后执行s3;若是,则说明该音频信号帧为丢包信号,然后执行s8;

s3:对该音频能量谱作傅里叶变换,得到第二信号;

s4:计算第二信号中低频分量在整个频谱内的占比b;并根据占比b与预估可能性p1估算音频信号帧中包含有人声的实际可能性p2;其中,预估可能性p1为包含有人声的预估值,初始值为0;

s5:将实际可能性p2作为预估可能性p1,并判断实际可能性是否大于人声可能性阈值;若是,则该音频信号帧包含有人声,即该音频信号帧为人声音频,执行s6;若否,则该音频信号帧不包含有人声,即该音频信号帧为背景声音频,执行s7;

s6:根据实际可能性和音频能量谱更新背景声估计频域能量谱,并将第一信号作为预输出信号,然后执行s9;

s7:直接使用音频能量谱更新背景声估计频域能量谱,并将第一信号作为预输出信号,然后执行s9;

s8:判断上一音频信号帧是否包含有人声,即判断上一音频信号帧是否为人声音频,若是,则对第一信号进行修正,得到预输出信号,然后执行s9;若否,使用上一个未包含丢包数据的音频信号帧的背景声估计频域能量谱生成预输出信号,即使用上一个非丢包信号更新的背景声估计频域能量谱声场预输出信号,具体地,使用背景声估计频域能量谱作为幅度,使用随机数作为相位,生成预输出信号,然后执行s9;也就是说,当发现当前音频信号帧为丢包信号时,直接使用上一音频信号帧的人声状态,即若上一音频信号帧为人声音频,则当前音频信号帧也为人声音频;若上一音频信号帧为背景声音频,则当前音频信号帧也为背景声音频,然后分别对不同的状态的音频信号帧采用不同的方式修正第一信号;

s9:对预输出信号作傅里叶反变换,得到实际输出信号;

其中,背景声估计频域能量谱q的初始值为0。

上述音频信号的处理方法,在当前音频信号帧为正常信号时,对背景声估计频域能量谱进行更新,以备在发生丢包时对丢包信号进行修正;而在当前音频信号帧为丢包信号时不更新背景声估计频域能量谱;且在背景声估计频域能量谱的更新中分别对该音频信号帧是否为人声音频而采用不同的修正方式,如此,能够尽可能避免实际输出信号中人声音频的突然发生,从而使使用者获得更好地听感。

在很多音频丢包信号的处理中,常常是采用统一的方式对丢包信号进行修正,这无疑会造成修正的不精确,而本发明中对于丢包信号分不同情况进行修正,考虑到人声不会突然消失而是有过渡性的,因此对当前的丢包信号采用上一音频信号帧的人声状态判断其是否为人声音频,并且对不同状态的丢包信号采用不同的修正方式,从而使修正后的音频信号帧更接近于其对应的正确信号,这种分情况对丢包信号的处理方式能够减少对系统资源的占用,尤其是减小对带宽的负担,能够提高背景声频域能量谱的准确性。

对于音频信号帧是否为人声音频的判断方法,有的技术中采用计算该音频信号帧的能量,如果能量高于一定阈值就认为有人声,即为人声音频,也有一些其他基于能量阈值的多种变形方法。然而,这些判断方法,环境一旦复杂,判断可能就会失效,影响判断的准确性,且计算量很大。而本发明中的音频信号的处理方法中,先计算音频信号帧的频域能量谱中低频分量的占比,然后使用低频分量的占比与包含有人声的预估可能性计算当前音频信号帧中包含有人声的实际可能性,最后通过实际可能性与人声可能性阈值的比较确定当前音频信号帧是否有人声,并且每次判断之后的预估可能性都会进行更新,即预估可能性实际上是上一音频信号帧中包含有人声的可能性。可见,上述方法中,当前音频信号帧是否包含有人声的判断,不仅考虑了当前音频信号帧中的信息,同时会结合上一音频信号帧中是否包含有人声的信息,显然,这种方法能够提高人声识别时对复杂环境的抵抗力,降低人声识别方法失效的概率;且这种方法,运算量小,能够提高对音频信号帧的处理效率,进而提高音频处理的实时性。

需要说明的是,上述虽然给出了通过判断音频信号帧是否为人声音频来对丢包信号进行的处理,然而本发明对音频信号帧是否为人声音频的判断方法也可以应用于其他的音频处理领域,如对人声的提取、分析等,即可以直接使用步骤s1、s3、s4、s5只对音频信号进行是否包含有人声的判断,然后再根据音频处理的需要进行其他进一步地处理。

在实际操作中,上述实施例中对音频信号帧是否包含有人声的判断可以采用下述方法进行,设置vad代表音频信号帧的状态,如vad=1为人声音频,vad=0为背景声音频,这样,当为正常信号时,需要对vad进行更新,即在步骤s5中可以根据判断结果直接将vad设置为1或者0;当为丢包信号时,在步骤s8中直接使用上一音频信号帧的vad值即可,即只需要判断vad的值即可获得上一音频信号帧是否为人声音频,这种方式,尤其适用于将上述处理方法使用代码执行的时候。当然,对于音频信号帧的状态,也可以采用其他方式进行设置。

对于步骤s4具体地包括:

s41:计算第二信号中低频分量在整个频谱内的占比b;

s42:计算音频信号帧包含有人声的预估最小可能性m=0.9×min(m,(1-b))+0.1×(1-b);其中,预估最小可能性m的初始值为0,min(m,(1-b))为取m和(1-b)中较小的一者;

s43:计算实际可能性p2=p1×0.7+(1-b-m)×0.5/(1-m)。

上述方法中,对包含有人声的实际可能性的估算,没有直接使用当前音频信号帧中低频分量的占比b,而是先将上一音频信号帧中包含有人声的预估最小可能性与当前音频信号帧的占比b按照一定的比例计算出当前的预估最小可能性,然后再通过上一音频信号帧的预估可能性和当前音频信号帧的预估最小可能性按照一定的比例计算出当前音频信号帧的实际可能性,可见,这种方法充分考虑了上一音频信号帧中的信息,因此能够更好地抵抗各种噪声的抗干扰能力,以及相邻音频信号帧之间的连续性。

对于上述步骤s42和s43中,各系数(如0.9、0.1、0.7、0.5)的选择可以根据音频信号帧的长度以及人声的发音间隔进行选择,并不限定于上述所给的具体系数。本发明优选的实施例中选用上述系数是为了尽可能降低音频信号帧为人声音频转变的突然性。

实际上,通过上述步骤的计算,得出的实际可能性p2可能大于1,这时设置实际可能性p2为1,也就是说,步骤s4中,s43之后还包括:

s44:判断实际可能性p2是否大于1,若是,设置实际可能性p2为1,执行s5;若否,则直接使用该实际可能性p2,然后执行s5。

进一步地,在采用上述步骤s42~s43计算得到实际可能性p2的实施例中,步骤s5中的人声可能性阈值优选为0.4~0.7,如0.4、、0.5、0.6、0.7等,更优选地,人声可能性阈值为0.5,以尽可能区分音频信号帧中是否包含有人声。

需要说明的是,对于实际可能性p2的计算方法,并不限于上述实施例,也可以直接使用占比b与预估可能性直接推算当前音频信号帧的实际可能性;或者按照其他的方式使用占比b以及预估可能性对当前音频信号帧推断实际可能性。

为了进一步提高对丢包信号修正的准确性,本发明的一种优选实施例中,步骤s6包括:

s60:求背景声估计频域能量谱q与音频能量谱中的较小者,并用该较小者更新背景声估计频域能量谱q,即背景声估计频域能量谱q=min(q,音频能量谱);

s61:再次更新背景声估计频域能量谱q=(q×(1-p2)+p2×音频能量谱)×0.6+音频能量谱×0.4;

s62:将第一信号作为预输出信号,然后执行s9。

上述背景声估计频域能量谱的更新,没有直接使用上一音频信号帧中的背景声频率能量谱,而是综合考虑上一背景声音频与当前人声音频的各种占比来更新当前音频信号帧的背景声频率能量谱,从而在发生丢包时使输出的实际输出信号具有更好地连续性,而不会突然之间由人声转为背景声。

同理,步骤s7具体包括:

s70:求背景声估计频域能量谱q与音频能量谱中的较小者,并用较小者更新背景声估计频域能量谱q;

s71:再次更新背景声估计频域能量谱q=q×0.09+0.01×音频能量谱;

s72:将第一信号作为预输出信号,然后执行s9。

其中,步骤s60、s70虽然在上述实施例中,仅给出在步骤s6、s7时执行,但其也可以在步骤s1与s6、s7之间的任一时刻执行。

需要说明的是,步骤s6和s7的各种计算系数并不限于上述实施例中的值,其可以根据需要进行调整,具体可以根据音频信号帧的长度以及人声的发音间隔进行调整。

在有些实施例中,对于包含有人声的丢包信号,常常选择重发,但往往受带宽以及实时性的要求不会无限次重发;也有一些不论是否为丢包信号,对音频信号帧均通过编加入额外冗余信息,以用于进行纠错,这无疑会增加传输的数据量,增加带宽负担。本发明的一种优选实施例中,上述步骤s1还包括:

获取音频信号帧中各音频数据包对应的丢包判断信号,其中,丢包判断信号为各音频数据包的差错标志形成的序列,若音频数据包中的数据为丢包数据,则该数据对应的差错标志为0,否则为1,也就是说,音频信号帧中包括有多个音频数据包,各音频数据包中包含有多个数据,如30个、40个、50个等,每一个数据对应一个差错标志,若该数据为丢包数据,则其对应的差错标志为0,若该数据为非丢包数据,则该数据对应的差错标志为1,如此,每一个音频数据包都会形成差错标志子序列,这些差错标志子序列共同形成上述序列。这些音频数据包是否为丢包数据来自于音频信号帧自身的数据信息,如通过下文所述的校验码得到。

在该实施例中,步骤s8包括:

s81:判断上一音频信号帧是否包含有人声,若是,则执行s82;若否,则执行s83;其中,默认音频信号帧的初始状态为包含有人声;

s82:对丢包判断信号进行傅里叶变换,并求能量谱,得到丢包能量谱,选取丢包能量谱中主瓣(幅值最大的波峰)和与其相邻的部分旁瓣(幅值较主瓣小的波峰,即位于主瓣左右两侧的波峰)生成调制信号,通过调制信号以及音频能量谱对第一信号进行修正,得到预输出信号,然后执行s9;

s83:使用上一个未包含丢包数据的音频信号帧的背景声估计频域能量谱生成预输出信号,然后执行s9。

上述处理方法,直接使用音频信号帧中自带的各音频数据包是否为丢包数据的信息(即下文描述的校验码)生成丢包判断信号,通过该丢包判断信号生成调制信号,然后使用该调制信号对当前的音频信号帧进行修正。这种方法,考虑到音频信号帧在一段时间内具有周期性,且自身包含有许多冗余信息,因此,本发明充分利用音频信号帧自身的信息,而不需要额外增加编码信息,即能够对包含有丢包数据的音频信号帧进行修正;且由于是否为丢包数据的信息是包含在音频信号帧中的,而不需要增加额外的冗余信息,因此,在传输中不会增加带宽的负担;同时,这种方式对于丢包信号的传输也不需要多次重发,能够提高音频信号帧的实时性。

实际上,音频信号帧包括多个音频数据包,各音频数据包均包括有数据本身和校验码,这个校验码即可判断出该音频数据包中的各数据是否为错误数据,即是否为丢包数据,进而判断包括该音频数据包的音频信号帧是否包含有丢包数据。上述步骤s1实际上包括:

s11:接收传送数据包,并对其解码,得到解码后的音频数据包,包括数据本身pcm和校验码;

s12:通过校验码判断该音频数据包中的各数据是否为丢包数据,若为丢包数据,则差错标志为1,否则为0;

s13:将当前音频数据包存入音频信号帧(包括数据本身和差错标志);

s14:判断音频信号帧的长度是否为信号预设长度(即音频信号帧的长度),若是,则取出该音频信号帧,此时各差错标志形成差错标志序列,即丢包判断信号;然后执行s15;若否,则返回s11;

s15:将音频信号帧转换成第一信号,该第一信号为频域信号,对第一信号求能量谱,得到音频能量谱。

上述实施例中,步骤s1中通过校验码发现其对应的音频数据包中哪个数据为丢包数据,则存储时直接存储为0;若通过校验码发现其对应的音频数据包中的哪个数据为非丢包数据,则存储时直接存储为1,如此,每个音频数据包就对应一个1或者0,最终形成一个包括1和0的差错标志序列,即丢包判断信号,在获取音频信号帧时,同时将该丢包判断信号取出。采用这种1、0的方式形成的丢包判断信号形式简单,哪些音频数据包丢包了易于发现,更容易对其进行定位修正。如图2所示,为音频信号帧的丢包判断信号的波形图,可以看出在下凹的矩形波谷处发生了丢包,需要对该处的音频数据进行修正。

上述步骤s82中,可以直接选用音频能量谱中的各个数据对第一信号进行修正,优选地,上述步骤s82中,先对丢包判断信号进行傅里叶变换,并求能量谱,得到丢包能量谱,选取丢包能量谱中主瓣和与其相邻的部分旁瓣生成调制信号。然后,选取音频能量谱中能量最大的l个峰值,以每一个能量最大的峰值作为主峰,并选取音频能量谱中该主峰左右两侧对称的多个次峰生成调制能量谱,然后通过调制信号和各调制能量谱生成对应各调制能量谱的增益系数,使用多个增益系数对第一信号进行多次调制修正处理,得到修正信号;其中,调制能量谱中各峰值的位置使用其所在的音频能量谱中的位置,且各调制能量谱中次峰的个数为其主峰所在音频能量谱中左侧次峰个数和右侧次峰个数较少的一者,然后执行s9。显然,这种方式对第一信号进行多次修正,能够使丢包信号对应的实际输出信号更接近于正确信号,从而使使用者获得更好地听感。

对于步骤s82中调制信号的生成,考虑到使用整个丢包能量谱的数据量太大,影响运算效率,而丢包能量谱具有对称性,如图3所示,图中的※型曲线为当前音频信号帧(即丢包信号)的丢包能量谱的波形图,上述实施例中,仅选用其中的一半数据,能够减小运算量,进一步地,如果选取完整的一半数据,如图3中※型曲线中对称轴右侧的全部数据,则运算量太大,且旁瓣中也仅仅是靠近主瓣的部分幅值比较高,离主瓣越远的旁瓣的幅值越小,因此,上述实施例中仅选用主瓣和其一侧的部分旁瓣来生成调制信号delta。如此既能够体现整个丢包判断信号的趋势,又能够降低较小幅值对调制信号的干扰,且这种方式能够够极大地减小运算量,提高音频信号帧输出的实时性。

进一步地,步骤s82具体包括:

s821:对丢包判断信号进行傅里叶变换,并求能量谱,得到丢包能量谱;然后选出丢包能量谱中主瓣和与其相邻的部分旁瓣,并对其进行归一化处理,且主瓣的幅值使用其倒数代替,生成上述调制信号delta;

s822:记音频能量谱为amp,其幅值最大的五个峰值记为amp[ki]i以每一个amp[ki]i作为主峰,并选取音频能量谱中该主峰左右两侧的多个次峰生成调制能量谱,也就是说,选出音频能量谱中五个能量最大的峰值amp[k1]1、amp[k2]2、amp[k3]3、amp[k4]4、amp[k5]5;其中,amp[ki]i表示音频能量谱中的第i个峰值,其位于音频能量谱中的第ki个位置;ki为0、1、2、…、n-1;i为1、2、3、…、5;n为调制信号detla的长度;

s823:设置i=1;

s824:设置j=0,使用delta[j]×amp[ki+j]i更新第一信号中的第ki个位置处的值;其中,delta[j]指调制信号delta第j个位置的值;amp[ki+j]i指音频能量谱amp中第[ki+j]个位置的值;

s825:计算j=j+1;

判断rate1=1-delta[j]×amp[ki]i/amp[ki+j]i是否小于0;若是,则将第一信号中的第[ki+j]个位置的值设置为0;若否,则将第一信号中的第[ki+j]个位置的值与rate1相乘,作为第一信号中第[ki+j]个位置的值;

判断rate2=1-delta[j]×amp[ki]i/amp[ki-j]i是否小于0;若是,则将第一信号中的第[ki-j]个位置的值设置为0;若否,则将第一信号中的第[ki-j]个位置的值与rate2相乘,作为第一信号中第[ki-j]个位置的值;

s826:判断j是否小于n,如果小于n,则返回s825;若否,则执行s827;

s827:判断i是否小于6,若是则i=i+1,返回s824;若否,则执行s828

s828:将修正后的第一信号作为预输出信号,然后执行s9。

其中,每一个i值对应的delta[0]、各rate1、各rate2形成所述amp[ki]i对应的增益系数。

继续参考图3,※型曲线为丢包信号对应的丢包幅度谱的波形图,记为第一丢包幅度谱;实线型曲线为该丢包信号对应的正确的音频信号帧的丢包幅度谱,记为第二丢包幅度谱,由图中可以看出,在主瓣处,第一丢包幅度谱的峰值低于第二丢包幅度谱的峰值,而在旁瓣处,第一丢包幅度谱的峰值又高于第二丢包幅度谱的峰值,因此,在上述步骤s821中,我们通过归一化处理,并对主瓣的峰值求倒数,将主瓣处的第一丢包幅度谱的峰值拉高,而旁瓣处的第一丢包幅度谱的峰值压低,从而能够达到对丢包信号的修正,使其尽可能接近正确信号。

在上述调制信号delta的基础上,先选出音频能量谱amp中能量最大的五个峰值,然后按照能量从大到小的顺序,依次使用每一个峰值和其左右两侧的值以及调制信号delta对应的值去更新一次第一信号对应的2n-1个值,如此对第一信号进行五次更新,进而得到修正后的第一信号,即预输出信号。采用这种对第一信号进行多次更新的方式,能够使得到的预输出信号更接近于正确信号,从而更好地提高使用者的听感。

具体地,仍以图3所示实施例为例,选取丢包信号的音频能量谱中(※型曲线)的第100到第140的数据,并进行归一化处理,为[0.795,0.191128,0.152861,0.099290,0.042668,0.005000,0.035136,0.044618,0.036097,0.016605,…],这时候第一个值用1/0.795的结果替换进去,则生成调制信号delta=[1.2579,0.191128,0.152861,0.099290,0.042668,0.005000,0.035136,0.044618,0.036097,0.016605,…],通过这样设置,能够使丢包的位置的幅值拉高(即增大),而把其余地方的值压低,进而使其更接近正确的值。然后找出音频能量谱中幅值最大的五个峰值amp[k1]1、amp[k2]2、amp[k3]3、amp[k4]4、amp[k5]5,接下来以第一个峰值amp[k1]1为例,说明对第一信号的修正,记第一信号为a,则a[ki]指第一信号中第[ki]个位置的值,可见,音频能量谱amp与第一信号a的数据是一一对应的。这样a[k1]=delta[0]×amp[k1]1;由于对于[k1]两侧的数据处理方式相似,因此下面以图中主瓣右侧的数据为例进行说明,a[k1+1]需要先判断rate1=1-delta[1]×amp[k1]1/amp[k1+1]1,若果rate1小于0,则a[k1+1]=0;否则使用a[k1+1]=rate1×a[k1+1];依次类推,对a[k1+2]、a[k1+3]、…、a[k1+n-1];对于a[k1]左侧的数据也依次进行更新,只是此时使用rate2进行更新。然后采用上面的方法再分别使用amp[k2]2、amp[k3]3、amp[k4]4、amp[k5]5对第一信号a进行多次更新,最后得到的第一信号a即为更新后的第一信号,即预输出信号。需要说明的是,如果第一信号中[ki]位置的每一侧数据不足n-1个,则在步骤s825和s826中不必执行到j=n-1,在[ki]位置的每一侧有几个数据,替换几个就行。

虽然上述是以音频能量谱的五个峰值为例进行描述的,但本发明并不限于五个峰值,其可以选用更多的幅度最大的峰值或者更少的幅度最大的峰值,如上述选l个峰值,l的值可以根据音频信号帧的长度以及一个因素的主要共振峰的个数进行选择,对应地,在上述步骤s827中判断i是否小于r+1即可,即只是修改更新第一信号的次数即可。又因为如果峰值个数如果选的太多,则会运算量太大,影响音频信号帧的时效性;而峰值个数选的太少的话,则可能会漏掉一些主要频率,因此,本发明的优选的实施例中选用了五个峰值。

上述调制信号delta的长度n可以根据音频能量谱的长度进行选取,即与音频信号帧的长度相关,优选地,调制信号delta的长度n=0.2×音频能量谱的长度。采用这个长度,既能够尽可能包括幅值比较高的旁瓣,进而对该区间内的幅值进行压制,又不会造成太多数据对运算效率的影响,从而实现较高的修复率和实时性。

另外,对于步骤s82中调制信号的生成,正如上面所述,可以直接使用整个丢包能量谱的数据,也可以使用主瓣和主瓣一侧的全部数据。

可以理解地,上述各实施例中的中间输出信号可以直接作为实际输出信号进行输出,但是考虑到不论是丢包信号还是正常信号(非丢包信号),相邻的音频信号帧之间可能会发生跳变,尤其在发生丢包情况时,这会造成使用者的听感不适。为了解决该问题,本发明的一种优选实施例中,步骤s9具体包括:

s91:对预输出信号作傅里叶反变换,得到中间输出信号;

s92:使用帧叠信号对中间输出信号进行加窗帧叠,得到实际输出信号,同时使用中间输出信号更新帧叠信号;

也就是说,取帧叠信号中的后半段与中间输出信号的前半段作为实际输出信号,然后再使用预输出信号更新帧叠信号,以备后续输出时帧叠使用,这样每次的实际输出信号具有上一中间输出信号的一部分信息,不管上一音频信号帧是否为丢包信号,当前实际输出信号中均包括上一音频信号帧对应的中间输出信号的一部分信息,从而能够尽可能降低相邻音频信号帧输出时的跳变影响,提高音频信号帧输出的连续性,进而增加使用者的听感。其中,帧叠信号的初始值为0。

对于加窗帧叠时的帧叠窗长(即上述中的后半段或者前半段的长度)可以对每个音频信号帧均选用同一窗长进行,也可以不同的音频信号帧选用不同的窗长进行,本发明的一种优选实施例中,上述步骤s3还包括:设置连续非丢包信号个数加1;

步骤s8还包括:设置连续非丢包信号个数为0;

其中;连续非丢包个数的初始值为0;

步骤s6和s7均还包括步骤:

s0:判断连续非丢包信号个数是否大于2,若是,帧叠窗长设为第一窗长;否则,帧叠窗长设为第二窗长,其中,第一窗长小于第二窗长;

在该实施例中,步骤s92中按照帧叠窗长对中间输出信号进行加窗帧叠,即步骤s92具体为:

按照帧叠窗长使用帧叠信号对中间输出信号进行加窗帧叠,得到实际输出音频信号,同时使用中间输出信号更新帧叠信号。

也就是说,在当前音频信号帧为正确信号时,判断该音频信号帧是否已经连续两个音频信号帧为正确信号了,如果是,认为音频信号帧基本没有了丢包信号中的信息,已经基本恢复正常的连续性,相邻音频信号帧之间的跳变可能性很小甚至基本没有了,因此可以选用一个较小长度的帧叠窗长进行帧叠,以减小运算量,提高音频信号帧输出的实时性;否则,有可能音频信号帧中还带有丢包信号中的信息,因此优选一个较大长度的帧叠窗进行帧叠,以提高音频输出的连续性。

在音频信号帧为丢包信号的实施例中,上述步骤s82中,执行步骤s9之前还包括根据预输出信号的频域能量谱和相关性频域能量谱确定步骤s9中帧叠窗长,具体地,步骤s82中得到预输出信号后还包括步骤s8282和s8283,即步骤s82包括:

s8281:将修正后的第一信号作为预输出信号;

s8282:求预输出信号的频域能量谱与相关性频域能量谱的相关度;

s8283:判断上述相关度是否小于相关性阈值,若是,则设置帧叠窗长为第一窗长;否则,设置帧叠窗长为第二帧叠窗长,其中,第二窗长大于第一窗长;

同时步骤s9除了包括上述的步骤s91和s92外,还需要对相关性频域能量谱进行更新,具体地,步骤s9包括:

s91:对预输出信号作傅里叶反变换,得到中间输出信号;

s92:按照帧叠窗长使用帧叠信号对中间输出信号进行加窗帧叠,得到实际输出音频信号帧,同时使用中间输出信号更新帧叠信号,以备下一音频信号帧输出时帧叠使用;

s93:使用预输出信号的频域能量谱更新相关性频域能量谱;

其中,相关性频域能量谱的初始值为0;帧叠信号的初始值为0。

在实际中,当发生丢包时,由于预输出信号的频域能量谱与修正前的音频能量谱的峰值的位置基本不会改变,因此在步骤s8282中可以直接使用音频能量谱,而不必对预输出信号计算其频域能量谱;而步骤s93中对相关性频域能量谱的更新也可以直接使用音频能量谱。

其中,相关性频域能量谱初始值为0,实际上,相关性频域能量谱为上一音频信号帧对应的预输出信号的频域能量谱,不论上一音频信号帧是否包括有丢包数据包。对于上述预设相关度阈值可以根据需要进行设定。

通过上述方法,能充分考虑到相邻音频信号帧的频谱之间的波动性,根据当前预输出信号与上一预输出信号之间的关系设置帧叠窗长,即分不同情况选用不同的帧叠窗长,当相似度小于预设相关度阈值时,说明预输出信号的频域能量谱与相关性频域能量谱相似度高,输出时的跳变较小,因此,可以选用较小的帧叠窗长进行帧叠,以进一步减小运算量;否则,说明修正信号与相关性频域能量谱的相似度太小了,在输出时容易产生跳变,因此,使用较大的帧叠窗长生成实际输出信号,以尽可能在输出时减小跳变。这种方式,充分兼顾当前音频信号帧与上一音频信号帧的连续性,从而避尽可能免实际输出信号时发生跳变,或者将音频信号帧的细节模糊了。

具体地,上述第一窗长和第二窗长的设定与音频信号帧的采样率有关,为了提高运算效率,第二窗长可以为第一窗长的两倍,如第一窗长为64,第二窗长为128。

上述步骤s8282中,求相关度时,可以采用下述方法进行,即上述步骤s8282包括:

s8282a:在相关性频域能量谱中选取幅度最大的u个峰值,并记录其对应的位置,这些位置形成第一数组x;

s8282b:对预输出信号求能量谱,记为修正能量谱(也可以直接采用音频能量谱代替),选出修正能量谱中幅度最大的w个峰值,并记录其对应的位置,这些位置形成第二数组y;

s013:对第一数组x中的每一个x[m]在第二数组y中寻找与其最接近的值,记为y[v],则△[m]=|x[m]-y[v]|,其中m为1、2、…、u;也就是求出△[1]、△[2]、…、△[u];

s014:相关度为所有△[m]的和,即相关度=△[1]+△[2]+、…、+△[u];

其中,u小于w,优选地,w-u=2;也可以u大于等于2或者小于等于4,w大于等于4或者小于等于6,如u为2、3或4,w为4、5或6。。

上述方式求相关度时,仅选用了相关性频域能量谱和修正能量谱中的部分数据,如此,能够减小大量的运算,从而提高音频信号帧输出的实时性;且这些数据对应的位置都是选用的幅值最大的几个峰值的位置,因此,用这些值去求相似度能够很好的反映出两个幅度谱的相似度。且考虑到相邻的音频信号帧之间的频谱往往是波动的,若u大于w的话,则可能相关性频域能量谱中的部分位置并非是主要峰,可能是分析旁瓣之类引入的,因此并不会体现整个相关性频域能量谱的趋势,反而会引入误差,对相关度造成干扰,因此,本发明中u小于w,如此,使选取的相关性频域能量谱的位置尽可能位于修正能量谱的中间位置。

进一步地,优选u为三,w选为五,在实际操作中,由于上述对第一信号的修复,基本不会影响音频能量谱的峰值位置,因此,可以直接使用上述步骤s824中选出的五个峰值的位置,形成第一数组x,以进一步减小数据运算量。如在一个实施例中,相关性频域能量谱中选取幅值最大的前三个峰值的位置,形成的第一数组x=(4,17,19);修正能量谱中选取幅值最大的前五个峰值的位置,形成第二数据y=(7,10,5,23,20),则△[1]=|4-5|=1;△[2]=|17-20|=3;△[3]=|19-20|=1;相关度=5,可以设定预设相关度阈值为6,由于5小于6,因此,选用第一帧叠窗长。

参考图4,其中,※型曲线为包含丢包数据的音频信号帧的波形图,实线曲线为采用本发明的音频处理方法对※型曲线对应的音频信号帧进行处理后的曲线图,从图中能够明显看出,通过本发明的音频处理方法,使丢包信号既得到了修复,同时能够提高实际输出信号的连续性。

本发明还提供了一种音频信号帧的处理系统,可以用于执行上述音频信号的处理方法,但上述音频信号帧的处理方法并不限于该处理系统。如图5所示,处理系统包括:

获取模块10,用于获取音频信号帧,并将音频信号帧转换成频域信号,记为第一信号,对第一信号求能量谱,得到音频能量谱;还用于判断音频信号帧是否包含丢包数据;若否,则将第一信号以及音频能量谱发送至非丢包处理模块20;若是,则将第一信号以及音频能量谱发送至丢包处理模块30;

非丢包处理模块20,用于对音频能量谱作傅里叶变换,得到第二信号;然后计算第二信号中低频分量在整个频谱内的占比b;并根据占比b与预估可能性p1估算音频信号帧中包含有人声的实际可能性p2;其中,预估可能性p1的初始值为0;以将实际可能性p2作为预估可能性p1,并判断实际可能性是否大于人声可能性阈值;若是,则音频信号帧包含有人声,根据实际可能性和音频能量谱更新背景声估计频域能量谱,并将第一信号作为预输出信号;若否,则音频信号帧不包含有人声,直接使用音频能量谱更新背景声估计频域能量谱,并将第一信号作为预输出信号;最后将预输出信号发送至输出模块40;

丢包处理模块30,用于判断上一音频信号帧是否包含有人声,若是,则对第一信号进行修正,得到预输出信号;若否,使用背景声估计频域能量谱生成预输出信号;然后将预输出信号发送至输出模块40;

输出模块40,用于对预输出信号作傅里叶反变换,得到实际输出信号;

其中,获取模块10与非丢包处理模块20、丢包处理模块30均连接,丢包处理模块30和非丢包处理模块20分别与输出模块40连接,以便于信号传送。这种处理系统,如上述分析,当前音频信号帧是否包含有人声的判断,不仅考虑了当前音频信号帧中的信息,同时会结合上一音频信号帧中是否包含有人声的信息,显然,这种方法能够提高人声识别时对复杂环境的抵抗力,降低人声识别方法失效的概率;且这种方法,运算量小,能够提高对音频信号帧的处理效率,进而提高整个系统的运行效率,进而提高音频信号帧输出的实时性。

且由于增加有丢包处理模块30,因此其能够对不同状态的音频信号帧进行处理,具体处理方式可以参照处理方法中对应的实施例,这里就不再赘述了,从而能够增加音频信号帧的处理系统的应用范围。同时,上述处理系统还具有上述处理方法的各种有益效果,这里就不再赘述,具体参考处理方法的描述。

进一步地,上述处理系统的各模块在应用于上述处理方法的各实施例时,可以对应执行各自实施例中的方法,这里就不一一赘述,可根据上述各实施例的处理方法进行合理设置。

上述处理系统中,可以分别为各模块申请一个或者多个缓存单元,具体可以根据本领域技术人员常用的方式进行设置,也可以几个模块中的部分缓存单元共用一个缓存单元,以提高缓存空间的利用率,降低对系统资源的占用。

其中,上述处理方法和处理系统中的音频信号帧可以为通过蓝牙获得的语音信号,也可以为通过wifi获得的语音信号。

本发明还提供了一种音频处理芯片,音频处理芯片能够执行上述任一实施例所述的包含丢包数据的音频信号的处理方法。

本发明还提供了一种蓝牙设备,具有上述音频处理芯片,此时上述音频处理芯片处理的音频信号帧为通过蓝牙获得的语音信号,该蓝牙设备包括手机、蓝牙麦克、蓝牙音响和蓝牙耳机中的至少一种。实际使用中,可以是两个蓝牙设备互相传送数据,如手机与蓝牙耳机之间传送数据,可以在两个电子设备上分别安装有上述音频处理芯片。

此外,本发明还提供了一种计算机可读存储介质,如光盘、u盘、硬盘、闪存盘等,或者是其他各种类型的存储介质,其上存储有计算机程序,该计算机程被执行时实现如上述任一实施例所述的音频信号的处理方法。其中,该计算机程序被执行时可以以demo可视对话框呈现,也可以直接为可执行的exe文件。

本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。

应当理解,上述的实施方式仅是示例性的,而非限制性的,在不偏离本发明的基本原理的情况下,本领域的技术人员可以针对上述细节做出的各种明显的或等同的修改或替换,都将包含于本发明的权利要求范围内。

起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。

此文章来源于网络,如有侵权,请联系删除

相关标签: 音频应用
tips