时延估计方法及装置与流程

文档序号:16636463发布日期:2019-01-16 07:04阅读:690来源:国知局
时延估计方法及装置与流程

本申请涉及音频处理领域,特别涉及一种时延估计方法及装置。



背景技术:

相对于单声道信号来说,由于多声道信号(如立体声信号)更具有方位感和分布感,因此,备受人们青睐。多声道信号是由至少两路单声道信号组成的。例如,立体声信号是两路单声道信号,即左声道信号和右声道信号组成的。对立体声信号进行编码,可以是对立体声信号的左声道信号和右声道信号进行时域下混处理得到两路信号,再对得到的两路信号进行编码,这两路信号分别为:主要声道信号和次要声道信号。其中,主要声道信号用于表征立体声信号中的两路单声道信号之间的相关信息;次要声道信号用于表征立体声信号中的两路单声道信号之间的差异信息。

如果两路单声道信号之间的时延越小,则主要声道信号越大,立体声信号的编码效率越高,编解码质量越好;反之,如果两路的单声道信号之间的时延越大,则次要声道信号越大,立体声信号的编码效率越低,编解码质量越差。为了保证编解码得到的立体声信号有较好的效果,需要估计立体声信号中的两路单声道信号之间的时延,即声道间时间差(itd,inter-channletimedifference),根据估计出的声道间时间差通过时延对齐处理从而使得两路单声道信号之间对齐,增强主要声道信号。

一种典型的时域上的时延估计方法,包括:根据至少一个过去帧的互相关系数,对当前帧的立体声信号的互相关系数进行平滑处理,得到平滑后的互相关系数;从该平滑后的互相关系数中搜索最大值,将该最大值对应的索引值确定为当前帧的声道间时间差。其中,当前帧的平滑因子是根据输入信号的能量或者其它特征自适应调整得到的一个数值。互相关系数,用于指示不同的声道间时间差对应的时延调整后两路单声道信号的互相关程度,其中,互相关系数也可以称作互相关函数。

音频编码设备采用统一的标准(当前帧的平滑因子),对当前帧的所有互相关值进行平滑,可能会导致一部分互相关值被过度平滑;和/或,另一部分互相关值平滑不足的问题。



技术实现要素:

为了解决音频编码设备对当前帧的互相关系数中的互相关值过度平滑,或者平滑不足,导致音频编码设备估计出的声道间时间差不准确的问题,本申请实施例提供了一种时延估计方法及装置。

第一方面,提供了一种时延估计方法,该方法包括:确定当前帧的多声道信号的互相关系数;根据缓存的至少一个过去帧的声道间时间差信息,确定当前帧的时延轨迹估计值;确定当前帧的自适应窗函数;根据当前帧的时延轨迹估计值和当前帧的自适应窗函数,对互相关系数进行加权,得到加权后的互相关系数;根据加权后的互相关系数确定当前帧的声道间时间差。

通过计算当前帧的时延轨迹估计值来预测当前帧的声道间时间差;根据当前帧的时延轨迹估计值和当前帧的自适应窗函数,对互相关系数进行加权;由于自适应窗函数是升余弦窗,具有相对地放大中间部分抑制边缘部分的功能,这就使得根据当前帧的时延轨迹估计值和当前帧的自适应窗函数,对互相关系数进行加权时,离时延轨迹估计值越近,加权系数越大,避免了对第一互相系数过度平滑的问题;离时延轨迹估计值越远,加权系数越小,避免了对第二互相关系数平滑不足的问题;这样,实现了通过自适应窗函数自适应地抑制互相关系数中远离时延轨迹估计值的索引值对应的互相关值,提高了从加权后的互相关系数中确定声道间时间差的准确性。其中,第一互相关系数指互相关系数中时延轨迹估计值附近的索引值对应的互相关值,第二互相关系数指互相关系数中远离时延轨迹估计值的索引值对应的互相关值。

结合第一方面,在第一方面的第一种实现中,确定当前帧的自适应窗函数,包括:根据第n-k帧的平滑后的声道间时间差估计偏差,确定当前帧的自适应窗函数,0<k<n。其中,当前帧为第n帧。

通过第n-k帧的平滑后的声道间时间差估计偏差,确定当前帧的自适应窗函数,实现了根据该平滑后的声道间时间差估计偏差,调整自适应窗函数的形状,避免了由于当前帧时延轨迹估计的误差导致生成的自适应窗函数不准确的问题,提高了生成自适应窗函数的准确性。

结合第一方面或第一方面的第一种实现,在第一方面的第二种实现中,确定当前帧的自适应窗函数,包括:根据当前帧的前一帧的平滑后的声道间时间差估计偏差,计算第一升余弦宽度参数;根据当前帧的前一帧的平滑后的声道间时间差估计偏差,计算第一升余弦高度偏移量;根据第一升余弦宽度参数和第一升余弦高度偏移量,确定当前帧的自适应窗函数。

由于当前帧的前一帧的多声道信号与当前的帧的多声道信号之间关联性较大,因此,通过根据该当前帧的前一帧的平滑后的声道间时间差估计偏差,确定的前帧的自适应窗函数,提高了计算前帧的自适应窗函数的准确性。

结合第一方面的第二种实现,在第一方面的第三种实现中,第一升余弦宽度参数的计算公式如下:

win_width1=trunc(width_par1*(a*l_ncshift_ds+1))

width_par1=a_width1*smooth_dist_reg+b_width1

其中,a_width1=(xh_width1-xl_width1)/(yh_dist1-yl_dist1)

b_width1=xh_width1-a_width1*yh_dist1

其中,win_width1为第一升余弦宽度参数;trunc表示对数值进行四舍五入取整;l_ncshift_ds为声道间时间差的绝对值的最大值;a为预先设定的常数,a大于等于4;xh_width1为第一升余弦宽度参数的上限值;xl_width1为第一升余弦宽度参数的下限值;yh_dist1为第一升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差;yl_dist1为第一升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差;smooth_dist_reg为当前帧的前一帧的平滑后的声道间时间差估计偏差;xh_width1、xl_width1、yh_dist1和yl_dist1均为正数。

结合第一方面的第三种实现,在第一方面的第四种实现中,

width_par1=min(width_par1,xh_width1);

width_par1=max(width_par1,xl_width1);

其中,min表示取最小值,max表示取最大值。

通过在width_par1大于第一升余弦宽度参数的上限值时,将width_par1限定为该第一升余弦宽度参数的上限值;在width_par1小于第一升余弦宽度参数的下限值时,将width_par1限定为该第一升余弦宽度参数的下限值,保证width_par1的值不会超过升余弦宽度参数的正常取值范围,从而保证计算出的自适应窗函数的准确性。

结合第一方面的第二种实现至第四种实现中的任意一种,在第一方面的第五种实现中,第一升余弦高度偏移量的计算公式如下:

win_bias1=a_bias1*smooth_dist_reg+b_bias1

其中,a_bias1=(xh_bias1-xl_bias1)/(yh_dist2-yl_dist2)

b_bias1=xh_bias1-a_bias1*yh_dist2

其中,win_bias1为第一升余弦高度偏移量;xh_bias1为第一升余弦高度偏移量的上限值;xl_bias1为第一升余弦高度偏移量的下限值;yh_dist2为第一升余弦高度偏移量的上限值对应的平滑后的声道间时间差估计偏差;yl_dist2为第一升余弦高度偏移量的下限值对应的平滑后的声道间时间差估计偏差;smooth_dist_reg为当前帧的前一帧的平滑后的声道间时间差估计偏差;yh_dist2、yl_dist2、xh_bias1和xl_bias1均为正数。

结合第一方面的第五种实现,在第一方面的第六种实现中,

win_bias1=min(win_bias1,xh_bias1);

win_bias1=max(win_bias1,xl_bias1);

其中,min表示取最小值,max表示取最大值。

通过在win_bias1大于第一升余弦高度偏移量的上限值时,将win_bias1限定为该第一升余弦高度偏移量的上限值;在win_bias1小于第一升余弦高度偏移量的下限值时,将win_bias1限定为该第一升余弦高度偏移量的下限值,保证win_bias1的值不会超过升余弦高度偏移量的正常取值范围,保证计算出的自适应窗函数的准确性。

结合第一方面的第二种实现至第五种实现中的任意一种,在第一方面的第七种实现中,

yh_dist2=yh_dist1;yl_dist2=yl_dist1。

结合第一方面、第一方面的第一种实现至第七种实现中的任意一种,在第一方面的第八种实现中,

当0≤k≤trunc(a*l_ncshift_ds/2)-2*win_width1-1时,

loc_weight_win(k)=win_bias1

当trunc(a*l_ncshift_ds/2)-2*win_width1≤k≤trunc(a*l_ncshift_ds/2)+2*win_width1-1时,

loc_weight_win(k)=0.5*(1+win_bias1)+0.5*(1-win_bias1)*cos(π*(k-

trunc(a*l_ncshift_ds/2))/(2*win_width1))

当trunc(a*l_ncshift_ds/2)+2*win_width1≤k≤a*l_ncshift_ds时,

loc_weight_win(k)=win_bias1

其中,loc_weight_win(k),k=0,1,…,a*l_ncshift_ds,用于表征自适应窗函数;a为预设的常数,且a大于等于4,l_ncshift_ds为声道间时间差的绝对值的最大值;win_width1为第一升余弦宽度参数;win_bias1为第一升余弦高度偏移量。

结合第一方面的第一种实现至第八种实现中的任意一种,在第一方面的第九种实现中,根据加权后的互相关系数确定当前帧的声道间时间差之后,还包括:根据当前帧的前一帧的平滑后的声道间时间差估计偏差、当前帧的时延轨迹估计值和当前帧的声道间时间差,计算当前帧的平滑后的声道间时间差估计偏差。

通过在确定出当前帧的声道间时间差之后,计算当前帧的平滑后的声道间时间差估计偏差;在确定下一帧的声道间时间差时,能够使用该当前帧的平滑后的声道间时间差估计偏差,保证了确定下一帧的声道间时间差的准确性。

结合第一方面的第九种实现,在第一方面的第十种实现中,当前帧的平滑后的声道间时间差估计偏差,通过如下计算公式计算获得:

smooth_dist_reg_update=(1-γ)*smooth_dist_reg+γ*dist_reg’

dist_reg’=|reg_prv_corr-cur_itd|

其中,smooth_dist_reg_update为当前帧的平滑后的声道间时间差估计偏差;γ为第一平滑因子,0<γ<1;smooth_dist_reg为当前帧的前一帧的平滑后的声道间时间差估计偏差;reg_prv_corr为当前帧的时延轨迹估计值;cur_itd为当前帧的声道间时间差。

结合第一方面,在第一方面的第十一种实现中,根据互相关系数,确定当前帧的声道间时间差的初始值;根据当前帧的时延轨迹估计值和当前帧的声道间时间差的初始值,计算当前帧的声道间时间差估计偏差;根据当前帧的声道间时间差估计偏差,确定当前帧的自适应窗函数。

通过根据当前帧的声道间时间差的初始值来确定当前帧的自适应窗函数,实现了无需缓存第n个过去帧的平滑后的声道间时间差估计偏差,就能得到当前帧的自适应窗函数,节省了存储资源。

结合第一方面的第十一种实现,在第一方面的第十二种实现中,当前帧的声道间时间差估计偏差通过如下计算公式计算获得:

dist_reg=|reg_prv_corr-cur_itd_init|

其中,dist_reg为当前帧的声道间时间差估计偏差,reg_prv_corr为当前帧的时延轨迹估计值,cur_itd_init为当前帧的声道间时间差的初始值。

结合第一方面的第十一种实现或第十二种实现,在第一方面的第十三种实现中,根据当前帧的声道间时间差估计偏差,计算第二升余弦宽度参数;根据当前帧的声道间时间差估计偏差,计算第二升余弦高度偏移量;根据第二升余弦宽度参数和第二升余弦高度偏移量,确定当前帧的自适应窗函数。

可选地,第二升余弦宽度参数的计算公式如下:

win_width2=trunc(width_par2*(a*l_ncshift_ds+1))

width_par2=a_width2*dist_reg+b_width2

其中,a_width2=(xh_width2-xl_width2)/(yh_dist3-yl_dist3)

b_width2=xh_width2-a_width2*yh_dist3

其中,win_width2为第二升余弦宽度参数;trunc表示对数值进行四舍五入取整;l_ncshift_ds为声道间时间差的绝对值的最大值;a为预先设定的常数,a大于等于4且a*l_ncshift_ds+1为大于零的正整数;xh_width2为第二升余弦宽度参数的上限值;xl_width2为第二升余弦宽度参数的下限值;yh_dist3为第二升余弦宽度参数的上限值对应的声道间时间差估计偏差;yl_dist3为第二升余弦宽度参数的下限值对应的声道间时间差估计偏差;dist_reg为声道间时间差估计偏差;xh_width2、xl_width2、yh_dist3和yl_dist3均为正数。

可选地,第二升余弦宽度参数满足,

width_par2=min(width_par2,xh_width2);

