立体声信号的编码方法和装置与流程


立体声信号的编码方法和装置
1.本技术是申请日为2018年5月31日、中国申请号为201810549237.3、申请名称为“立体声信号的编码方法和装置”的发明申请的分案申请。
技术领域
2.本技术涉及音频领域,并且更具体地,涉及立体声信号的编码方法和装置。


背景技术:



3.采用时域或时频域结合的立体声编码技术对立体声信号进行编码的大致过程如下:
4.对左声道时域信号与右声道时域信号进行时域预处理;
5.对时域预处理后的左声道时域信号与右声道时域信号进行时域分析;
6.对时域预处理后的左声道时域信号与右声道时域信号进行时频域变换,得到左声道频域信号与右声道频域信号;
7.确定时域声道间时间差(inter-channel time difference,itd)参数
8.根据itd参数,对左声道频域信号与右声道频域信号进行时移调整;
9.根据时移调整后的左声道频域信号与右声道频域信号,计算立体声参数、下混信号与残差信号,并进行编码。
10.已知一种现有技术,在编码速率比较低的情况下,通常仅对立体声参数及下混信号进行编码,在编码速率比较高的情况下,才会对部分或者全部残差信号进行编码,这使得解码立体声信号的空间感较差,并且声像稳定性较差。
11.已知另一种现有技术,在编码速率比较低的情况下,除了对下混信号进行编码,同时还对满足预设带宽范围内的子带的残差信号进行编码,这种编码方法虽然能够提高解码立体声信号的空间感和声像稳定性,但是由于用于编码残差信号与编码下混信号的编码比特总数是一定的,并且由于下混信号编码时优先对低频信息进行编码,导致在对下混信号编码时,可能没有足够的比特数对下混信号中的一些高频信息更丰富的信号进行编码,因此,使得解码获得的立体声信号的高频失真较大,从而影响编码质量。


技术实现要素:



12.本技术提供一种立体声信号的编码方法,能够在提升解码立体声信号的空间感和声像稳定性的同时,尽可能降低解码立体声信号的高频失真,提高编码质量。
13.第一方面,提供了一种立体声信号的编码方法,包括:根据立体声信号的当前帧的m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定所述当前帧的残差信号编码参数,所述当前帧的残差信号编码参数用于指示是否对所述m个子带的残差信号进行编码,所述m个子带为n个子带中的至少部分子带,n为大于1的正整数,m≤n,且m为正整数;根据所述当前帧的残差信号编码参数,确定是否对所述当前帧的m个子带的残差信号编码。
14.通过根据满足预设带宽范围内的n个子带中的m个子带的下混信号能量与残差信号能量,确定残差信号编码参数,并根据该残差信号编码参数,确定是否对该m个子带中的每个子带的残差信号编码,避免在编码速率较低时仅对下混信号编码,或者,对满足预设带宽范围内的子带的残差信号均进行编码,从而在提升解码立体声信号的空间感和声像稳定性的同时,尽可能降低解码立体声信号的高频失真,提高编码质量。
15.结合第一方面,在第一方面的一种可能的实现方式中,所述m个子带为所述n个子带中的子带索引号小于或等于预设的最大子带索引号的m个子带。
16.可选地,作为一种实现方式,所述m个子带为所述n个子带中的子带索引号大于或等于预设的最小子带索引号且小于或等于预设的最大子带索引号的m个子带。
17.通过根据不同的编码速率设定最小的子带索引号和/或预设的最大子带索引号,使得根据不同的编码速率,根据该n个子带中的特定的多个子带的下混信号能量与残差信号能量,确定残差信号编码参数,并根据该残差信号编码参数,确定是否对该m个子带中的每个子带的残差信号编码,避免在编码速率较低时仅对下混信号编码,或者,对满足预设带宽范围内的子带的残差信号均进行编码,从而在提升解码立体声信号的空间感和声像稳定性的同时,尽可能降低解码立体声信号的高频失真,提高编码质量。
18.结合第一方面,在第一方面的一种可能的实现方式中,所述根据所述残差信号编码参数,确定是否对所述m个子带中的每个子带的残差信号编码,包括:将所述当前帧的残差信号编码参数与预设的第一阈值进行比较,所述第一阈值大于0,且小于1.0;在所述当前帧的残差信号编码参数小于或等于所述第一阈值的情况下,确定不对所述m个子带中的每个子带的残差信号进行编码;或在所述当前帧的残差信号编码参数大于所述第一阈值的情况下,确定对所述m个子带中的每个子带的残差信号进行编码。
19.通过设定第一阈值,并将确定的残差信号编码参数与该第一阈值进行比较,根据该残差信号编码参数与该第一阈值的比较结果,确定是否对该m个子带中的每个子带的残差信号编码,避免在编码速率较低时仅对下混信号编码,或者,对满足预设带宽范围内的子带的残差信号均进行编码,从而在提升解码立体声信号的空间感和声像稳定性的同时,尽可能降低解码立体声信号的高频失真,提高编码质量。
20.结合第一方面,在第一方面的一种可能的实现方式中,所述根据m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定所述当前帧的残差信号编码参数,包括:根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定所述残差信号编码参数。
21.通过根据该m个子带中的每个子带的下混信号能量、残差信号能量与每个子带的边增益,确定该残差信号编码参数,并根据该残差信号编码参数,确定是否对该m个子带中的每个子带的残差信号编码,避免在编码速率较低时仅对下混信号编码,或者,对满足预设带宽范围内的子带的残差信号均进行编码,从而在提升解码立体声信号的空间感和声像稳定性的同时,尽可能降低解码立体声信号的高频失真,提高编码质量。
22.结合第一方面,在第一方面的一种可能的实现方式中,所述根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定残差信号编码参数,包括:根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定第一参数,所述第一参数指示所述m个子带中的每个子带的下
混信号能量与残差信号能量的大小关系;根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量,确定第二参数,所述第二参数指示第一能量总和与第二能量总和的大小关系,所述第一能量总和为所述m个子带的残差信号能量与下混信号能量之和,所述第二能量总和为所述当前帧的前一帧的频域信号中的m个子带的残差信号能量与下混信号能量之和,所述当前帧的所述m个子带与所述前一帧的所述m个子带的子带索引号相同;根据所述第一参数、所述第二参数与所述当前帧的前一帧的长时平滑参数,确定所述当前帧的残差信号编码参数。
23.结合第一方面,在第一方面的一种可能的实现方式中,所述根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定第一参数,包括:根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定m个能量参数,所述m个能量参数指示所述m个子带中每个子带的下混信号能量与残差信号能量的大小关系,所述m个能量参数与所述m个子带一一对应;将所述m个能量参数中的数值最大的能量参数确定为所述第一参数。
24.结合第一方面,在第一方面的一种可能的实现方式中,所述m个能量参数中子带索引号为b的子带的能量参数满足公式:
25.res_dmx_ratio[b]=res_cod_nrg_s[b]/(res_cod_nrg_s[b]+(1-g(b))
·
(1-g(b))
·
res_cod_nrg_m[b]+1)
[0026]
其中,res_dmx_ratio[b]为所述子带索引号为b的子带的能量参数,b大于或等于0,且小于或等于预设的最大子带索引号,res_cod_nrg_s[b]为所述子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为所述子带索引号为b的子带的下混信号能量,g(b)为关于所述子带索引号为b的子带的边增益side_gain[b]的函数。
[0027]
结合第一方面,在第一方面的一种可能的实现方式中,所述根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定所述当前帧的残差信号编码参数,包括:根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第一参数,所述第一参数指示所述m个子带中的每个子带的下混信号能量与残差信号能量的大小关系;根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第二参数,所述第二参数指示第一能量总和与第二能量总和的大小关系,所述第一能量总和为所述m个子带的残差信号能量与下混信号能量之和,所述第二能量总和为所述当前帧的前一帧的频域信号中的m个子带的残差信号能量与下混信号能量之和,所述当前帧的所述m个子带与所述前一帧的所述m个子带的子带索引号相同;根据所述第一参数、所述第二参数与所述当前帧的前一帧的长时平滑参数,确定所述当前帧的残差信号编码参数。
[0028]
结合第一方面,在第一方面的一种可能的实现方式中,所述根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第一参数,包括:根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定m个能量参数,所述m个能量参数指示所述m个子带中每个子带的下混信号能量与残差信号能量的大小关系,所述m个能量参数与所述m个子带一一对应;将所述m个能量参数中的数值最大的能量参数确定为所述第一参数。
[0029]
可选地,作为一种实现方式,将该m个能量参数之和确定为第一参数(待修正)res_
dmx_ratio1,并根据该m个能量参数中的最大值res_dmx_ratio_max与该m个子带中的每个子带的下混信号能量res_cod_nrg_m[b]对该res_dmx_ratio1进行修正,确定修正后的res_dmx_ratio2。
[0030]
例如,编码端按照下式对该res_dmx_ratio1进行修正,其中,m=5:
[0031]
修正后获得的res_dmx_ratio2满足:
[0032][0033]
可选地,作为一种实现方式,还可以对修正后的res_dmx_ratio2作进一步的修正:
[0034]
例如,最终获得的修正后的res_dmx_ratio3满足:
[0035]
res_dmx_ratio3=pow(res_dmx_ratio2,1.2)
[0036]
其中,函数pow()为指数函数,pow(res_dmx_ratio2,1.2)代表res_dmx_ratio2的1.2次方。
[0037]
可选地,作为一种实现方式,编码端根据该m个子带的残差信号能量之和与该m个子带的下混信号能量之和,确定该第一参数。
[0038]
具体地,编码端分别确定该m个子带的下混信号能量之和dmx_nrg_all_curr与该m个子带的残差信号能量之和res_nrg_all_curr,并根据该dmx_nrg_all_curr与该res_nrg_all_curr,确定该第一参数。
[0039]
可选地,作为一种实现方式,该m个子带的下混信号能量之和dmx_nrg_all_curr满足:
[0040][0041]
其中,res_cod_nrg_m_prev[b]表示当前帧的前一帧的子带索引号为b的子带的下混信号能量,γ1表示平滑因子,γ1为大于等于0小于等于1的实数,例如,γ1=0.1。
[0042]
可选地,作为一种实现方式,该m个子带的残差信号能量之和res_nrg_all_curr满足:
[0043][0044]
其中,res_cod_nrg_s_prev[b]表示当前帧的前一帧的子带索引号为b的子带的残差信号能量,γ2表示平滑因子,γ2为大于等于0小于等于1的实数,例如,γ2=0.1。
[0045]
编码端根据该dmx_nrg_all_curr与该res_nrg_all_curr,确定该第一参数res_dmx_ratio。
[0046]
例如,编码端最终确定的第一参数res_dmx_ratio满足:
[0047]
res_dmx_ratio=res_nrg_all_curr/dmx_nrg_all_curr。
[0048]
结合第一方面,在第一方面的一种可能的实现方式中,所述m个能量参数中子带索引号为b的子带的能量参数满足公式:
[0049]
res_dmx_ratio[b]=res_cod_nrg_s[b]/res_cod_nrg_m[b]
[0050]
其中,res_dmx_ratio[b]为所述子带索引号为b的子带的能量参数,b大于或等于
0,且小于或等于预设的最大子带索引号,res_cod_nrg_s[b]为所述子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为所述子带索引号为b的子带的下混信号能量。
[0051]
结合第一方面,在第一方面的一种可能的实现方式中,所述当前帧的残差信号编码参数为所述当前帧的长时平滑参数,所述当前帧的长时平滑参数满足公式:
[0052]
res_dmx_ratio_lt=res_dmx_ratio.α+res_dmx_ratio_lt_prev
·
(1-α)
[0053]
res_dmx_ratio_lt为所述当前帧的长时平滑参数,res_dmx_ratio为所述第一参数,res_dmx_ratio_lt_prev为所述当前帧的前一帧的长时平滑参数,0<α<1;
[0054]
其中,在所述第二参数大于预设的第三阈值时,在所述第一参数小于预设的第二阈值的情况下α的取值大于在所述第一参数大于或等于预设的第二阈值的情况下α的取值,所述第二阈值大于或等于0,且小于或等于0.6,所述第三阈值大于或等于2.7,且小于或等于3.7;或
[0055]
在所述第二参数小于预设的第五阈值时,在所述第一参数大于预设的第四阈值的情况下α的取值大于在所述第一参数小于或等于预设的第四阈值的情况下α的取值,所述第四阈值大于或等于0,且小于或等于0.9,所述第五阈值大于或等于0,且小于或等于0.71;或
[0056]
在所述第二参数大于或等于预设的第五阈值,且小于或等于预设的第三阈值时,α的取值小于在所述第一参数小于预设的第二阈值,且所述第二参数大于预设的第三阈值的情况下α的取值所述第二阈值大于或等于0,且小于或等于0.6,所述第三阈值大于或等于2.7,且小于或等于3.7,所述第五阈值大于或等于0,且小于或等于0.71。
[0057]
结合第一方面,在第一方面的一种可能的实现方式中,所述方法还包括:在确定对所述m个子带的残差信号编码的情况下,对所述m个子带的下混信号与残差信号进行编码;在确定不对所述m个子带的残差信号进行编码的情况下,对所述m个子带的下混信号进行编码。
[0058]
第二方面,提供一种编码装置,包括:第一确定模块,用于根据立体声信号的当前帧的m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定所述当前帧的残差信号编码参数,所述当前帧的残差信号编码参数用于指示是否对所述m个子带的残差信号进行编码,该m个子带为n个子带中的至少部分子带,n为大于1的正整数,m≤n,且m为正整数;第二确定模块,用于根据该当前帧的残差信号编码参数,确定是否对该m个子带的残差信号编码。
[0059]
第三方面,提供一种编码装置,包括存储器和处理器,所述存储器用于存储程序,所述处理器用于执行程序,当所述程序被执行时,所述处理器执行所述第一方面或者第一方面的任一可能的实现方式中的方法。
[0060]
第四方面,提供一种计算机可读存储介质,所述计算机可读介质存储用于设备执行的程序代码,所述程序代码包括用于执行第一方面或其各种实现方式中的方法的指令。
[0061]
第五方面,提供一种芯片,所述芯片包括处理器与通信接口,所述通信接口用于与外部器件进行通信,所述处理器用于执行第一方面或第一方面的任一可能的实现方式中的方法。
[0062]
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面或第一方面的任一可能的实现方式中的方法。
[0063]
可选地,作为一种实现方式,所述芯片集成在终端设备或网络设备上。
附图说明
[0064]
图1是本技术实施例的时域上的立体声编解码系统的结构示意图。
[0065]
图2是本技术实施例的移动终端的示意图。
[0066]
图3是本技术实施例的网元的示意图。
[0067]
图4是频域立体声信号的编码方法的示意性流程图。
[0068]
图5是时频域结合的立体声信号的编码方法的示意性流程图。
[0069]
图6是本技术实施例的立体声信号的编码方法的示意性流程图。
[0070]
图7是本技术实施例的立体声信号的编码方法的另一示意性流程图。
[0071]
图8是本技术实施例的立体声信号的编码装置的示意性框图。
[0072]
图9是本技术实施例的立体声信号的编码装置的另一示意性框图。
具体实施方式
[0073]
下面将结合附图,对本技术中的技术方案进行描述。
[0074]
图1示出了本技术一个示例性实施例提供的时域上的立体声编解码系统的结构示意图。立体声编解码系统包括编码组件110和解码组件120。
[0075]
编码组件110用于对立体声信号在时域上进行编码。可选地,编码组件110可以通过软件实现;或者,也可以通过硬件实现;或者,还可以通过软硬件结合的形式实现,本实施例对此不作限定。
[0076]
编码组件110对立体声信号在时域上进行编码包括如下几个步骤:
[0077]
1)对获取到的立体声信号进行时域预处理,得到时域预处理后的左声道信号和时域预处理后的右声道信号。
[0078]
立体声信号由采集组件采集到并发送至编码组件110。可选地,采集组件可以与编码组件110设置于同一设备中;或者,也可以与编码组件110设置于不同设备中。
[0079]
其中,预处理后的左声道信号和预处理后的右声道信号是预处理后的立体声信号中的两路信号。
[0080]
可选地,预处理包括高通滤波处理、预加重处理、采样率转换、声道转换中的至少一种,本实施例对此不作限定。
[0081]
2)根据预处理后的左声道信号和预处理后的右声道信号进行时延估计,得到预处理后的左声道信号和预处理后的右声道信号之间的声道间时间差。
[0082]
3)根据声道间时间差对预处理后的左声道信号和预处理后的右声道信号进行时延对齐处理,得到时延对齐处理后的左声道信号和时延对齐处理后的右声道信号。
[0083]
4)对声道间时间差进行编码,得到声道间时间差的编码索引。
[0084]
5)计算用于时域下混处理的立体声参数,并对该用于时域下混处理的立体声参数进行编码,得到用于时域下混处理的立体声参数的编码索引。
[0085]
其中,用于时域下混处理的立体声参数用于对时延对齐处理后的左声道信号和时延对齐处理后的右声道信号进行时域下混处理。
[0086]
6)根据用于时域下混处理的立体声参数对时延对齐处理后的左声道信号和时延
对齐处理后的右声道信号进行时域下混处理,得到主要声道信号和次要声道信号。
[0087]
主要声道信号用于表征信道间的相关信息;次要声道信号用于表征声道间的差异信息。当时延对齐处理后的左声道信号和时延对齐处理后的右声道信号在时域上对齐时,次要声道信号最小,此时,立体声信号的效果最好。
[0088]
7)分别对主要声道信号和次要声道信号进行编码,得到主要声道信号对应的第一单声道编码码流以及次要声道信号对应的第二单声道编码码流。
[0089]
8)将声道间时间差的编码索引、立体声参数的编码索引、第一单声道编码码流和第二单声道编码码流写入立体声编码码流。
[0090]
解码组件120用于对编码组件110生成的立体声编码码流进行解码,得到立体声信号。
[0091]
可选地,编码组件110与解码组件120通过有线或无线的方式相连,解码组件120通过该连接获取编码组件110生成的立体声编码码流;或者,编码组件110将生成的立体声编码码流存储至存储器,解码组件120读取存储器中的立体声编码码流。
[0092]
可选地,解码组件120可以通过软件实现;或者,也可以通过硬件实现;或者,还可以通过软硬件结合的形式实现,本实施例对此不作限定。
[0093]
解码组件120对立体声编码码流进行解码,得到立体声信号包括以下几个步骤:
[0094]
1)对立体声编码码流中的第一单声道编码码流以及第二单声道编码码流进行解码,得到主要声道信号和次要声道信号。
[0095]
2)根据立体声编码码流获取用于时域上混处理的立体声参数的编码索引,对主要声道信号和次要声道信号进行时域上混处理,得到时域上混处理后的左声道信号和时域上混处理后的右声道信号。
[0096]
3)根据立体声编码码流获取声道间时间差的编码索引,对时域上混处理后的左声道信号和时域上混处理后的右声道信号进行时延调整,得到立体声信号。
[0097]
可选地,编码组件110和解码组件120可以设置在同一设备中;或者,也可以设置在不同设备中。设备可以为手机、平板电脑、膝上型便携计算机和台式计算机、蓝牙音箱、录音笔、可穿戴式设备等具有音频信号处理功能的移动终端,也可以是核心网、无线网中具有音频信号处理能力的网元,本实施例对此不作限定。
[0098]
示意性地,如图2所示,本实施例以编码组件110设置于移动终端130中、解码组件120设置于移动终端140中,移动终端130与移动终端140是相互独立的具有音频信号处理能力的电子设备,例如可以是手机,可穿戴设备,虚拟现实(vr:virtual reality)设备,或增强现实(ar:augmented reality)设备等等,且移动终端130与移动终端140之间通过无线或有线网络连接为例进行说明。
[0099]
可选地,移动终端130包括采集组件131、编码组件110和信道编码组件132,其中,采集组件131与编码组件110相连,编码组件110与编码组件132相连。
[0100]
可选地,移动终端140包括音频播放组件141、解码组件120和信道解码组件142,其中,音频播放组件141与解码组件110相连,解码组件110与信道编码组件132相连。
[0101]
移动终端130通过采集组件131采集到立体声信号后,通过编码组件110对该立体声信号进行编码,得到立体声编码码流;然后,通过信道编码组件132对立体声编码码流进行编码,得到传输信号。
[0102]
移动终端130通过无线或有线网络将该传输信号发送至移动终端140。
[0103]
移动终端140接收到该传输信号后,通过信道解码组件142对传输信号进行解码得到立体声编码码流;通过解码组件110对立体声编码码流进行解码得到立体声信号;通过音频播放组件播放该立体声信号。
[0104]
示意性地,如图3所示,本实施例以编码组件110和解码组件120设置于同一核心网或无线网中具有音频信号处理能力的网元150中为例进行说明。
[0105]
可选地,网元150包括信道解码组件151、解码组件120、编码组件110和信道编码组件152。其中,信道解码组件151与解码组件120相连,解码组件120与编码组件110相连,编码组件110与信道编码组件152相连。
[0106]
信道解码组件151接收到其它设备发送的传输信号后,对该传输信号进行解码得到第一立体声编码码流;通过解码组件120对立体声编码码流进行解码得到立体声信号;通过编码组件110对该立体声信号进行编码,得到第二立体声编码码流;通过信道编码组件152对该第二立体声编码码流进行编码得到传输信号。
[0107]
其中,其它设备可以是具有音频信号处理能力的移动终端;或者,也可以是具有音频信号处理能力的其它网元,本实施例对此不作限定。
[0108]
可选地,网元中的编码组件110和解码组件120可以对移动终端发送的立体声编码码流进行转码。
[0109]
可选地,本实施例中将安装有编码组件110的设备称为音频编码设备,在实际实现时,该音频编码设备也可以具有音频解码功能,本实施对此不作限定。
[0110]
可选地,本实施例仅以立体声信号为例进行说明,在本技术中,音频编码设备还可以处理多声道信号,该多声道信号包括至少两路声道信号。
[0111]
为了便于理解本技术实施例的立体声信号编码方法,下面先结合图4和图5对频域立体声编码方法以及时频域结合的立体声编码方法的整个编码过程进行大致的介绍。
[0112]
图4是频域立体声信号的编码方法的示意性流程图。该编码方法具体包括101至107。
[0113]
101,将时域的立体声信号转换为频域的立体声信号。
[0114]
102,在频域提取频域立体声参数。
[0115]
103,对频域的立体声信号进行下混处理,得到下混信号和残差信号。
[0116]
其中,下混信号也可以称为中央声道信号或主要声道信号,参数信号可以称为边声道信号或次要声道信号。
[0117]
104,对下混信号进行编码,得到下混信号对应的编码参数,将该编码参数写入编码比特流。
[0118]
106,对频域立体声参数进行编码,得到频域立体声参数对应的编码参数,将该编码参数写入编码比特流。
[0119]
作为一种可选的实现方式,该方法还可以包括105,对残差信号进行编码,得到残差信号对应的编码参数,将该编码参数写入编码比特流。
[0120]
107,比特流复用。
[0121]
图5是时频域结合的立体声信号的编码方法的示意性流程图。该编码方法具体包括201至208。
[0122]
201,对立体声信号进行时域分析,并提取时域立体声参数。
[0123]
202,将时域的立体声信号转换为频域的立体声信号。
[0124]
203,在频域提取频域立体声参数。
[0125]
204,对频域的立体声信号进行下混处理,得到下混信号和残差信号。
[0126]
205,对下混信号进行编码,得到下混信号对应的编码参数,将该编码参数写入编码比特流。
[0127]
207,对时域立体声参数和频域立体声参数进行编码,得到时域立体声参数和频域立体声参数对应的编码参数,将该编码参数写入编码比特流。
[0128]
可选地,该方法还包括206,对残差信号进行编码,得到残差信号对应的编码参数,将该编码参数写入编码比特流。
[0129]
208,比特流复用。
[0130]
在编码速率较低时,例如,在编码带宽为宽带(wideband)时,如果编码速率比较低,例如为26千比特每秒(kilo-bytes per second,kbps)、16.4kbps、24.4kbps或32kbps的情况下,为了提升立体声信号回放时的空间感和稳定性,以及降低立体声信号的高频失真,对每一帧立体声信号的下混信号编码的同时,对满足预设带宽范围的子带的残差信号均进行编码,或者,在编码速率比较低的情况下,仅对立体声参数及下混信号进行编码;在编码速率比较高,例如为48kbps、64kbps或96kbps的情况下,才会对部分或者全部残差信号进行编码。本技术提出了一种立体声信号的编码方法。该方法中在提升解码立体声信号的空间感和声像稳定性的同时,尽可能降低解码立体声信号的高频失真,从而提高编码整体质量。
[0131]
图6为本技术实施例的立体声信号的编码方法300的示意性流程图。该方法300可以由编码端执行,该编码端可以是编码器或者是具有编码立体声信号功能的设备。该方法300至少包括以下步骤。
[0132]
本技术中的立体声信号的编码方法可以是可独立应用的立体声编码方法,也可以是应用于多声道信号编码中的立体声编码方法。编码端对立体声信号以帧为单位进行处理,下面以每帧的信号长度为20ms的宽带立体声信号为例,并以编码端正在处理的某一帧(例如,当前帧)为例对方法300中的立体声信号的编码方法进行详细说明。
[0133]
301,根据立体声信号的当前帧的m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定当前帧的残差信号编码参数,该当前帧的残差信号编码参数用于指示是否对该m个子带的残差信号进行编码,该m个子带为n个子带中的至少部分子带,n为大于1的正整数,m≤n,且m为正整数。
[0134]
具体地,编码端对该立体声信号的当前帧的频谱系数进行划分得到n个子带,并根据该n个子带中的至少部分子带(例如,该n个子带中的m个子带,m≤n)中每个子带的下混信号能量与每个子带的残差信号能量,确定当前帧的残差信号编码参数,该当前帧的残差信号编码参数能够用于编码端确定是否该对m个子带中的每个子带的残差信号编码。
[0135]
302,根据该当前帧的该残差信号编码参数,确定是否对该当前帧的m个子带的残差信号进行编码。
[0136]
具体地,编码端根据在步骤301中确定的当前帧的残差信号编码参数,确定是否对该当前帧的m个子带中的每个子带的残差信号编码。
[0137]
在确定对该m个子带中的每个子带的残差信号编码的情况下,对该m个子带中的每
个子带的下混信号与残差信号进行编码;
[0138]
否则,在确定不对该m个子带中的每个子带的残差信号进行编码的情况下,对该m个子带中的每个子带的下混信号进行编码。
[0139]
在一种实现方式中,作为示例而非限定,该m个子带为该n个子带中的子带索引号小于预设的最大子带索引号的m个子带。换言之,该m个子带为该n个子带中频率相对较低的子带,即该m个子带的频率要低于该n个子带中除该m个子带外的n-m个子带的频率。
[0140]
具体地,根据不同的编码速率,预设不同的最大子带索引号,使得根据该预设的最大子带索引号,从该n个子带中选出子带索引号小于或等于该预设的最大子带索引号的m个子带,并根据该m个子带去确定该当前帧的残差信号编码参数。
[0141]
例如,当编码速率为26kbps时,n=10,m=5,该预设的最大子带索引号被设定为4,则代表根据该10个子带中子带索引号为0-4的5个子带确定该当前帧的残差信号编码参数。
[0142]
再例如,当编码速率为44kbps时,n=12,m=6,该预设的最大子带索引号被设定为5,则代表根据该12个子带中子带索引号为0-5的6个子带确定该当前帧的残差信号编码参数。
[0143]
再例如,当编码速率为56kbps时,n=12,m=7,该预设的最大子带索引号被设定为6,则代表根据该12个子带中子带索引号为0-6的7个子带确定该当前帧的残差信号编码参数。
[0144]
作为另一种实现方式,还可以针对不同的编码速率,预设在不同的编码速率下的m个子带的最大子带索引号与最小子带索引号;使得根据该预设的最大子带索引号与该预设的最小子带索引号,从该n个子带中选出子带索引号大于或等于该预设的最小子带索引号且小于或等于该预设的最大子带索引号的m个子带,并根据该m个子带去确定该当前帧的残差信号编码参数。
[0145]
例如,当编码速率为26kbps时,n=10,m=4,该预设的最小子带索引号被设定为4,该预设的最大子带索引号被设定为7,则代表根据该10个子带中子带索引号为4-7的4个子带确定该当前帧的残差信号编码参数。
[0146]
作为示例而非限定,该根据该当前帧的残差信号编码参数,确定是否对该m个子带中的每个子带的残差信号编码,包括:根据该当前帧的残差信号编码参数与预设的第一阈值的比较结果,确定是否对该m个子带中的每个子带的残差信号编码,该第一阈值大于0,且小于1.0;在该当前帧的残差信号编码参数小于或等于该第一阈值的情况下,确定不对该m个子带中的每个子带的残差信号进行编码;或在该当前帧的残差信号编码参数大于该第一阈值的情况下,确定对该m个子带中的每个子带的残差信号进行编码。
[0147]
具体地,编码端将该当前帧的残差信号编码参数与预设的第一阈值进行比较,当该当前帧的残差信号编码参数大于该第一阈值时,确定对该m个子带中的每个子带的残差信号进行编码;当该当前帧的残差信号编码参数小于或者等于该第一阈值时,确定不对该m个子带中的每个子带的残差信号进行编码。
[0148]
例如,在一种实现方式中,该第一阈值为0.075,如果该当前帧的残差信号编码参数的数值为0.06,则编码端不对该m个子带中的每个子带的残差信号进行编码。
[0149]
应理解,上述关于第一阈值的取值仅作为示例,该第一阈值还可以为大于0且小于1.0的其他数值。例如,该第一阈值为0.55、0.46、0.86或0.9等。
[0150]
作为另一种可选地实现方式,编码端还可以对当前帧的残差信号编码参数与第一阈值的比较结果采用0或1进行表示。例如,0表示不对该m个子带中的每个子带的残差信号进行编码,用1表示对该m个子带中的每个子带的残差信号进行编码。当然,也可以用1表示不对该m个子带中的每个子带的残差信号进行编码,用0表示对该m个子带中的每个子带的残差信号进行编码。
[0151]
下面以该m个子带为子带索引号小于或等于预设的最大子带索引号的子带为例(例如,该最大的子带索引号为m-1),对编码端确定当前帧的残差信号编码参数的方法进行详细说明。
[0152]
方法1
[0153]
编码端根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定该当前帧的残差信号编码参数。
[0154]
作为一种可选的实现方式,编码端根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定第一参数,该第一参数指示该m个子带中的每个子带的下混信号能量与残差信号能量的大小关系;
[0155]
并且根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量,确定第二参数,该第二参数指示第一能量总和与第二能量总和的大小关系,该第一能量总和为该m个子带的残差信号能量与下混信号能量之和,该第二能量总和为该当前帧的前一帧的频域信号中的m个子带的残差信号能量与下混信号能量之和,该当前帧的该m个子带与该前一帧的该m个子带的子带索引号相同;
[0156]
最终根据该第一参数、该第二参数与该当前帧的前一帧的长时平滑参数,确定该当前帧的残差信号编码参数。
[0157]
具体地,编码端在确定该第一参数时,根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定m个能量参数,该m个能量参数中的每个能量参数指示该m个子带中的一个子带的下混信号能量与残差信号能量的大小关系,该m个能量参数与该m个子带一一对应,编码端最终将该m个能量参数中的数值最大的能量参数确定为该第一参数。
[0158]
可选地,该m个能量参数中子带索引号为b的子带的能量参数可以通过如下函数确定:
[0159]
res_dmx_ratio[b]=f(g(b),res_cod_nrg_m[b],res_cod_nrg_s[b])
ꢀꢀꢀ
(1)
[0160]
其中,res_dmx_ratio[b]为该m个能量参数中子带索引号为b的子带的能量参数,b大于等于0,且小于等于预设的最大子带索引号,res_cod_nrg_s[b]为该子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为该子带索引号为b的子带的下混信号能量,g(b)为关于该子带索引号为b的子带的边增益side_gain[b]的函数。
[0161]
具体地,在一种实现方式中,该m个能量参数中子带索引号为b的子带的能量参数满足公式:
[0162][0163]
将该第一参数记为res_dmx_ratio,则该res_dmx_ratio满足:
[0164]
res_dmx_ratio=max(res_dmx_ratio[0],res_dmx_ratio[1],

,res_dmx_ratio
[m-1])
ꢀꢀꢀ
(3)
[0165]
编码端在确定第二参数时,首先分别确定该m个子带的残差信号之和与下混信号之和,将该m个子带的下混信号之和记为dmx_nrg_all_curr,将该m个子带的残差信号之和记为res_nrg_all_curr。
[0166]
可选地,该m个子带的下混信号能量之和dmx_nrg_all_curr满足:
[0167][0168]
其中,res_cod_nrg_m_prev[b]表示当前帧的前一帧的子带索引号为b的子带的下混信号能量,γ1表示平滑因子,γ1为大于等于0且小于等于1的实数,例如,γ1=0.1。
[0169]
应理解,上述关于γ1的取值仅作为示例,γ1的取值还可以为大于等于0且小于等于1的其他数值。例如,γ1=0.3、0.5、0.6、0.8等。
[0170]
可选地,该m个子带的残差信号能量之和res_nrg_all_curr满足:
[0171][0172]
其中,res_cod_nrg_s_prev[b]表示当前帧的前一帧的子带索引号为b的子带的残差信号能量,γ2表示平滑因子,γ2为大于等于0小于等于1的实数,例如,γ2=0.1。
[0173]
应理解,上述关于γ2的取值仅作为示例,γ2的取值还可以为大于等于0且小于等于1的其他数值。例如,γ2=0.2、0.5、0.7、0.9等。
[0174]
编码端根据该dmx_nrg_all_curr与该res_nrg_all_curr,确定当前帧的该m个子带的下混信号能量与残差信号能量之和(即,第一能量总和),将该第一能量总和记为dmx_res_all。
[0175]
可选地,dmx_res_all满足:
[0176]
dmx_res_all=res_nrg_all_curr+dmx_nrg_all_curr
ꢀꢀꢀ
(6)
[0177]
编码端还可以确定当前帧的前一帧的频域信号中与该m个子带的子带索引号相同的m个子带的残差信号与下混信号能量之和(即,第二能量总和),将该第二能量总和记为dmx_res_all_prev。
[0178]
第二能量总和dmx_res_all_prev的确定可以参考上述确定第一能量总和dmx_res_all的方法进行确定,为了简洁,此处不再赘述。
[0179]
编码端在确定了第一能量总和与第二能量总和后,便可以根据该第一能量总和与该第二能量总和,确定该第二参数。
[0180]
可选地,该第二参数为帧间能量波动比,将该帧间能量波动比记为frame_nrg_ratio。
[0181]
可选地,在一种实现方式中,该帧间能量波动比frame_nrg_ratio满足:
[0182]
frame_nrg_ratio=dmx_res_all/dmx_res_all_prev
ꢀꢀꢀ
(7)
[0183]
可选地,在另一种实现方式中,帧间能量波动比frame_nrg_ratio满足:
[0184]
frame_nrg_ratio=min(5.0,max(0.2,dmx_res_all/dmx_res_all_prev))
ꢀꢀꢀ
(8)
[0185]
其中,max函数的作用为返回给定参数(0.2,frame_nrg_ratio_prev)中的较大值,min函数的作用为返回给定参数(5.0,max(0.2,frame_nrg_ratio_prev))中的最小值;公式
(8)与公式(7)相比多了校正的操作,使得通过公式(8)确定的frame_nrg_ratio更能够体现当前帧与前一帧的帧间能量波动。
[0186]
编码端在确定了第一参数、第二参数之后,便可以根据该第一参数、该第二参数以及该当前帧的前一帧的长时平滑参数,确定该当前帧的残差信号编码参数。
[0187]
作为示例而非限定,该当前帧的残差信号编码参数可以为该当前帧的长时平滑参数,即,编码端可以根据该第一参数、该第二参数与该当前帧的前一帧的长时平滑参数,确定该当前帧的长时平滑参数,再将当前帧的长时平滑参数与预设的第一阈值进行比较,从而确定是否对该m个子带中的每个子带的残差信号编码。
[0188]
例如,该当前帧的长时平滑参数满足公式:
[0189]
res_dmx_ratio_lt=res_dmx_ratio.α+res_dmx_ratio_lt_prev
·
(1-α)
ꢀꢀꢀ
(9)
[0190]
其中,res_dmx_ratio_lt为该当前帧的长时平滑参数,res_dmx_ratio为该第一参数,res_dmx_ratio_lt_prev为该当前帧的前一帧的长时平滑参数,0<α<1。
[0191]
在根据式(9)计算res_dmx_ratio_lt时,当第一参数的取值和/或第二参数的取值发生变化时,式(9)中的参数α的取值可能也会相应地发生变化,即,随着第一参数的取值和/或第二参数的取值发生变化,该当前帧的前一帧的长时平滑参数在式(9)中所占的比重可能也会相应地发生变化。
[0192]
例如,在该第二参数大于预设的第三阈值时,α在该第一参数小于预设的第二阈值的情况下的取值大于在该第一参数大于或等于预设的第二阈值的情况下的取值,该第二阈值大于或等于0,且小于或等于0.6,该第三阈值大于或等于2.7,且小于或等于3.7;或
[0193]
在该第二参数小于预设的第五阈值时,α在该第一参数大于预设的第四阈值的情况下的取值大于在该第一参数小于或等于预设的第四阈值的情况下的取值,该第四阈值大于或等于0,且小于或等于0.9,该第五阈值大于或等于0,且小于或等于0.71;或
[0194]
α在该第一参数小于预设的第二阈值,且该第二参数大于预设的第三阈值的情况下的取值大于在该第二参数大于或等于预设的第五阈值,且小于或等于预设的第三阈值的情况下的取值,该第二阈值大于或等于0,且小于或等于0.6,该第三阈值大于或等于2.7,且小于或等于3.7,该第五阈值大于或等于0,且小于或等于0.71。
[0195]
例如,第二阈值的取值可以为0.1,第三阈值的取值可以为3.2,即,当该第二参数frame_nrg_ratio>3.2时,α在第一参数res_dmx_ratio<0.1的情况下的取值大于在res_dmx_ratio≥0.1的情况下的取值;或者
[0196]
第四阈值的取值可以为0.4,第五阈值的取值可以为0.21,即,当该frame_nrg_ratio<0.21时,α在res_dmx_ratio>0.4的情况下的取值大于在res_dmx_ratio≤0.4的情况下的取值;或者
[0197]
第二阈值的取值可以为0.1,第三阈值的取值可以为3.2,第五阈值的取值可以为0.21,即,α在res_dmx_ratio<0.1,且frame_nrg_ratio>3.2的情况下的取值大于在0.21≤frame_nrg_ratio≤3.2的情况下的取值;或者
[0198]
第四阈值的取值可以为0.4,第五阈值的取值可以为0.21,即,α在res_dmx_ratio>0.4,且frame_nrg_ratio<0.21的情况下的取值大于在0.21≤frame_nrg_ratio≤3.2的情况下的取值。
[0199]
进一步地,例如,在res_dmx_ratio<0.1,且frame_nrg_ratio>3.2的情况下,α的
取值为0.5,在0.21≤frame_nrg_ratio≤3.2的情况下,α的取值为0.1。
[0200]
需要说明的是,上述列举的关于第二阈值至第五阈值的取值以及α的取值仅为示例性说明,并不对本技术构成任何限定,第二阈值至第五阈值的取值以及α的取值还可以为给定区间内的其他取值。
[0201]
还需要说明的是,当该当前帧为编码端处理的首帧时,此时该当前帧也就不存在前一帧,此时,在确定该当前帧的长时平滑参数时,上式中的当前帧的前一帧的长时平滑参数为预设的长时平滑参数。作为示例而非限定,该预设的长时平滑参数的取值可以为1.0,当然也可以取值为0.9,或1.1等其他数值。
[0202]
方法2
[0203]
方法2与方法1中确定的残差信号编码参数的方法类似,区别之处在于确定第一参数的方法不同,因此,可以参照上述方法1中确定残差信号编码参数的相关描述。为了简洁,此处仅对方法2中的确定第一参数的方法进行说明。
[0204]
作为示例而非限定,编码端根据该m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第一参数,该第一参数指示该m个子带中的每个子带的下混信号能量与残差信号能量的大小关系。
[0205]
具体地,编码端在确定该第一参数时,根据该m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定m个能量参数,该m个能量参数中的每个能量参数指示该m个子带中的一个子带的下混信号能量与残差信号能量的大小关系,该m个能量参数与该m个子带一一对应,编码端最终将该m个能量参数中的数值最大的能量参数确定为该第一参数。
[0206]
可选地,编码端确定的该m个能量参数中子带索引号为b的子带的能量参数为可以通过如下函数确定:
[0207]
res_dmx_ratio[b]=f(res_cod_nrg_m[b],res_cod_nrg_s[b])
ꢀꢀꢀ
(10)
[0208]
其中,res_dmx_ratio[b]为该m个能量参数中子带索引号为b的子带的能量参数,b大于等于0,且小于等于预设的最大子带索引号,res_cod_nrg_s[b]为该子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为该子带索引号为b的子带的下混信号能量。
[0209]
例如,该m个能量参数中子带索引号为b的子带的能量参数满足公式:
[0210]
res_dmx_ratio[b]=res_cod_nrg_s[b]/res_cod_nrg_m[b]
ꢀꢀꢀ
(11)
[0211]
将该第一参数记为res_dmx_ratio,则该res_dmx_ratio满足:
[0212]
res_dmx_ratio=max(res_dmx_ratio[0],res_dmx_ratio[1],

res_dmx_ratio[m-1])
ꢀꢀꢀ
(12)
[0213]
在确定了第一参数后,编码端便可以按照方法1中描述的方法确定第二参数,最终根据方法1中描述的方法确定残差信号编码参数,并根据该残差信号编码参数,确定是否对该m个子带中的每个子带的残差信号编码。
[0214]
方法3
[0215]
方法3与方法1中确定的残差信号编码参数的方法类似,区别之处在于确定第一参数的方法不同,因此,可以参照上述方法1中确定残差信号编码参数的相关描述。为了简洁,此处仅对方法3中的确定第一参数的方法进行说明。
[0216]
作为示例而非限定,编码端根据该m个子带中的每个子带的下混信号能量与每个
子带的残差信号能量,确定第一参数,并对该第一参数进行修正,将修正后的第一参数确定为最终的第一参数,该第一参数指示该m个子带中的每个子带的下混信号能量与残差信号能量的大小关系。
[0217]
具体地,编码端在确定该第一参数时,根据该m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定m个能量参数,该m个能量参数中的每个能量参数指示该m个子带中的一个子带的下混信号能量与残差信号能量的大小关系,该m个能量参数与该m个子带一一对应,编码端将该m个能量参数之和确定为该第一参数。
[0218]
可选地,编码端确定的该m个能量参数中子带索引号为b的子带的能量参数可以通过函数式(1)确定。
[0219]
例如,该m个能量参数中子带索引号为b的子带的能量参数满足式(2)。
[0220]
可选地,编码端确定的该m个能量参数中子带索引号为b的子带的能量参数可以通过函数式(11)确定。
[0221]
例如,该m个能量参数中子带索引号为b的子带的能量参数满足公式(11)。
[0222]
例如,编码端根据该m个能量参数,确定的该第一参数res_dmx_ratio1满足:
[0223][0224]
此外,编码端还会确定出该m个能量参数中的最大值res_dmx_ratio_max,该res_dmx_ratio_max满足式(12)。
[0225]
编码端根据该res_dmx_ratio_max与该m个子带中的每个子带的下混信号能量res_cod_nrg_m[b]对该res_dmx_ratio1进行修正,确定修正后的res_dmx_ratio2。
[0226]
例如,编码端按照下式对该res_dmx_ratio1进行修正,m=5:
[0227]
修正后获得的res_dmx_ratio2满足:
[0228][0229]
可选地,还可以对修正后的res_dmx_ratio2作进一步的修正:
[0230]
例如,最终获得的修正后的res_dmx_ratio3满足:
[0231]
res_dmx_ratio3=pow(res_dmx_ratio2,1.2)
ꢀꢀꢀ
(15)
[0232]
其中,函数pow()为指数函数,pow(res_dmx_ratio2,1.2)代表res_dmx_ratio2的1.2次方。
[0233]
在确定了修正后的第一参数(修正后的res_dmx_ratio3)后,编码端便可以按照方法1中描述的方法确定第二参数,最终根据方法1中描述的方法确定残差信号编码参数,并根据该残差信号编码参数,确定是否对该m个子带中的每个子带的残差信号编码。
[0234]
方法4
[0235]
方法4与方法1中确定的残差信号编码参数的方法类似,区别之处在于确定第一参数的方法不同,因此,可以参照上述方法1中确定残差信号编码参数的相关描述。为了简洁,此处仅对方法4中的确定第一参数的方法进行说明。
[0236]
作为示例而非限定,编码端根据该m个子带的残差信号能量之和与该m个子带的下混信号能量之和,确定该第一参数。
[0237]
具体地,编码端分别确定该m个子带的下混信号能量之和dmx_nrg_all_curr与该m个子带的残差信号能量之和res_nrg_all_curr,并根据该dmx_nrg_all_curr与该res_nrg_all_curr,确定该第一参数。
[0238]
可选地,该m个子带的下混信号能量之和dmx_nrg_all_curr满足式(4)。索引号可选地,该m个子带的残差信号能量之和res_nrg_all_curr满足式(5)。索引号
[0239]
编码端根据该dmx_nrg_all_curr与该res_nrg_all_curr,确定该第一参数res_dmx_ratio。
[0240]
例如,编码端最终确定的第一参数res_dmx_ratio满足:
[0241]
res_dmx_ratio=res_nrg_all_curr/dmx_nrg_all_curr
ꢀꢀꢀ
(16)
[0242]
在确定了第一参数后,编码端便可以按照方法1中描述的方法确定第二参数,最终根据方法1中描述的方法确定残差信号编码参数,并根据该残差信号编码参数,确定是否对该m个子带中的每个子带的残差信号编码。
[0243]
为了更好地理解立体声信号的整个编码过程,下面同样以每帧的信号长度为20ms的宽带立体声信号为例,并以编码端正在处理的某一帧(例如,当前帧)为例,结合图7对本技术实施例的立体声信号的编码方法300进行介绍,图7所示的立体声信号的编码方法至少包括以下步骤:
[0244]
401,对左声道时域信号与右声道时域信号进行时域预处理,以得到时域预处理后的左声道时域信号与右声道时域信号。
[0245]
具体地,当前帧的信号长度为20ms,若采样频率为16千赫兹(khz),则经过采样,当前帧的帧长h=320,即当前帧包括320个样点。
[0246]
当前帧的立体声信号包括当前帧的左声道时域信号以及当前帧的右声道时域信号。当前帧的左声道时域信号记作x
l
(n),当前帧的右声道时域信号记作xr(n),其中,n为样点序号,n=0,1,...,h-1。左声道时域信号以及右声道时域信号可以简称为左右声道时域信号。
[0247]
对当前帧的左声道时域信号与右声道时域信号进行时域预处理,可以包括:对当前帧的左声道时域信号与右声道时域信号分别进行高通滤波处理,得到当前帧时域预处理后的左声道时域信号与右声道时域信号。当前帧预处理后的左声道时域信号记作x
l_hp
(n),当前帧预处理后的右声道时域信号记作x
r_hp
(n),其中n为样点序号,n=0,1,...,h-1。当前帧时域预处理后的左声道时域信号以及当前帧时域预处理后的右声道时域信号可以简称为当前帧时域预处理后的左右声道时域信号。高通滤波处理时可以使用截止频率为20赫兹(hz)的无限脉冲响应(infinite impulse response,iir)数字滤波器,也可是其他类型的滤波器。
[0248]
例如,立体声信号的采样率为16khz时,对应的截止频率为20hz的高通滤波器的传递函数可以为:
[0249][0250]
其中,b0=0.994461788958195,b1=-1.988923577916390,b2=0.994461788958195,a1=1.988892905899653,a2=-0.988954249933127,z为z变换的变换因子。相应的时域滤波器为:
[0251]
x
l_hp
(n)=b0·
x
l
(n)+b1·
x
l
(n-1)+b2·
x
l
(n-2)-a1·
x
l_hp
(n-1)-a2·
x
l_hp
(n-2)
[0252]
ꢀꢀꢀ
(18)
[0253]
402,对时域预处理后的左声道时域信号与右声道时域信号进行时域分析。
[0254]
具体地,时域分析可以包括瞬态检测等等。其中,瞬态检测可以是分别对当前帧预处理后的左声道时域信号与右声道时域信号进行能量检测,检测当前帧是否发生能量突变。
[0255]
例如,计算当前帧预处理后的左声道时域信号的能量e
cur_l
;根据当前帧的前一帧预处理后的左声道时域信号的能量e
pre_l
和当前帧预处理后的左声道时域信号的能量e
cur_l
之间的差值的绝对值进行瞬态检测,得到当前帧预处理后的左声道时域信号的瞬态检测结果。可以用同样的方法对当前帧预处理后的右声道时域信号进行瞬态检测。
[0256]
时域分析可以包含除瞬态检测之外的其他现有技术中的时域分析。例如,可以包括时域声道间时间差(inter-channel time difference,itd)参数确定、时域的时延对齐处理、频带扩展预处理等。
[0257]
403,对时域预处理后的左声道时域信号与右声道时域信号进行时频变换,得到左声道频域信号与右声道频域信号。
[0258]
具体地,可以对时域预处理后的左声道时域信号进行离散傅里叶变换,得到左声道频域信号;对时域预处理后的右声道时域信号进行离散傅里叶变换,得到右声道频域信号。
[0259]
为了克服频谱混叠的问题,连续两次离散傅里叶变换之间可以采用叠接相加的方法进行处理,有时还会对离散傅里叶变换的输入信号进行补零。
[0260]
离散傅里叶变换可以是每帧进行一次,也可以将每帧信号分成p(p为大于或等于2的正整数)个子帧,对每个子帧进行一次离散傅里叶变换。
[0261]
例如,对当前帧进行一次离散傅里叶变换,将对当前帧进行离散傅里叶变换后的左声道频域信号记作l(k),将对当前帧进行离散傅里叶变换后的右声道频域信号记作r(k),k为频点索引号,且k=0,1,

