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

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

2021-01-28 15:01:27|354|起点商标网
语音信号的处理方法及系统、音频处理芯片、电子设备与流程

本发明涉及通讯技术领域,具体涉及一种包含丢包数据的语音信号的处理方法及处理系统、音频处理芯片、电子设备、计算机可读存储介质。



背景技术:

随着无线连接的普及,基于蓝牙、wifi等的音频通讯几乎无处不在。但是,实际传输语音信号的过程中,受环境或者天线等因素的影响,在传输中常常会带入干扰,从而易造成语音信号发生丢包,对听感带来极大不适。

现有技术中对抗丢包的方法,可以选择重发语音信号,但往往受带宽限制以及出于实时性的要求等因素,无法进行无限次的重发,造成传输的数据仍有问题;也有一些对抗丢包的方法中,会通过编码加入额外的冗余信息,用于进行纠错,这无疑会增加传输的数据量,增加带宽负担。



技术实现要素:

基于上述现状,本发明的主要目的在于提供一种包含丢包数据的语音信号的处理方法及处理系统、音频处理芯片、电子设备、计算机可读存储介质,以解决现有技术由于重发或者加入编码造成带宽负担增加和降低实时性的问题。

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

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

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

s300:对所述丢包判断信号进行傅里叶变换,并求能量谱,得到丢包能量谱,通过所述丢包能量谱生成所述调制信号;

s400:将所述语音信号转换为语音频域信号,并求能量谱,得到语音能量谱;

s500:选取所述语音能量谱中能量最大的l个峰值,以每一个能量最大的峰值作为主峰,并选取所述语音能量谱中该主峰左右两侧对称的多个次峰生成调制能量谱,然后通过所述调制信号和各所述调制能量谱生成对应各所述调制能量谱的增益系数,使用多个所述增益系数对所述语音频域信号进行多次调制修正处理,得到修正信号;其中,所述调制能量谱中各峰值的位置使用其所在的所述语音能量谱中的位置,且各所述调制能量谱中次峰的个数为其主峰所在语音能量谱中左侧次峰个数和右侧次峰个数较少的一者;

s700:对所述修正信号作傅里叶反变换,得到预输出信号。

优选地,所述步骤s100与s300之间还包括步骤:

s2:判断所述语音信号是否包含有人声;若是,则执行s300;若否,则执行s600;

s600:使用背景声估计频域能量谱生成修正信号,然后执行s700;其中,所述背景声估计频域能量谱为与当前语音信号最接近的不包含有丢包数据的语音信号生成的频域能量谱。

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

s310:对所述丢包判断信号进行傅里叶变换,并求能量谱,得到丢包能量谱;

s320:选出所述丢包能量谱中主瓣和与其相邻的部分旁瓣,并对其进行归一化处理,且所述主瓣的幅值使用其倒数代替,生成所述调制信号delta。

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

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

s520:设置i=1;

s530:设置j=0,将所述语音频域信号中的第[ki+j]个位置的值与delta[j]相乘,作为所述语音频域信号中的第[ki+j]个位置处的值;其中,delta[j]指所述调制信号delta第j个位置的值;

s540:计算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]个位置的值;

s550:判断j是否小于n,如果小于n,则返回s540;若否,则执行s560;

s560:判断i是否小于l+1,若是则i=i+1,返回s530;若否,则执行s570;

s570:将修正后的语音频域信号作为修正信号;

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

优选地,所述调制信号delta的长度n=0.2×语音能量谱的长度。

优选地,所述步骤s700之后还包括:

s800:使用帧叠信号对所述预输出信号进行加窗帧叠,得到实际输出信号;

s900:使用所述预输出信号更新所述帧叠信号;

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

优选地,所述步骤s700之前还包括:

s580:求所述修正信号的频域能量谱与相关性频域能量谱的相关度;

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

所述步骤s800具体为:

根据所述帧叠窗长使用所述帧叠信号对所述预输出信号进行加窗帧叠,得到实际输出信号,且使用所述修正信号的频域能量谱更新所述相关性频域能量谱;

其中,所述相关性频域能量谱初始值为0。

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

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