width_par2=max(width_par2,xl_width2);

其中,min表示取最小值,max表示取最大值。

通过在width_par2大于第二升余弦宽度参数的上限值时,将width_par2限定为该第二升余弦宽度参数的上限值;在width_par2小于第二升余弦宽度参数的下限值时,将width_par2限定为该第二升余弦宽度参数的下限值,保证width_par2的值不会超过升余弦宽度参数的正常取值范围,从而保证计算出的自适应窗函数的准确性。

可选地,第二升余弦高度偏移量的计算公式如下:

win_bias2=a_bias2*dist_reg+b_bias2

其中,a_bias2=(xh_bias2-xl_bias2)/(yh_dist4-yl_dist4)

b_bias2=xh_bias2-a_bias2*yh_dist4

其中,win_bias2为第二升余弦高度偏移量;xh_bias2为第二升余弦高度偏移量的上限值;xl_bias2为第二升余弦高度偏移量的下限值;yh_dist4为第二升余弦高度偏移量的上限值对应的声道间时间差估计偏差;yl_dist4为第二升余弦高度偏移量的下限值对应的声道间时间差估计偏差;dist_reg为声道间时间差估计偏差;yh_dist4、yl_dist4、xh_bias2和xl_bias2均为正数。

可选地,第二升余弦高度偏移量满足,

win_bias2=min(win_bias2,xh_bias2);

win_bias2=max(win_bias2,xl_bias2);

其中,min表示取最小值,max表示取最大值。

通过在win_bias2大于第二升余弦高度偏移量的上限值时,将win_bias2限定为该第二升余弦高度偏移量的上限值;在win_bias2小于第二升余弦高度偏移量的下限值时,将win_bias2限定为该第二升余弦高度偏移量的下限值,保证win_bias2的值不会超过升余弦高度偏移量的正常取值范围,保证计算出的自适应窗函数的准确性。

可选地,yh_dist4=yh_dist3;yl_dist4=yl_dist3。

可选地,自适应窗函数通过下述公式表示:

当0≤k≤trunc(a*l_ncshift_ds/2)-2*win_width2-1时,

loc_weight_win(k)=win_bias2

当trunc(a*l_ncshift_ds/2)-2*win_width2≤k≤trunc(a*l_ncshift_ds/2)+2*win_width2-1时,

loc_weight_win(k)=0.5*(1+win_bias2)+0.5*(1-win_bias2)*cos(π*(k-

trunc(a*l_ncshift_ds/2))/(2*win_width2))

当trunc(a*l_ncshift_ds/2)+2*win_width2≤k≤a*l_ncshift_ds时,

loc_weight_win(k)=win_bias2

其中,loc_weight_win(k),k=0,1,…,a*l_ncshift_ds,用于表征自适应窗函数;a为预先设定的常数,a大于等于4,l_ncshift_ds为声道间时间差的绝对值的最大值;win_width2为第二升余弦宽度参数;win_bias为第二升余弦高度偏移量。

结合第一方面、第一方面的第一种实现至第十三种实现中的任意一种,在第一方面的第十四种实现中加权后的互相关系数,通过下述公式表示:

c_weight(x)=c(x)*loc_weight_win(x-trunc(reg_prv_corr)+

trunc(a*l_ncshift_ds/2)-l_ncshift_ds)

其中,c_weight(x)为加权后的互相关系数;c(x)为互相关系数;loc_weight_win为当前帧的自适应窗函数;trunc表示对数值进行四舍五入取整;reg_prv_corr为当前帧的时延轨迹估计值;x为大于等于零且小于等于2*l_ncshift_ds的整数;l_ncshift_ds为声道间时间差的绝对值的最大值。

结合第一方面、第一方面的第一种实现至第十四种实现中的任意一种,在第一方面的第十五种实现中,确定当前帧的自适应窗函数之前,还包括:根据当前帧的前一帧的编码参数,确定当前帧的自适应窗函数的自适应参数;其中,编码参数用于指示当前帧的前一帧的多声道信号的类型,或者,所述编码参数用于指示经过时域下混处理的当前帧的前一帧的多声道信号的类型;自适应参数用于确定当前帧的自适应窗函数。

由于当前帧的自适应窗函数随着当前帧的多声道信号的类型的不同,需要自适应地变化,从而保证计算出的当前帧的声道间时间差的准确性,而当前帧的多声道信号的类型与当前帧的前一帧的多声道信号的类型相同的概率较大,因此,通过根据当前帧的前一帧的编码参数,确定当前帧的自适应窗函数的自适应参数,在无需额外增加计算复杂度的同时提高了确定出的自适应窗函数的准确性。

结合第一方面、第一方面的第一种实现至第十五种实现中的任意一种,在第一方面的第十六种实现中,根据缓存的至少一个过去帧的声道间时间差信息,确定当前帧的时延轨迹估计值,包括:根据缓存的至少一个过去帧的声道间时间差信息,通过线性回归方法进行时延轨迹估计,确定当前帧的时延轨迹估计值。

结合第一方面、第一方面的第一种实现至第十五种实现中的任意一种,在第一方面的第十七种实现中,根据缓存的至少一个过去帧的声道间时间差信息,确定当前帧的时延轨迹估计值,包括:根据缓存的至少一个过去帧的声道间时间差信息,通过加权线性回归方法进行时延轨迹估计,确定当前帧的时延轨迹估计值。

结合第一方面、第一方面的第一种实现至第十七种实现中的任意一种,在第一方面的第十八种实现中,根据加权后的互相关系数确定当前帧的声道间时间差之后,还包括:对缓存的至少一个过去帧的声道间时间差信息进行更新,至少一个过去帧的声道间时间差信息为至少一个过去帧的声道间时间差平滑值或至少一个过去帧的声道间时间差。

通过对缓存至少一个过去帧的声道间时间差信息进行更新,在计算下一帧的声道间时间差时,能够根据更新后的时延差信息进行计算下一帧的时延轨迹估计值,从而提高了计算下一帧的声道间时间差的准确性。

结合第一方面的第十八种实现,在第一方面的第十九种实现中,缓存的至少一个过去帧的声道间时间差信息为至少一个过去帧的声道间时间差平滑值,对缓存的至少一个过去帧的声道间时间差信息进行更新,包括:根据当前帧的时延轨迹估计值和当前帧的声道间时间差,确定当前帧的声道间时间差平滑值;根据当前帧的声道间时间差平滑值,对缓存的至少一个过去帧的声道间时间差平滑值进行更新。

结合第一方面的第十九种实现,在第一方面的第二十种实现中,当前帧的声道间时间差平滑值,通过如下计算公式获得:

其中,cur_itd_smooth为当前帧的声道间时间差平滑值;为第二平滑因子,reg_prv_corr为当前帧的时延轨迹估计值,cur_itd为当前帧的声道间时间差;为大于等于0且小于等于1的常数。

结合第一方面的第十八种实现至第二十种实现中的任意一种,在第一方面的第二十一种实现中,对缓存的至少一个过去帧的声道间时间差信息进行更新,包括:当当前帧的前一帧的语音激活检测结果为激活帧或当前帧的语音激活检测结果为激活帧时,对缓存的至少一个过去帧的声道间时间差信息进行更新。

由于在当前帧的前一帧的语音激活检测结果为激活帧或当前帧的语音激活检测结果为激活帧时,说明当前帧的多声道信号是激活帧的概率较大,在当前帧的多声道信号是激活帧时,当前帧的声道间时间差信息有效性较高,因此,通过据当前帧的前一帧的语音激活检测结果或当前帧的语音激活检测结果,确定是否对缓存的至少一个过去帧的声道间时间差信息进行更新,提高了缓存的至少一个过去帧的声道间时间差信息的有效性。

结第一方面的第十七种实现至第二十一种实现中的至少一种,在第一方面的第二十二种实现中,根据加权后的互相关系数确定当前帧的声道间时间差之后,还包括:对缓存的至少一个过去帧的加权系数进行更新,至少一个过去帧的加权系数是加权线性回归方法中的系数,加权线性回归方法用于确定当前帧的时延轨迹估计值。

在通过加权线性回归方法确定当前帧的时延轨迹估计值时,通过对缓存的至少一个过去帧的加权系数进行更新,在计算下一帧的时延轨迹估计值时,能够根据更新后的加权系数进行计算,提高了计算下一帧的时延轨迹估计值的准确性。

结合第一方面的第二十二种实现,在第一方面的第二十三种实现中,在当前帧的自适应窗函数是根据当前帧的前一帧的平滑后的声道间时间差确定的时,对缓存的至少一个过去帧的加权系数进行更新,包括:根据当前帧的平滑后的声道间时间差估计偏差,计算当前帧的第一加权系数;根据当前帧的第一加权系数,对缓存的至少一个过去帧的第一加权系数进行更新。

结合第一方面的第二十三种实现,在第一方面的第二十四种实现中,当前帧的第一加权系数,通过如下计算公式计算获得:

wgt_par1=a_wgt1*smooth_dist_reg_update+b_wgt1

a_wgt1=(xl_wgt1-xh_wgt1)/(yh_dist1’-yl_dist1’)

b_wgt1=xl_wgt1-a_wgt1*yh_dist1’

其中,wgt_par1为当前帧的第一加权系数,smooth_dist_reg_update为当前帧的平滑后的声道间时间差估计偏差;xh_wgt为第一加权系数的上限值;xl_wgt为第一加权系数的下限值;yh_dist1’为第一加权系数的上限值对应的平滑后的声道间时间差估计偏差,yl_dist1’为第一加权系数的下限值对应的平滑后的声道间时间差估计偏差;yh_dist1’、yl_dist1’、xh_wgt1和xl_wgt1均为正数。

结合第一方面的第二十四种实现,在第一方面的第二十五种实现中,

wgt_par1=min(wgt_par1,xh_wgt1);

wgt_par1=max(wgt_par1,xl_wgt1);

其中,min表示取最小值,max表示取最大值。

通过在wgt_par1大于第一加权系数的上限值时,将wgt_par1限定为该第一加权系数的上限值;在wgt_par1小于第一加权系数的下限值时,将wgt_par1限定为该第一加权系数的下限值,保证wgt_par1的值不会超过第一加权系数的正常取值范围,保证计算出的当前帧的时延轨迹估计值的准确性。

结合第一方面的第二十二种实现,在第一方面的第二十六种实现中,在当前帧的自适应窗函数是根据当前帧的声道间时间差估计偏差确定的时,对缓存的至少一个过去帧的加权系数进行更新,包括:根据当前帧的声道间时间差估计偏差,计算当前帧的第二加权系数;根据当前帧的第二加权系数,对缓存的至少一个过去帧的第二加权系数进行更新。

可选地,所述当前帧的第二加权系数,通过如下计算公式计算获得:

wgt_par2=a_wgt2*dist_reg+b_wgt2

a_wgt2=(xl_wgt2-xh_wgt2)/(yh_dist2’-yl_dist2’)

b_wgt2=xl_wgt2-a_wgt2*yh_dist2’

其中,wgt_par2为所述当前帧的第二加权系数,dist_reg为所述当前帧的声道间时间差估计偏差;xh_wgt2为第二加权系数的上限值;xl_wgt2为第二加权系数的下限值;yh_dist2’为所述第二加权系数的上限值对应的声道间时间差估计偏差,yl_dist2’为所述第二加权系数的下限值对应的声道间时间差估计偏差;所述yh_dist2’、所述yl_dist2’、所述xh_wgt2和所述xl_wgt2均为正数。

可选地,wgt_par2=min(wgt_par2,xh_wgt2);wgt_par2=max(wgt_par2,xl_wgt2)。

结合第一方面的第二十三种至第二十六种实现中的任意一种,在第一方面的第二十七种实现中,对缓存的至少一个过去帧的加权系数进行更新,包括:当当前帧的前一帧的语音激活检测结果为激活帧或当前帧的语音激活检测结果为激活帧时,对缓存的至少一个过去帧的加权系数进行更新。

由于在当前帧的前一帧的语音激活检测结果或当前帧的语音激活检测结果为激活帧时,说明当前帧的多声道信号是激活帧的概率较大,在当前帧的多声道信号是激活帧时,当前帧的加权系数有效性较高,因此,通过据当前帧的前一帧的语音激活检测结果或当前帧的语音激活检测结果,确定是否对缓存的至少一个过去帧的加权系数进行更新,提高了缓存的至少一个过去帧的加权系数的有效性。

第二方面,提供了一种时延估计装置,该装置包括至少一个单元,该至少一个单元用于实现上述第一方面或第一方面中的任意一种实现所提供的时延估计方法。

第三方面,提供了一种音频编码设备,该音频编码设备包括:处理器、与所述处理器相连的存储器;

该存储器被配置为由处理器控制,该处理器用于实现上述第一方面或第一方面中的任意一种实现所提供的时延估计方法。

第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在音频编码设备上运行时,使得音频编码设备执行上述第一方面或第一方面中的任意一种实现所提供的时延估计方法。

附图说明

图1a是本申请一个示例性实施例提供的立体声信号编解码系统的结构示意图;