,l-1,l为当前帧经过离散傅里叶变换后的帧长,即当前帧经过离散傅里叶变换后包括l个频点。
[0262]
还例如,将当前帧信号分为p个子帧,p为大于或等于2的正整数,将经过离散傅里叶变换后的索引号为i的子帧的左声道频域信号记作li(k),将经过离散傅里叶变换后的索引号为i的子帧的右声道频域信号记作ri(k),i为子帧索引号,i=0,1,...,p-1,k为频点索引号,且k=0,1,...,l-1,l为每个子帧经过离散傅里叶变换后的帧长,即每个子帧经过离散傅里叶变换后均包括l个频点。
[0263]
404,确定itd参数,并对确定的itd参数进行编码。
[0264]
具体地,确定itd参数的方法有很多种:可以只在频域进行,可以只在时域进行,也可以通过时频结合的方法来确定,本技术对此不做限制。
[0265]
可以在时域采用互相关系数提取itd参数。例如:在0≤i≤t
max
范围内,计算和
[0266]
如果则itd参数值为max(cn(i))对应的索引号的相反
数;否则itd参数值为max(c
p
(i))对应的索引号。其中,i为计算互相关系数的索引号,j为样点的索引号,t
max
对应于不同采样率下itd取值的最大值,h为当前帧的帧长。
[0267]
也可以在频域基于左声道频域信号与右声道频域信号确定itd参数,例如:可以采用离散傅里叶变换(discrete fourier transform,dft)、快速傅氏变换(fast fourier transformation,fft)、修正离散余弦变换(modified discrete cosine transform,mdct)等时频变换技术,将时域信号变换为频域信号。
[0268]
本技术实施例中,离散傅里叶变换后的索引号为i的子帧的左声道频域信号记为li(k),k=0,1,