s582:对所述修正信号求能量谱,记为修正能量谱,选出所述修正能量谱中幅度最大的w个峰值,并记录其对应的位置,这些位置形成第二数组y;

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

s584:所述相关度为所有△[m]之和;

其中,u小于w。

优选地,所述语音信号为通过蓝牙获得的语音信号。

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

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

修正模块,用于对所述丢包判断信号进行傅里叶变换,并求能量谱,得到丢包能量谱,通过所述丢包能量谱生成所述调制信号;并将所述语音信号转换为语音频域信号,并求能量谱,得到语音能量谱;然后选取所述语音能量谱中能量最大的l个峰值,以每一个能量最大的峰值作为主峰,并选取所述语音能量谱中该主峰左右两侧对称的多个次峰生成调制能量谱,然后通过所述调制信号和各所述调制能量谱生成对应各所述调制能量谱对应的多个增益系数,使用多个所述增益系数对所述语音频域信号循环进行多次调制修正处理,得到所述修正信号;其中,所述调制能量谱中各峰值的位置使用其所在的所述语音能量谱中的位置,且各所述调制能量谱中次峰的个数为其主峰所在语音能量谱中左侧次峰个数和右侧次峰个数较少的一者;

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

其中,所述获取模块与所述修正模块信号连接,所述修正模块与所述输出模块信号连接。

优选地,

所述获取模块包括输入缓存单元,所述输入缓存单元用于存储获取的所述语音信号以及所述丢包判断信号;

所述修正模块包括调制单元和修正单元,所述调制单元用于对所述丢包判断信号进行傅里叶变换,并求能量谱,得到丢包能量谱,通过所述丢包能量谱生成所述调制信号;所述修正单元用于将所述语音信号转换为语音频域信号,并求能量谱,得到语音能量谱;然后选取所述语音能量谱中能量最大的l个峰值,以每一个能量最大的峰值作为主峰,并选取所述语音能量谱中该主峰左右两侧对称的多个次峰生成调制能量谱,然后通过所述调制信号和各所述调制能量谱生成对应各所述调制能量谱对应的多个增益系数,使用多个所述增益系数对所述语音频域信号循环进行多次调制修正处理,得到所述修正信号;

其中,所述输入缓存单元与所述修正单元共用一块缓存空间。

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

本发明的第四方面提供了一种电子设备,具有上述所述的音频处理芯片,其中,所述音频处理芯片处理的语音信号为通过蓝牙获得的语音信号;所述电子设备为手机、蓝牙麦克、蓝牙音响或蓝牙耳机。

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

本发明的包含丢包数据的语音信号的处理方法,直接使用语音信号中自带的各音频数据包是否为丢包数据的信息生成丢包判断信号,通过该丢包判断信号生成调制信号,然后使用调制信号对语音信号进行修正。这种方法,由于是否为丢包数据的信息是包含在语音信号中的,而不需要增加额外的冗余信息,能够利用语音信号自身的信息进行修正,又因此,在语音信号的传输中不会增加带宽的负担;且这种方式对于丢包数据的传输也不需要多次重发,能够提高语音信号的实时性。

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

附图说明

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

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

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

图3为图2所示丢包判断信号对应的丢包能量谱的波形图;

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

图5为本发明提供的语音信号处理方法中,一种优选实施例的语音能量谱和修正能量谱的波形对比图;

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

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

具体实施方式

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

此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。

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

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

在通过蓝牙、无线等信号进行的通讯中,主机与从机之间进行语音信号传输时,如主机为手机,从机为耳机,当手机将语音信息发送给耳机以备耳机佩戴者倾听时,耳机接收手机发送过来的通讯信号,并对其解码,得到语音信号,然后由耳机输出该语音信号,但是由于从手机到耳机的传送过程中,受环境、带宽或者耳机的接收能力、软件处理能力等因素的影响,有时会发生数据丢包,造成传输错误,影响用户的体验。

针对上述问题,本发明提供了一种包含丢包数据的语音信号的处理方法,如图1所示,包括步骤:

s100:获取包含丢包数据的语音信号(以下简称丢包信号)以及该语音信号对应的丢包判断信号,其中,丢包判断信号为各音频数据包的差错标志形成的序列,其中,若音频数据包中的数据为丢包数据,则该数据对应的差错标志为0,否则为1,也就是说,语音信号包括多个音频数据包,各音频数据包包括多个数据,如20个、30个、40个、50个等,每一个数据对应有一个差错标志,若该数据为丢包数据,则其对应的差错标志为0;若该数据为非丢包数据(即正确数据),则该数据对应的差错标志为1,如此,每一个音频数据包都会形成差错标志子序列,这些差错标志子序列共同形成上述序列,如图2所示,为丢包判断信号的波形图。其中,丢是否为丢包数据的信息来自于该语音信号自身的信息(如下文中提到语音信号中的校验码);

s300:对丢包判断信号进行傅里叶变换,得到第二信号,对第二信号求能量谱,得到丢包能量谱,如图3所示,然后通过该丢包能量谱生成调制信号;

s400:将该语音信号(丢包信号)转换为语音频域信号,记为第一信号,并求能量谱,得到语音能量谱;

s500:选取语音能量谱中能量最大的l个峰值,以每一个能量最大的峰值作为主峰,并选取语音能量谱中该主峰左右两侧对称的多个次峰生成调制能量谱,然后通过调制信号和各调制能量谱生成对应各调制能量谱的增益系数,使用多个增益系数对语音频域信号进行多次调制修正处理,得到修正信号;其中,调制能量谱中各峰值的位置使用其所在的语音能量谱中的位置,且各调制能量谱中次峰的个数为其主峰所在语音能量谱中左侧次峰个数和右侧次峰个数较少的一者。s700:对修正信号作傅里叶反变换,得到预输出信号,即预输出信号为对丢包信号修正后的信号,其与丢包信号均属于时域上的信号,以便后续输出使用。

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

在上述步骤s100中,采用这种1、0的方式形成的丢包判断信号形式简单,哪些音频数据包丢包了易于发现,更容易对其进行定位修正。如图2所示,为包含丢包音频数据的语音信号对应的丢包判断信号的示意图,可以看出在下凹的矩形波谷处发生了丢包,需要对该处的音频数据包进行修正。

在上述步骤s500中,没有直接选用语音能量谱中的各个数据对第一信号进行修正,而是选取语音能量谱中能量最大的l个峰值,以每一个能量最大的峰值作为主峰,并选取语音能量谱中该主峰左右两侧对称的多个次峰生成调制能量谱,然后通过调制信号和各调制能量谱生成对应各调制能量谱的增益系数,使用多个增益系数对第一信号进行多次调制修正处理,得到修正信号;其中,调制能量谱中各峰值的位置使用其所在的语音能量谱中的位置,且各调制能量谱中次峰的个数为其主峰所在语音能量谱中左侧次峰个数和右侧次峰个数较少的一者。显然,这种方式对语音信誉信号进行多次修正,能够使丢包信号对应的实际输出信号更接近于正确信号,从而使使用者获得更好地听感。

其中,对于上述步骤s300与s400的执行顺序并不作限定,可以先执行步骤s300,再执行步骤s400;也可以先执行s400,再执行步骤s300;或者步骤s300与步骤s400同时执行。

可以理解地,上述语音信号会具有多种状态,如可能包含有人声,即为人声信号;也有可能不包含有人声,即为背景声信号,不论上述语音信号为哪种,均可以直接采用上述步骤对其进行修正。为了提高对包含丢包数据的语音信号的修正效率,本发明的一种优选实施例中,对于包含有人声的语音信号和为背景声的语音信号采用不同的修正方式,具体地,步骤s100与s300之间还包括:

s200:判断语音信号是否包含有人声;若是,则执行s300;若否,则执行s600;

s600:使用背景声估计频域能量谱生成修正信号,执行s700;其中,背景声估计频域能量谱为与当前语音信号最接近的不包含丢包数据的语音信号频域能量谱,即背景声估计频域能量谱来自于当前丢包信号(即当前包含有丢包数据的语音信号)之前的最接近的正确信号(即不包含有丢包数据的语音信号)。