图1b是本申请另一个示例性实施例提供的立体声信号编解码系统的结构示意图;

图1c是本申请另一个示例性实施例提供的立体声信号编解码系统的结构示意图;

图2是本申请一个示例性实施例提供的声道间时间差的示意图;

图3是本申请一个示例性实施例提供的时延估计方法的流程图;

图4a是本申请一个示例性实施例提供的自适应窗函数的示意图;

图4b是本申请一个示例性实施例提供的升余弦宽度参数与声道间时间差估计偏差信息之间的关系示意图;

图4c是本申请一个示例性实施例提供的升余弦高度偏移量与声道间时间差估计偏差信息之间的关系示意图;

图5是本申请一个示例性实施例提供的缓存的示意图;

图6是本申请一个示例性实施例提供的更新缓存的示意图;

图7是本申请一个示例性实施例提供的音频编码设备的结构示意图;

图8是本申请一个实施例提供的时延估计装置的框图。

具体实施方式

本文所提及的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。

在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

请参考图1a,其示出了本申请一个示例性实施例提供的时域上的立体声编解码系统的结构示意图。立体声编解码系统包括编码组件110和解码组件120。

编码组件110用于对立体声信号在时域上进行编码。可选地,编码组件110可以通过软件实现;或者,也可以通过硬件实现;或者,还可以通过软硬件结合的形式实现,本实施例对此不作限定。

编码组件110对立体声信号在时域上进行编码包括如下几个步骤:

1)对获取到的立体声信号进行时域预处理,得到预处理后的左声道信号和预处理后的右声道信号。

立体声信号由采集组件采集到并发送至编码组件110。可选地,采集组件可以与编码组件110设置于同一设备中;或者,也可以与编码组件110设置于不同设备中。

其中,预处理后的左声道信号和预处理后的右声道信号是预处理后的立体声信号中的两路信号。

可选地,预处理包括高通滤波处理、预加重处理、采样率转换、声道转换中的至少一种,本实施例对此不作限定。

2)根据预处理后的左声道信号和预处理后的右声道信号进行时延估计,得到预处理后的左声道信号和预处理后的右声道信号之间的声道间时间差。

3)根据声道间时间差对预处理后的左声道信号和预处理后的右声道信号进行时延对齐处理,得到时延对齐处理后的左声道信号和时延对齐处理后的右声道信号。

4)对声道间时间差进行编码,得到声道间时间差的编码索引。

5)计算用于时域下混处理的立体声参数,并对该用于时域下混处理的立体声参数进行编码,得到用于时域下混处理的立体声参数的编码索引。

其中,用于时域下混处理的立体声参数用于对时延对齐处理后的左声道信号和时延对齐处理后的右声道信号进行时域下混处理。

6)根据用于时域下混处理的立体声参数对时延对齐处理后的左声道信号和时延对齐处理后的右声道信号进行时域下混处理,得到主要声道信号和次要声道信号。

时域下混处理用于获取主要声道信号和次要声道信号。

时延对齐处理后的左声道信号和时延对齐处理后的右声道信号通过时域下混技术处理后,得到主要声道信号(primarychannel,或称中央通道(midchannel)的声道信号)和次要声道信号(secondarychannel,或称边通道(sidechannel)的声道信号)。

主要声道信号用于表征信道间的相关信息;次要声道信号用于表征声道间的差异信息。当时延对齐处理后的左声道信号和时延对齐处理后的右声道信号在时域上对齐时,次要声道信号最小,此时,立体声信号的效果最好。

参考图2所示的第n帧的预处理后的左声道信号l和预处理后的右声道信号r。其中,预处理后的左声道信号l在预处理后的右声道信号r之前,即,相对于预处理后的右声道信号r来说,预处理后的左声道信号l存在延迟,预处理后的左声道信号l与预处理后的右声道信号r之间存在声道间时间差21。在这种情况下,次要声道信号增强,主要声道信号减弱,立体声信号的效果较差。

7)分别对主要声道信号和次要声道信号进行编码,得到主要声道信号对应的第一单声道编码码流以及次要声道信号对应的第二单声道编码码流。

8)将声道间时间差的编码索引、立体声参数的编码索引、第一单声道编码码流和第二单声道编码码流写入立体声编码码流。

解码组件120用于对编码组件110生成的立体声编码码流进行解码,得到立体声信号。

可选地,编码组件110与解码组件120通过有线或无线的方式相连,解码组件120通过该连接获取编码组件110生成的立体声编码码流;或者,编码组件110将生成的立体声编码码流存储至存储器,解码组件120读取存储器中的立体声编码码流。

可选地,解码组件120可以通过软件实现;或者,也可以通过硬件实现;或者,还可以通过软硬件结合的形式实现,本实施例对此不作限定。

解码组件120对立体声编码码流进行解码,得到立体声信号包括以下几个步骤:

1)对立体声编码码流中的第一单声道编码码流以及第二单声道编码码流进行解码,得到主要声道信号和次要声道信号。

2)根据立体声编码码流获取用于时域上混处理的立体声参数的编码索引,对主要声道信号和次要声道信号进行时域上混处理,得到时域上混处理后的左声道信号和时域上混处理后的右声道信号。

3)根据立体声编码码流获取声道间时间差的编码索引,对时域上混处理后的左声道信号和时域上混处理后的右声道信号进行时延调整,得到立体声信号。

可选地,编码组件110和解码组件120可以设置在同一设备中;或者,也可以设置在不同设备中。设备可以为手机、平板电脑、膝上型便携计算机和台式计算机、蓝牙音箱、录音笔、可穿戴式设备等具有音频信号处理功能的移动终端,也可以是核心网、无线网中具有音频信号处理能力的网元,本实施例对此不作限定。

示意性地,参考图1b,本实施例以编码组件110设置于移动终端130中、解码组件120设置于移动终端140中,移动终端130与移动终端140是相互独立的具有音频信号处理能力的电子设备,且移动终端130与移动终端140之间通过无线或有线网络连接为例进行说明。

可选地,移动终端130包括采集组件131、编码组件110和信道编码组件132,其中,采集组件131与编码组件110相连,编码组件110与编码组件132相连。

可选地,移动终端140包括音频播放组件141、解码组件120和信道解码组件142,其中,音频播放组件141与解码组件110相连,解码组件110与信道编码组件132相连。

移动终端130通过采集组件131采集到立体声信号后,通过编码组件110对该立体声信号进行编码,得到立体声编码码流;然后,通过信道编码组件132对立体声编码码流进行编码,得到传输信号。

移动终端130通过无线或有线网络将该传输信号发送至移动终端140。

移动终端140接收到该传输信号后,通过信道解码组件142对传输信号进行解码得到立体声编码码流;通过解码组件110对立体声编码码流进行解码得到立体声信号;通过音频播放组件播放该立体声信号。

示意性地,参考图1c,本实施例以编码组件110和解码组件120设置于同一核心网或无线网中具有音频信号处理能力的网元150中为例进行说明。

可选地,网元150包括信道解码组件151、解码组件120、编码组件110和信道编码组件152。其中,信道解码组件151与解码组件120相连,解码组件120与编码组件110相连,编码组件110与信道编码组件152相连。

信道解码组件151接收到其它设备发送的传输信号后,对该传输信号进行解码得到第一立体声编码码流;通过解码组件120对立体声编码码流进行解码得到立体声信号;通过编码组件110对该立体声信号进行编码,得到第二立体声编码码流;通过信道编码组件152对该第二立体声编码码流进行编码得到传输信号。

其中,其它设备可以是具有音频信号处理能力的移动终端;或者,也可以是具有音频信号处理能力的其它网元,本实施例对此不作限定。

可选地,网元中的编码组件110和解码组件120可以对移动终端发送的立体声编码码流进行转码。

可选地,本实施例中将安装有编码组件110的设备称为音频编码设备,在实际实现时,该音频编码设备也可以具有音频解码功能,本实施对此不作限定。

可选地,本实施例仅以立体声信号为例进行说明,在本申请中,音频编码设备还可以处理多声道信号,该多声道信号包括至少两路声道信号。

下面对本发明实施例中涉及的若干个名词进行介绍。

当前帧的多声道信号:是指当前估算声道间时间差的一帧多声道信号。当前帧的多声道信号包括至少两路声道信号。其中,不同路的声道信号可以是通过音频编码设备中不同的音频采集组件采集到的,或者,不同路的声道信号也可以是其它设备中不同的音频采集组件采集到的;不同路的声道信号由同一声源发出。

比如:当前帧的多声道信号包括左声道信号l和右声道信号r。其中,左声道信号l为通过左声道音频采集组件采集到的,右声道信号r为通过右声道音频采集组件采集到的,左声道信号l和右声道信号r来源于同一声源。

参考图2,音频编码设备正在估算第n帧的多声道信号的声道间时间差,则第n帧为当前帧。

当前帧的前一帧:是指位于当前帧之前的第一帧,比如:当前帧为第n帧,则当前帧的前一帧为第n-1帧。

可选地,当前帧的前一帧也可以简称为前一帧。

过去帧:在时域上位于当前帧之前,过去帧包括:当前帧的前一帧,当前帧的前两帧,当前帧的前三帧等。参考图2,若当前帧为第n帧,则过去帧包括:第n-1帧、第n-2帧、…、第1帧。

可选地,本申请中,至少一个过去帧可以是位于当前帧之前的m帧,比如:位于当前帧之前的8帧。

下一帧:是指当前帧之后的第一帧。参考图2,若当前帧为第n帧,则下一帧为第n+1帧。

帧长是指一帧多声道信号的时长。可选地,帧长通过采样点的个数来表示,比如:帧长n=320个采样点。

互相关系数:用于表征在不同的声道间时间差下,当前帧的多声道信号中,不同路的声道信号之间的互相关程度,该互相关程度通过互相关值来表示。对于当前帧的多声道信号中的任意两路声道信号来说,在某一声道间时间差下,根据该声道间时间差进行时延调整后的两路声道信号之间越相似,则互相关程度越强,互相关值越大;根据该声道间时间差进行时延调整后的两路声道信号之间的差异越大,则互相关程度越弱,互相关值越小。

互相关系数的索引值对应于声道间时间差,互相关系数中各个索引值对应的互相关值表征了各个声道间时间差对应的时延调整后两路单声道信号的互相关程度。

可选地,互相关系数(cross-correlationcoefficients)又可称为一组互相关值,或称为互相关函数,本申请对此不作限定。

参考图2,在计算第a帧声道信号的互相关系数时,分别计算在不同的声道间时间差下,左声道信号l和右声道信号r之间的互相关值。

比如:当互相关系数的索引值为0时,声道间时间差为-n/2个采样点,使用该声道间时间差对左声道信号l和右声道信号r进行对齐处理,得到的互相关值为k0;

当互相关系数的索引值为1时,声道间时间差为-n/2+1个采样点,使用该声道间时间差对左声道信号l和右声道信号r进行对齐处理,得到的互相关值为k1;

当互相关系数的索引值为2时,声道间时间差为-n/2+2个采样点时,使用该声道间时间差对左声道信号l和右声道信号r进行对齐处理,得到的互相关值为k2;

当互相关系数的索引值为3时,声道间时间差为-n/2+3个采样点时,使用该声道间时间差对左声道信号l和右声道信号r进行对齐处理,得到的互相关值为k3;……

当互相关系数的索引值为n时,声道间时间差为n/2个采样点时,使用该声道间时间差对左声道信号l和右声道信号r进行对齐处理,得到的互相关值为kn。

搜索k0~kn中的最大值,比如:k3最大,则说明在声道间时间差为-n/2+3个采样点时,左声道信号l和右声道信号r最相似,也即,该声道间时间差最接近真实的声道间时间差。

需要补充说明的是,本实施例仅用于说明音频编码设备通过互相关系数确定声道间时间差的原理,在实际实现时,可能不通过上述方法确定。

请参考图3,其示出了本申请一个示例性实施例提供的时延估计方法的流程图。该方法包括以下几个步骤。

步骤301,确定当前帧的多声道信号的互相关系数。

步骤302,根据缓存的至少一个过去帧的声道间时间差信息,确定当前帧的时延轨迹估计值。

可选地,至少一个过去帧在时间上连续,且至少一个过去帧中的最后一帧与当前帧在时间上连续,即,至少一个过去帧中的最后一个过去帧为当前帧的前一帧;或者,至少一个过去帧在时间上间隔预定帧数,且至少一个过去帧中的最后一个过去帧与当前帧间隔预定帧数;或者,至少一个过去帧在时间上不连续,且间隔的帧数不固定,至少一个过去帧中的最后一个过去帧与当前帧间隔的帧数不固定。本实施例不对该预定帧数的数值作限定,比如:2帧。

本实施例不对过去帧的数量作限定,比如:过去帧的数量为8个、12个、25个等。

时延轨迹估计值用于表征当前帧的声道间时间差的预测值。本实施例中,根据至少一个过去帧的声道间时间差信息模拟出一条时延轨迹,根据该时延轨迹计算当前帧的时延轨迹估计值。