,l/2-1,变换后的索引号为i的子帧的右声道频域信号记为ri(k),k=0,1,

,l/2-1,i=0,1,

,p-1,计算索引号为i的子帧的频域相关系数:xcorri(k)=li(k)
·r*i
(k),其中r
*i
(k)为变换后第i个子帧的右声道频域信号的共轭。
[0269]
将频域互相关系数转换到时域xcorri(n),n=0,1,

,l-1,在l/2-t
max
≤n≤l/2+t
max
范围内搜索xcorri(n)的最大值,得到索引号为i的子帧的itd参数值为
[0270]
此外,还可以根据dft变换后索引号为i的子帧的左声道频域信号和索引号为i的子帧的右声道频域信号,在搜索范围-t
max
≤j≤t
max
,计算幅度值:则itd参数值为即幅度值最大的值对应的索引号。
[0271]
在确定了itd参数后,可以将其进行编码,得到编码参数,并将该编码参数写入立体声编码码流。
[0272]
405,根据itd参数,对左声道频域信号与右声道频域信号进行时移调整。
[0273]
具体地,可以根据任何一种技术对左声道频域信号与右声道频域信号进行时移调整,本技术实施例不做限定。
[0274]
以当前帧信号被分为p个子帧,p为大于或等于2的正整数为例,经过时移调整后的索引号为i的子帧的左声道频域信号可以记作l'i(k),k=0,1,