也就是说,若当前丢包信号为背景声信号,则直接使用背景声估计频域能量谱进行修正,而对于包含有人声的语音信号,考虑到其包含的信息比较多,再采用步骤s300~s500的方法对其进行修正,如此能够减少各种复杂运算,提高对丢包信号的处理效率。

其中,上述步骤s200中,判断语音信号是否包含有人声时,可以直接判断当前语音信号中是否包含有人声,也可以判断上一语音信号中是否包含有人声。对于当前语音或者上一语音信号是否包含有人声的判断方法,可以采用本领域技术人员常用的方法,如计算该语音信号的能量,如果能量高于一定阈值就认为有人声,即为人声信号,也有一些其他基于能量阈值的多种变形方法这里就不一一列举了。然而,这些方法当应用环境复杂时,判断可能就会失效,影响判断的准确性,且计算量很大。

为了解决上述问题,本发明的一种优选实施例中,采用上一语音信号(即正常语音)进行判断,若上一语音信号包含有人声,则认为当前语音信号也包含有人声,即为人声信号;若上一语音信号为背景声信号,则认为当前语音信号也为背景声信号,且仅在语音信号为正常信号(即未包含丢包数据包)时更新是否有人声的状态,否则直接使用上一语音信号的状态,实际上本发明选用的是当前丢包信号之前的与其最接近的正常信号的状态。具体地,在s100之前还包括判断语音信号是否为丢包信号的步骤,并且在语音信号为正常信号时,还判断其是否为包含有人声,具体地,在步骤s100之前还包括:

s000:采集语音信号,判断所述语音信号是否包含有丢包数据,若是,则执行s100,若否,则执行s010;

s010:获取语音信号(该语音信号未包括丢包数据),并将语音信号转成频域信号,记为第三信号,对第三信号求能量谱,得到第四信号;

s020:对第四信号作傅里叶变换,得到第五信号;

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

s040:将实际可能性p2作为预估可能性p1,并判断实际可能性是否大于人声可能性阈值;若是,则该语音信号包含有人声,即为人声信号;若否,则该语音信号不包含有人声,即为背景声信号。

具体地,步骤s030包括:

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

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

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

在该实施例中,步骤s040中的人声可能性阈值选为0.4~0.7,如0.4、、0.5、0.6、0.7等,优选地,人声可能性阈值为0.5,以尽可能区分语音信号中是否包含有人声。

进一步地,步骤s600中的背景声估计频域能量谱也是仅在语音信号为正确信号时才进行更新,本发明的一种优选实施例中,对于背景声估计频域能量谱也根据语音信号是否包含有人声采用不同的方式生成,下面继续沿用上述是否包含有人声的判断方法进行,具体地,在上述步骤s040中,若判断为包含有人声,则执行步骤s050,以对生成背景声估计频域能量谱进;若判断为未包含有人声,则执行步骤s060,对背景声估计频域能量谱:

s050:计算背景声估计频域能量谱q=min(q,第四信号);然后使用上述计算结果再更新背景声估计频域能量谱q=(q×(1-p2)+p2×第四信号)×0.6+音频能量谱×0.4;

s060:计算背景声估计频域能量谱q=min(q,第四信号);然后使用上述计算结果再更新背景声估计频域能量谱q=q×0.09+0.01×第四信号。

实际中,在步骤s050和步骤s060中,在对背景声估计能量谱更新之后,均还包括步骤:将第三信号经过傅里叶变换,得到预输出信号,即在步骤s700中,直接用第三信号代替修正信号,以对正常信号也进行输出。

上述步骤s600中生成修正信号,具体包括:使用背景声估计频域能量谱为幅值,随机数为相位,生成修正信号。

上述背景声估计频域能量谱的更新,分别对正确信号(非丢包信号)是否为人声信号采用不同的方式进行更新,尤其在正确信号为人声信号时没有直接使用该正确信号的第四信号,而是综合考虑上一语音信号与当前人声信号的各种占比,从而在发生丢包时使输出的实际输出信号具有更好地连续性,而不会突然之间由人声转为背景声。