可选地,至少一个过去帧的声道间时间差信息为至少一个过去帧的声道间时间差;或者,为至少一个过去帧的声道间时间差平滑值。

其中,每个过去帧的声道间时间差平滑值是根据该帧的时延轨迹估计值和该帧的声道间时间差确定的。

步骤303,确定当前帧的自适应窗函数。

可选地,自适应窗函数为类升余弦窗函数。自适应窗函数具有相对地放大中间部分抑制边缘部分的功能。

可选地,每帧声道信号对应的自适应窗函数不同。

自适应窗函数通过下述公式表示:

当0≤k≤trunc(a*l_ncshift_ds/2)-2*win_width-1时,

loc_weight_win(k)=win_bias

当trunc(a*l_ncshift_ds/2)-2*win_width≤k≤trunc(a*l_ncshift_ds/2)+2*win_width-1时,

loc_weight_win(k)=0.5*(1+win_bias)+0.5*(1-win_bias)*cos(π*(k-trunc

(a*l_ncshift_ds/2))/(2*win_width))

当trunc(a*l_ncshift_ds/2)+2*win_width≤k≤a*l_ncshift_ds时,

loc_weight_win(k)=win_bias

其中,loc_weight_win(k),k=0,1,…,a*l_ncshift_ds用于表征自适应窗函数;a为大于等于4的预设的常数,比如:a=4;trunc表示对数值进行四舍五入取整,比如:在自适应窗函数的公式中对a*l_ncshift_ds/2的值进行四舍五入取整;l_ncshift_ds为声道间时间差的绝对值的最大值;win_width用于表征自适应窗函数的升余弦宽度参数;win_bias用于表征自适应窗函数的升余弦高度偏移量。

可选地,声道间时间差的绝对值的最大值是预先设置的正数,一般为大于零且小于等于帧长的正整数,如40,60,80。

可选地,声道间时间差的最大值或者声道间时间差的最小值是预先设置的正整数,声道间时间差的绝对值的最大值是对该声道间时间差的最大值取绝对值得到的,或者,声道间时间差的绝对值的最大值是对该声道间时间差的最小值取绝对值得到的。

例如,声道间时间差的最大值为40,声道间时间差的最小值为-40,声道间时间差的绝对值的最大值为40,既是对该声道间时间差的最大值取绝对值得到的,也是对该声道间时间差的最小值取绝对值得到的。

又例如,声道间时间差的最大值为40,声道间时间差的最小值为-20,声道间时间差的绝对值的最大值为40,是对该声道间时间差的最大值取绝对值得到的。

又例如,声道间时间差的最大值为40,声道间时间差的最小值为-60,声道间时间差的绝对值的最大值为60,是对该声道间时间差的最小值取绝对值得到的。

根据自适应窗函数的公式可知,自适应窗函数为两边高度固定,中间凸起的类升余弦窗。自适应窗函数由权值恒定窗以及具有高度偏移量的升余弦窗组成,权值恒定窗的权值是根据高度偏移量确定的。自适应窗函数主要由两个参数确定,分别为:升余弦宽度参数和升余弦高度偏移量。

参考图4a所示的自适应窗函数的示意图。相对于宽窗402来说,窄窗401是指自适应窗函数中升余弦窗的窗口的宽度相对较窄,窄窗401对应的时延轨迹估计值与实际的声道间时间差之间的差距相对较小。相对于窄窗401来说,宽窗402是指自适应窗函数中升余弦窗的窗口的宽度相对较宽,宽窗402对应的时延轨迹估计值与实际的声道间时间差之间的差距较大。也即,自适应窗函数中升余弦窗的窗口的宽度,与时延轨迹估计值与实际的声道间时间差之间的差距呈正相关关系。

自适应窗函数的升余弦宽度参数和升余弦高度偏移量,与每帧多声道信号的声道间时间差估计偏差信息有关。声道间时间差估计偏差信息用于表征声道间时间差的预测值与实际值之间的偏差。

参考图4b所示的升余弦宽度参数与声道间时间差估计偏差信息之间的关系示意图。若升余弦宽度参数的上限值为0.25,该升余弦宽度参数的上限值对应的声道间时间差估计偏差信息的值为3.0,此时,该声道间时间差估计偏差信息的值较大,自适应窗函数中升余弦窗的窗口的宽度较宽(参见图4a中的宽窗402);自适应窗函数的升余弦宽度参数的下限值为0.04,该升余弦宽度参数的下限值对应的声道间时间差估计偏差信息的值为1.0,此时,该声道间时间差估计偏差信息的值较小,自适应窗函数中升余弦窗的窗口的宽度较窄(参见图4a中的窄窗401)。

参考图4c所示的升余弦高度偏移量与声道间时间差估计偏差信息之间的关系示意图。其中,升余弦高度偏移量的上限值为0.7,该升余弦高度偏移量的上限值对应的声道间时间差估计偏差信息的值为3.0,此时,该平滑后的声道间时间差估计偏差较大,自适应窗函数中升余弦窗的高度偏移量较大(参见图4a中的宽窗402);升余弦高度偏移量的下限值为0.4,该升余弦高度偏移量的下限值对应的声道间时间差估计偏差信息的值为1.0,此时,该声道间时间差估计偏差信息的值较小,自适应窗函数中升余弦窗的高度偏移量较小(参见图4a中的窄窗401)。

步骤304,根据当前帧的时延轨迹估计值和当前帧的自适应窗函数,对互相关系数进行加权,得到加权后的互相关系数。

加权后的互相关系数可通过如下计算公式计算获得:

c_weight(x)=c(x)*loc_weight_win(x-trunc(reg_prv_corr)+

trunc(a*l_ncshift_ds/2)-l_ncshift_ds)

其中,c_weight(x)为加权后的互相关系数;c(x)为互相关系数;loc_weight_win为当前帧的自适应窗函数;trunc表示对数值进行四舍五入取整,比如:在加权后的互相关系数的公式中对reg_prv_corr进行四舍五入取整,以及,对a*l_ncshift_ds/2的值进行四舍五入取整;reg_prv_corr为当前帧的时延轨迹估计值;x为大于等于零且小于等于2*l_ncshift_ds的整数。

由于自适应窗函数是类升余弦窗,具有相对地放大中间部分抑制边缘部分的功能,这就使得根据当前帧的时延轨迹估计值和当前帧的自适应窗函数,对互相关系数进行加权时,离时延轨迹估计值越近的索引值,对应的互相关值的加权系数越大,离时延轨迹估计值越远的索引值,对应的互相关值的加权系数越小。自适应窗函数的升余弦宽度参数和升余弦高度偏移量自适应地抑制了互相关系数中远离时延轨迹估计值的索引值对应的互相关值。

步骤305,根据加权后的互相关系数确定当前帧的声道间时间差。

根据加权后的互相关系数确定当前帧的声道间时间差,包括:搜索加权后的互相关系数中互相关值的最大值;根据该最大值对应的索引值,确定当前帧的声道间时间差。

可选地,搜索加权后的互相关系数中互相关值的最大值,包括:将互相关系数中的第2个互相关值与第1个互相关值进行比较,得到第1个互相关值和第2个互相关值中的最大值;将第3个互相关值与该最大值进行比较,得到第3个互相关值与该最大值中的最大值;依次循环,将第i个互相关值与上一次比较得到的最大值进行比较,得到第i个互相关值与上一次比较得到的最大值中的最大值;令i=i+1,继续执行将第i个互相关值与上一次比较得到的最大值进行比较的步骤,直至所有互相关值均完成比较,得到互相关值中的最大值。其中,i为大于2的整数。

可选地,根据最大值对应的索引值,确定当前帧的声道间时间差,包括:将最大值对应的索引值与声道间时间差的最小值的和作为当前帧的声道间时间差。

由于互相关系数能够体现出根据不同的声道间时间差进行时延调整后的两路的声道信号之间的互相关程度,而互相关系数的索引值与声道间时间差有对应关系,因此,音频编码设备根据互相关系数的最大值(互相关程度最强)对应的索引值,能够确定出当前帧的声道间时间差。

综上所述,本实施例提供的时延估计方法,通过根据当前帧的时延轨迹估计值来预测当前帧的声道间时间差;根据当前帧的时延轨迹估计值和当前帧的自适应窗函数,对互相关系数进行加权;由于自适应窗函数是类升余弦窗,具有相对地放大中间部分抑制边缘部分的功能,这就使得根据当前帧的时延轨迹估计值和当前帧的自适应窗函数,对互相关系数进行加权时,离时延轨迹估计值越近,加权系数越大,避免了对第一互相系数过度平滑的问题;离时延轨迹估计值越远,加权系数越小,避免了对第二互相关系数平滑不足的问题;这样,实现了通过自适应窗函数自适应地抑制互相关系数中远离时延轨迹估计值的索引值对应的互相关值,提高了从加权后的互相关系数中确定声道间时间差的准确性。其中,第一互相关系数指互相关系数中时延轨迹估计值附近的索引值对应的互相关值,第二互相关系数指互相关系数中远离时延轨迹估计值的索引值对应的互相关值。

下面对图3所示的实施例中步骤301-303进行详细介绍。

第一、对于步骤301中确定当前帧的多声道信号的互相关系数的介绍。

1)音频编码设备根据当前帧的左、右声道时域信号,确定互相关系数。

通常需要预先设置声道间时间差的最大值tmax和声道间时间差的最小值tmin,以便确定互相关系数的计算范围。其中,声道间时间差的最大值tmax和声道间时间差的最小值tmin均为实数,tmax>tmin。其中,tmax和tmin的取值与帧长有关,或者说,tmax和tmin的取值与当前的采样频率有关。

可选地,通过预先设定声道间时间差的绝对值的最大值l_ncshift_ds,来确定声道间时间差的最大值tmax和声道间时间差的最小值tmin。示意性地,声道间时间差的最大值tmax=l_ncshift_ds和声道间时间差的最小值tmin=-l_ncshift_ds。

本申请不对tmax和tmin的取值作限定,示意性地,声道间时间差的绝对值的最大值l_ncshift_ds为40,则tmax=40;tmin=-40。

在一种实现方式中,互相关系数的索引值用于指示声道间时间差与声道间时间差的最小值之间的差值,此时,根据当前帧的左、右声道时域信号,确定互相关系数通过下述公式表示:

在tmin≤0,且0<tmax情况下:

当tmin≤i≤0时,

当0<i≤tmax时,

在tmin≤0,且tmax≤0的情况下:

当tmin≤i≤tmax时,

在tmin≥0,且tmax≥0的情况下:

当tmin≤i≤tmax时,

其中,n为帧长,为当前帧的左声道时域信号,为当前帧的右声道时域信号;c(k)为当前帧的互相关系数;k为互相关系数的索引值,k为不小于0的整数,且,k的取值范围为[0,tmax-tmin]。

假设tmax=40,tmin=-40;那么,音频编码设备使用tmin≤0,且0<tmax情况对应的计算方式确定当前帧的互相关系数,此时,k的取值范围为[0,80]。

在另一种实现方式中,互相关系数的索引值用于指示声道间时间差,此时,音频编码设备根据声道间时间差的最大值和声道间时间差的最小值,确定互相关系数通过下述公式表示:

在tmin≤0,且0<tmax情况下:

当tmin≤i≤0时,

当0<i≤tmax时,

在tmin≤0,且tmax≤0的情况下:

当tmin≤i≤tmax时,

在tmin≥0,且tmax≥0的情况下:

当tmin≤i≤tmax时,

其中,n为帧长,为当前帧的左声道时域信号,为当前帧的右声道时域信号;c(i)为当前帧的互相关系数;i为互相关系数的索引值,i的取值范围为[tmin,tmax]。

假设tmax=40,tmin=-40;那么,音频编码设备使用tmin≤0,且0<tmax对应的计算公式确定当前帧的互相关系数,此时,i的取值范围为[-40,40]。

第二、对于步骤302中确定当前帧的时延轨迹估计值的介绍。

在第一种实现方式中,根据缓存的至少一个过去帧的声道间时间差信息,通过线性回归方法进行时延轨迹估计,确定当前帧的时延轨迹估计值。

本实现方式通过以下几个步骤实现:

1)根据至少一个过去帧的声道间时间差信息和对应的序号,生成m个数据对,m为正整数。

缓存中存储有m个过去帧的声道间时间差信息。

可选地,声道间时间差信息为声道间时间差;或者,声道间时间差信息为声道间时间差平滑值。

可选地,缓存中存储的m个过去帧的声道间时间差遵循先进先出原则,即,先缓存的过去帧的声道间时间差的缓存位置靠前,后缓存的过去帧的声道间时间差的缓存位置靠后。

另外,对于后缓存的过去帧的声道间时间差来说,先缓存的过去帧的声道间时间差先移出缓存。

可选地,本实施例中,每个数据对是由每个过去帧的声道间时间差信息和对应的序号生成的。

序号是指每个过去帧在缓存中的位置,比如:缓存中存储有8个过去帧,则序号分别为0、1、2、3、4、5、6、7。

