发明内容
本发明实施例提供用于恢复丢失数据的方法和设备,能够增强恢复的数据的前后连续性。
第一方面,提供了一种恢复丢失数据的方法,包括:在当前帧中存在待恢复数据的情况下,在第一搜索范围内,进行第一级搜索,以确定所述第一搜索范围内与所述待恢复数据相关性最大的第一数据的第一起始位置D1;根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围,其中所述帧信息包括以下至少一种:所述当前帧的前一帧的基音周期,所述前一帧的信号类型;在所述第二搜索范围内,进行第二级搜索,以确定第二数据的第二起始位置,所述第二数据是除所述第一数据之外的与所述待恢复数据相关性最大的数据,以便至少根据所述第一起始位置D1和所述第二起始位置对所述待恢复数据进行恢复。
结合第一方面,在第一种可能的实现方式中,所述第二搜索范围小于所述第一搜索范围。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围之前,所述方法还包括:在所述第一起始位置D1位于所述第一搜索范围内的第一子范围的情况下,确定所述前一帧的基音周期T是否小于所述第一搜索范围的长度N1,其中,所述第一子范围为(N1/2-a,N1/2+a),0<a<N1/2;
所述根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围,包括:在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1的情况下,确定所述第二搜索范围为(D1-T/2,D1+T/2);或者,在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1,且D1小于T/2的情况下,确定所述第二搜索范围为(0,T);或者,在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1,且(D1+T/2)大于N1的情况下,确定所述第二搜索范围为(N1-T,T)。
结合第一方面,在第三种可能的实现方式中,在所述根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围之前,所述方法还包括:在所述第一起始位置D1位于所述第一搜索范围内的第一子范围的情况下,确定所述前一帧的基音周期T是否小于所述第一搜索范围的长度N1,其中,所述第一子范围为(N1/2-a,N1/2+a),0<a<N1/2;
所述根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围,包括:在确定所述前一帧的基音周期T大于或等于所述第一搜索范围的长度N1的情况下,确定所述第一搜索范围作为所述第二搜索范围。
结合第一方面,在第四种可能的实现方式中,所述根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围,包括:在所述第一起始位置D1没有位于所述第一搜索范围内的第一子范围的情况下,确定所述第一搜索范围作为所述第二搜索范围,其中,所述第一子范围为(N1/2-a,N1/2+a),N1表示所述第一搜索范围的长度,0<a<N1/2。
结合第一方面的第一种可能的实现方式,在第五种可能的实现方式中,在所述根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围之前,所述方法还包括:在所述前一帧的信号为语音信号的情况下,确定所述前一帧的基音周期T是否小于所述第一搜索范围的长度N1;
所述根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围,包括:在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1的情况下,确定所述第二搜索范围为(D1-T/2,D1+T/2);或者,在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1,且D1小于T/2的情况下,确定所述第二搜索范围为(0,T);或者,在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1,且(D1+T/2)大于N1的情况下,确定所述第二搜索范围为(N1-T,T)。
结合第一方面,在第六种可能的实现方式中,在所述根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围之前,所述方法还包括:在所述前一帧的信号类型为语音信号的情况下,确定所述前一帧的基音周期T是否小于所述第一搜索范围的长度N1;
所述根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围,包括:在确定所述前一帧的基音周期T大于或等于所述第一搜索范围的长度N1的情况下,确定所述第一搜索范围作为所述第二搜索范围。
结合第一方面,在第七种可能的实现方式中,所述根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围,包括:在所述前一帧的信号类型为噪声信号的情况下,确定所述第一搜索范围作为所述第二搜索范围。
结合第一方面或第一方面的第一种可能的实现方式至第七种可能的实现方式中任一实现方式,在第八种可能的实现方式中,在所述第二搜索范围内进行第二级搜索之后,所述方法还包括:确定所述第二搜索范围作为第L搜索范围,L为大于或等于3的正整数;在所述第L搜索范围内,进行第L级搜索,以确定在所述第L搜索范围内与所述待恢复数据相关性最大的第L数据的第L起始位置,其中所述第L数据不同于所述第一数据至第(L-1)数据,以便根据所述第一起始位置D1至所述第L起始位置对所述待恢复数据进行恢复。
结合第一方面或第一方面的第一种可能的实现方式至第八种可能的实现方式中任一实现方式,在第九种可能的实现方式中,所述第一搜索范围为从所述前一帧中的第一位置到所述待恢复数据的起始位置的范围;或者,所述第一搜索范围为从所述当前帧中已恢复数据的起始位置到所述当前帧的结束位置的范围。
第二方面,提供了一种恢复丢失数据的设备,包括:搜索单元,用于在当前帧中存在待恢复数据的情况下,在第一搜索范围内,进行第一级搜索,以确定所述第一搜索范围内与所述待恢复数据相关性最大的第一数据的第一起始位置D1;确定单元,用于根据所述搜索单元得到的所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围,其中所述帧信息包括以下至少一种:所述当前帧的前一帧的基音周期,所述前一帧的信号类型;所述搜索单元,还用于在所述第二搜索范围内,进行第二级搜索,以确定第二数据的第二起始位置,所述第二数据是除所述第一数据之外的与所述待恢复数据相关性最大的数据,以便至少根据所述第一起始位置D1和所述第二起始位置对所述待恢复数据进行恢复。
结合第二方面,在第一种可能的实现方式中,所述第二搜索范围小于所述第一搜索范围。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述确定单元还用于,在根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围之前,在所述第一起始位置D1位于所述第一搜索范围内的第一子范围的情况下,确定所述前一帧的基音周期T是否小于所述第一搜索范围的长度N1,其中,所述第一子范围为(N1/2-a,N1/2+a),0<a<N1/2;
所述确定单元具体用于:在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1的情况下,确定所述第二搜索范围为(D1-T/2,D1+T/2);或者,在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1,且D1小于T/2的情况下,确定所述第二搜索范围为(0,T);或者,在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1,且(D1+T/2)大于N1的情况下,确定所述第二搜索范围为(N1-T,T)。
结合第二方面,在第三种可能的实现方式中,所述确定单元还用于,在根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围之前,在所述第一起始位置D1位于所述第一搜索范围内的第一子范围的情况下,确定所述前一帧的基音周期T是否小于所述第一搜索范围的长度N1,其中,所述第一子范围为(N1/2-a,N1/2+a),0<a<N1/2;所述确定单元具体用于在确定所述前一帧的基音周期T大于或等于所述第一搜索范围的长度N1的情况下,确定所述第一搜索范围作为所述第二搜索范围。
结合第二方面,在第四种可能的实现方式中,所述确定单元具体用于在所述第一起始位置D1没有位于所述第一搜索范围内的第一子范围的情况下,确定所述第一搜索范围作为所述第二搜索范围,其中,所述第一子范围为(N1/2-a,N1/2+a),N1表示所述第一搜索范围的长度,0<a<N1/2。
结合第二方面的第一种可能的实现方式,在第五种可能的实现方式中,所述确定单元还用于在根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围之前,在所述前一帧的信号为语音信号的情况下,确定所述前一帧的基音周期T是否小于所述第一搜索范围的长度N1;
所述确定单元具体用于:在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1的情况下,确定所述第二搜索范围为(D1-T/2,D1+T/2);或者,在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1,且D1小于T/2的情况下,确定所述第二搜索范围为(0,T);或者,在确定所述前一帧的基音周期T小于所述第一搜索范围的长度N1,且(D1+T/2)大于N1的情况下,确定所述第二搜索范围为(N1-T,T)。
结合第二方面,在第六种可能的实现方式中,所述确定单元还用于,在根据所述第一起始位置D1和/或帧信息,在所述第一搜索范围内确定第二搜索范围之前,在所述前一帧的信号类型为语音信号的情况下,确定所述前一帧的基音周期T是否小于所述第一搜索范围的长度N1;所述确定单元具体用于在确定所述前一帧的基音周期T大于或等于所述第一搜索范围的长度N1的情况下,确定所述第一搜索范围作为所述第二搜索范围。
结合第二方面,在第七种可能的实现方式中,所述确定单元具体用于在所述前一帧的信号类型为噪声信号的情况下,确定所述第一搜索范围作为所述第二搜索范围。
结合第二方面或第二方面的第一种可能的实现方式至第七种可能的实现方式中任一实现方式,在第八种可能的实现方式中,所述确定单元还用于在所述第二搜索范围内进行第二级搜索之后,确定所述第二搜索范围作为第L搜索范围,L为大于或等于3的正整数;所述搜索单元,还用于在所述第L搜索范围内,进行第L级搜索,以确定在所述第L搜索范围内与所述待恢复数据相关性最大的第L数据的第L起始位置,其中所述第L数据不同于所述第一数据至第(L-1)数据,以便根据所述第一起始位置D1至所述第L起始位置对所述待恢复数据进行恢复。
结合第二方面或第二方面的第一种可能的实现方式至第八种可能的实现方式中任一实现方式,在第九种可能的实现方式中,所述第一搜索范围为从所述前一帧中的第一位置到所述待恢复数据的起始位置的范围;或者,所述第一搜索范围为从所述当前帧中已恢复数据的起始位置到所述当前帧的结束位置的范围。
本发明实施例中,通过根据第一级搜索确定的第一数据的第一起始位置和/或帧信息,在第一搜索范围内确定第二搜索范围,并在第二搜索范围内进行第二级搜索以确定第二数据,能够保证各级搜索得到的数据的可靠性,从而使得在根据各级搜索得到的相关数据对待恢复数据进行恢复时能够增强所恢复的数据的前后连续性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
图1是根据本发明实施例的用于恢复丢失数据的方法的示意性流程图。图1的方法由解码端执行,例如可以由融合语音和音频的解码器执行。
110,在当前帧中存在待恢复数据的情况下,在第一搜索范围内,进行第一级搜索,以确定第一搜索范围内与待恢复数据相关性最大的第一数据的第一起始位置D1。
对于融合语音和音频的解码端而言,由于在解码时不仅需要对语音信号进行时域解码,又需要对音频信号进行频域解码,在时频切换时,会导致当前帧的部分数据丢失。因此,如果当前帧中存在待恢复数据,那么解码器需要搜索与待恢复数据相关性最佳的数据,以恢复丢失的数据。在本发明实施例中,解码端可以进行多级搜索。在第一搜索范围内,解码端可以进行第一级搜索,确定与待恢复数据相关性最大的第一数据,从而确定第一数据的第一起始位置D1。相关性的确定方式可以参照现有技术,例如可以采用现有技术计算相关系数,根据相关系数来确定数据之间的相关性。
可选地,作为一个实施例,第一搜索范围可以为从前一帧中的第一位置到待恢复数据的起始位置的范围。或者,第一搜索范围可以为从当前帧中已恢复数据的起始位置到当前帧结束位置的范围。
具体地,第一搜索范围可以为从前一帧中的第一位置到待恢复数据的起始位置的范围,那么解码端在第一搜索范围内进行的第一级搜索可以为向前搜索。第一位置可以是预先设定的。例如,解码端可以预先设定第一位置,使得第一位置到待恢复数据的起始位置的长度为帧长度。
或者,第一搜索范围可以从当前帧中已恢复数据的起始位置到当前帧的结束位置的范围,那么解码端在第一搜索范围内进行的第一级搜索可以为向后搜索。
可见,本发明实施例可以应用于向前搜索,也可以应用于向后搜索。具体地,解码端可以采用本发明实施例的方法进行向前搜索,采用现有技术进行向后搜索。解码端也可以采用本发明实施例的方法进行向后搜索,采用现有技术进行向前搜索。或者,解码端可以采用本发明实施例的方法进行向前搜索和向后搜索。
120,根据第一起始位置D1和/或帧信息,在第一搜索范围内确定第二搜索范围,其中帧信息包括以下至少一种:当前帧的前一帧的基音周期,前一帧的信号类型。
基音周期的原理可以如下:人在发浊音时,气流通过声门使声带产生张驰振荡式振动,产生一股准周期脉冲气流,这一气流激励声道就产生浊音,又称有声语音,它携带着语音中的大部分能量。这种声带振动的频率称为基频,相应的周期就称为基音周期(Pitch)。
130,在第二搜索范围内,进行第二级搜索,以确定第二数据的第二起始位置,第二数据是除第一数据之外的与待恢复数据相关性最大的数据,以便至少根据第一起始位置D1和第二起始位置对待恢复数据进行恢复。
解码端可以在第二搜索范围内,进行第二级搜索,来确定与待恢复数据相关性次大的第二数据。也就是说,第二数据是除第一数据之外的与待恢复数据相关性最大的数据。
从上述可知,现有技术中通过单级搜索来确定与待恢复数据相关的数据,而本发明实施例中,在对待恢复数据进行恢复前,可以进行多级搜索,得到多个与待恢复数据相关的数据,例如,通过第一级搜索得到的第一数据,通过第二级搜索得到的第二数据,从而能够保证搜索出来的相关数据的可靠性,使得在后续根据多级搜索得到的相关数据进行数据恢复时能够增强所恢复的数据的前后连续性。例如,可以根据各级搜索得到的相关数据,从这些数据中选择与待恢复数据的相关性高于某一阈值并且起始位置与待恢复数据最接近的数据,然后利用该数据对待恢复数据进行恢复,这样相比根据单级搜索的结果进行数据恢复,能够增强所恢复的数据的前后连续性。再例如,如果本发明实施例的方法应用于向前搜索,那么可以将得到的多个相关数据的位置与向后搜索得到的相关数据的位置分别组合,参考平滑度参数确定其中的最佳组合,其中该最佳组合能够使得所恢复的数据的平滑度最佳,从而可以根据该最佳组合进行数据恢复。
本发明实施例中,通过根据第一级搜索确定的第一数据的第一起始位置和/或帧信息,在第一搜索范围内确定第二搜索范围,并在第二搜索范围内进行第二级搜索以确定第二数据,能够保证搜索得到的数据的可靠性,从而使得在根据各级搜索得到的相关数据的起始位置对待恢复数据进行恢复时能够增强所恢复的数据的前后连续性。
可选地,作为一个实施例,第二级搜索范围可以小于第一级搜索范围。
由上述可知,本发明实施例中,通过根据第一级搜索得到的第一起始位置和/或帧信息,在第一搜索范围内确定小于第一级搜索范围的第二搜索范围,并在第二搜索范围内进行第二级搜索,而非简单地采用固定的搜索范围进行各级搜索,能够降低多级搜索的复杂度消耗。
可选地,作为另一实施例,在第一起始位置D1位于第一搜索范围内的第一子范围的情况下,在步骤120之前,解码端可以确定前一帧的基音周期T是否小于第一搜索范围的长度N1。其中第一子范围为(N1/2-a,N1/2+a),0<a<N1/2。
如果第一起始位置D1位于第一搜索范围内的第一子范围,那么根据基音周期T与第一搜索范围的长度N1的大小关系,解码端可以确定第二搜索范围的具体取值。其中T的确定方式可以参照现有技术。接下来将描述在4种不同的情况下第二搜索范围的具体取值。本发明实施例中,数据的起始位置可以为时间点。基音周期T的单位可以为时间,因此,可以对D1与T进行相应的运算来确定第二搜索范围。
可选地,作为另一实施例,在步骤120中,如果第一起始位置D1位于第一搜索范围内的第一子范围,解码端可以在确定前一帧的基音周期T小于第一搜索范围的长度N1的情况下,确定第二搜索范围为(D1-T/2,D1+T/2)。
通常,在一定范围内基音会周期性地出现,因此,在基音周期T小于第一搜索范围的长度N1的情况下,在大于基音周期T的搜索范围内进行搜索没有太大意义,因此解码端可以在长度为T的第二搜索范围进行搜索。可见,第二搜索范围(D1-T/2,D1+T/2)小于第一搜索范围,从而能够降低搜索的复杂度消耗。
可选地,作为另一实施例,在步骤120中,如果第一起始位置D1位于第一搜索范围内的第一子范围,解码端可以在确定前一帧的基音周期T小于第一搜索范围的长度N1,且D1小于T/2的情况下,确定第二搜索范围为(0,T)。
类似于上述描述,在大于基音周期T的搜索范围内进行搜索没有太大意义,因此解码端可以在长度为T的第二搜索范围进行搜索。当D1小于T/2时,(D1-T/2)将超出第一搜索范围,因此可以确定第二搜索范围为(0,T),该范围小于第一搜索范围,从而能够降低搜索的复杂度消耗。
可选地,作为另一实施例,在步骤120中,如果第一起始位置D1位于第一搜索范围内的第一子范围,解码端可以在确定前一帧的基音周期T小于第一搜索范围的长度N1,且(D1+T/2)大于N1的情况下,确定第二搜索范围为(N1-T,T)。
类似于上述描述,在大于基音周期T的搜索范围内进行搜索没有太大意义,因此解码端可以在长度为T的第二搜索范围进行搜索。当(D1+T/2)大于N1时,(D1-T/2)将超出第一搜索范围,因此可以确定第二搜索范围为(0,T),该范围小于第一搜索范围,从而能够降低搜索的复杂度消耗。
可选地,作为另一实施例,在步骤120之前,解码端可以在第一起始位置D1位于第一搜索范围内的第一子范围的情况下,确定前一帧的基音周期T是否小于第一搜索范围的长度N1,其中,第一子范围为(N1/2-a,N1/2+a),0<a<N1/2。在步骤120中,解码端可以在确定前一帧的基音周期T大于或等于第一搜索范围的长度N1的情况下,确定第一搜索范围作为第二搜索范围。
如果前一帧的基音周期T大于或等于第一搜索范围的长度N1,那么解码端可以将第一搜索范围作为第二搜索范围来进行第二级搜索。
可选地,作为另一实施例,在步骤120中,在第一起始位置D1没有位于第一搜索范围内的第一子范围的情况下,确定第一搜索范围作为第二搜索范围,其中,第一子范围为(N1/2-a,N1/2+a),N1表示第一搜索范围的长度,0<a<N1/2。
可选地,作为另一实施例,在步骤120之前,解码端可以在前一帧的信号为语音(Voice)信号的情况下,确定前一帧的基音周期T是否小于第一搜索范围的长度N1。
如果前一帧的信号为语音信号,那么根据基音周期T与第一搜索范围的长度N1的大小关系,解码端可以确定第二搜索范围的具体取值。接下来将描述在4种不同的情况下第二搜索范围的具体取值。
可选地,作为另一实施例,在步骤120中,如果前一帧的信号为语音信号,在确定前一帧的基音周期T小于第一搜索范围的长度N1的情况下,解码端可以确定第二搜索范围为(D1-T/2,D1+T/2)。
类似于上述描述,在大于基音周期T的搜索范围内进行搜索没有太大意义,因此解码端可以在长度为T的第二搜索范围进行搜索。可见,本实施例中,第二搜索范围(D1-T/2,D1+T/2)小于第一搜索范围,从而能够降低搜索的复杂度消耗。
可选地,作为另一实施例,在确定前一帧的基音周期T小于第一搜索范围的长度N1,且D1小于T/2的情况下,确定第二搜索范围为(0,T)。
类似于上述描述,在大于基音周期T的搜索范围内进行搜索没有太大意义,因此解码端可以在长度为T的第二搜索范围进行搜索。当D1小于T/2时,(D1-T/2)将超出第一搜索范围,因此可以确定第二搜索范围为(0,T),该范围小于第一搜索范围,从而能够降低搜索的复杂度消耗。
可选地,作为另一实施例,在确定前一帧的基音周期T小于第一搜索范围的长度N1,且(D1+T/2)大于N1的情况下,确定第二搜索范围为(N1-T,T)。
类似于上述描述,在大于基音周期T的搜索范围内进行搜索没有太大意义,因此解码端可以在长度为T的第二搜索范围进行搜索。当(D1+T/2)大于N1时,(D1-T/2)将超出第一搜索范围,因此可以确定第二搜索范围为(0,T),该范围小于第一搜索范围,从而能够降低搜索的复杂度消耗。
可选地,作为另一实施例,在确定前一帧的基音周期T大于或等于第一搜索范围的长度N1的情况下,解码端可以确定第一搜索范围作为第二搜索范围。
可选地,作为另一实施例,在前一帧的信号类型为噪声(Noise)信号的情况下,解码端可以确定第一搜索范围作为第二搜索范围
可选地,作为另一实施例,在步骤130之后,解码端还可以确定第二搜索范围作为第L搜索范围,L为大于或等于3的正整数。解码端还可以在第L搜索范围内,进行第L级搜索,以确定在第L搜索范围内与待恢复数据相关性最大的第L数据的第L起始位置,其中第L数据不同于第一数据至第(L-1)数据,以便根据第一起始位置D1至第L起始位置对待恢复数据进行恢复。
在第二级搜索之后,解码端还可以在第二级搜索范围内进行多级搜索。上述L可以是预先设定的。解码端可以在每级搜索中,确定一个起始位置。例如,在第三级搜索中,解码端可以确定与待恢复数据相关性第三大的数据的起始位置。以此类推,在第L级搜索中,解码端可以确定与待恢复数据相关性第L大的数据的起始位置。在确定L个起始位置后,解码端可以对L个起始位置进行精细筛选。例如,可以参照上面所描述的方式,选择与待恢复数据相关性高于某一阈值并且起始位置与待恢复数据最接近的数据,然后根据该数据对待恢复数据进行恢复。
本发明实施例中,通过进行L级搜索,能够保证L级搜索得到的相关数据的可靠性,使得后续根据L个相关数据对待恢复数据进行恢复时,能够增强所恢复的数据的前后连续性。
而且,如果第二级搜索范围小于第一级搜索范围,那么接下来的第L级搜索的搜索范围也会小于第一级搜索范围,从而能够极大减小搜索的复杂度消耗。
图2a是根据本发明一个实施例的方法的过程的示意性流程图。
201a,如果当前帧中存在待恢复数据,则在第一搜索范围内进行第一级搜索,以确定第一搜索范围内与待恢复数据相关性最大的第一数据的第一起始位置D1。
202a,判断第一起始位置D1是否位于第一搜索范围的第一子范围内,第一子范围为(N1/2-a,N1/2+a),0<a<N1/2。
如果第一起始位置D1不是位于第一子范围内,则转到步骤203a。
如果第一起始位置D1位于第一子范围,则转到步骤204a。
203a,如果第一起始位置D1不是位于第一子范围内,则将第一搜索范围作为第二搜索范围。
204a,如果第一起始位置D1位于第一子范围,则判断前一帧的基音周期T是否小于第一搜索范围的长度N1。
如果基音周期T大于或等于第一搜索范围的长度N1,则仍转到步骤203a,即将第一搜索范围作为第二搜索范围。
如果基音周期T小于第一搜索范围的长度N1,则转到步骤205a。
205a,判断第一起始位置D1是否大于或等于T/2,且(D1+T/2)是否小于或等于N1。
如果D1大于或等于T/2,且(D1+T/2)小于或等于N1,那么转到步骤206a。
如果D1小于T/2,则转到步骤207a。
如果(D1+T/2)大于N1,则转到步骤208a。
206a,确定第二搜索范围为(D1-T/2,D1+T/2)。
207a,确定第二搜索范围为(0,T)。
208a,确定第二搜索范围为(N1-T,T)。
209a,在第二级搜索范围内进行第二级搜索。
由于步骤206a至208a中确定的第二搜索范围小于第一级搜索范围,那么可以降低第二级搜索的复杂度消耗。
210a,在第二级搜索之后,将第二搜索范围作为第L搜索范围。
L为大于或等于3的正整数。在第二级搜索之后,解码端还可以进行第三级以及以上的搜索。L可以是预先设定的。如果第二搜索范围小于第一级搜索范围,例如步骤206a至208a中确定的第二搜索范围,那么也可以降低后续第L级搜索的复杂度消耗。
211a,在第L搜索范围内进行第L级搜索,以确定在第L搜索范围内与待恢复数据相关性最大的第L数据的第L起始位置,其中第L数据不同于第一数据至第(L-1)数据。
本发明实施例中,通过根据第一级搜索确定的第一数据的第一起始位置和/或帧信息,在第一搜索范围内确定第二搜索范围,并在第二搜索范围内进行第二级搜索以确定第二数据,能够保证搜索得到的数据的可靠性,从而使得在根据各级搜索得到的相关数据对待恢复数据进行恢复时能够增强所恢复的数据的前后连续性。
图2b是根据本发明另一实施例的方法的过程的示意性流程图。
201b,如果当前帧中存在待恢复数据,则在第一搜索范围内进行第一级搜索,以确定第一搜索范围内与待恢复数据相关性最大的第一数据的第一起始位置D1。
202b,判断前一帧的信号是否为语音信号。
如果前一帧的信号为噪声信号,则转到步骤203b。
如果前一帧的信号为语音信号,则转到步骤204b。
203b,如果前一帧的信号为噪声信号,则将第一搜索范围作为第二搜索范围。
204b,如果前一帧的信号为语音信号,则判断前一帧的基音周期T是否小于第一搜索范围的长度N1。
步骤205b至211b类似于图2a中的步骤205a至211a,为了避免重复,此处不再赘述。
本发明实施例中,通过根据第一级搜索确定的第一数据的第一起始位置和/或帧信息,在第一搜索范围内确定第二搜索范围,并在第二搜索范围内进行第二级搜索以确定第二数据,能够保证搜索得到的数据的可靠性,从而使得在根据各级搜索得到的相关数据对待恢复数据进行恢复时能够增强所恢复的数据的前后连续性。
图3是根据本发明一个实施例的用于恢复丢失数据的设备的示意框图。图3的设备300的一个例子为解码器。设备300包括搜索单元310和确定单元320。
搜索单元310在当前帧中存在待恢复数据的情况下,在第一搜索范围内,进行第一级搜索,以确定第一搜索范围内与待恢复数据相关性最大的第一数据的第一起始位置D1。确定单元320根据搜索单元310得到的第一起始位置D1和/或帧信息,在第一搜索范围内确定第二搜索范围,其中帧信息包括以下至少一种:当前帧的前一帧的基音周期,前一帧的信号类型。搜索单元310还在第二搜索范围内,进行第二级搜索,以确定第二数据的第二起始位置,第二数据是除第一数据之外的与待恢复数据相关性最大的数据,以便至少根据第一起始位置D1和第二起始位置对待恢复数据进行恢复。
本发明实施例中,通过根据第一级搜索确定的第一数据的第一起始位置和/或帧信息,在第一搜索范围内确定第二搜索范围,并在第二搜索范围内进行第二级搜索以确定第二数据,能够保证搜索得到的数据的可靠性,从而使得在根据各级搜索得到的相关数据对待恢复数据进行恢复时能够增强所恢复的数据的前后连续性。
可选地,作为一个实施例,第二搜索范围可以小于第一搜索范围。
由上述可知,本发明实施例中,通过根据第一级搜索得到的第一起始位置和/或帧信息,在第一搜索范围内确定小于第一级搜索范围的第二搜索范围,并在第二搜索范围内进行第二级搜索,而非简单地采用固定的搜索范围进行多级搜索,能够降低搜索的复杂度消耗。
可选地,作为另一实施例,确定单元320还可以在根据第一起始位置D1和/或帧信息,在第一搜索范围内确定第二搜索范围之前,在第一起始位置D1位于第一搜索范围内的第一子范围的情况下,确定前一帧的基音周期T是否小于第一搜索范围的长度N1,其中,第一子范围为(N1/2-a,N1/2+a),0<a<N1/2。
确定单元320可以在确定前一帧的基音周期T小于第一搜索范围的长度N1的情况下,确定第二搜索范围为(D1-T/2,D1+T/2。或者确定单元320可以在确定前一帧的基音周期T小于第一搜索范围的长度N1,且D1小于T/2的情况下,确定第二搜索范围为(0,T)。或者确定单元320可以在确定前一帧的基音周期T小于第一搜索范围的长度N1,且(D1+T/2)大于N1的情况下,确定第二搜索范围为(N1-T,T)。
可选地,作为另一实施例,确定单元320还可以在根据第一起始位置D1和/或帧信息,在第一搜索范围内确定第二搜索范围之前,在第一起始位置D1位于第一搜索范围内的第一子范围的情况下,确定前一帧的基音周期T是否小于第一搜索范围的长度N1,其中,第一子范围为(N1/2-a,N1/2+a),0<a<N1/2。
确定单元320可以在确定前一帧的基音周期T大于或等于第一搜索范围的长度N1的情况下,确定第一搜索范围作为第二搜索范围。
可选地,作为另一实施例,确定单元320可以在第一起始位置D1没有位于第一搜索范围内的第一子范围的情况下,确定第一搜索范围作为第二搜索范围,其中,第一子范围为(N1/2-a,N1/2+a),N1表示第一搜索范围的长度,0<a<N1/2。
可选地,作为另一实施例,确定单元320还可以在根据第一起始位置D1和/或帧信息,在第一搜索范围内确定第二搜索范围之前,在前一帧的信号为语音信号的情况下,确定前一帧的基音周期T是否小于第一搜索范围的长度N1。
确定单元320可以在确定前一帧的基音周期T小于第一搜索范围的长度N1的情况下,确定第二搜索范围为(D1-T/2,D1+T/2)。或者,确定单元320可以在确定前一帧的基音周期T小于第一搜索范围的长度N1,且D1小于T/2的情况下,确定第二搜索范围为(0,T)。或者,确定单元320可以在确定前一帧的基音周期T小于第一搜索范围的长度N1,且(D1+T/2)大于N1的情况下,确定第二搜索范围为(N1-T,T)。
可选地,作为另一实施例,确定单元320还可以在根据第一起始位置D1和/或帧信息,在第一搜索范围内确定第二搜索范围之前,在前一帧的信号类型为语音信号的情况下,确定前一帧的基音周期T是否小于第一搜索范围的长度N1。
确定单元320可以在确定前一帧的基音周期T大于或等于第一搜索范围的长度N1的情况下,确定第一搜索范围作为第二搜索范围。
可选地,作为另一实施例,确定单元320可以在前一帧的信号类型为噪声信号的情况下,确定第一搜索范围作为第二搜索范围。
可选地,作为另一实施例,确定单元320还可以在第二搜索范围内进行第二级搜索之后,确定第二搜索范围作为第L搜索范围,L为大于或等于3的正整数。搜索单元310还可以在第L搜索范围内,进行第L级搜索,以确定在第L搜索范围内与待恢复数据相关性最大的第L数据的第L起始位置,其中第L数据不同于第一数据至第(L-1)数据,以便根据第一起始位置D1至第L起始位置对待恢复数据进行恢复。
可选地,作为另一实施例,第一搜索范围可以为从前一帧中的第一位置到待恢复数据的起始位置的范围。或者,第一搜索范围可以为从当前帧中已恢复数据的起始位置到当前帧的结束位置的范围。
图3的设备300的其它功能和操作可以参照上面图1至图2b的方法实施例的过程,为了避免重复,此处不再赘述。
图4是根据本发明另一实施例的用于恢复丢失数据的设备的示意框图。图4的设备400的一个例子为解码器。设备400包括存储器410和处理器420。
存储器410可以包括随机存储器、闪存、只读存储器、可编程只读存储器、非易失性存储器或寄存器等。处理器420可以是中央处理器(Central Processing Unit,CPU)。
存储器410用于存储可执行指令。处理器420可以执行存储器410中存储的可执行指令,用于:在当前帧中存在待恢复数据的情况下,在第一搜索范围内,进行第一级搜索,以确定第一搜索范围内与待恢复数据相关性最大的第一数据的第一起始位置D1;根据第一起始位置D1和/或帧信息,在第一搜索范围内确定第二搜索范围,其中帧信息包括以下至少一种:当前帧的前一帧的基音周期,前一帧的信号类型;在第二搜索范围内,进行第二级搜索,以确定第二数据的第二起始位置,第二数据是除第一数据之外的与待恢复数据相关性最大的数据。
本发明实施例中,通过根据第一级搜索确定的第一数据的第一起始位置和/或帧信息,在第一搜索范围内确定第二搜索范围,并在第二搜索范围内进行第二级搜索以确定第二数据,从而能够保证搜索得到的数据的可靠性,使得在根据各级搜索得到的相关数据对待恢复数据进行恢复时能够增强所恢复的数据的前后连续性。
可选地,作为一个实施例,第二搜索范围可以小于第一搜索范围。
由上述可知,本发明实施例中,通过根据第一级搜索得到的第一起始位置和/或帧信息,在第一搜索范围内确定小于第一级搜索范围的第二搜索范围,并在第二搜索范围内进行第二级搜索,而非简单地采用固定的搜索范围,能够降低搜索的复杂度消耗。
可选地,作为另一实施例,处理器420还可以在根据第一起始位置D1和/或帧信息,在第一搜索范围内确定第二搜索范围之前,在第一起始位置D1位于第一搜索范围内的第一子范围的情况下,确定前一帧的基音周期T是否小于第一搜索范围的长度N1,其中,第一子范围为(N1/2-a,N1/2+a),0<a<N1/2。
处理器420可以在确定前一帧的基音周期T小于第一搜索范围的长度N1的情况下,确定第二搜索范围为(D1-T/2,D1+T/2。或者处理器420可以在确定前一帧的基音周期T小于第一搜索范围的长度N1,且D1小于T/2的情况下,确定第二搜索范围为(0,T)。或者处理器420可以在确定前一帧的基音周期T小于第一搜索范围的长度N1,且(D1+T/2)大于N1的情况下,确定第二搜索范围为(N1-T,T)。
可选地,作为另一实施例,处理器420还可以在根据第一起始位置D1和/或帧信息,在第一搜索范围内确定第二搜索范围之前,在第一起始位置D1位于第一搜索范围内的第一子范围的情况下,确定前一帧的基音周期T是否小于第一搜索范围的长度N1,其中,第一子范围为(N1/2-a,N1/2+a),0<a<N1/2。
处理器420可以在确定前一帧的基音周期T大于或等于第一搜索范围的长度N1的情况下,确定第一搜索范围作为第二搜索范围。
可选地,作为另一实施例,处理器420可以在第一起始位置D1没有位于第一搜索范围内的第一子范围的情况下,确定第一搜索范围作为第二搜索范围,其中,第一子范围为(N1/2-a,N1/2+a),N1表示第一搜索范围的长度,0<a<N1/2。
可选地,作为另一实施例,处理器420还可以在根据第一起始位置D1和/或帧信息,在第一搜索范围内确定第二搜索范围之前,在前一帧的信号为语音信号的情况下,确定前一帧的基音周期T是否小于第一搜索范围的长度N1。
处理器420可以在确定前一帧的基音周期T小于第一搜索范围的长度N1的情况下,确定第二搜索范围为(D1-T/2,D1+T/2)。或者,处理器420可以在确定前一帧的基音周期T小于第一搜索范围的长度N1,且D1小于T/2的情况下,确定第二搜索范围为(0,T)。或者,处理器420可以在确定前一帧的基音周期T小于第一搜索范围的长度N1,且(D1+T/2)大于N1的情况下,确定第二搜索范围为(N1-T,T)。
可选地,作为另一实施例,处理器420还可以在根据第一起始位置D1和/或帧信息,在第一搜索范围内确定第二搜索范围之前,在前一帧的信号类型为语音信号的情况下,确定前一帧的基音周期T是否小于第一搜索范围的长度N1。
处理器420可以在确定前一帧的基音周期T大于或等于第一搜索范围的长度N1的情况下,确定第一搜索范围作为第二搜索范围。
可选地,作为另一实施例,处理器420可以在前一帧的信号类型为噪声信号的情况下,确定第一搜索范围作为第二搜索范围。
可选地,作为另一实施例,处理器420还可以在第二搜索范围内进行第二级搜索之后,确定第二搜索范围作为第L搜索范围,L为大于或等于3的正整数。处理器420还可以在第L搜索范围内,进行第L级搜索,以确定在第L搜索范围内与待恢复数据相关性最大的第L数据的第L起始位置,其中第L数据不同于第一数据至第(L-1)数据,以便根据第一起始位置D1至第L起始位置对待恢复数据进行恢复。
可选地,作为另一实施例,第一搜索范围可以为从前一帧中的第一位置到待恢复数据的起始位置的范围。或者,第一搜索范围可以为从当前帧中已恢复数据的起始位置到当前帧的结束位置的范围。
图4的设备400的其它功能和操作可以参照上面图1至图2b的方法实施例的过程,为了避免重复,此处不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。