需要说明的是,预估最小可能性m、预估可能性p1和背景声估计频域能量谱q的初始值均为0。

虽然上述实施例中,对于丢包信号为背景声信号时,采用了背景声估计频域能量谱生成修正信号,但本发明并不限于此,当丢包信号为背景声信号时,也可以直接提取该丢包信号之前的正常信号的背景声,具体提取方式可以采用本领域技术人员常用的方式,如直接通过滤波,将高频能量滤掉。

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

s110:接收传送数据包,并对其解码,得到解码后的音频数据包,包括数据本身pcm和校验码,该校验码即用来判断该音频数据包中各数据是否为丢包数据,然后将当前音频数据包存入语音信号(包括数据本身和是否丢包的信息);

s120:判断语音信号的长度是否为信号预设长度(即语音信号的长度),若是,则取出该语音信号,并执行s300(在包括有步骤s200时执行s200);若否,则返回s110。

在该实施例中,步骤s110中,若通过校验码发现其对应的音频数据包中的数据为丢包数据,则存储时该对应的差错标志直接存储为0;若通过校验码发现其对应的音频数据包中的数据为非丢包数据,则存储时其对应的差错标志直接存储为1,如此,每个音频数据包就对应一个1和0的子序列,最终形成一个包括1和0的差错标志序列,即丢包判断信号,在获取语音信号时,同时将该丢包判断信号取出。

对于调制信号的生成,可以直接使用整个丢包能量谱。考虑到使用整个丢包能量谱的数据量太大,影响运算效率,而丢包能量谱具有对称性,如图3所示,本发明的一种优选实施例中,可以仅选用其中的一半数据,进一步地,如果选取完整的一半数据,如图3中主瓣(幅值最大的波峰)右侧的全部数据,则运算量太大,且旁瓣(幅值较主瓣小的波峰,即位于主瓣左右两侧的波峰)中也仅仅是靠近主瓣的部分幅值比较高,离主瓣越远的旁瓣的幅值越小,因此,更优选地,仅选用主瓣和其一侧的部分旁瓣来生成调制信号delta。具体地,步骤s300包括:

s310:对丢包判断信号进行傅里叶变换,得到第二信号,对第二信号求能量谱,得到丢包能量谱;

s320:选出丢包能量谱中主瓣和与其相邻的部分旁瓣,并对其进行归一化处理,且主瓣的幅值使用其倒数代替,生成调制信号delta。

参考图4,※型曲线为丢包信号对应的丢包幅度谱,记为第一丢包幅度谱;实线型曲线为该丢包信号对应的正确的语音信号的丢包幅度谱,记为第二丢包幅度谱,由图中可以看出,在主瓣处,第一丢包幅度谱的峰值低于第二丢包幅度谱的峰值,而在旁瓣处,第一丢包幅度谱的峰值又高于第二丢包幅度谱的峰值,因此,采用上述方法,我们将主瓣处的第一丢包幅度谱的峰值拉高,而旁瓣处的第一丢包幅度谱的峰值压低,从而达到对丢包信号的修正。

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

s510:记丢包信号的语音能量谱为amp,其能量最大的l个峰值记为amp[ki]i,以每一个amp[ki]i作为主峰,并选取所述语音能量谱中该主峰左右两侧的多个次峰生成调制能量谱,也就是说,选出语音能量谱中l个能量最大的峰值amp[k1]1、amp[k2]2、amp[k3]3、amp[k4]4、amp[k5]5、…、amp[k5]l,当然,这l个峰值中的位置ki实际上是不同的,其中,amp[ki]i表示语音能量谱中的第i个峰值,其位于语音能量谱中的第ki个位置;ki为0、1、2、…、n-1;i为1、2、3、…、l;n为调制信号detla的长度,l大于等于4或者小于等于6,如l为4、5或者6;下面使用调制信号delta和这l个峰值以及其附近的数据去更新第一信号中对应位置的值;

s520:设置i=1;

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

s540:计算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]个位置的值;

s550:判断j是否小于n,如果小于n,则返回s540;若否,则执行s560;