示意性地,生成的m个数据对为:{(x0,y0),(x1,y1),(x2,y2)…(xr,yr),…,(xm-1,ym-1)}。其中,(xr,yr)为第r+1个数据对,xr用于指示第r+1个数据对的序号,即xr=r;yr用于指示第r+1个数据对对应的过去帧的声道间时间差。r=0,1,…,m-1。

参考图5,其示出了缓存的8个过去帧的示意图,其中,每个序号对应的位置缓存一个过去帧的声道间时间差。此时,8个数据对为:{(x0,y0),(x1,y1),(x2,y2)…(xr,yr),…,(x7,y7)}。此时,r=0,1,2,3,4,5,6,7。

2)根据m个数据对,计算第一线性回归参数和第二线性回归参数。

本实施例中,假设数据对中的yr是关于xr,且测量误差为εr的一个线性函数,该线性函数如下:

yr=α+β*xr+εr

其中,α为第一线性回归参数,β为第二线性回归参数,εr为测量误差。

该线性函数需要满足下述条件:观测点xr对应的观测值yr(实际缓存的声道间时间差信息)与根据该线性函数计算出的估计值α+β*xr之间的距离最小,即,满足代价函数q(α,β)最小化。

代价函数q(α,β)如下:

为了满足上述条件,线性函数中的第一线性回归参数和第二线性回归参数需要满足:

其中,xr用于指示m个数据对中第r+1个数据对的序号;yr为第r+1个数据对中的声道间时间差信息。

3)根据第一线性回归参数与第二线性回归参数,得到当前帧的时延轨迹估计值。

根据第一线性回归参数与第二线性回归参数,计算第m+1个数据对的序号对应的估计值,将该估计值确定为当前帧的时延轨迹估计值。

reg_prv_corr=α+β*m

其中,reg_prv_corr表示当前帧的时延轨迹估计值,m为第m+1个数据对的的序号,α+β*m为第m+1个数据对的估计值。

示意性地,m=8,根据生成的8个数据对确定出α和β后,根据该α和β估计第9个数据对中的声道间时间差,将第9个数据对的声道间时间差确定为当前帧的时延轨迹估计值,即,reg_prv_corr=α+β*8。

可选地,本实施例仅以通过序号和声道间时间差生成数据对的方式为例进行说明,在实际实现时,也可以通过其它方式生成数据对,本实施例对此不作限定。

在第二种实现方式中,根据缓存的至少一个过去帧的声道间时间差信息,通过加权线性回归方法进行时延轨迹估计,确定当前帧的时延轨迹估计值。

本实现方式通过以下几个步骤实现:

1)根据至少一个过去帧的声道间时间差信息和对应的序号,生成m个数据对,m为正整数。

本步骤与第一种实现方式中的步骤1)的相关描述相同,本实施例在此不作赘述。

2)根据m个数据对和m个过去帧的加权系数,计算第一线性回归参数和第二线性回归参数。

可选地,缓存中既存储有m个过去帧的声道间时间差信息,也存储有m个过去帧的加权系数。其中,加权系数用于计算对应的过去帧的时延轨迹估计值。

可选地,每个过去帧的加权系数是根据该过去帧的平滑后的声道间时间差估计偏差计算得到的;或者,每个过去帧的加权系数是根据该过去帧的声道间时间差估计偏差计算得到的。

本实施例中,假设数据对中的yr是关于xr,且测量误差为εr的一个线性函数,该线性函数如下:

yr=α+β*xr+εr

其中,α为第一线性回归参数,β为第二线性回归参数,εr为测量误差。

该线性函数需要满足下述条件:观测点xr对应的观测值yr(实际缓存的声道间时间差信息)与根据该线性函数计算出的估计值α+β*xr之间的加权距离最小,即,满足代价函数q(α,β)最小化。

代价函数q(α,β)如下:

其中,wr为第r个数据对对应的过去帧的加权系数。

为了满足上述条件,线性函数中的第一线性回归参数和第二线性回归参数需要满足:

其中,xr用于指示m个数据对中第r+1个数据对的序号;yr为第r+1个数据对中的声道间时间差信息;wr为在至少一个过去帧中,第r+1个数据对中的声道间时间差信息对应的加权系数。

3)根据第一线性回归参数与第二线性回归参数,得到当前帧的时延轨迹估计值。

本步骤与第一种实现方式中的步骤3)的相关描述相同,本实施例在此不作赘述。

可选地,本实施例仅以通过序号和声道间时间差生成数据对的方式为例进行说明,在实际实现时,也可以通过其它方式生成数据对,本实施例对此不作限定。

需要补充说明的是,本实施例仅以线性回归方法或加权的线性回的方式来计算时延轨迹估计值为例进行说明,在实际实现时,也可以使用其它方式计算时延轨迹估计值,本实施例对此不作限定。示意性地,使用b样条(b-spline)法计算时延轨迹估计值;或者,使用三次样条法计算时延轨迹估计值;或者,使用二次样条法计算时延轨迹估计值。

第三、对于步骤303中确定当前帧的自适应窗函数的介绍。

本实施例中,提供了两种计算当前帧的自适应窗函数的方式,第一种方式根据前一帧的平滑后的声道间时间差估计偏差,确定当前帧的自适应窗函数,此时,声道间时间差估计偏差信息为平滑后的声道间时间差估计偏差,自适应窗函数的升余弦宽度参数和升余弦高度偏移量与平滑后的声道间时间差估计偏差有关;第二种方式:根据当前帧的声道间时间差估计偏差,确定当前帧的自适应窗函数,此时,声道间时间差估计偏差信息为声道间时间差估计偏差,自适应窗函数的升余弦宽度参数和升余弦高度偏移量与声道间时间差估计偏差有关。

下面分别对这两种方式分别进行介绍。

第一种方式通过以下几个步骤实现。

1)根据当前帧的前一帧的平滑后的声道间时间差估计偏差,计算第一升余弦宽度参数。

由于使用靠近当前帧的多声道信号来计算当前帧的自适应窗函数的准确性较高,因此,本实施例中,以根据当前帧的前一帧的平滑后的声道间时间差估计偏差来确定当前帧的自适应窗函数为例进行说明。

可选地,当前帧的前一帧的平滑后的声道间时间差估计偏差存储在缓存中。

本步骤通过下述公式表示:

win_width1=trunc(width_par1*(a*l_ncshift_ds+1))

width_par1=a_width1*smooth_dist_reg+b_width1

其中,a_width1=(xh_width1-xl_width1)/(yh_dist1-yl_dist1)

b_width1=xh_width1-a_width1*yh_dist1

其中,win_width1为第一升余弦宽度参数;trunc表示对数值进行四舍五入取整;l_ncshift_ds为声道间时间差的绝对值的最大值;a为预先设定的常数,a大于等于4。

xh_width1为第一升余弦宽度参数的上限值,比如:图4b中的0.25;xl_width1为第一升余弦宽度参数的下限值,比如:图4b中的0.04;yh_dist1为第一升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差,比如:图4b中0.25对应的3.0;yl_dist1为第一升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差,比如:图4b中0.04对应的1.0。

smooth_dist_reg为当前帧的前一帧的平滑后的声道间时间差估计偏差;xh_width1、xl_width1、yh_dist1和yl_dist1均为正数。

可选地,上述公式中,b_width1=xh_width1-a_width1*yh_dist1可替换为b_width1=xl_width1-a_width1*yl_dist1。

可选地,本步骤中,width_par1=min(width_par1,xh_width1);width_par1=max(width_par1,xl_width1);其中,min表示取最小值,max表示取最大值。即,当计算得到的width_par1大于xh_width1时,将该width_par1设定为xh_width1;当计算得到的width_par1小于xl_width1时,将该width_par1设定为xl_width1。

本实施例中,通过在width_par1大于第一升余弦宽度参数的上限值时,将width_par1限定为该第一升余弦宽度参数的上限值;在width_par1小于第一升余弦宽度参数的下限值时,将width_par1限定为该第一升余弦宽度参数的下限值,保证width_par1的值不会超过升余弦宽度参数的正常取值范围,从而保证计算出的自适应窗函数的准确性。

2)根据当前帧的前一帧的平滑后的声道间时间差估计偏差,计算第一升余弦高度偏移量。

本步骤通过下述公式表示:

win_bias1=a_bias1*smooth_dist_reg+b_bias1

其中,a_bias1=(xh_bias1-xl_bias1)/(yh_dist2-yl_dist2)

b_bias1=xh_bias1-a_bias1*yh_dist2

其中,win_bias1为第一升余弦高度偏移量;xh_bias1为第一升余弦高度偏移量的上限值,比如:图4c中的0.7;xl_bias1为第一升余弦高度偏移量的下限值,比如:图4c中的0.4;yh_dist2为第一升余弦高度偏移量的上限值对应的平滑后的声道间时间差估计偏差,比如:图4c中0.7对应的3.0;yl_dist2为第一升余弦高度偏移量的下限值对应的平滑后的声道间时间差估计偏差,比如:图4c中0.4对应的1.0;smooth_dist_reg为当前帧的前一帧的平滑后的声道间时间差估计偏差;yh_dist2、yl_dist2、xh_bias1和xl_bias1均为正数。

可选地,上述公式中,b_bias1=xh_bias1-a_bias1*yh_dist2可替换为b_bias1=xl_bias1-a_bias1*yl_dist2。

可选地,本实施例中,win_bias1=min(win_bias1,xh_bias1);win_bias1=max(win_bias1,xl_bias1)。即,当计算得到的win_bias1大于xh_bias1时,将win_bias1设定为xh_bias1;当计算得到的win_bias1小于xl_bias1时,将win_bias1设定为xl_bias1。

可选地,yh_dist2=yh_dist1;yl_dist2=yl_dist1。

3)根据第一升余弦宽度参数和第一升余弦高度偏移量,确定当前帧的自适应窗函数。

将第一升余弦宽度参数和第一升余弦高度偏移量带入步骤303中的自适应窗函数中,得到如下计算公式:

当0≤k≤trunc(a*l_ncshift_ds/2)-2*win_width1-1时,

loc_weight_win(k)=win_bias1

当trunc(a*l_ncshift_ds/2)-2*win_width1≤k≤trunc(a*l_ncshift_ds/2)+2*win_width1-1时,

loc_weight_win(k)=0.5*(1+win_bias1)+0.5*(1-win_bias1)*cos(π*(k-trunc

(a*l_ncshift_ds/2))/(2*win_width1))

当trunc(a*l_ncshift_ds/2)+2*win_width1≤k≤a*l_ncshift_ds时,

loc_weight_win(k)=win_bias1

其中,loc_weight_win(k),k=0,1,…,a*l_ncshift_ds,用于表征自适应窗函数;a为大于等于4的预设的常数,比如:a=4;l_ncshift_ds为声道间时间差的绝对值的最大值;win_width1为第一升余弦宽度参数;win_bias1为第一升余弦高度偏移量。

本实施例中,通过前一帧的平滑后的声道间时间差估计偏差,计算当前帧的自适应窗函数,实现了根据该平滑后的声道间时间差估计偏差,调整自适应窗函数的形状,避免了由于当前帧的时延轨迹估计的误差,导致生成的自适应窗函数不准确的问题,提高了生成自适应窗函数的准确性。

可选地,在根据第一种方式确定出的自适应窗函数,确定出当前帧的声道间时间差之后,还可以根据当前帧的前一帧的平滑后的声道间时间差估计偏差、当前帧的时延轨迹估计值和当前帧的声道间时间差,确定当前帧的平滑后的声道间时间差估计偏差。

可选地,根据当前帧的平滑后的声道间时间差估计偏差,更新缓存中的当前帧的前一帧的平滑后的声道间时间差估计偏差。

可选地,每次确定出当前帧的声道间时间差之后,都根据当前帧的平滑后的声道间时间差估计偏差,更新缓存中的当前帧的前一帧的平滑后的声道间时间差估计偏差。

可选地,根据当前帧的平滑后的声道间时间差估计偏差,更新缓存中的当前帧的前一帧的平滑后的声道间时间差估计偏差,包括:通过当前帧的平滑后的声道间时间差估计偏差替换缓存中的当前帧的前一帧的平滑后的声道间时间差估计偏差。

当前帧的平滑后的声道间时间差估计偏差通过如下计算公式计算获得:

smooth_dist_reg_update=(1-γ)*smooth_dist_reg+γ*dist_reg’

dist_reg’=|reg_prv_corr-cur_itd|

其中,smooth_dist_reg_update为当前帧的平滑后的声道间时间差估计偏差;γ为第一平滑因子,0<γ<1,例如γ=0.02;smooth_dist_reg为当前帧的前一帧的平滑后的声道间时间差估计偏差;reg_prv_corr为当前帧的时延轨迹估计值;cur_itd为当前帧的声道间时间差。

本实施例中,通过在确定出当前帧的声道间时间差之后,计算当前帧的平滑后的声道间时间差估计偏差;在确定下一帧的声道间时间差时,能够使用该当前帧的平滑后的声道间时间差估计偏差确定下一帧的自适应窗函数,保证了确定下一帧的声道间时间差的准确性。