,l/2-1,经过时移调整后的索引号为i的子帧的右声道频域信号可以记作ri'(k),k为频点索引号,k=0,1,

,l/2-1,i为子帧索引号,i=0,1,

,p-1,则
[0275][0276]
其中,ti为索引号为i的子帧的itd参数值,l为离散傅里叶变换后的子帧的长度,li(k)为变换后索引号为i的第i个子帧的左声道频域信号,ri(k)为变换后索引号为i的子帧的右声道频域信号,i为子帧索引号,i=0,1,

,p-1。
[0277]
406,根据时移调整后的左声道频域信号与右声道频域信号,计算其他频域立体声参数,并进行编码。
[0278]
具体地,其他频域立体声参数可以包含但不限于声道间相位差(inter-channel phase difference,ipd)参数、和/或声道间电平差(inter-channel level difference,
ild)参数、和/或子带边增益等。其中,ild也可以称为声道间幅度差。
[0279]
计算得到其他频域立体声参数后,可以将其他频域立体声参数进行编码,得到编码参数,并将该编码参数写入立体声编码码流。
[0280]
407,从当前帧的频域信号包括的n个子带中确定满足预设条件的m个子带。
[0281]
具体地,对经过时移调整的当前帧的频域信号进行分带,例如,将当前帧的频域信号分为n(n为大于或等于2的正整数)个子带,子带索引号为b的子带包含的频点为k∈[band_limits(b),band_limits(b+1)-1],其中band_limits(b)为子带索引号为b的子带包含的频点的最小索引号,band_limits(b+1)为子带索引号为b+1的子带包含的频点的最小索引号。根据预设条件,从该n个子带中确定满足预设条件的m个子带。
[0282]
例如,预设条件可以为:子带索引号小于或等于预设的最大子带索引号,即b≤res_cod_band_max,res_cod_band_max为预设的最大子带索引号。
[0283]
预设条件还可以为:子带索引号小于或等于预设的最大子带索引号,且大于或等于预设的最小子带索引号,即,res_cod_band_min≤b≤res_cod_band_max,res_cod_band_max为预设的最大子带索引号,res_cod_band_min为预设的最小子带索引号。
[0284]
进一步地,对于宽带立体声信号而言,根据不同的编码速率,还可以设置不同的预设条件。例如,编码速率为26kbps时,预设条件可以为子带索引号b≤5,即,预设的最大子带索引号为5;编码速率为44kbps时,预设条件可以为子带索引号b≤6,即,预设的最大子带索引号为6;编码速率为56kbps时,预设条件可以为子带索引号b≤7,即,预设的最大子带索引号为7。
[0285]
例如,预设的条件为:子带索引号b≤4,则可以从当前帧的n个子带中将索引号为0~4的5个子带确定为满足预设条件的子带。
[0286]
此外,若当前帧被分为了p个子帧(p为大于或等于2的正整数),则对经过时移调整的每个子帧进行分带,例如,将索引号为i(i=0,1,...,p-1)的子帧分为n个子带,索引号为i的子帧中的索引号为b的子带包含的频点为ki∈[band_limits(b),band_limits(b+1)-1],其中,band_limits(b)为索引号为i的子帧中的索引号为b的子带包含的频点的最小索引号,band_limits(b+1)为索引号为i的子帧中的索引号为b+1的子带包含的频点的最小索引号。
[0287]
根据预设条件,从每个子帧包括的n个子带中确定满足预设条件的m个子带。
[0288]
预设的条件可以为:子带的索引号大于或等于预设的最小子带索引号,小于或等于预设的最大子带索引号,即,res_cod_band_min≤b≤res_cod_band_max。
[0289]
例如,预设的条件为4≤b≤8,则从每个子帧的n个子带中将索引号为4~8的5个子带确定为满足预设条件的子带。
[0290]
408,根据时移调整后的左声道频域信号与右声道频域信号,计算满足预设条件的子带的下混信号和残差信号。
[0291]
具体地,以将当前帧划分为p个子帧(p为大于或等于2的正整数)(例如可以为2个子帧,或4个子帧等等)为例,对计算满足预设条件的子带的下混信号与残差信号的方法进行说明。
[0292]
例如,预设条件为子带索引号b小于或等于5,则计算每个子帧中的索引号为0~5的子带的下混信号与残差信号。
[0293]
将索引号为i的子帧中的子带索引号为b(b≤5)的子带的下混信号记作dmxi(k),将索引号为i的子帧中的子带索引号为b的子带的残差信号记作resi'(k),则dmxi(k)和resi'(k)满足:
[0294][0295]
resi'(k)=resi(k)-g_ildi·
dmxi(k)
ꢀꢀꢀ
(21)
[0296][0297][0298]
β=arctan(sin(ipdi(b)),cos(ipdi(b))+2
·
c)
ꢀꢀꢀ
(24)
[0299][0300]
其中,ipdi(b)为索引号为i的子帧中的子带索引号为b的子带的ipd参数,g_ildi为索引号为i的子帧中的子带索引号为b的子带的边增益,l
′i(k)为经过时移调整后的索引号为i的子帧中的子带索引号为b的子带的左声道频域信号,r
′i(k)为经过时移调整后的索引号为i的子帧中的子带索引号为b的子带的右声道频域信号,l
″i(k)为经过多个立体声参数调整后的索引号为i的子帧中的子带索引号为b的子带的左声道频域信号,r
″i(k)为经过多个立体声参数调整后的索引号为i的子帧中的子带索引号为b的子带的右声道频域信号,i为子帧索引号,i=0,1,

,p-1,k为频点索引号,k∈[band_limits(b),band_limits(b+1)-1],band_limits(b)为索引号为i的子帧中的索引号为b的子带包含的频点的最小索引号,band_limits(b+1)为索引号为i的子帧中的索引号为b+1的子带包含的频点的最小索引号。
[0301]
又例如,索引号为i的子帧中的索引号为b的子带的下混信号dmxi(k)也可以按照如下方法计算:
[0302]
dmxi(k)=[l

(k)+r

(k)]
·cꢀꢀꢀ
(26)
[0303][0304]
其中,l
″i(k)为经过多个立体声参数调整后索引号为i的子帧中的子带索引号为b的子带的左声道频域信号,r
″i(k)为经过多个立体声参数调整后的索引号为i的子帧中的子带索引号为b的子带的右声道频域信号,i为子帧索引号,i=0,1,