s560:判断i是否小于l+1,若是则i=i+1,返回s530;若否,则执行s570;

s570:将修正后的第一信号作为修正信号。

其中,每一个i值对应的delta[0]、各rate1、各rate2形成所述amp[ki]i对应的增益系数。也就是说,先选出语音能量谱amp中能量最大的l个峰值,然后按照能量从大到小的顺序,依次使用每一个峰值和其左右两侧的值以及调制信号delta对应的值去更新一次第一信号对应的2n-1个值,如此对第一信号进行l次更新,进而得到修正信号。采用这种对第一信号进行多次更新的方式,能够使得到的修正语音更接近于丢包信号对应的正确信号,从而更好地提高使用者的听感。

对于l的值,综合了语音信号的长度,以及一个因素(指声音中的因素)的主要共振峰的个数等信息,又考虑到如果峰值个数选的太多,则会运算量太大,影响语音信号的时效性;而峰值个数选的太少的话,则可能会漏掉一些主要频率,因此上述l选为4、5或者6,优选地,l为5。

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

参考图4,且以l为5为例,选取包含丢包信号的语音能量谱中(※型曲线)的第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即为更新后的修正信号。参考图5,※型曲线为修正前的语音能量谱的波形图,实线曲线为修正后的修正信号的能量谱(即对修正信号求频域能量谱)的波形图。

需要说明的是,如果第一信号中[ki]位置的每侧数据不足n-1个,则在步骤s540和s550中不必执行到j=n-1,在[ki]位置的每侧有几个数据,替换几个就行。

上述各实施例中,可以直接使用预输出信号作为实际输出信号进行输出。本发明的一种优选实施例中,为了提高修正后的语音信号输出的连续性,步骤s700之后还包括:

s800:使用帧叠信号对预输出信号进行加窗帧叠,得到实际输出信号;

s900:使用预输出信号更新所述帧叠信号;

也就是说,取帧叠信号中的后半段与预输出信号的前半段作为实际输出信号,然后再使用预输出信号更新帧叠信号,以备后续输出时帧叠使用。其中,帧叠信号的初始值为0。

对于加窗帧叠时的帧叠窗长度(即上述中的后半段或者前半段的长度)可以对每个语音信号均选用同一窗长进行,也可以不同的语音信号选用不同的窗长进行,本发明的一种优选实施例中,步骤s700之前还包括:

s580:求修正信号的频域能量谱(即修正能量谱)与相关性频域能量谱的相关度;

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

此时,上述步骤s800具体为:

根据上述帧叠窗长使用帧叠信号对预输出信号进行加窗帧叠,得到实际输出信号;且使用预输出信号的频域能量谱更新相关性频域能量谱,在实际中,当发生丢包时,由于修正信号的修正能量谱与修正前的语音能量谱的峰值的位置基本不会改变,因此在步骤s580中可以直接使用语音能量谱;在语音信号为丢包信号时,步骤s800中的预输出信号的频域能量谱也可以直接使用语音能量谱;

其中,相关性频域能量谱初始值为0。实际上,不论上一语音信号是否为丢包信号,相关性频域能量谱其实为上一语音信号对应的预输出信号(在为正常信号时指第三信号)的频域能量谱(即第四信号)。需要说明的是,在包括有步骤s600的实施例中,在步骤s600中得到修正信号后,也需要执行上述步骤s580、s590,以确定丢包信号在s800使用的帧叠窗长。

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

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

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

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

s582:对修正信号求能量谱,记为修正能量谱,选出修正能量谱(下文记为修正能量谱)中幅度最大的w个峰值,并记录其对应的位置,这些位置形成第二数组y;

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

s584:相关度为所有△[m]之和;

其中,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太少则可能无法体现频域能量谱的趋势,也会造成相关度的可靠性降低。因此,本发明中u小于w,如此,使选取的相关性频域能量谱的位置尽可能位于修正能量谱的中间位置。

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

其中,上述步骤s581与步骤s582的执行顺序并不限定,可以先执行步骤s581再执行步骤s582,也可以先执行步骤s582再执行步骤s581,或者步骤s581与步骤s582同时执行。