可选地,根据上述第一种方式确定出的自适应窗函数,确定出当前帧的声道间时间差之后,还可以对缓存的至少一个过去帧的声道间时间差信息进行更新。

在一种更新方式中,根据当前帧的声道间时间差,对缓存的至少一个过去帧的声道间时间差信息进行更新。

在另一种更新方式中,根据当前帧的声道间时间差平滑值,对缓存的至少一个过去帧的声道间时间差信息进行更新。

可选地,根据当前帧的时延轨迹估计值和当前帧的声道间时间差,确定当前帧的声道间时间差平滑值。

示意性地,根据当前帧的时延轨迹估计值和当前帧的声道间时间差,确定当前帧的声道间时间差平滑值,可以通过下述公式来确定:

其中,cur_itd_smooth为当前帧的声道间时间差平滑值;为第二平滑因子,reg_prv_corr为当前帧的时延轨迹估计值,cur_itd为当前帧的声道间时间差。其中,为大于等于0小于等于1的常数。

其中,对缓存的至少一个过去帧的声道间时间差信息进行更新,包括:将当前帧的声道间时间差或当前帧的声道间时间差平滑值添加至缓存中。

可选地,以更新缓存中的声道间时间差平滑值为例,缓存中存储有固定数量的过去帧所对应的声道间时间差平滑值,比如:存储有8帧过去帧的声道间时间差平滑值。若将当前帧的声道间时间差平滑值添加至缓存中,则缓存中原来位于第一位上(队首)的过去帧的声道间时间差平滑值被删除,相应地,原来位于第二位上的过去帧的声道间时间差平滑值更新到第一位,以此类推,当前帧的声道间时间差平滑值位于缓存中的最后一位(队尾)。

参考图6所示的缓存更新的过程。假设缓存中存储有8个过去帧的声道间时间差平滑值,在将当前帧的声道间时间差平滑值601添加至缓存中之前(即当前帧对应的8个过去帧),第一位上缓存有第i-8帧的声道间时间差平滑值、第二位上缓存有第i-7帧的声道间时间差平滑值、……、第八位上缓存有第i-1帧的声道间时间差平滑值。

若将当前帧的声道间时间差平滑值601添加至缓存中,则第一位被删除(图中以虚线框表示),第二位的序号变为第一位的序号、第三位的序号变为第二位的序号、……、第八位的序号变为第七位的序号,当前帧(第i帧)的声道间时间差平滑值601位于第八位上,得到下一帧对应的8个过去帧。

可选地,将当前帧的声道间时间差平滑值添加至缓存之后,也可以不删除第一位上缓存的声道间时间差平滑值,而是直接使用第二位至第九位上的声道间时间差平滑值来计算下一帧的声道间时间差;或者,使用第一位至第九位上的声道间时间差平滑值来计算下一帧的声道间时间差,此时,每个当前帧对应的过去帧的数量是可变的;本实施例不对缓存的更新方式作限定。

本实施例中,通过在确定出当前帧的声道间时间差之后,计算当前帧的声道间时间差平滑值;在确定下一帧的时延轨迹估计值时,能够使用该当前帧的声道间时间差平滑值确定下一帧的时延轨迹估计值,保证了确定下一帧的时延轨迹估计值的准确性。

可选地,若根据上述第二种确定当前帧的时延轨迹估计值的实现方式来确定当前帧的时延轨迹估计值,则更新缓存的至少一个过去帧的声道间时间差平滑值之后,还可以对缓存的至少一个过去帧的加权系数进行更新,该至少一个过去帧的加权系数是加权线性回归方法中的加权系数。

在第一种确定自适应窗函数的方式下,对缓存的至少一个过去帧的加权系数进行更新,包括:根据当前帧的平滑后的声道间时间差估计偏差,计算当前帧的第一加权系数;根据当前帧的第一加权系数,对缓存的至少一个过去帧的第一加权系数进行更新。

本实施例中,缓存更新的相关说明参见图6,本实施例在此不作赘述。

当前帧的第一加权系数通过如下计算公式计算获得:

wgt_par1=a_wgt1*smooth_dist_reg_update+b_wgt1

a_wgt1=(xl_wgt1-xh_wgt1)/(yh_dist1’-yl_dist1’)

b_wgt1=xl_wgt1-a_wgt1*yh_dist1’

其中,wgt_par1为当前帧的第一加权系数,smooth_dist_reg_update为当前帧的平滑后的声道间时间差估计偏差;xh_wgt为第一加权系数的上限值;xl_wgt为第一加权系数的下限值;yh_dist1’为第一加权系数的上限值对应的平滑后的声道间时间差估计偏差,yl_dist1’为第一加权系数的下限值对应的平滑后的声道间时间差估计偏差;yh_dist1’、yl_dist1’、xh_wgt1和xl_wgt1均为正数。

可选地,wgt_par1=min(wgt_par1,xh_wgt1);wgt_par1=max(wgt_par1,xl_wgt1)。

可选地,本实施例不对yh_dist1’、yl_dist1’、xh_wgt1和xl_wgt1的取值作限定,示意性地,xl_wgt1=0.05;xh_wgt1=1.0;yl_dist1’=2.0;yh_dist1’=1.0。

可选地,上述公式中,b_wgt1=xl_wgt1-a_wgt1*yh_dist1’可替换为b_wgt1=xh_wgt1-a_wgt1*yl_dist1’。

本实施例中,xh_wgt1>xl_wgt1,yh_dist1’<yl_dist1’。

本实施例中,通过在wgt_par1大于第一加权系数的上限值时,将wgt_par1限定为该第一加权系数的上限值;在wgt_par1小于第一加权系数的下限值时,将wgt_par1限定为该第一加权系数的下限值,保证wgt_par1的值不会超过第一加权系数的正常取值范围,保证计算出的当前帧的时延轨迹估计值的准确性。

另外,通过在确定出当前帧的声道间时间差之后,计算当前帧的第一加权系数;在确定下一帧的时延轨迹估计值时,能够使用该当前帧的第一加权系数确定下一帧的时延轨迹估计值,保证了确定下一帧的时延轨迹估计值的准确性。

第二种方式中,根据互相关系数,确定当前帧的声道间时间差的初始值;根据当前帧的时延轨迹估计值和当前帧的声道间时间差的初始值,计算当前帧的声道间时间差估计偏差;根据当前帧的声道间时间差估计偏差,确定当前帧的自适应窗函数。

可选地,当前帧的声道间时间差的初始值是指根据当前帧的互相关系数,确定出的互相关系数中的互相关值的最大值;根据该最大值对应的索引值确定出的声道间时间差。

可选地,根据当前帧的时延轨迹估计值和当前帧的声道间时间差的初始值,确定当前帧的声道间时间差估计偏差,通过下述公式表示:

dist_reg=|reg_prv_corr-cur_itd_init|

其中,dist_reg为当前帧的声道间时间差估计偏差,reg_prv_corr为当前帧的时延轨迹估计值,cur_itd_init为当前帧的声道间时间差的初始值。

根据当前帧的声道间时间差估计偏差,确定当前帧的自适应窗函数,通过以下几个步骤实现。

1)根据当前帧的声道间时间差估计偏差,计算第二升余弦宽度参数。

本步骤可通过下述公式表示:

win_width2=trunc(width_par2*(a*l_ncshift_ds+1))

width_par2=a_width2*dist_reg+b_width2

其中,a_width2=(xh_width2-xl_width2)/(yh_dist3-yl_dist3)

b_width2=xh_width2-a_width2*yh_dist3

其中,win_width2为第二升余弦宽度参数;trunc表示对数值进行四舍五入取整;l_ncshift_ds为声道间时间差的绝对值的最大值;a为预先设定的常数,a大于等于4且a*l_ncshift_ds+1为大于零的正整数;xh_width2为第二升余弦宽度参数的上限值;xl_width2为第二升余弦宽度参数的下限值;yh_dist3为第二升余弦宽度参数的上限值对应的声道间时间差估计偏差;yl_dist3为第二升余弦宽度参数的下限值对应的声道间时间差估计偏差;dist_reg为声道间时间差估计偏差;xh_width2、xl_width2、yh_dist3和yl_dist3均为正数。

可选地,本步骤中,b_width2=xh_width2-a_width2*yh_dist3可替换为b_width2=xl_width2-a_width2*yl_dist3。

可选地,本步骤中,width_par2=min(width_par2,xh_width2);width_par2=max(width_par2,xl_width2);其中,min表示取最小值,max表示取最大值。即,当计算得到的width_par2大于xh_width2时,将该width_par2设定为xh_width2;当计算得到的width_par2小于xl_width2时,将该width_par2设定为xl_width2。

本实施例中,通过在width_par2大于第二升余弦宽度参数的上限值时,将width_par2限定为该第二升余弦宽度参数的上限值;在width_par2小于第二升余弦宽度参数的下限值时,将width_par2限定为该第二升余弦宽度参数的下限值,保证width_par2的值不会超过升余弦宽度参数的正常取值范围,从而保证计算出的自适应窗函数的准确性。

2)根据当前帧的声道间时间差估计偏差,计算第二升余弦高度偏移量。

本步骤可通过下述公式表示:

win_bias2=a_bias2*dist_reg+b_bias2

其中,a_bias2=(xh_bias2-xl_bias2)/(yh_dist4-yl_dist4)

b_bias2=xh_bias2-a_bias2*yh_dist4

其中,win_bias2为第二升余弦高度偏移量;xh_bias2为第二升余弦高度偏移量的上限值;xl_bias2为第二升余弦高度偏移量的下限值;yh_dist4为第二升余弦高度偏移量的上限值对应的声道间时间差估计偏差;yl_dist4为第二升余弦高度偏移量的下限值对应的声道间时间差估计偏差;dist_reg为声道间时间差估计偏差;yh_dist4、yl_dist4、xh_bias2和xl_bias2均为正数。

可选地,本步骤中,b_bias2=xh_bias2-a_bias2*yh_dist4可替换为b_bias2=xl_bias2-a_bias2*yl_dist4。

可选地,本实施例中,win_bias2=min(win_bias2,xh_bias2);win_bias2=max(win_bias2,xl_bias2)。即,当计算得到的win_bias2大于xh_bias2时,将win_bias2设定为xh_bias2;当计算得到的win_bias2小于xl_bias2时,将win_bias2设定为xl_bias2。

可选地,yh_dist4=yh_dist3;yl_dist4=yl_dist3。

3)音频编码设备根据第二升余弦宽度参数和第二升余弦高度偏移量,确定当前帧的自适应窗函数。

音频编码设备将第一升余弦宽度参数和第一升余弦高度偏移量带入步骤303中的自适应窗函数中,得到如下计算公式:

当0≤k≤trunc(a*l_ncshift_ds/2)-2*win_width2-1时,

loc_weight_win(k)=win_bias2

当trunc(a*l_ncshift_ds/2)-2*win_width2≤k≤trunc(a*l_ncshift_ds/2)+2*win_width2-1时,

loc_weight_win(k)=0.5*(1+win_bias2)+0.5*(1-win_bias2)*cos(π*(k-

trunc(a*l_ncshift_ds/2))/(2*win_width2))

当trunc(a*l_ncshift_ds/2)+2*win_width2≤k≤a*l_ncshift_ds时,

loc_weight_win(k)=win_bias2

其中,loc_weight_win(k),k=0,1,…,a*l_ncshift_ds,用于表征所述自适应窗函数;a为大于等于4的预设的常数,比如:a=4;l_ncshift_ds为声道间时间差的绝对值的最大值;win_width2为第二升余弦宽度参数;win_bias2为第二升余弦高度偏移量。

本实施例中,通过根据当前帧的声道间时间差估计偏差来确定当前帧的自适应窗函数,在不必缓存前一帧的平滑后的声道间时间差估计偏差的情况下,就能够确定出当前帧的自适应窗函数,节省了存储资源。

可选地,根据上述第二种方式确定出的自适应窗函数,确定出当前帧的声道间时间差之后,还可以对缓存的至少一个过去帧的声道间时间差信息进行更新。相关描述参见第一种确定自适应窗函数的方式,本实施例在此不作赘述。

可选地,若根据第二种确定当前帧的时延轨迹估计值的实现方式来确定当前帧的时延轨迹估计值,则更新缓存的至少一个过去帧的声道间时间差平滑值之后,还可以对缓存的至少一个过去帧的加权系数进行更新。

在第二种确定自适应窗函数的方式下,至少一个过去帧的加权系数是该至少一个过去帧的第二加权系数。

对缓存的至少一个过去帧的加权系数进行更新,包括:根据当前帧的声道间时间差估计偏差,计算当前帧的第二加权系数;根据当前帧的第二加权系数,对缓存的至少一个过去帧的第二加权系数进行更新。

根据当前帧的声道间时间差估计偏差,计算当前帧的第二加权系数,通过下述公式表示:

wgt_par2=a_wgt2*dist_reg+b_wgt2