,p-1,k为频点索引号,k∈[band_limits(b),band_limits(b+1)-1],band_limits(b)为子带索引号为b的个子带包含的频点的最小索引号,band_limits(b+1)为索引号为i的子帧中的索引号为b+1的子带包含的频点的最小索引号。本技术实施例对下混信号能量和残差信号能量的计算方法不作限定。
[0305]
409,根据满足预设条件的子带的下混信号能量与残差信号能量,确定残差信号编码参数。
[0306]
410,根据残差信号编码参数,确定是否需要对当前帧的m个子带中的每个子带的残差信号进行编码;如果确定需要对残差信号进行编码,进入412;如果确定不需要对残差
信号进行编码,进入411。
[0307]
411,根据残差信号编码参数,对当前帧的m个子带中的每个子带的下混信号进行编码。此时,不需要对残差信号进行编码。
[0308]
412,根据残差信号编码参数,对当前帧的m个子带中的每个子带的下混信号与残差信号进行编码。
[0309]
关于步骤409至411的具体实现,请参照方法300中的相关描述,为了简洁,此处不再赘述。
[0310]
需要说明的是,在方法400中,当编码端将当前帧分为p个子帧,p为大于或等于2的正整数,并将该p个子帧中的每个子帧的频谱参数划分为n个子带,根据每个子帧中的满足预设条件的m个子带(该m个子带为该n个子带中的至少部分子带)的下混信号能量与残差信号能量,确定残差信号编码参数时,对应到方法300中的当前帧中的索引号为b的子带的残差信号能量res_cod_nrg_s[b]为该p个子帧中的每个子帧中的索引号为b的子带的残差信号能量之和,当前帧中的索引号为b的子带的下混信号能量res_cod_nrg_m[b]为该p个子帧中的每个子帧中的索引号为b的子带的下混信号能量之和。
[0311]
例如,该当前帧被划分为2个子帧,该2个子帧中的每个子帧的频谱参数被划分为n个子带,则对应到方法300中的当前帧中的索引号为b的子带的下混信号能量res_cod_nrg_m[b]为子帧1中的索引号为b的子带的下混信号能量与子帧2中的索引号为b的子带的下混信号能量之和,当前帧中的索引号为b的子带的残差信号能量res_cod_nrg_s[b]为子帧1中的索引号为b的子带的残差信号能量与子帧2中的索引号为b的子带的残差信号能量之和。
[0312]
上文结合图1至图7对本技术实施例的立体声信号的编码方法进行了详细的描述。下面结合图8至图9对本技术实施例的立体声信号的编码装置进行描述,应理解,图8至图9中装置与本技术实施例的立体声信号的编码方法是对应的,并且图8至图9中装置可以执行本技术实施例的立体声信号的编码方法。为了简洁,下面适当省略重复的描述。
[0313]
图8是本技术实施例的立体声信号的编码装置的示意性框图。图8的装置500包括:
[0314]
第一确定模块501,用于根据立体声信号的当前帧的m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定当前帧的残差信号编码参数,该当前帧的残差信号编码参数用于指示是否对该m个子带的残差信号进行编码,该m个子带为n个子带中的至少部分子带,n为大于1的正整数,m≤n,且m为正整数。
[0315]
第二确定模块502,用于根据该当前帧的残差信号编码参数,确定是否对该当前帧的m个子带的残差信号编码。
[0316]
本技术中,通过根据满足预设带宽范围内的n个子带中的m个子带的下混信号能量与残差信号能量,确定残差信号编码参数,并根据该残差信号编码参数,确定是否对该m个子带中的每个子带的残差信号编码,避免在编码速率较低时仅对下混信号编码,或者,对满足预设带宽范围内的子带的残差信号均进行编码,从而在提升解码立体声信号的空间感和声像稳定性的同时,尽可能降低解码立体声信号的高频失真,提高编码质量。
[0317]
可选地,作为一种实现方式,该m个子带为该n个子带中的子带索引号小于或等于预设的最大子带索引号的m个子带。
[0318]
可选地,作为一种实现方式,该m个子带为该n个子带中的子带索引号大于或等于预设的最小子带索引号且小于或等于预设的最大子带索引号的m个子带。
[0319]
可选地,作为一种实现方式,该第二确定模块502还用于:将该残差信号编码参数与预设的第一阈值进行比较,该第一阈值大于0,且小于1.0;在该残差信号编码参数小于或等于该第一阈值的情况下,确定不对该m个子带中的每个子带的残差信号进行编码;或,在该残差信号编码参数大于该第一阈值的情况下,确定对该m个子带中的每个子带的残差信号进行编码。
[0320]
可选地,作为一种实现方式,该第一确定模块501还用于:根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定该残差信号编码参数。
[0321]
可选地,作为一种实现方式,该第一确定模块501还用于:根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定第一参数,该第一参数指示该m个子带中的每个子带的下混信号能量与残差信号能量的大小关系;根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量,确定第二参数,该第二参数指示第一能量总和与第二能量总和的大小关系,该第一能量总和为该m个子带的残差信号能量与下混信号能量之和,该第二能量总和为该当前帧的前一帧的频域信号中的m个子带的残差信号能量与下混信号能量之和,该当前帧的该m个子带与该前一帧的该m个子带的子带索引号相同;根据该第一参数、该第二参数与该当前帧的前一帧的长时平滑参数,确定该残差信号编码参数。
[0322]
可选地,作为一种实现方式,该第一确定模块501还用于:根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定m个能量参数,该m个能量参数指示该m个子带中的一个子带的下混信号能量与残差信号能量的大小关系,该m个能量参数与该m个子带一一对应;将该m个能量参数中的数值最大的能量参数确定为该第一参数。
[0323]
可选地,作为一种实现方式,该第一确定模块501确定的该m个能量参数中子带索引号为b的子带的能量参数满足公式:
[0324]
res_dmx_ratio[b]=res_cod_nrg_s[b]/(res_cod_nrg_s[b]+(1-g(b))
·
(1-g(b))
·
res_cod_nrg_m[b]+1)
[0325]
其中,res_dmx_ratio[b]为子带索引号为b的子带的能量参数,b大于等于0,且小于等于预设的最大子带索引号,res_cod_nrg_s[b]为该子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为该子带索引号为b的子带的下混信号能量,g(b)为关于该子带索引号为b的子带的边增益side_gain[b]的函数。
[0326]
可选地,作为一种实现方式,该第一确定模块501还用于:根据该m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第一参数,该第一参数指示该m个子带中的每个子带的下混信号能量与残差信号能量的大小关系;根据该m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第二参数,该第二参数指示第一能量总和与第二能量总和的大小关系,该第一能量总和为该m个子带的残差信号能量与下混信号能量之和,该第二能量总和为该当前帧的前一帧的频域信号中的m个子带的残差信号能量与下混信号能量之和,该当前帧的该m个子带与该前一帧的该m个子带的子带索引号相同;根据该第一参数、该第二参数与该当前帧的前一帧的长时平滑参数,确定该残差信号编码参数。
[0327]
可选地,作为一种实现方式,该第一确定模块501还用于:根据该m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定m个能量参数,该m个能量参数指示该m个子带中每个子带的下混信号能量与残差信号能量的大小关系,该m个能量参数与该m个子带一一对应;将该m个能量参数中的数值最大的能量参数确定为该第一参数。
[0328]
可选地,作为一种实现方式,该第一确定模块501确定的该m个能量参数中子带索引号为b的子带的能量参数满足公式:
[0329]
res_dmx_ratio[b]=res_cod_nrg_s[b]/res_cod_nrg_m[b]
[0330]
其中,res_dmx_ratio[b]为该子带索引号为b的子带的能量参数,b大于或等于0,且小于或等于预设的最大子带索引号,res_cod_nrg_s[b]为该子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为该子带索引号为b的子带的下混信号能量。
[0331]
可选地,作为一种实现方式,该第一确定模块501还用于:将该m个能量参数之和确定为第一参数(待修正)res_dmx_ratio1,并根据该m个能量参数中的最大值res_dmx_ratio_max与该m个子带中的每个子带的下混信号能量res_cod_nrg_m[b]对该res_dmx_ratio1进行修正,确定修正后的res_dmx_ratio2。
[0332]
例如,编码端按照下式对该res_dmx_ratio1进行修正,其中,m=5:
[0333]
修正后获得的res_dmx_ratio2满足:
[0334][0335]
可选地,作为一种实现方式,还可以对修正后的res_dmx_ratio2作进一步的修正:
[0336]
例如,最终获得的修正后的res_dmx_ratio3满足:
[0337]
res_dmx_ratio3=pow(res_dmx_ratio2,1.2)
[0338]
其中,函数pow()为指数函数,pow(res_dmx_ratio2,1.2)代表res_dmx_ratio2的1.2次方。
[0339]
可选地,作为一种实现方式,该第一确定模块501还用于:根据该m个子带的残差信号能量之和与该m个子带的下混信号能量之和,确定该第一参数。
[0340]
具体地,编码端分别确定该m个子带的下混信号能量之和dmx_nrg_all_curr与该m个子带的残差信号能量之和res_nrg_all_curr,并根据该dmx_nrg_all_curr与该res_nrg_all_curr,确定该第一参数。
[0341]
可选地,作为一种实现方式,该m个子带的下混信号能量之和dmx_nrg_all_curr满足:
[0342][0343]
其中,res_cod_nrg_m_prev[b]表示当前帧的前一帧的子带索引号为b的子带的下混信号能量,γ1表示平滑因子,γ1为大于等于0小于等于1的实数,例如,γ1=0.1。
[0344]
可选地,作为一种实现方式,该m个子带的残差信号能量之和res_nrg_all_curr满足:
[0345][0346]
其中,res_cod_nrg_s_prev[b]表示当前帧的前一帧的子带索引号为b的子带的残差信号能量,γ2表示平滑因子,γ2为大于等于0小于等于1的实数,例如,γ2=0.1。
[0347]
编码端根据该dmx_nrg_all_curr与该res_nrg_all_curr,确定该第一参数res_dmx_ratio。
[0348]
例如,编码端最终确定的第一参数res_dmx_ratio满足:
[0349]
res_dmx_ratio=res_nrg_all_curr/dmx_nrg_all_curr。
[0350]
可选地,作为一种实现方式,该第一确定模块501确定的该m个能量参数中子带索引号为b的子带的能量参数满足公式:
[0351]
res_dmx_ratio[b]=res_cod_nrg_s[b]/res_cod_nrg_m[b]
[0352]
其中,res_dmx_ratio[b]为该m个能量参数中子带索引号为b的子带的能量参数,b大于等于0,且小于等于预设的最大子带索引号,res_cod_nrg_s[b]为该子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为该子带索引号为b的子带的下混信号能量。
[0353]
可选地,作为一种实现方式,该第一确定模块501确定的该当前帧的残差信号编码参数为该当前帧的长时平滑参数,该当前帧的长时平滑参数满足公式:
[0354]
res_dmx_ratio_lt=res_dmx_ratio.α+res_dmx_ratio_lt_prev
·
(1-α)
[0355]
res_dmx_ratio_lt为该当前帧的长时平滑参数,res_dmx_ratio为该第一参数,res_dmx_ratio_lt_prev为该当前帧的前一帧的长时平滑参数,0<α<1;
[0356]
其中,在该第二参数大于预设的第三阈值时,α在该第一参数小于预设的第二阈值的情况下的取值大于在该第一参数大于或等于预设的第二阈值的情况下的取值,该第二阈值大于或等于0,且小于或等于0.6,该第三阈值大于或等于2.7,且小于或等于3.7;或
[0357]
在该第二参数小于预设的第五阈值时,α在该第一参数大于预设的第四阈值的情况下的取值大于在该第一参数小于或等于预设的第四阈值的情况下的取值,该第四阈值大于或等于0,且小于或等于0.9,该第五阈值大于或等于0,且小于或等于0.71;或
[0358]
α在该第一参数小于预设的第二阈值,且该第二参数大于预设的第三阈值的情况下的取值大于在该第二参数大于或等于预设的第五阈值,且小于或等于预设的第三阈值的情况下的取值,该第二阈值大于或等于0,且小于或等于0.6,该第三阈值大于或等于2.7,且小于或等于3.7,该第五阈值大于或等于0,且小于或等于0.71。
[0359]
可选地,作为一种实现方式,该第二确定模块502还用于:在确定对该m个子带的残差信号编码的情况下,对该m个子带的下混信号与残差信号进行编码;在确定对该m个子带的残差信号不编码的情况下,对该m个子带的下混信号进行编码。
[0360]
图9是本技术实施例的立体声信号的编码装置的示意性框图。图9的装置600包括:
[0361]
存储器601,用于存储程序。
[0362]
处理器602,用于执行该存储器601中存储的程序,当该存储器601中的程序被执行时,该处理器602具体用于:根据立体声信号的当前帧的m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定当前帧的残差信号编码参数,该当前帧的残差信号编码参数用于指示是否对该m个子带的残差信号进行编码,该m个子带为n个子带中的至少
部分子带,n为大于1的正整数,m≤n,且m为正整数;根据该当前帧的残差信号编码参数,确定是否对该m个子带的残差信号编码。
[0363]
可选地,作为一种实现方式,该m个子带为该n个子带中的子带索引号小于或等于预设的最大子带索引号的m个子带。
[0364]
可选地,作为一种实现方式,该m个子带为该n个子带中的子带索引号大于或等于预设的最小子带索引号且小于或等于预设的最大子带索引号的m个子带。
[0365]
可选地,作为一种实现方式,该处理器602还用于:将该残差信号编码参数与预设的第一阈值进行比较,该第一阈值大于0,且小于1.0;在该残差信号编码参数小于该第一阈值的情况下,确定不对该m个子带中的每个子带的残差信号进行编码;或,在该残差信号编码参数大于该第一阈值的情况下,确定对该m个子带中的每个子带的残差信号进行编码。
[0366]
可选地,作为一种实现方式,该处理器602还用于:根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定该残差信号编码参数。
[0367]
可选地,作为一种实现方式,该处理器602还用于:根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定第一参数,该第一参数指示该m个子带中的每个子带的下混信号能量与残差信号能量的大小关系;根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量,确定第二参数,该第二参数指示第一能量总和与第二能量总和的大小关系,该第一能量总和为该m个子带的残差信号能量与下混信号能量之和,该第二能量总和为该当前帧的前一帧的频域信号中的m个子带的残差信号能量与下混信号能量之和,该当前帧的m个子带与该前一帧的m个子带的子带索引号相同;根据该第一参数、该第二参数与该当前帧的前一帧的长时平滑参数,确定该残差信号编码参数。
[0368]
可选地,作为一种实现方式,该处理器602还用于:根据该m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定m个能量参数,该m个能量参数指示该m个子带中的一个子带的下混信号能量与残差信号能量的大小关系,该m个能量参数与该m个子带一一对应;将该m个能量参数中的数值最大的能量参数确定为该第一参数。
[0369]
可选地,作为一种实现方式,该处理器602确定的该m个能量参数中子带索引号为b的子带的能量参数满足公式:
[0370]
res_dmx_ratio[b]=res_cod_nrg_s[b]/(res_cod_nrg_s[b]+(1-g(b))
·
(1-g(b))
·
res_cod_nrg_m[b]+1)
[0371]
其中,res_dmx_ratio[b]为子带索引号为b的子带的能量参数,b大于等于0,且小于等于预设的最大子带索引号,res_cod_nrg_s[b]为该子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为该子带索引号为b的子带的下混信号能量,g(b)为关于该子带索引号为b的子带的边增益side_gain[b]的函数。
[0372]
可选地,作为一种实现方式,该处理器602还用于:根据该m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第一参数,该第一参数指示该m个子带中的每个子带的下混信号能量与残差信号能量的大小关系;根据该m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第二参数,该第二参数指示第一能量总和与第二能量总和的大小关系,该第一能量总和为该m个子带的残差信号能量与下混信号能量
之和,该第二能量总和为该当前帧的前一帧的频域信号中的m个子带的残差信号能量与下混信号能量之和,该当前帧的m个子带与该前一帧的m个子带的子带索引号相同;根据该第一参数、该第二参数与该当前帧的前一帧的长时平滑参数,确定该残差信号编码参数。
[0373]
可选地,作为一种实现方式,该处理器602还用于:根据该m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定m个能量参数,该m个能量参数指示该m个子带中的每个子带的下混信号能量与残差信号能量的大小关系,该m个能量参数与该m个子带一一对应;将该m个能量参数中的数值最大的能量参数确定为该第一参数。
[0374]
可选地,作为一种实现方式,该处理器602确定的该m个能量参数中子带索引号为b的子带的能量参数满足公式:
[0375]
res_dmx_ratio[b]=res_cod_nrg_s[b]/res_cod_nrg_m[b]
[0376]
其中,res_dmx_ratio[b]为子带索引号为b的子带的能量参数,b大于或等于0,且小于或等于预设的最大子带索引号,res_cod_nrg_s[b]为该子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为该子带索引号为b的子带的下混信号能量。
[0377]
可选地,作为一种实现方式,该处理器602还用于:将该m个能量参数之和确定为第一参数(待修正)res_dmx_ratio1,并根据该m个能量参数中的最大值res_dmx_ratio_max与该m个子带中的每个子带的下混信号能量res_cod_nrg_m[b]对该res_dmx_ratio1进行修正,确定修正后的res_dmx_ratio2。
[0378]
例如,编码端按照下式对该res_dmx_ratio1进行修正,其中,m=5:
[0379]
修正后获得的res_dmx_ratio2满足:
[0380][0381]
可选地,作为一种实现方式,还可以对修正后的res_dmx_ratio2作进一步的修正:
[0382]
例如,最终获得的修正后的res_dmx_ratio3满足:
[0383]
res_dmx_ratio3=pow(res_dmx_ratio2,1.2)
[0384]
其中,函数pow()为指数函数,pow(res_dmx_ratio2,1.2)代表res_dmx_ratio2的1.2次方。
[0385]
可选地,作为一种实现方式,该处理器602还用于:根据该m个子带的残差信号能量之和与该m个子带的下混信号能量之和,确定该第一参数。
[0386]
具体地,编码端分别确定该m个子带的下混信号能量之和dmx_nrg_all_curr与该m个子带的残差信号能量之和res_nrg_all_curr,并根据该dmx_nrg_all_curr与该res_nrg_all_curr,确定该第一参数。
[0387]
可选地,作为一种实现方式,该m个子带的下混信号能量之和dmx_nrg_all_curr满足:
[0388][0389]
其中,res_cod_nrg_m_prev[b]表示当前帧的前一帧的子带索引号为b的子带的下混信号能量,γ1表示平滑因子,γ1为大于等于0小于等于1的实数,例如,γ1=0.1。
[0390]
可选地,作为一种实现方式,该m个子带的残差信号能量之和res_nrg_all_curr满足:
[0391][0392]
其中,res_cod_nrg_s_prev[b]表示当前帧的前一帧的子带索引号为b的子带的残差信号能量,γ2表示平滑因子,γ2为大于等于0小于等于1的实数,例如,γ2=0.1。
[0393]
编码端根据该dmx_nrg_all_curr与该res_nrg_all_curr,确定该第一参数res_dmx_ratio。
[0394]
例如,编码端最终确定的第一参数res_dmx_ratio满足:
[0395]
res_dmx_ratio=res_nrg_all_curr/dmx_nrg_all_curr。
[0396]
可选地,作为一种实现方式,该处理器602确定的该m个能量参数中子带索引号为b的子带的能量参数满足公式:
[0397]
res_dmx_ratio[b]=res_cod_nrg_s[b]/res_cod_nrg_m[b]
[0398]
其中,res_dmx_ratio[b]为该m个能量参数中子带索引号为b的子带的能量参数,b大于等于0,且小于等于预设的最大子带索引号,res_cod_nrg_s[b]为该子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为该子带索引号为b的子带的下混信号能量。
[0399]
可选地,作为一种实现方式,该处理器602确定的该残差信号编码参数为该当前帧的长时平滑参数,
[0400]
在该第一参数小于预设的第二阈值,且该第二参数大于预设的第三阈值的情况下,该处理器602确定的
[0401]
该当前帧的残差信号编码参数为该当前帧的长时平滑参数,该当前帧的长时平滑参数满足公式:
[0402]
res_dmx_ratio_lt=res_dmx_ratio.α+res_dmx_ratio_lt_prev
·
(1-α)
[0403]
res_dmx_ratio_lt为该当前帧的长时平滑参数,res_dmx_ratio为该第一参数,res_dmx_ratio_lt_prev为该当前帧的前一帧的长时平滑参数,0<α<1;
[0404]
其中,在该第二参数大于预设的第三阈值时,α在该第一参数小于预设的第二阈值的情况下的取值大于在该第一参数大于或等于预设的第二阈值的情况下的取值,该第二阈值大于或等于0,且小于或等于0.6,该第三阈值大于或等于2.7,且小于或等于3.7;或
[0405]
在该第二参数小于预设的第五阈值时,α在该第一参数大于预设的第四阈值的情况下的取值大于在该第一参数小于或等于预设的第四阈值的情况下的取值,该第四阈值大于或等于0,且小于或等于0.9,该第五阈值大于或等于0,且小于或等于0.71;或
[0406]
α在该第一参数小于预设的第二阈值,且该第二参数大于预设的第三阈值的情况下的取值大于在该第二参数大于或等于预设的第五阈值,且小于或等于预设的第三阈值的情况下的取值,该第二阈值大于或等于0,且小于或等于0.6,该第三阈值大于或等于2.7,且小于或等于3.7,该第五阈值大于或等于0,且小于或等于0.71。可选地,作为一种实现方式,该处理器602还用于:在确定对该m个子带的残差信号编码的情况下,对该m个子带的下混信号与残差信号进行编码;在确定对该m个子带的残差信号不编码的情况下,对该m个子带的下混信号进行编码。
[0407]
本技术还提供了一种芯片,所述芯片包括处理器与通信接口,所述通信接口用于与外部器件进行通信,所述处理器用于执行本技术实施例的立体声信号的编码方法。
[0408]
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行本技术实施例的立体声信号的编码方法。
[0409]
可选地,作为一种实现方式,所述芯片集成在终端设备或者网络设备上。
[0410]
本技术提供了一种计算机可读存储介质,所述计算机可读介质存储用于设备执行的程序代码,所述程序代码包括用于执行本技术实施例的立体声信号的编码方法的指令。
[0411]
应理解,本发明实施例中提及的处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0412]
还应理解,本发明实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0413]
需要说明的是,当处理器为通用处理器、dsp、asic、fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
[0414]
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0415]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0416]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0417]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件
可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0418]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0419]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0420]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0421]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。