虽然上述实施例中给出了当为丢包信号时,采用帧叠方式对预输出信号进行加窗帧叠再进行输出。实际上,在语音信号为正常信号时,为了提升语音信号输出的连续性,也会采用加窗帧叠的方式进行实际输出信号的更新,因此,不论上一语音信号是否为丢包信号,相关性频域能量谱其实为上一语音信号对应的预输出信号(在为正常信号时指第三信号)的频域能量谱(即第四信号)。

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

另外,需要说明的是,上述虽然只给出了对于丢包信号是对相关性频域能量谱的更新,在实际应用时,语音信号常常为正确信号,此时,若语音信号为人声语音信号,也会对相关性频域能量谱进行更新,只是此时可以使用该语音信号的频域能量谱进行更新。

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

获取模块10,用于获取包含丢包数据的语音信号以及语音信号对应的丢包判断信号;丢包判断信号为语音信号中各音频数据包的差错标志形成的序列,其中,若音频数据包的数据为丢包数据,则该数据对应的差错标志为0,否则为1;

修正模块20,用于对丢包判断信号进行傅里叶变换,并求能量谱,得到丢包能量谱,通过丢包能量谱生成调制信号;并将语音信号转换为语音频域信号,并求能量谱,得到语音能量谱;然后选取语音能量谱中能量最大的l个峰值,以每一个能量最大的峰值作为主峰,并选取所述语音能量谱中该主峰左右两侧对称的多个次峰生成调制能量谱,然后通过调制信号和各调制能量谱生成对应各调制能量谱对应的多个增益系数,使用多个增益系数对语音频域信号循环进行多次调制修正处理,得到修正信号;其中,调制能量谱中各峰值的位置使用其所在的语音能量谱中的位置,且各调制能量谱中次峰的个数为其主峰语音能量谱中左侧次峰个数和右侧次峰个数较少的一者;

输出模块30,用于对修正信号作傅里叶反变换,得到预输出信号;

其中,上述获取模块10与修正模块20信号连接,修正模块20与输出模块30信号连接。

上述处理系统,考虑到语音信号在一段时间内具有周期性,且自身包含有许多冗余信息,因此,本发明充分利用语音信号自身的信息,而不需要额外增加编码信息,即能够对包含有丢包数据的语音信号进行修正;且由于是否为丢包数据包的信息是包含在语音信号中的,而不需要增加额外的冗余信息,因此,在传输中不会增加带宽的负担;同时,这种处理系统对于丢包数据的传输也不需要多次重发,能够更好地提升语音信号的实时性。

在实际操作中,上述处理系统可以分别为各模块申请一个或者多个缓存单元,一种优选的实施例中,获取模块10包括输入缓存单元,输入缓存单元用于存储获取的语音信号以及丢包判断信号,结合上述处理方法可知,步骤s110中每次接收到的音频数据包存放在输入缓存单元,当输入缓存单元中的数据长度达到了信号预设长度时,形成一个语音信号,将该输入缓存单元中的数据全部取走。修正模块20包括调制单元和修正单元,调制单元用于对丢包判断信号进行傅里叶变换,并求能量谱,得到丢包能量谱,进而生成调制信号;修正单元用于将语音信号转换为语音频域信号,并求能量谱,得到语音能量谱;然后选取语音能量谱中能量最大的l个峰值,以每一个能量最大的峰值作为主峰,并选取语音能量谱中该主峰左右两侧对称的多个次峰生成调制能量谱,然后通过调制信号和各调制能量谱生成对应各调制能量谱对应的多个增益系数,使用多个增益系数对语音频域信号循环进行多次调制修正处理,得到修正信号。其中,输入缓存单元与修正单元共用一块缓存空间,也就是说,第一信号与修正信号共用同一空间,即每次对第一信号进行修正后修正信号直接覆盖原第一信号。采用这种方式,能够提高缓存空间的利用率,降低对系统资源的占用。当然,输入缓存单元与修正单元也可以分别申请一个缓存空间。

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

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

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

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

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

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

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

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

tips