a_wgt2=(xl_wgt2-xh_wgt2)/(yh_dist2’-yl_dist2’)

b_wgt2=xl_wgt2-a_wgt2*yh_dist2’

其中,wgt_par2为当前帧的第二加权系数,dist_reg为当前帧的声道间时间差估计偏差;xh_wgt2为第二加权系数的上限值;xl_wgt2为第二加权系数的下限值;yh_dist2’为第二加权系数的上限值对应的声道间时间差估计偏差,yl_dist2’为第二加权系数的下限值对应的声道间时间差估计偏差;yh_dist2’、yl_dist2’、xh_wgt2和xl_wgt2均为正数。

可选地,wgt_par2=min(wgt_par2,xh_wgt2);wgt_par2=max(wgt_par2,xl_wgt2)。

可选地,本实施例不对yh_dist2’、yl_dist2’、xh_wgt2和xl_wgt2的取值作限定,示意性地,xl_wgt2=0.05;xh_wgt2=1.0;yl_dist2’=2.0;yh_dist2’=1.0。

可选地,上述公式中,b_wgt2=xl_wgt2-a_wgt2*yh_dist2’可替换为b_wgt2=xh_wgt2-a_wgt2*yl_dist2’。

本实施例中,xh_wgt2>x2_wgt1,yh_dist2’<yl_dist2’。

本实施例中,通过在wgt_par2大于第二加权系数的上限值时,将wgt_par2限定为该第二加权系数的上限值;在wgt_par2小于第二加权系数的下限值时,将wgt_par2限定为该第二加权系数的下限值,保证wgt_par2的值不会超过第一加权系数的正常取值范围,保证计算出的当前帧的时延轨迹估计值的准确性。

另外,通过在确定出当前帧的声道间时间差之后,计算当前帧的第二加权系数;在确定下一帧的时延轨迹估计值时,能够使用该当前帧的第二加权系数确定下一帧的时延轨迹估计值,保证了确定下一帧的时延轨迹估计值的准确性。

可选地,在上述各个实施例中,无论当前帧的多声道信号是否是有效信号,都对缓存进行更新,比如:对缓存中的至少一个过去帧的声道间时间差信息和/或至少一个过去帧的加权系数进行更新。

可选地,只有在当前帧的多声道信号是有效信号时,才对缓存进行更新,这样,提高了缓存中的数据的有效性。

其中,有效信号是指能量高于预设能量,和/或,属于预设分类的信号,比如:有效信号是语音信号,或者,有效信号是周期性信号等。

本实施例中,通过语音活动性检测(voiceactinitydetection,vad)算法,来检测当前帧的多声道信号是否为激活帧,若是,说明当前帧的多声道信号为有效信号;若不是,说明当前帧的多声道信号不是有效信号。

在一种方式中,根据当前帧的前一帧的语音激活检测结果,确定是否对缓存进行更新。

当当前帧的前一帧的语音激活检测结果为激活帧时,说明当前帧是激活帧的可能性较大,此时,对缓存进行更新;当当前帧的前一帧的语音激活检测结果不是激活帧时,说明当前帧不是激活帧的可能性较大,此时,不对缓存进行更新。

可选地,当前帧的前一帧的语音激活检测结果是根据当前帧的前一帧的主要声道信号的语音激活检测结果和次要声道信号的语音激活检测结果确定出来的。

若当前帧的前一帧的主要声道信号的语音激活检测结果和次要声道信号的语音激活检测结果均为激活帧,则当前帧的前一帧的语音激活检测结果为激活帧。若当前帧的前一帧的主要声道信号的语音激活检测结果和/或次要声道信号的语音激活检测结果为不是激活帧,则当前帧的前一帧的语音激活检测结果为不是激活帧。

在另一种方式中,根据当前帧的语音激活检测结果,确定是否对缓存进行更新。

在当前帧的语音激活检测结果为激活帧时,说明当前帧是激活帧的可能性较大,此时,音频编码设备对缓存进行更新;在当前帧的语音激活检测结果不是激活帧时,说明当前帧不是激活帧的可能性较大,此时,音频编码设备不对缓存进行更新。

可选地,当前帧的语音激活检测结果是根据当前帧的多路声道信号的语音激活检测结果确定出来的。

若当前帧的多路声道信号的语音激活检测结果均为激活帧,则当前帧的语音激活检测结果为激活帧。若当前帧的多路声道信号中的至少一路声道信号的语音激活检测结果为不是激活帧,则当前帧的语音激活检测结果为不是激活帧。

需要补充说明的是,本实施例仅以当前帧是否为激活帧为标准,来更新缓存为例进行说明,在实际实现时,还可以根据当前帧的清浊音分类、周期与非周期分类、瞬态与非瞬态分类、语音与非语音分类中的至少一种,来更新缓存。

示意性地,若当前帧的前一帧的主要声道信号和次要声道信号均为浊音分类,说明当前帧为浊音分类的概率较大,则对缓存进行更新;若当前帧的前一帧的主要声道信号和次要声道信号中的至少一个为清音分类,说明当前帧不是浊音分类的概率较大,则不对缓存进行更新。

可选地,基于上述各个实施例,还可以根据当前帧的前一帧的编码参数,确定预设窗函数模型的自适应参数。这样,实现了自适应地调整当前帧的预设窗函数模型中的自适应参数,提高确定自适应窗函数的准确性。

其中,编码参数用于指示当前帧的前一帧的多声道信号的类型,或者,编码参数用于指示经过时域下混处理的当前帧的前一帧的多声道信号的类型。比如:激活帧与非激活帧分类、清浊音分类、周期与非周期分类、瞬态与非瞬态分类、语音与音乐分类等。

自适应参数包括升余弦宽度参数的上限值、升余弦宽度参数的下限值、升余弦高度偏移量的上限值、升余弦高度偏移量的下限值、升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差、升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差、升余弦高度偏移量的上限值对应的平滑后的声道间时间差估计偏差、升余弦高度偏移量的下限值对应的平滑后的声道间时间差估计偏差中的至少一种。

可选地,当音频编码设备通过第一种确定自适应窗函数的方式来确定自适应窗函数时,升余弦宽度参数的上限值为第一升余弦宽度参数的上限值、升余弦宽度参数的下限值为第一升余弦宽度参数的下限值、升余弦高度偏移量的上限值为第一升余弦高度偏移量的上限值、升余弦高度偏移量的下限值为第一升余弦高度偏移量的下限值;相应地,升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差为第一升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差、升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差为第一升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差、升余弦高度偏移量的上限值对应的平滑后的声道间时间差估计偏差为第一升余弦高度偏移量的上限值对应的平滑后的声道间时间差估计偏差、升余弦高度偏移量的下限值对应的平滑后的声道间时间差估计偏差为第一升余弦高度偏移量的下限值对应的平滑后的声道间时间差估计偏差。

可选地,当音频编码设备通过第二种确定自适应窗函数的方式来确定自适应窗函数时,升余弦宽度参数的上限值为第二升余弦宽度参数的上限值、升余弦宽度参数的下限值为第二升余弦宽度参数的下限值、升余弦高度偏移量的上限值为第二升余弦高度偏移量的上限值、升余弦高度偏移量的下限值为第二升余弦高度偏移量的下限值;相应地,升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差为第二升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差、升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差为第二升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差、升余弦高度偏移量的上限值对应的平滑后的声道间时间差估计偏差为第二升余弦高度偏移量的上限值对应的平滑后的声道间时间差估计偏差、升余弦高度偏移量的下限值对应的平滑后的声道间时间差估计偏差为第二升余弦高度偏移量的下限值对应的平滑后的声道间时间差估计偏差。

可选地,本实施例中,以升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差等于升余弦高度偏移量的上限值对应的平滑后的声道间时间差估计偏差;升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差等于升余弦高度偏移量的下限值对应的平滑后的声道间时间差估计偏差为例进行说明。

可选地,本实施例中,以当前帧的前一帧的编码参数用于指示当前帧的前一帧主要声道信号的清浊音分类和次要声道信号的清浊音分类为例进行说明。

1)根据当前帧的前一帧的编码参数,确定自适应参数中的升余弦宽度参数的上限值和升余弦宽度参数的下限值。

根据编码参数,确定当前帧的前一帧中的主要声道信号的清浊音分类和次要声道信号的清浊音分类;若主要声道信号和次要声道信号均为清音类,则将升余弦宽度参数的上限值设置为第一清音参数,将升余弦宽度参数的下限值设置为第二清音参数,即,xh_width=xh_width_uv;xl_width=xl_width_uv;

若主要声道信号和次要声道信号均为浊音类,则将升余弦宽度参数的上限值设置为第一浊音参数,将升余弦宽度参数的下限值设置为第二浊音参数,即,xh_width=xh_width_v;xl_width=xl_width_v;

若主要声道信号为浊音类,且次要声道信号为清音类,则将升余弦宽度参数的上限值设置为第三浊音参数,将升余弦宽度参数的下限值设置为第四浊音参数,即,xh_width=xh_width_v2;xl_width=xl_width_v2;

若主要声道信号为清音类,且次要声道信号为浊音类,则将升余弦宽度参数的上限值设置为第三清音参数,将升余弦宽度参数的下限值设置为第四清音参数,即,xh_width=xh_width_uv2;xl_width=xl_width_uv2。

其中,第一清音参数xh_width_uv、第二清音参数xl_width_uv、第三清音参数xh_width_uv2、第四清音参数xl_width_uv2、第一浊音参数xh_width_v、第二浊音参数xl_width_v、第三浊音参数xh_width_v2和第四浊音参数xl_width_v2均为正数;xh_width_v<xh_width_v2<xh_width_uv2<xh_width_uv;xl_width_uv<xl_width_uv2<xl_width_v2<xl_width_v。

本实施例不对xh_width_v、xh_width_v2、xh_width_uv2、xh_width_uv、xl_width_uv、xl_width_uv2、xl_width_v2、xl_width_v的取值作限定。示意性地,xh_width_v=0.2;xh_width_v2=0.25;xh_width_uv2=0.35;xh_width_uv=0.3;xl_width_uv=0.03;xl_width_uv2=0.02;xl_width_v2=0.04;xl_width_v=0.05。

可选地,通过当前帧的前一帧的编码参数,对上述第一清音参数、第二清音参数、第三清音参数、第四清音参数、第一浊音参数、第二浊音参数、第三浊音参数和第四浊音参数中的至少一种参数进行调整。

示意性地,音频编码设备根据当前帧的前一帧声道信号的编码参数,对第一清音参数、第二清音参数、第三清音参数、第四清音参数、第一浊音参数、第二浊音参数、第三浊音参数和第四浊音参数中的至少一种参数进行调整,通过下述公式表示:

xh_width_uv=fach_uv*xh_width_init;xl_width_uv=facl_uv*xl_width_init;

xh_width_v=fach_v*xh_width_init;xl_width_v=facl_v*xl_width_init;

xh_width_v2=fach_v2*xh_width_init;xl_width_v2=facl_v2*xl_width_init;

xh_width_uv2=fach_uv2*xh_width_init;xl_width_uv2=facl_uv2*xl_width_init;

其中,fach_uv、fach_v、fach_v2、fach_uv2、xh_width_init和xl_width_init为根据编码参数确定的正数。

本实施例不对fach_uv、fach_v、fach_v2、fach_uv2、xh_width_init和xl_width_init的取值作限定,示意性地,fach_uv=1.4;fach_v=0.8;fach_v2=1.0;fach_uv2=1.2;xh_width_init=0.25;xl_width_init=0.04。

2)根据当前帧的前一帧的编码参数,确定自适应参数中的升余弦高度偏移量的上限值和升余弦高度偏移量的下限值。

根据编码参数,确定当前帧的前一帧中的主要声道信号的清浊音分类和次要声道信号的清浊音分类;若主要声道信号和次要声道信号均为清音类,则将升余弦高度偏移量的上限值设置为第五清音参数,将升余弦高度偏移量的下限值设置为第六清音参数,即,xh_bias=xh_bias_uv;xl_bias=xl_bias_uv;

若主要声道信号和次要声道信号均为浊音类,则将升余弦高度偏移量的上限值设置为第五浊音参数,将升余弦高度偏移量的下限值设置为第六浊音参数,即,xh_bias=xh_bias_v;xl_bias=xl_bias_v;

若主要声道信号为浊音类,且次要声道信号为清音类,则将升余弦高度偏移量的上限值设置为第七浊音参数,将升余弦高度偏移量的下限值设置为第八浊音参数,即,xh_bias=xh_bias_v2;xl_bias=xl_bias_v2;

若主要声道信号为清音类,且次要声道信号为浊音类,则将升余弦高度偏移量的上限值设置为第七清音参数,将升余弦高度偏移量的下限值设置为第八清音参数,即,xh_bias=xh_bias_uv2;xl_bias=xl_bias_uv2;