技术特征:


1.一种立体声信号的编码方法,其特征在于,包括:根据立体声信号的当前帧的m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定所述当前帧的残差信号编码参数,所述当前帧的残差信号编码参数用于指示是否对所述m个子带的残差信号进行编码,所述m个子带为n个子带中的至少部分子带,其中所述m个子带中的每个子带的子带索引号小于或等于预设的最大子带索引号,n为大于1的正整数,m≤n,且m为正整数;根据所述当前帧的残差信号编码参数,确定是否对所述当前帧的m个子带的残差信号进行编码。2.根据权利要求1所述的方法,其特征在于,所述根据所述当前帧的残差信号编码参数,确定是否对所述m个子带的残差信号编码,包括:将所述当前帧的残差信号编码参数与预设的第一阈值进行比较,所述第一阈值大于0,且小于1.0;在所述当前帧的残差信号编码参数小于或等于所述第一阈值的情况下,确定不对所述m个子带的残差信号进行编码;或在所述残差信号编码参数大于所述第一阈值的情况下,确定对所述m个子带的残差信号进行编码。3.根据权利要求1或2所述的方法,其特征在于,所述根据m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定所述当前帧的残差信号编码参数,包括:根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定所述当前帧的残差信号编码参数。4.根据权利要求3所述的方法,其特征在于,所述根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定所述当前帧的残差信号编码参数,包括:根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定第一参数,所述第一参数指示所述m个子带中的每个子带的下混信号能量与残差信号能量的大小关系;根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量,确定第二参数,所述第二参数指示第一能量总和与第二能量总和的大小关系,所述第一能量总和为所述m个子带的残差信号能量与下混信号能量之和,所述第二能量总和为所述当前帧的前一帧的频域信号中的m个子带的残差信号能量与下混信号能量之和,所述当前帧的所述m个子带与所述前一帧的所述m个子带的子带索引号相同;根据所述第一参数、所述第二参数与所述当前帧的前一帧的长时平滑参数,确定所述当前帧的残差信号编码参数。5.根据权利要求4所述的方法,其特征在于,所述根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定第一参数,包括:根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定m个能量参数,所述m个能量参数指示所述m个子带中每个子带的下混信号能量与残差信号能量的大小关系,所述m个能量参数与所述m个子带一一对应;将所述m个能量参数中的数值最大的能量参数确定为所述第一参数。
6.根据权利要求5所述的方法,其特征在于,所述m个能量参数中子带索引号为b的子带的能量参数满足公式:res_dmx_ratio[b]=res_cod_nrg_s[b]/(res_cod_nrg_s[b]+(1-g(b))
·
(1-g(b))
·
res_cod_nrg_m[b]+1)其中,res_dmx_ratio[b]为所述子带索引号为b的子带的能量参数,b大于或等于0,且小于或等于预设的最大子带索引号,res_cod_nrg_s[b]为所述子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为所述子带索引号为b的子带的下混信号能量,g(b)为关于所述子带索引号为b的子带的边增益side_gain[b]的函数。7.根据权利要求1或2所述的方法,其特征在于,所述根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定所述当前帧的残差信号编码参数,包括:根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第一参数,所述第一参数指示所述m个子带中的每个子带的下混信号能量与残差信号能量的大小关系;根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第二参数,所述第二参数指示第一能量总和与第二能量总和的大小关系,所述第一能量总和为所述m个子带的残差信号能量与下混信号能量之和,所述第二能量总和为所述当前帧的前一帧的频域信号中的m个子带的残差信号能量与下混信号能量之和,所述当前帧的所述m个子带与所述前一帧的所述m个子带的子带索引号相同;根据所述第一参数、所述第二参数与所述当前帧的前一帧的长时平滑参数,确定所述当前帧的所述残差信号编码参数。8.根据权利要求7所述的方法,其特征在于,所述根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第一参数,包括:根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定m个能量参数,所述m个能量参数指示所述m个子带中的每个子带的下混信号能量与残差信号能量的大小关系,所述m个能量参数与所述m个子带一一对应;将所述m个能量参数中的数值最大的能量参数确定为所述第一参数。9.根据权利要求8所述的方法,其特征在于,所述m个能量参数中子带索引号为b的子带的能量参数满足公式:res_dmx_ratio[b]=res_cod_nrg_s[b]/res_cod_nrg_m[b]其中,res_dmx_ratio[b]为所述子带索引号为b的子带的能量参数,b大于或等于0,且小于或等于预设的最大子带索引号,res_cod_nrg_s[b]为所述子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为所述子带索引号为b的子带的下混信号能量。10.根据权利要求4至9中任一项所述的方法,其特征在于,所述当前帧的残差信号编码参数为所述当前帧的长时平滑参数,所述当前帧的长时平滑参数满足公式:res_dmx_ratio_lt=res_dmx_ratio
·
α+res_dmx_ratio_lt_prev
·
(1-α)res_dmx_ratio_lt为所述当前帧的长时平滑参数,res_dmx_ratio为所述第一参数,res_dmx_ratio_lt_prev为所述当前帧的前一帧的长时平滑参数,0<α<1;其中,在所述第二参数大于预设的第三阈值时,在所述第一参数小于预设的第二阈值的情况下α的取值大于在所述第一参数大于或等于预设的第二阈值的情况下α的取值,所述
第二阈值大于或等于0,且小于或等于0.6,所述第三阈值大于或等于2.7,且小于或等于3.7;或在所述第二参数小于预设的第五阈值时,在所述第一参数大于预设的第四阈值的情况下α的取值大于在所述第一参数小于或等于预设的第四阈值的情况下α的取值,所述第四阈值大于或等于0,且小于或等于0.9,所述第五阈值大于或等于0,且小于或等于0.71;或在所述第二参数大于或等于预设的第五阈值,且小于或等于预设的第三阈值时,α的取值小于在所述第一参数小于预设的第二阈值,且所述第二参数大于预设的第三阈值的情况下α的取值所述第二阈值大于或等于0,且小于或等于0.6,所述第三阈值大于或等于2.7,且小于或等于3.7,所述第五阈值大于或等于0,且小于或等于0.71。11.根据权利要求1至10中任一项所述的方法,其特征在于,所述方法还包括:在确定对所述m个子带的残差信号编码的情况下,对所述m个子带的下混信号与残差信号进行编码;在确定不对所述m个子带的残差信号进行编码的情况下,对所述m个子带的下混信号进行编码。12.一种立体声信号的编码装置,其特征在于,包括:第一确定模块,用于根据立体声信号的当前帧的m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定所述当前帧的残差信号编码参数,所述当前帧的残差信号编码参数用于指示是否对所述m个子带的残差信号进行编码,所述m个子带为n个子带中的至少部分子带,其中所述m个子带中的每个子带的子带索引号小于或等于预设的最大子带索引号,n为大于1的正整数,m≤n,且m为正整数;第二确定模块,用于根据所述当前帧的残差信号编码参数,确定是否对所述当前帧的m个子带的残差信号进行编码。13.根据权利要求12所述的装置,其特征在于,所述第二确定模块还用于:将所述残差信号编码参数与预设的第一阈值进行比较,所述第一阈值大于0,且小于1.0;在所述当前帧的残差信号编码参数小于或等于所述第一阈值的情况下,确定不对所述m个子带的残差信号进行编码;或在所述当前帧的残差信号编码参数大于所述第一阈值的情况下,确定对所述m个子带的残差信号进行编码。14.根据权利要求12或13所述的装置,其特征在于,所述第一确定模块还用于:根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定所述当前帧的残差信号编码参数。15.根据权利要求14所述的装置,其特征在于,所述第一确定模块还用于:根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定第一参数,所述第一参数指示所述m个子带中的每个子带的下混信号能量与残差信号能量的大小关系;根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量,确定第二参数,所述第二参数指示第一能量总和与第二能量总和的大小关系,所述第一能量总和为所述m个子带的残差信号能量与下混信号能量之和,所述第二能量总和为所述当前帧的前
一帧的频域信号中的m个子带的残差信号能量与下混信号能量之和,所述当前帧的所述m个子带与所述前一帧的所述m个子带的子带索引号相同;根据所述第一参数、所述第二参数与所述当前帧的前一帧的长时平滑参数,确定所述当前帧的残差信号编码参数。16.根据权利要求15所述的装置,其特征在于,所述第一确定模块还用于:根据所述m个子带中的每个子带的下混信号能量、每个子带的残差信号能量与每个子带的边增益,确定m个能量参数,所述m个能量参数指示所述m个子带中每个子带的下混信号能量与残差信号能量的大小关系,所述m个能量参数与所述m个子带一一对应;将所述m个能量参数中的数值最大的能量参数确定为所述第一参数。17.根据权利要求16所述的装置,其特征在于,所述第一确定模块确定的m个能量参数中子带索引号为b的子带的能量参数满足公式:res_dmx_ratio[b]=res_cod_nrg_s[b]/(res_cod_nrg_s[b]+(1-g(b))
·
(1-g(b))
·
res_cod_nrg_m[b]+1)其中,res_dmx_ratio[b]为所述子带索引号为b的子带的能量参数,b大于或等于0,且小于或等于预设的最大子带索引号,res_cod_nrg_s[b]为所述子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为所述子带索引号为b的子带的下混信号能量,g(b)为关于所述子带索引号为b的子带的边增益side_gain[b]的函数。18.根据权利要求12或13所述的装置,其特征在于,所述第一确定模块还用于:根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第一参数,所述第一参数指示所述m个子带中的每个子带的下混信号能量与残差信号能量的大小关系;根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定第二参数,所述第二参数指示第一能量总和与第二能量总和的大小关系,所述第一能量总和为所述m个子带的残差信号能量与下混信号能量之和,所述第二能量总和为所述当前帧的前一帧的频域信号中的m个子带的残差信号能量与下混信号能量之和,所述当前帧的所述m个子带与所述前一帧的所述m个子带的子带索引号相同;根据所述第一参数、所述第二参数与所述当前帧的前一帧的长时平滑参数,确定所述当前帧的残差信号编码参数。19.根据权利要求18所述的装置,其特征在于,所述第一确定模块还用于:根据所述m个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定m个能量参数,所述m个能量参数指示所述m个子带中每个子带的下混信号能量与残差信号能量的大小关系,所述m个能量参数与所述m个子带一一对应;将所述m个能量参数中的数值最大的能量参数确定为所述第一参数。20.根据权利要求19所述的装置,其特征在于,所述第一确定模块确定的m个能量参数中属于子带索引号为b的子带的能量参数满足公式:res_dmx_ratio[b]=res_cod_nrg_s[b]/res_cod_nrg_m[b]其中,res_dmx_ratio[b]为所述子带索引号为b的子带的能量参数,b大于或等于0,且小于或等于预设的最大子带索引号,res_cod_nrg_s[b]为所述子带索引号为b的子带的残差信号能量,res_cod_nrg_m[b]为所述子带索引号为b的子带的下混信号能量。
21.根据权利要求15至20中任一项所述的装置,其特征在于,所述当前帧的残差信号编码参数为所述当前帧的长时平滑参数,所述当前帧的长时平滑参数满足公式:res_dmx_ratio_lt=res_dmx_ratio.α+res_dmx_ratio_lt_prev
·
(1-α)res_dmx_ratio_lt为所述当前帧的长时平滑参数,res_dmx_ratio为所述第一参数,res_dmx_ratio_lt_prev为所述当前帧的前一帧的长时平滑参数,0<α<1;其中,在所述第二参数大于预设的第三阈值时,在所述第一参数小于预设的第二阈值的情况下α的取值大于在所述第一参数大于或等于预设的第二阈值的情况下α的取值,所述第二阈值大于或等于0,且小于或等于0.6,所述第三阈值大于或等于2.7,且小于或等于3.7;或在所述第二参数小于预设的第五阈值时,在所述第一参数大于预设的第四阈值的情况下α的取值大于在所述第一参数小于或等于预设的第四阈值的情况下α的取值,所述第四阈值大于或等于0,且小于或等于0.9,所述第五阈值大于或等于0,且小于或等于0.71;或在所述第二参数大于或等于预设的第五阈值,且小于或等于预设的第三阈值时,α的取值小于在所述第一参数小于预设的第二阈值,且所述第二参数大于预设的第三阈值的情况下α的取值所述第二阈值大于或等于0,且小于或等于0.6,所述第三阈值大于或等于2.7,且小于或等于3.7,所述第五阈值大于或等于0,且小于或等于0.71。22.根据权利要求12至21中任一项所述的装置,其特征在于,所述第二确定模块还用于:在确定对所述m个子带的残差信号编码的情况下,对所述m个子带的下混信号与残差信号进行编码;在确定不对所述m个子带的残差信号进行编码的情况下,对所述m个子带的下混信号进行编码。23.一种芯片,其特征在于,包括处理器和通信接口,所述通信接口用于与外部器件进行通信,所述处理器用于执行如权利要求1至11中任一项所述的编码方法。24.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在计算机上运行时,使得所述计算机执行如权利要求1至11中任一项所述的编码方法。

技术总结


本申请提供了一种立体声信号的编码方法和装置。该方法包括:根据立体声信号的当前帧的M个子带中的每个子带的下混信号能量与每个子带的残差信号能量,确定当前帧的残差信号编码参数,当前帧的残差信号编码参数用于指示是否对M个子带的残差信号进行编码,M个子带为N个子带中的至少部分子带,其中M个子带中的每个子带的子带索引号小于或等于预设的最大子带索引号,N为大于1的正整数,M≤N,且M为正整数;根据当前帧的残差信号编码参数,确定是否对当前帧的M个子带的残差信号编码。本申请提供的立体声信号的编码方法能够在提升解码立体声信号的空间感和声像稳定性的同时,尽可能降低解码立体声信号的高频失真,提高编码质量。量。量。


技术研发人员:

王宾 刘泽新 李海婷

受保护的技术使用者:

华为技术有限公司

技术研发日:

2018.05.31

技术公布日:

2022/7/4

本文发布于:2024-09-21 22:45:33,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/8568.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:信号   个子   参数   能量
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议