具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示为本发明边带残差信号生成方法实施例一的流程图,包括:
步骤101、比较第一声道输入的第一信号和第二声道输入的第二信号的能量;若第一信号的能量大于第二信号的能量,执行步骤102;若第一信号的能量小于第二信号的能量,执行步骤103。
步骤102、通过将单声道量化误差分配给第一信号来生成边带残差信号。
步骤103、通过将单声道量化误差分配给第二信号来生成边带残差信号。
图1中,步骤102和103是与步骤101判断之后产生的两种结果对应的两个分支步骤。
本发明实施例提供的边带残差信号生成方法,首先比较第一信号的能量和第二信号的能量的大小,哪一个信号的能量大,则将单声道量化误差分配给哪个信号,从而可以避免单声道的量化误差对能量较小的信号产生较大影响,提高根据该残差信号生成的能量较小的一个信号的质量。
如图2所示为本发明边带残差信号生成方法实施例二的流程图,该实施例包括:
步骤101’、比较第一声道输入的第一信号和第二声道输入的第二信号的能量大小;若第一信号的能量大于第二信号的能量,执行步骤102;若第一信号的能量小于第二信号的能量,执行步骤103;若第一信号的能量等于第二信号的能量,执行步骤104。
步骤102、通过将单声道量化误差分配给第一信号来生成边带残差信号。
步骤103、通过将单声道量化误差分配给第二信号来生成边带残差信号。
步骤104、通过将单声道量化误差均匀分配给第一信号和第二信号来生成边带残差信号。
在步骤101或步骤101’之前还可以包括获取立体声参数CLD的量化值CLD_Q。具体可以是在获取立体声参数CLD之后,对CLD量化,从而获取量化值CLD_Q。量化的方法可以是标量量化或者其他量化方法。
步骤101或步骤101’具体可以包括判断CLD_Q与1的大小。也就是说,可以比较CLD_Q与1的大小来判断第一信号和第二信号的能量大小。具体地,若CLD_Q大于1,则第一声道输入的第一信号的能量大于第二声道输入的第二信号的能量;若CLD_Q小于1,则第一声道输入的第一信号的能量小于第二声道输入的第二信号的能量;若CLD_Q等于1,则第一声道输入的第一信号的能量等于所述第二声道输入的第二信号的能量。
本发明实施例中,第一信号可以是左声道输入的信号,第一声道可以是左声道,第二信号可以是右声道输入的信号,第二声道可以是右声道。或者,第一信号可以是右声道输入的信号,第一声道可以是右声道,第二信号可以是左声道输入的信号,第二声道可以是左声道。
如图3所示为本发明边带残差信号生成方法的原理示意图,如图4所示为本发明边带残差信号生成方法实施例三的流程图,下面结合图3和图4来说明本发明边带残差生成方法的实现过程。
本发明实施例三提供的方法包括:
步骤201、获取根据信号S1和S2生成的单声道信号的本地解码信号Md、边带信号S和CLD_Q。
具体地,可以将第一声道输入的信号S1和第二声道输入的信号S2下混(downmix)得到单声道信号M和边带信号S,其中M=(S1+S2)/2,S=(S1-S2)/2。
对单声道信号M采用单声道编码方法编码,对经过单声道编码后的信号解码得到单声道信号的本地解码信号Md。可以基于国际电信联盟远程通信标准化化组(ITU Telecommunication Standardization Sector,简称ITU-T)的G.711.1或G.722标准中规定的编解码方法对单声道信号编码或解码。
从第一声道输入的信号S
1和第二声道输入的信号S
2提取立体声参数CLD,将信号S
1和S
2通过时频变换或者分带滤波器分成若干个根据频率划分的子带N(band),计算第一声道和第二声道每个子带的能量C
1和C
2。
其中,l(k)是第一声道子带的信号幅度值,r(k)是第二声道子带的信号幅度值。或者,为了减小对信号S
1和S
2进行时频变换的计算复杂度,可以用单声道信号M和边带信号S来计算第一声道和第二声道每个子带的能量,从而获得CLD。这样,
其中,m[k]是单声道信号M的信号幅度值,s[k]是边带信号S的信号幅度值。
获得的CLD即为第一声道和第二声道每个子带的能量比:CLD(band)=10*log10(C1(band)/C2(band))。
将获取的CLD量化为CLD_Q,并将CLD_Q传输到解码端。
用本地解码信号Md和CLD生成边带预测信号Spred,Spred=Md*(c-1)/(c+1),c=10CLD_Q/20。
步骤202、根据CLD_Q判断信号S1和信号S2的能量的大小。若信号S1的能量大于信号S2的能量,则执行步骤203;若信号S1的能量小于信号S2的能量,则执行步骤204;若信号S1的能量等于信号S2的能量,则执行步骤205。
步骤203、通过将单声道量化误差分配给信号S1来生成边带残差信号,生成的边带残差信号为Sres=Md-S2-Md*(c-1)/(c+1)。
步骤204、通过将单声道量化误差分配给信号S2来生成边带残差信号,生成的边带残差信号为Sres=S1-Md-Md*(c-1)/(c+1)。
步骤205、通过将单声道量化误差均匀分配给信号S1和S2来生成边带残差信号,生成的边带残差信号为Sres=S-Md*(c-1)/(c+1)。
步骤203、204和205是与步骤202判断之后产生的三种结果对应的三个分支步骤。
经过步骤201-205之后,就生成了边带残差信号。生成的边带残差信号还可以经过编码之后,与单声道编码之后的信号以及CLD_Q一并输入到用于码流复用的单元中。
本发明实施例采用CLD_Q来比较第一声道和第二声道,不需要额外的比特来传递比较信息,只需要在解码端采用同样的操作即可。这样解码端解码后的各个信号分别为:
当CLD_Q大于1时,S1d=Md+(Sres+Spred)=2Md-S2,S2d=Md-(Sres+Spred)=S2。S2d与Md和Sres没有关系,S1d与Md有关系,也就是说量化误差被分配给了第一声道输入的信号。
当CLD_Q小于1时,S1d=Md+(Sres+Spred)=S1,S2d=Md-(Sres+Spred)=2Md-S1。S1d与Md和Sres没有关系,S2d与Md有关系,也就是说量化误差被分配给了第二声道输入的信号。
当CLD_Q等于1时,S1d=Md+(Sres+Spred)=Md+S,S2d=Md-(Sres+Spred)=Md-S。S1d与Md有关系,S2d与Md有关系,也就是说量化误差被均匀分配给了第一声道和第二声道输入的信号。
其中,S1d为解码后的第一声道输入的信号,S2d为解码后的第二声道输入的信号。
在步骤201中,也可以直接比较信号S1和信号S2的大小,而不需要通过比较CLD_Q和1的大小来确定信号S1和信号S2的大小。如图5所示为本发明边带残差信号生成方法的另一种原理示意图,图5中,直接判断第一声道输入的信号S1和第二声道输入的信号S2的大小,根据比较结果分别将量化误差分配给信号S1或者S2,或者将量化误差平均分配给这两个信号S1和S2。在这种情况下,第一声道和第二声道输入的可以是频域信号。
从上述的各实施例中可以看出,当信号S1的能量大于信号S2的能量时,单声道的量化误差分配给信号S1;当信号S1的能量小于信号S2的能量时,单声道的量化误差分配给信号S2;当信号S1的能量等于信号S2的能量时,单声道的量化误差均匀分配给信号S1和信号S2。这样就可以保证能量较小的信号引入的量化误差较小,从而可以提高根据残差信号生成的能量较小的信号的质量。
如图6所示为本发明边带残差信号生成装置实施例一的结构示意图,该装置包括比较单元11和处理单元12,其中,比较单元11用于比较第一声道输入的第一信号和第二声道输入的第二信号的能量。处理单元12与比较单元11连接,用于将在比较单元11确定第一信号的能量大于第二信号的能量的情况下,通过将单声道量化误差分配给所述第一信号来生成边带残差信号;或者,用于在比较单元11确定所述第一信号的能量小于第二信号的能量的情况下,通过将单声道量化误差分配给所述第二信号来生成边带残差信号。
在如图6所示的实施例中,处理单元12还可以在比较单元11确定第一信号的能量等于第二信号的能量的情况下,通过将单声道量化误差均匀分配给第一信号和第二信号来生成边带残差信号。
如图7所示为本发明边带残差信号生成装置实施例二的结构示意图,该装置中,处理单元12包括第一处理子单元121、第二处理子单元122和第三处理子单元123,第一处理子单元121与比较单元11连接,用于在比较单元11确定第一信号S1的能量大于第二信号S2的能量的情况下,通过将单声道量化误差分配给所述第一信号S1来生成边带残差信号。第二处理子单元122与比较单元11连接,用于在比较单元11确定第一信号S1的能量小于第二信号S2的能量的情况下,通过将单声道量化误差分配给第二信号S2来生成边带残差信号。第三处理子单元123与比较单元11连接,用于在比较单元11确定第一信号S1的能量等于第二信号S2的能量的情况下,通过将单声道量化误差均匀分配给第一信号S1和第二信号S2来生成边带残差信号。
如图8所示为本发明边带残差信号生成装置实施例三的结构示意图,该边带残差信号生成装置还包括信号获取单元13,该信号获取单元13与比较单元11、第一处理子单元121、第二处理子单元122和第三处理子单元123连接,用于获取第一信号S1、第二信号S2、边带信号S以及根据第一信号S1和第二信号S2生成的单声道信号M的本地解码信号Md,并把这些信号发送给第一处理子单元121、第二处理子单元122和第三处理子单元123,供这三个处理子单元使用。
如图8所示的实施例还可以包括量化值获取单元14,该量化值获取单元14与第一处理子单元121、第二处理子单元122和第三处理子单元123连接。该实施例中,第一处理子单元121具体用于在比较单元11确定第一信号S1的能量大于第二信号S2的能量的情况下,根据量化值获取单元14获取的量化值CLD_Q、信号获取单元13获取的信号S2、Md以及公式Sres=Md-S2-Md*(c-1)/(c+1)生成边带残差信号。
第二处理子单元122具体用于在比较单元11确定第一信号S1的能量小于第二信号S2的能量的情况下,根据量化值获取单元14获取的量化值CLD_Q、信号获取单元13获取的信号S1、信号Md以及公式Sres=S1-Md-Md*(c-1)/(c+1)生成边带残差信号。
第三处理子单元123具体用于在比较单元11确定第一信号S1的能量等于第二信号S2的能量的情况下,根据量化值获取单元14获取的量化值CLD_Q、信号获取单元13获取的信号S、Md以及公式Sres=S-Md*(c-1)/(c+1)生成边带残差信号。
如图9所示为本发明边带残差信号生成装置实施例四的结构示意图,该实施例与图8所示的实施例的区别之处在于,图9中,比较单元11与量化值获取单元14连接,而不与信号获取单元13连接。比较单元11具体可以用于比较量化值获取单元14获取到的量化值CLD_Q与1的大小,若CLD_Q大于1,则第一声道输入的第一信号的能量大于第二声道输入的第二信号的能量;若CLD_Q小于1,则第一声道输入的第一信号的能量小于第二声道输入的第二信号的能量;若CLD_Q等于1,则第一声道输入的第一信号的能量等于第二声道输入的第二信号的能量。
图8中,比较单元11与信号获取单元13连接,可以直接比较信号获取单元13获取的第一信号S1和第二信号S2的能量的大小。第一处理子单元121、第二处理子单元122和第三处理子单元123可以根据比较单元11的比较结果生成相应的边带残差信号。
本发明实施例提供的边带残差信号生成装置,首先由比较单元判断第一信号的能量和第二信号的能量的大小,哪一个信号的能量大,则由处理单元将单声道量化误差分配给哪个信号,从而可以避免单声道的量化误差对能量较小的信号产生较大影响,提高根据该残差信号生成的能量较小的信号的质量。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。