其中,第五清音参数xh_bias_uv、第六清音参数xl_bias_uv、第七清音参数xh_bias_uv2、第八清音参数xl_bias_uv2、第五浊音参数xh_bias_v、第六浊音参数xl_bias_v、第七浊音参数xh_bias_v2和第八浊音参数xl_bias_v2均为正数;其中,xh_bias_v<xh_bias_v2<xh_bias_uv2<xh_bias_uv;xl_bias_v<xl_bias_v2<xl_bias_uv2<xl_bias_uv;xh_bias为升余弦高度偏移量的上限值;xl_bias为升余弦高度偏移量的下限值。

本实施例不对xh_bias_v、xh_bias_v2、xh_bias_uv2、xh_bias_uv、xl_bias_v、xl_bias_v2、xl_bias_uv2和xl_bias_uv的取值作限定,示意性地,xh_bias_v=0.8;xl_bias_v=0.5;xh_bias_v2=0.7;xl_bias_v2=0.4;xh_bias_uv=0.6;xl_bias_uv=0.3;xh_bias_uv2=0.5;xl_bias_uv2=0.2。

可选地,根据当前帧的前一帧声道信号的编码参数,对第五清音参数、第六清音参数、第七清音参数、第八清音参数、第五浊音参数、第六浊音参数、第七浊音参数和第八浊音参数中的至少一种进行调整。

示意性地,通过下述公式来表示:

xh_bias_uv=fach_uv’*xh_bias_init;xl_bias_uv=facl_uv’*xl_bias_init;

xh_bias_v=fach_v’*xh_bias_init;xl_bias_v=facl_v’*xl_bias_init;

xh_bias_v2=fach_v2’*xh_bias_init;xl_bias_v2=facl_v2’*xl_bias_init;

xh_bias_uv2=fach_uv2’*xh_bias_init;xl_bias_uv2=facl_uv2’*xl_bias_init;

其中,fach_uv’、fach_v’、fach_v2’、fach_uv2’、xh_bias_init和xl_bias_init为根据编码参数确定的正数。

本实施例不对fach_uv’、fach_v’、fach_v2’、fach_uv2’、xh_bias_init和xl_bias_init的取值作限定,示意性地,fach_v’=1.15;fach_v2’=1.0;fach_uv2’=0.85;fach_uv’=0.7;xh_bias_init=0.7;xl_bias_init=0.4。

3)根据当前帧的前一帧的编码参数,确定自适应参数中的升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差,和,升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差。

根据编码参数,确定当前帧的前一帧中的主要声道信号的清浊音分类和次要声道信号的清浊音分类;若主要声道信号和次要声道信号均为清音类,则将升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差设置为第九清音参数,将升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差设置为第十清音参数;即,yh_dist=yh_dist_uv;yl_dist=yl_dist_uv;

若主要声道信号和次要声道信号均为浊音类,则将升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差设置为第九浊音参数,将升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差设置为第十浊音参数;即,yh_dist=yh_dist_v;yl_dist=yl_dist_v,

若主要声道信号为浊音类,且次要声道信号为清音类,则将升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差设置为第十一浊音参数,将升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差设置为第十二浊音参数;即,yh_dist=yh_dist_v2;yl_dist=yl_dist_v2;

若主要声道信号为清音类,且次要声道信号为浊音类,则将升余弦宽度参数的上限值对应的平滑后的声道间时间差估计偏差设置为第十一清音参数,将升余弦宽度参数的下限值对应的平滑后的声道间时间差估计偏差设置为第十二清音参数;即,yh_dist=yh_dist_uv2;yl_dist=yl_dist_uv2。

其中,第九清音参数yh_dist_uv、第十清音参数yl_dist_uv、第十一清音参数yh_dist_uv2、第十二清音参数yl_dist_uv2、第九浊音参数yh_dist_v、第十浊音参数yl_dist_v、第十一浊音参数yh_dist_v2和第十二浊音参数yl_dist_v2均为正数;yh_dist_v<yh_dist_v2<yh_dist_uv2<yh_dist_uv;yl_dist_uv<yl_dist_uv2<yl_dist_v2<yl_dist_v。

本实施例不对yh_dist_v、yh_dist_v2、yh_dist_uv2、yh_dist_uv、yl_dist_uv、yl_dist_uv2、yl_dist_v2、yl_dist_v的取值作限定。

可选地,根据当前帧的前一帧的编码参数,对第九清音参数、第十清音参数、第十一清音参数、第十二清音参数、第九浊音参数、第十浊音参数、第十一浊音参数和第十二浊音参数中的至少一种参数进行调整。

示意性地,通过下述公式来表示:

yh_dist_uv=fach_uv”*yh_dist_init;yl_dist_uv=facl_uv”*yl_dist_init;

yh_dist_v=fach_v”*yh_dist_init;yl_dist_v=facl_v”*yl_dist_init;

yh_dist_v2=fach_v2”*yh_dist_init;yl_dist_v2=facl_v2”*yl_dist_init;

yh_dist_uv2=fach_uv2”*yh_dist_init;yl_dist_uv2=facl_uv2”*yl_dist_init;

其中,fach_uv”、fach_v”、fach_v2”、fach_uv2”、yh_dist_init和yl_dist_init为根据编码参数确定的正数,且本实施不对上述参数的取值作限定。

本实施例中,通过根据当前帧的前一帧的编码参数,对预设窗函数模型中的自适应参数进行调整,实现了自适应地根据当前帧的前一帧的编码参数确定出合适的自适应窗函数,提高了生成自适应窗函数的准确性,从而提高了估算声道间时间差的准确性。

可选地,基于上述各个实施例,在步骤301之前,对多声道信号进行时域预处理。

可选地,本发明实施例中的当前帧的多声道信号是指输入到音频编码设备的多声道信号;或者,是指输入到音频编码设备之后,经过预处理后的多声道信号。

可选地,输入到音频编码设备的多声道信号,可以是该音频编码设备中的采集组件采集到的;或者,也可以是与音频编码设备相独立的采集设备采集到、并发送至音频编码设备的。

可选地,输入到音频编码设备的多声道信号经过模数(analogto/digital,a/d)转换之后得到的多声道信号。可选地,该多声道信号为脉冲编码调制(pulsecodemodulation,pcm)信号。

多声道信号的采样频率可以为8khz、16khz、32khz、44.1khz、48khz等,本实施例对此不作限定。

示意性地,多声道信号的采样频率为16khz,此时,一帧多声道信号的时长为20ms,帧长记作n,则n=320,即帧长为320个采样点。当前帧的多声道信号包括左声道信号和右声道信号,左声道信号记作xl(n),右声道信号记作xr(n),其中,n为采样点序号,n=0,1,2……,n-1。

可选地,若对当前帧进行高通滤波处理,则处理后的左声道信号记作xl_hp(n);处理后的右声道信号记作xr_hp(n),其中,n为采样点序号,n=0,1,2……,n-1。

请参考图7,其示出了本申请一个示例性实施例提供的音频编码设备的结构示意图。本发明实施例中,音频编码设备可以为手机、平板电脑、膝上型便携计算机和台式计算机、蓝牙音箱、录音笔、可穿戴式设备等具有音频采集和音频信号处理功能的电子设备,也可以是核心网、无线网中具有音频信号处理能力的网元,本实施例对此不作限定。

该音频编码设备包括:处理器701、存储器702和总线703。

处理器701包括一个或者一个以上处理核心,处理器701通过运行软件程序以及模块,从而执行各种功能应用以及信息处理。

存储器702通过总线703与处理器701相连。存储器702存储有音频编码设备必要的指令。

处理器701用于执行存储器702中的指令以实现本申请各个方法实施例提供的时延估计方法。

此外,存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随时存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

存储器702还用于缓存至少一个过去帧的声道间时间差信息和/或至少一个过去帧的加权系数。

可选地,音频编码设备包括采集组件,该采集组件用于采集多声道信号。

可选地,采集组件由至少一个麦克风组成。每个麦克风用于采集一路声道信号。

可选地,音频编码设备包括接收组件,该接收组件用于接收其它设备发送的多声道信号。

可选地,音频编码设备还具有解码功能。

可以理解的是,图7仅仅示出了音频编码设备的简化设计。在其他的实施例中,音频编码设备可以包含任意数量的发射器,接收器,处理器,控制器,存储器,通信单元,显示单元,播放单元等,本实施例对此不作限定。

可选地,本申请提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在音频编码设备上运行时,使得音频编码设备执行上述各个实施例所提供的时延估计方法。

请参考图8,其示出了本申请一个实施例提供的时延估计装置的框图。该时延估计装置可以通过软件、硬件或者两者的结合实现成为图7所示的音频编码设备的全部或者一部分。该时延估计装置可以包括:互相关系数确定单元810、时延轨迹估计单元820、自适应函数确定单元830、加权单元840和声道间时间差确定单元850。

互相关系数确定单元810,用于确定当前帧的多声道信号的互相关系数;

时延轨迹估计单元820,用于根据缓存的至少一个过去帧的声道间时间差信息,确定当前帧的时延轨迹估计值;

自适应函数确定单元830,用于确定当前帧的自适应窗函数;

加权单元840,用于根据所述当前帧的时延轨迹估计值和所述当前帧的自适应窗函数,对所述互相关系数进行加权,得到加权后的互相关系数;

声道间时间差确定单元850,还用于根据所述加权后的互相关系数确定当前帧的声道间时间差。

可选地,所述自适应函数确定单元810,还用于:

根据当前帧的前一帧的平滑后的声道间时间差估计偏差,计算第一升余弦宽度参数;

根据当前帧的前一帧的平滑后的声道间时间差估计偏差,计算第一升余弦高度偏移量;

根据第一升余弦宽度参数和第一升余弦高度偏移量,确定当前帧的自适应窗函数。

可选地,该装置还包括:平滑后的声道间时间差估计偏差确定单元860。

平滑后的声道间时间差估计偏差确定单元860,用于根据当前帧的前一帧的平滑后的声道间时间差估计偏差、当前帧的时延轨迹估计值和当前帧的声道间时间差,计算当前帧的平滑后的声道间时间差估计偏差。

可选地,自适应函数确定单元830,还用于:

根据互相关系数,确定当前帧的声道间时间差的初始值;

根据当前帧的时延轨迹估计值和当前帧的声道间时间差的初始值,计算当前帧的声道间时间差估计偏差;

根据当前帧的声道间时间差估计偏差,确定当前帧的自适应窗函数。

可选地,自适应函数确定单元830,还用于:

根据当前帧的声道间时间差估计偏差,计算第二升余弦宽度参数;

根据当前帧的声道间时间差估计偏差,计算第二升余弦高度偏移量;

根据第二升余弦宽度参数和第二升余弦高度偏移量,确定当前帧的自适应窗函数。

可选地,该装置还包括:自适应参数确定单元870。

自适应参数确定单元870,用于根据当前帧的前一帧的编码参数,确定当前帧的自适应窗函数的自适应参数。

可选地,时延轨迹估计单元820,还用于:

根据缓存的至少一个过去帧的声道间时间差信息,通过线性回归方法进行时延轨迹估计,确定当前帧的时延轨迹估计值。

可选地,时延轨迹估计单元820,还用于:

根据缓存的至少一个过去帧的声道间时间差信息,通过加权线性回归方法进行时延轨迹估计,确定当前帧的时延轨迹估计值。

可选地,该装置还包括,更新单元880。

更新单元880,用于对缓存的至少一个过去帧的声道间时间差信息进行更新。

可选地,缓存的至少一个过去帧的声道间时间差信息为至少一个过去帧的声道间时间差平滑值,更新单元880,用于:

根据当前帧的时延轨迹估计值和当前帧的声道间时间差,确定当前帧的声道间时间差平滑值;

根据当前帧的声道间时间差平滑值,对缓存的至少一个过去帧的声道间时间差平滑值进行更新。

可选地,更新单元880,还用于:

根据当前帧的前一帧的语音激活检测结果或当前帧的语音激活检测结果,确定是否对缓存的至少一个过去帧的声道间时间差信息进行更新。

可选地,更新单元880,还用于:

对缓存的至少一个过去帧的加权系数进行更新,至少一个过去帧的加权系数是加权线性回归方法中的系数。

可选地,当当前帧的自适应窗函数是根据当前帧的前一帧的平滑后的声道间时间差确定的时,更新单元880,还用于:

根据当前帧的平滑后的声道间时间差估计偏差,计算当前帧的第一加权系数;

根据当前帧的第一加权系数,对缓存的至少一个过去帧的第一加权系数进行更新。

可选地,当当前帧的自适应窗函数是根据当前帧的平滑后的声道间时间差估计偏差确定的时,更新单元880,还用于:

根据当前帧的声道间时间差估计偏差,计算当前帧的第二加权系数;

根据当前帧的第二加权系数,对缓存的至少一个过去帧的第二加权系数进行更新。

可选地,更新单元880,还用于:

在当前帧的前一帧的语音激活检测结果为激活帧或当前帧的语音激活检测结果为激活帧时,对缓存的至少一个过去帧的加权系数进行更新。

相关细节可结合参考上述方法实施例。

可选地,上述各个单元可由音频编码设备中的处理器执行存储器中的指令来实现。

本领域普通技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1