信号编码和解码方法以及设备与流程

文档序号:14748884发布日期:2018-06-22 09:33阅读:425来源:国知局

本发明涉及信号处理领域,并且具体地,涉及信号编码和解码方法以及设备。



背景技术:

目前的通信传输越来越重视语音或音频信号的质量,因此对信号编解码的要求也越来越高。在现有的中低速率信号编解码算法中,由于可供分配的比特数不足,所以将可供分配的比特数在整个频带内进行分配时,频谱就会出现很多空洞,而且有一些即便是全0的矢量,也需要浪费1比特表示。此外,又由于这些算法的某些限制,在编码后还可能有一定比特的剩余,这又造成了比特数的浪费。从而造成解码端解码出来的信号质量不好。



技术实现要素:

本发明实施例提供信号编码和解码方法以及设备,能够提升信号的听觉质量。

第一方面,提供了一种信号编码方法,包括:根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k,其中i为正数,k为正整数;根据各个子带量化的包络从所述各个子带中选择k个子带,或者根据心理声学模型从所述各个子带中选择k个子带;对所述k个子带的频谱系数进行一次编码操作。

结合第一方面,在第一种可能的实现方式中,所述对所述k个子带的频谱系数进行一次编码操作,包括:对所述k个子带的频谱系数进行归一化,以得到所述k个子带归一化的频谱系数;对所述k个子带归一化的频谱系数进行量化,以得到所述k个子带量化的频谱系数。

结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:如果在所述一次编码操作后所述可用比特数中剩余的比特数大于或等于第一比特数阈值,则根据所述剩余的比特数、所述第二饱和阈值j和所述k个子带量化的频谱系数,确定将要二次编码的m个矢量,其中j为正数,m为正整数;对所述m个矢量的频谱系数进行二次编码操作。

结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述根据所述剩余的比特数、第二饱和阈值j和所述k个子带量化的频谱系数,确定将要二次编码的m个矢量,包括:根据所述剩余的比特数和所述第二饱和阈值j,确定将要编码的矢量数目m;根据所述k个子带量化的频谱系数确定候选频谱系数,所述候选频谱系数包括所述k个子带归一化的频谱系数减去对应的所述k个子带量化的频谱系数所得到的频谱系数;从所述候选频谱系数所属的矢量中选择所述m个矢量。

结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述从所述候选频谱系数所属的矢量中选择所述m个矢量,包括:对所述候选频谱系数所属的矢量进行排序,以得到排序后的矢量;从所述排序后的矢量中选择前m个矢量;其中所述排序后的矢量划分为第一组矢量和第二组矢量,所述第一组矢量排在所述第二组矢量之前,所述第一组矢量对应于所述k个子带量化的频谱系数所属的矢量中值为全0的矢量,所述第二组矢量对应于所述k个子带量化的频谱系数所属的矢量中值为非全0的矢量。

结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,在所述第一组矢量和所述第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带从低频到高频的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

结合第一方面的第四种可能的实现方式,在第六种可能的实现方式中,在所述第一组矢量和所述第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带量化的包络从大到小的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

结合第一方面的第三种可能的实现方式,在第七种可能的实现方式中,所述从所述候选频谱系数所属的矢量中选择所述m个矢量,包括:按照所述候选频谱系数所属的矢量所在的子带量化的包络从大到小的顺序,从所述候选频谱系数所属的矢量中选择m个矢量。

结合第一方面的第二种可能的实现方式至第七种可能的实现方式中任一可能的实现方式,在第八种可能的实现方式中,所述对所述m个矢量的频谱系数进行二次编码操作,包括:确定所述m个矢量的频谱系数的全局增益;使用所述m个矢量的频谱系数的全局增益对所述m个矢量的频谱系数进行归一化;对所述m个矢量归一化的频谱系数进行量化。

结合第一方面的第四种可能的实现方式至第六种可能的实现方式中任一可能的实现方式,在第九种可能的实现方式中,所述对所述m个矢量的频谱系数进行二次编码操作,包括:确定所述第一组矢量的频谱系数的全局增益和所述第二组矢量的频谱系数的全局增益;使用所述第一组矢量的频谱系数的全局增益对所述m个矢量中属于所述第一组矢量的频谱系数进行归一化,并使用所述第二组矢量的频谱系数的全局增益对所述m个矢量中属于所述第二组矢量的频谱系数进行归一化;对所述m个矢量归一化的频谱系数进行量化。

结合第一方面的第三种可能的实现方式至第九种可能的实现方式中任一可能的实现方式,在第十种可能的实现方式中,所述根据所述剩余的比特数和所述第二饱和阈值j,确定将要编码的矢量数目m,包括:按照下列等式确定m:其中,C表示剩余的比特数,M表示每个矢量所包含的频谱系数数目。

结合第一方面或第一方面的第一种可能的实现方式至第十种可能的实现方式中任一可能的实现方式,在第十一种可能的实现方式中,所述根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k,包括:按照下列等式确定k:其中,B表示可用比特数,L表示每个子带所包含的频谱系数数目。

结合第一方面或第一方面的第一种可能的实现方式至第十一种可能的实现方式中任一可能的实现方式,在第十二种可能的实现方式中,所述根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k,包括:如果信号为瞬态信号、摩擦音信号或大周期信号,则根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k。

第二方面,提供了一种信号解码方法,包括:根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k,其中i为正数,k为正整数;根据解码的各个子带的包络从所述各个子带中选择k个子带,或根据心理声学模型从所述各个子带中选择k个子带;进行一次解码操作,以得到所述k个子带量化的频谱系数。

结合第二方面,在第一种可能的实现方式中,还包括:如果在所述一次解码后所述可用比特数中剩余的比特数大于或等于第一比特数阈值,则根据所述剩余的比特数和所述第二饱和阈值j,确定将要二次解码的矢量数目m,其中j为正数,m为正整数;进行二次解码操作,以得到所述m个矢量归一化的频谱系数。

结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:确定所述m个矢量归一化的频谱系数与所述k个子带量化的频谱系数之间的对应关系。

结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述确定所述m个矢量归一化的频谱系数与所述k个子带量化的频谱系数之间的对应关系,包括:确定所述m个矢量与所述k个子带量化的频谱系数所属的矢量中第一类矢量之间的对应关系,其中所述m个矢量与所述第一类矢量之间是一一对应的。

结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述确定所述m个矢量与所述k个子带量化的频谱系数所属的矢量中的第一类矢量之间的对应关系,包括:对所述k个子带量化的频谱系数所属的矢量进行排序,得到排序后的矢量,其中所述排序后的矢量划分为第一组矢量和第二组矢量,所述第一组矢量排列在所述第二组矢量之前,所述第一组矢量包括所述第一组解码的频谱系数所属的矢量中值为全0的矢量,所述第二组矢量包括所述第一组解码的频谱系数所属的矢量中值为非全0的矢量;从所述排序后的矢量中选择前m个作为所述第一类矢量;建立所述第一类矢量与所述m个矢量之间的对应关系。

结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,在所述第一组矢量和所述第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带从低频到高频的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

结合第二方面的第四种可能的实现方式,在第六种可能的实现方式中,在所述第一组矢量和所述第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带的包络从大到小的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

结合第二方面的第三种可能的实现方式,在第七种可能的实现方式中,所述确定所述m个矢量与所述k个子带量化的频谱系数所属的矢量中的第一类矢量之间的对应关系,包括:按照所述k个子带量化的频谱系数所属的矢量所在的子带的包络从大到小的顺序,从所述k个子带量化的频谱系数所属的矢量中选择m个作为所述第一类矢量;建立所述第一类矢量与所述m个矢量之间的对应关系。

结合第二方面的第二种可能的实现方式至第七种可能的实现方式中任一实现方式,在第八种可能的实现方式中,还包括:解码所述m个矢量的全局增益;使用所述m个矢量的全局增益对所述m个矢量归一化的频谱系数进行修正,以得到所述m个矢量的频谱系数。

结合第二方面的第四种可能的实现方式至第六种可能的实现方式中任一实现方式,在第九种可能的实现方式中,还包括:解码第一全局增益和第二全局增益;使用所述第一全局增益对所述m个矢量归一化的频谱系数中与所述第一组矢量对应的频谱系数进行修正,并使用所述第二全局增益对所述m个矢量归一化的频谱系数中与所述第二组矢量对应的频谱系数进行修正,以得到所述m个矢量的频谱系数。

结合第二方面的第八种可能的实现方式或第九种可能的实现方式,在第十种可能的实现方式中,还包括:对所述k个子带量化的频谱系数和所述m个矢量的频谱系数进行叠加,得到所述k个子带归一化的频谱系数;对所述k个子带归一化的频谱系数中值为0的频谱系数进行噪声填充,并对所述各个子带中除k个子带之外的其它子带的频谱系数进行恢复,以得到第一频带的频谱系数,其中所述第一频带由所述各个子带组成;使用所述各个子带的包络修正所述第一频带的频谱系数,得到所述第一频带归一化的频谱系数;使用所述第一频带的全局增益对所述第一频带归一化的频谱系数进行修正,以得到最终的第一频带频域信号。

结合第二方面的第十种可能的实现方式,在第十一种可能的实现方式中,所述对所述k个子带量化的频谱系数和所述m个矢量的频谱系数进行叠加,得到所述k个子带归一化的频谱系数,包括:根据所述m个矢量归一化的频谱系数与所述k个子带量化的频谱系数之间的对应关系,对所述m个矢量的频谱系数和所述k个子带量化的频谱系数进行叠加。

结合第二方面的第十种可能的实现方式或第十一种可能的实现方式,在第十二种可能的实现方式中,所述对所述k个子带归一化的频谱系数中值为0的频谱系数进行噪声填充,包括:根据核心层解码信息,确定加权值;使用所述加权值,对在所述k个子带归一化的频谱系数中与所述值为0的频谱系数相邻的频谱系数以及随机噪声进行加权。

结合第二方面的第十二种可能的实现方式,在第十三种可能的实现方式中,所述根据核心层解码信息,确定加权值,包括:从所述核心层解码信息中获取信号分类信息;如果所述信号分类信息指示信号为摩擦音,则获取预定的加权值;如果所述信号分类信息指示信号为除摩擦音之外的其它信号,则从所述核心层解码信息中获取基音周期,并根据所述基音周期确定加权值。

结合第二方面的第十种可能的实现方式至第十三种可能的实现方式中任一实现方式,在第十四种可能的实现方式中,所述对所述各个子带中除所述k个子带之外的其它子带的频谱系数进行恢复,包括:从所述各个子带中选择与所述k个子带之外的其它子带相邻的n个子带,并根据所述n个子带的频谱系数对所述k个子带之外的其它子带的频谱系数进行恢复,其中n为正整数;或者,从所述k个子带中选择p个子带,并根据所述p个子带的频谱系数对所述k个子带之外的其它子带的频谱系数进行恢复,其中所述p个子带中每个子带被分配的比特数大于或等于第二比特数阈值,其中p为正整数。

结合第二方面的第一种可能的实现方式至第十四种可能的实现方式中任一实现方式,在第十五种可能的实现方式中,所述根据所述剩余的比特数和所述第二饱和阈值j,确定将要二次解码的矢量数目m,包括:按照下列等式确定m:其中,C表示剩余的比特数,M表示每个矢量所包含的频谱系数数目。

结合第二方面或第二方面的第一种可能的实现方式至第十五种可能的实现方式中任一实现方式,在第十六种可能的实现方式中,所述根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k,包括:按照下列等式确定k:其中,B表示可用比特数,L表示每个子带所包含的频谱系数数目。

结合第二方面或第二方面的第一种可能的实现方式至第十六种可能的实现方式中任一实现方式,在第十七种可能的实现方式中,所述根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k,包括:如果信号为瞬态信号、摩擦音信号或大周期信号,则根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k。

第三方面,提供了一种信号编码设备,包括:确定单元,用于根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k,其中i为正数,k为正整数;选择单元,用于根据所述确定单元确定的所述子带数目k,根据各个子带量化的包络从所述各个子带中选择k个子带,或者根据心理声学模型从所述各个子带中选择k个子带;编码单元,用于对所述选择单元所选择的k个子带的频谱系数进行一次编码操作。

结合第三方面,在第一种可能的实现方式中,所述编码单元具体用于:对所述k个子带的频谱系数进行归一化,以得到所述k个子带的归一化的频谱系数;对所述k个子带归一化的频谱系数进行量化,以得到所述k个子带量化的频谱系数。

结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述选择单元,还用于如果在所述一次编码操作后所述可用比特数中剩余的比特数大于或等于第一比特数阈值,则根据所述剩余的比特数、第二饱和阈值j和所述k个子带量化的频谱系数,确定将要二次编码的m个矢量,其中j为正数,m为正整数;所述编码单元,还用于对所述选择单元所确定的所述m个矢量的频谱系数进行二次编码操作。

结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述选择单元具体用于:根据所述剩余的比特数和所述第二饱和阈值j,确定将要编码的矢量数目m;根据所述k个子带量化的频谱系数确定候选频谱系数,所述候选频谱系数包括所述k个子带归一化的频谱系数减去对应的所述k个子带量化的频谱系数所得到的频谱系数;从所述候选频谱系数所属的矢量中选择所述m个矢量。

结合第三方面的第三种可能的实现方式,在第四种可能的实现方式中,所述选择单元具体用于:对所述候选频谱系数所属的矢量进行排序,以得到排序后的矢量;从所述排序后的矢量中选择前m个矢量;其中,所述排序后的矢量划分为第一组矢量和第二组矢量,所述第一组矢量排在所述第二组矢量之前,所述第一组矢量对应于所述k个子带量化的频谱系数所属的矢量中值为全0的矢量,所述第二组矢量对应于所述k个子带量化的频谱系数所属的矢量中值为非全0的矢量。

结合第三方面的第三种可能的实现方式,在第五种可能的实现方式中,所述选择单元具体用于按照所述候选频谱系数所属的矢量所在的子带量化的包络从大到小的顺序,从所述候选频谱系数所属的矢量中选择m个矢量。

结合第三方面的第二种可能的实现方式至第五种可能的实现方式中任一实现方式,在第六种可能的实现方式中,所述编码单元具体用于:确定所述m个矢量的频谱系数的全局增益;使用所述m个矢量的频谱系数的全局增益对所述m个矢量的频谱系数进行归一化;对所述m个矢量归一化的频谱系数进行量化。

结合第三方面的第四种可能的实现方式,在第七种可能的实现方式中,所述编码单元具体用于:确定所述第一组矢量的频谱系数的全局增益和所述第二组矢量的频谱系数的全局增益;使用所述第一组矢量的频谱系数的全局增益对所述m个矢量中属于所述第一组矢量的频谱系数进行归一化,并使用所述第二组矢量的频谱系数的全局增益对所述m个矢量中属于所述第二组矢量的频谱系数进行归一化;对所述m个矢量归一化的频谱系数进行量化。

结合第三方面的第三种可能的实现方式至第七种可能的实现方式中任一实现方式,在第八种可能的实现方式中,所述选择单元具体用于按照下列等式确定m:其中,C表示剩余的比特数,M表示每个矢量所包含的频谱系数数目。

结合第三方面或第三方面的第一种可能的实现方式至第八种可能的实现方式中任一实现方式,在第九种可能的实现方式中,所述确定单元具体用于按照下列等式确定k:其中,B表示可用比特数,L表示每个子带所包含的频谱系数数目。

结合第三方面或第三方面的第一种可能的实现方式至第九种可能的实现方式中任一实现方式,在第十种可能的实现方式中,所述确定单元具体用于如果信号为瞬态信号、摩擦音信号或大周期信号,则根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k。

第四方面,提供了一种信号解码设备,包括:确定单元,用于根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k,其中i为正数,k为正整数;选择单元,用于根据所述确定单元确定的所述子带数目k,根据解码的各个子带的包络从所述各个子带中选择k个子带,或根据心理声学模型从所述各个子带中选择k个子带;解码单元,用于进行一次解码操作,以得到所述选择单元所选择的所述k个子带量化的频谱系数。

结合第四方面,在第一种可能的实现方式中,所述第一确定单元,还用于如果在所述一次解码操作后所述可用比特数中剩余的比特数大于或等于第一比特数阈值,则根据所述剩余的比特数、所述第二饱和阈值j和所述第一组解码的频谱系数,确定将要二次解码的矢量数目m,其中j为正数,m为正整数;所述解码单元,还用于进行二次解码操作,以得到所述m个矢量归一化的频谱系数。

结合第四方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:第二确定单元,用于确定所述m个矢量归一化的频谱系数与所述k个子带量化的频谱系数之间的对应关系。

结合第四方面的第二种可能的实现方式,在第三种可能的实现方式中,所述第二确定单元具体用于确定所述m个矢量与所述k个子带量化的频谱系数所属的矢量中第一类矢量之间的对应关系,其中所述m个矢量与所述第一类矢量之间是一一对应的。

结合第四方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第二确定单元具体用于对所述k个子带量化的频谱系数所属的矢量进行排序,得到排序后的矢量,其中所述排序后的矢量划分为第一组矢量和第二组矢量,所述第一组矢量排列在所述第二组矢量之前,所述第一组矢量包括所述第一组解码的频谱系数所属的矢量中值为全0的矢量,所述第二组矢量包括所述第一组解码的频谱系数所属的矢量中值为非全0的矢量;从所述排序后的矢量中选择前m个作为所述第一类矢量;建立所述第一类矢量与所述m个矢量之间的对应关系。

结合第四方面的第三种可能的实现方式,在第五种可能的实现方式中,所述第二确定单元具体用于按照所述k个子带量化的频谱系数所属的矢量所在的子带的包络从大到小的顺序,从所述k个子带量化的频谱系数所属的矢量中选择m个作为所述第一类矢量;建立所述第一类矢量与所述m个矢量之间的对应关系。

结合第四方面的第一种可能的实现方式至第五种可能的实现方式中任一实现方式,在第六种可能的实现方式中,还包括修正单元;所述解码单元还用于解码所述m个矢量的全局增益;所述修正单元,用于使用所述m个矢量的全局增益对所述m个矢量归一化的频谱系数进行修正,以得到所述m个矢量的频谱系数。

结合第四方面的第四种可能的实现方式,在第七种可能的实现方式中,还包括修正单元;所述解码单元还用于解码第一全局增益和第二全局增益;所述修正单元,用于使用所述第一全局增益对所述m个矢量归一化的频谱系数中与所述第一组矢量对应的频谱系数进行修正,并使用所述第二全局增益对所述m个矢量归一化的频谱系数中与所述第二组矢量对应的频谱系数进行修正,以得到所述m个矢量的频谱系数。

结合第四方面的第六种可能的实现方式或第七种可能的实现方式,在第八种可能的实现方式中,还包括叠加单元和恢复单元:所述叠加单元,用于对所述k个子带量化的频谱系数和所述m个矢量的频谱系数进行叠加,得到k个子带的频谱系数;所述恢复单元,用于对所述k个子带归一化的频谱系数中值为0的频谱系数进行噪声填充,并对所述各个子带中除k个之外的其它子带的频谱系数进行恢复,以得到第一频带的频谱系数,其中所述第一频带由所述各个子带组成;所述修正单元,还用于使用所述各个子带的包络修正所述第一频带的频谱系数,得到所述第一频带归一化的频谱系数;所述修正单元,还用于使用所述第一频带的全局增益对所述第一频带归一化的频谱系数进行修正,以得到最终的第一频带频域信号。

结合第四方面的第八种可能的实现方式,在第九种可能的实现方式中,所述叠加单元具体用于根据所述m个矢量归一化的频谱系数与所述k个子带量化的频谱系数之间的对应关系,对所述m个矢量的频谱系数和所述k个子带量化的频谱系数进行叠加。

结合第四方面的第八种可能的实现方式或第九种可能的实现方式,在第十种可能的实现方式中,所述恢复单元具体用于:根据核心层解码信息,确定加权值;使用所述加权值,对在所述k个子带归一化的频谱系数中与所述值为0的频谱系数相邻的频谱系数以及随机噪声进行加权。

结合第四方面的第十种可能的实现方式,在第十一种可能的实现方式中,所述恢复单元具体用于:从所述核心层解码信息中获取信号分类信息;如果所述信号分类信息指示信号为摩擦音,则获取预定的加权值;如果所述信号分类信息指示信号为除摩擦音之外的其它信号,则从所述核心层解码信息中获取基音周期,并根据所述基音周期确定加权值。

结合第四方面的第八种可能的实现方式至第十一种可能的实现方式中任一实现方式,在第十二种可能的实现方式中,所述恢复单元具体用于从所述各个子带中选择与所述k个子带之外的其它子带相邻的n个子带,并根据所述n个子带的频谱系数对所述k个子带之外的其它子带的频谱系数进行恢复,其中n为正整数;或者,从所述k个子带中选择p个子带,并根据所述p个子带的频谱系数对所述k个子带之外的其它子带的频谱系数进行恢复,其中所述p个子带中每个子带被分配的比特数大于或等于第二比特数阈值,其中p为正整数。

结合第四方面的第一种可能的实现方式至第十二种可能的实现方式中任一实现方式,在第十三种可能的实现方式中,所述第一确定单元具体用于按照下列等式确定m:其中,C表示剩余的比特数,M表示每个矢量所包含的频谱系数数目。

结合第四方面或第四方面的第一种可能的实现方式至第十三种可能的实现方式中任一实现方式,在第十四种可能的实现方式中,所述第一确定单元具体用于按照下列等式确定k:其中,B表示可用比特数,L表示每个子带所包含的频谱系数数目。

结合第四方面或第四方面的第一种可能的实现方式至第十四种可能的实现方式中任一实现方式,在第十五种可能的实现方式中,所述第一确定单元具体用于如果信号为瞬态信号、摩擦音信号或大周期信号,则根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k。

本发明实施例中,通过根据可用比特数和第一饱和阈值确定将要编码的子带数目k,并从各个子带中选择k个子带来进行编码,而非对整个频带进行编码,能够减少解码信号的频谱空洞,从而能够提升输出信号的听觉质量。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例的信号编码方法的示意性流程图。

图2是根据本发明另一实施例的信号解码方法的示意性流程图

图3是根据本发明一个实施例的信号编码方法的过程的示意性流程图。

图4是根据本发明实施例的确定二次编码的矢量的过程的示意图。

图5是根据本发明一个实施例的信号编码设备的示意框图。

图6是根据本发明一个实施例的信号解码设备的示意框图。

图7是根据本发明另一实施例的信号编码设备的示意框图。

图8是根据本发明另一实施例的信号解码设备的示意框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

编码技术和解码技术,广泛应用于各种电子设备中,例如:移动电话,无线装置,个人数据助理(Personal Data Assistant,PDA),手持式或便携式计算机,全球定位系统(Global Positioning System,GPS)接收机/导航器,照相机,音频/视频播放器,摄像机,录像机,监控设备等。通常,这类电子设备中包括音频编码器或音频解码器,音频编码器或者解码器可以直接由数字电路或芯片例如数字信号处理(Digital Signal Processor,DSP)芯片实现,或者由软件代码驱动处理器执行软件代码中的流程而实现。

图1是根据本发明实施例的信号编码方法的示意性流程图。图1的方法由编码端执行,例如语音或音频编码器。本发明实施例中所指的信号,可以是语音或音频信号。

在编码过程中,编码端可以先将时域信号变换为频域信号,例如可以采用快速傅立叶变换(Fast Fourier Transform,FFT)或改进离散余弦变换(Modified Discrete CosineTransform,MDCT)等算法进行时频变换。然后,编码端可以利用全局增益对频域信号的频谱系数进行归一化,将归一化的频谱系数进行分带以得到各个子带。

110,根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k,其中i为正数,k为正整数。

可用比特数可以是指能够用于编码的总比特数。

第一饱和阈值i可以是预先确定的。例如,可以基于如下原则确定第一饱和阈值i:当一个子带内平均每个频谱系数分配的比特数大于或等于第一饱和阈值i时,则可以认为向该子带分配的比特达到饱和。平均每个频谱系数分配的比特数可以是向该子带分配的比特数与该子带的频谱系数数目的比值。向子带分配的比特数达到饱和的含义可以是指即使向该子带分配更多的比特,该子带的性能也不会有明显的提升。第一饱和阈值i可以是正数。通常情况下,i≥1.5。

此外,也可以通过第一饱和阈值i和频谱系数的数目,确定可用比特数阈值,进而确定将要编码的子带数目k。例如:预设i=2,总子带数目为4,有两个子带内的频谱系数的数目为64,有两个子带内的频谱系数的数目为72;这时,三个子带包含的最少频谱系数的数目为64+64+72=200,所以,可以设定可用比特数阈值为200*2=400,当可用比特数>400时,k为4,否则k为3。

120,根据各个子带量化的包络从各个子带中选择k个子带,或者根据心理声学模型从各个子带中选择k个子带。

例如,编码端可以按照各个子带量化的包络从大到小的顺序,从各个子带中选择k个子带。或者,编码端可以根据心理声学模型确定各个子带的重要性,可以按照各个子带的重要性由高到低的顺序选择k个子带。

130,对k个子带的频谱系数进行一次编码操作。

应理解,此处的一次编码可以指编码端在编码过程中对频谱系数执行的第一次编码操作。本发明实施例中,编码操作可以包括归一化、量化和写码流等操作。

现有技术中,编码端在整个频带内统一进行比特分配,然后对整个频带进行编码,造成整个频谱有很多空洞。本发明实施例中,编码端首先根据可用比特数和第一饱和阈值确定将要编码的子带数目k,然后从各个子带中选择k个子带来进行编码。不向除k个子带以外剩余的子带分配比特,因此这些剩余的子带也不被编码。这样使得这k个子带能够被更好地编码,在解码端能够减少解码信号的频谱空洞,从而提升输出信号的质量。因此,本发明实施例能够提升信号的听觉质量。

本发明实施例中,通过根据可用比特数和第一饱和阈值确定将要编码的子带数目k,并从各个子带中选择k个子带来进行编码,而非对整个频带进行编码,能够减少解码信号的频谱空洞,从而能够提升输出信号的听觉质量。

本发明实施例可以应用于各种类型的语音或音频信号,例如瞬态信号、摩擦音信号或大周期信号等。

可选地,作为一个实施例,如果信号为瞬态信号、摩擦音信号或大周期信号,则编码端可以根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k。

具体地,编码端可以确定输入的信号是否为瞬态信号、摩擦音信号或大周期信号。如果输入的信号为瞬态信号、摩擦音信号或大周期信号,则可以执行图1的方法。这样,能够提升瞬态信号、摩擦音信号或大周期信号的编码质量。

可选地,作为另一实施例,在步骤110中,编码端可以按照等式(1)确定子带数目k:

其中,B可以表示可用比特数,L可以表示一个子带中的频谱系数数目。

可选地,作为另一实施例,在步骤130中,编码端可以对k个子带的频谱系数进行归一化,以得到k个子带归一化的频谱系数,并对k个子带归一化的频谱系数进行量化,以得到k个子带量化的频谱系数。

在步骤130中,编码操作可以包括对频谱系数的归一化操作和量化操作。例如,编码端可以按照现有技术的过程对k个子带的频谱系数进行归一化。在对k个子带的频谱系数进行归一化后,编码端可以对k个子带归一化的频谱系数进行量化。例如,编码端可以采用某些格型矢量量化(Lattice Vector Quantization,LVQ)算法,比如代数矢量量化(Algebraic Vector Quantization,AVQ)或球型矢量量化(Spherical Vector Quantization,SVQ)等算法,对k个子带归一化的频谱系数进行量化。这些矢量量化算法的特点如下:确定对要量化的每组矢量所要分配的比特数后,不再根据剩余比特数对每组矢量分配的比特数再次进行调整,而且各组矢量分配比特的过程相对独立,只根据这一组矢量本身的数值大小确定,而不是对所有矢量进行闭环的比特分配。

此外,编码操作还包括写码流操作。例如,编码端可以对k个子带的频谱系数进行归一化以及量化后,将k个子带量化的频谱系数的索引写入码流。写码流操作可以在对k个子带量化后执行,也可以在下面将要描述的二次编码操作后执行。本发明实施例对此不做限定。

可选地,作为另一实施例,在步骤130之后,如果在一次编码后可用比特数中剩余的比特数大于或等于第一比特数阈值,则编码端可以根据剩余的比特数、第二饱和阈值j和k个子带量化的频谱系数,确定将要二次编码的m个矢量,其中j为正数,m为正整数。然后编码端可以对m个矢量的频谱系数进行二次编码操作。

在上述步骤130中,编码端对k个子带的频谱系数执行了第一次编码操作,在第一次编码操作后可能仍有剩余的比特数。编码端可以将剩余的比特数与第一比特数阈值进行比较,如果剩余的比特数大于或等于第一比特数阈值,那么编码端还可以利用剩余的比特数进行第二次编码操作。第一比特数阈值和第二饱和阈值j均可以是预先设置的。第二饱和阈值j与第一饱和阈值i可以是相等的或不相等的,它们均可以基于相同的原则来确定的,即,第二饱和阈值j的确定原则可以如下:当一个矢量内平均每个频谱系数分配的比特数大于或等于第二饱和阈值j时,则可以认为向该矢量分配的比特达到饱和。一般情况下,j≥1.5。

本实施例中,如果在一次编码操作后剩余的比特数大于或等于第一比特数阈值,则根据剩余的比特数、第二饱和阈值j和k个子带量化的频谱系数,确定将要二次编码的m个矢量,并对m个矢量的频谱系数进行二次编码操作,因此能够充分利用剩余的比特数,从而能够进一步提升信号的编码质量。

可选地,作为另一实施例,编码端可以根据剩余的比特数和第二饱和阈值j,确定将要编码的矢量数目m。编码端可以根据k个子带量化的频谱系数确定候选频谱系数,并可以从候选频谱系数所属的矢量中选择m个矢量。上述候选频谱系数可以包括k个子带归一化的频谱系数减去对应的k个子带量化的频谱系数所得到的频谱系数。

k个子带归一化的频谱系数与k个子带量化的频谱系数是一一对应的,因此在执行减法操作时,k个子带归一化的频谱系数与k个子带量化的频谱系数是一一对应相减。例如,假设在k个子带内共有5个归一化的频谱系数,那么可以在步骤130中,编码端可以对5个频谱系数进行归一化,得到5个归一化的频谱系数。然后编码端可以对5个归一化的频谱系数进行量化,从而得到5个量化的频谱系数。编码端可以用5个归一化的频谱系数分别减去各自对应的量化的频谱系数,例如可以使用第1个归一化的频谱系数减去第1个量化的频谱系数得到1个新的频谱系数,以此类推,编码端可以得到5个新的频谱系数。这5个新的频谱系数就是候选频谱系数。

可选地,作为另一实施例,编码端可以按照等式(2)确定矢量数目m。

其中,C可以表示剩余的比特数,M可以表示每个矢量包含的频谱系数数目。

可选地,作为另一实施例,编码端可以对候选频谱系数所属的矢量进行排序,以得到排序后的矢量。编码端可以从排序后的矢量中选择前m个矢量。其中,排序后的矢量可以被划分为第一组矢量和第二组矢量,第一组矢量排在第二组矢量之前,第一组矢量对应于k个子带量化的频谱系数所属的矢量中值为全0的矢量,第二组矢量对应于k个子带量化的频谱系数所属的矢量中值为非全0的矢量。

由上述可知,候选频谱系数是由k个子带归一化的频谱系数与k个子带的量化的频谱系数相减得到的。因此,候选频谱系数所属的矢量也可以理解为归一化的频谱系数所属的矢量与量化的频谱系数所属的矢量相减得到的。k个子带量化的频谱系数所属的矢量中可能存在值为全0的矢量,值为全0的矢量可以是指包含的频谱系数均为0的矢量。编码端可以对候选频谱系数所属的矢量进行排序,得到排序后的矢量。在排序后的矢量中,通过k个子带归一化的频谱系数所属的矢量与k个子带量化的频谱系数所属的矢量中值为全0的矢量相减所得到的矢量可以分为第一组矢量,通过k个子带归一化的频谱系数所属的矢量与k个子带量化的频谱系数所属的矢量中值为非全0的矢量相减所得到的矢量可以分为第二组矢量。

第一组矢量可以排在第二组矢量之前,因此编码端在选择m个矢量时,可以从第一组矢量开始选择前m个矢量。例如,假设m为5。如果第一组矢量有4个矢量,那么编码端可以从第一组矢量中选择4个矢量,然后从第二组矢量中选择1个矢量。如果第一组矢量有7个矢量,那么编码端可以从第一组矢量中选择前5个矢量即可。也就是,在选择将要二次编码的m个矢量时,第一组矢量的优先级高于第二组矢量。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间可以是按照矢量所在子带的频率从低频到高频的顺序排列的,且同一子带内的矢量可以是按照矢量原始顺序排列的。

矢量原始顺序可以是指矢量在其所属子带内的原本的顺序。例如,假设第一组矢量有5个矢量,分别编号为矢量0、矢量1、矢量2、矢量3和矢量4。矢量1和矢量2属于子带0,矢量0和矢量3属于子带1,矢量4属于子带2。子带0中的矢量原始顺序是这样的:矢量1排在矢量2之前。子带1中的矢量原始顺序是这样的:矢量0排在矢量3之前。在这3个子带中,子带0的频率最低,子带2的频率最高,子带1的频率在它们之间。那么,第一组矢量中5个矢量的排序方式可以如下:首先将属于不同子带之间的矢量按照子带从低频到高频的顺序排列,即属于子带0的矢量排在最前面,属于子带1的矢量排在中间,属于子带2的矢量排在最后面。然后,属于同一子带的矢量可以按照矢量原始顺序排列。这样,第一组矢量中5个矢量的排序可以如下:矢量1,矢量2,矢量0,矢量3,矢量4。第二组矢量的排序方式类似于第一组矢量,不再赘述。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带量化的包络从大到小的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

在该实施例中,不同子带的矢量之间是按照子带量化的包络排序的。而同一子带内的矢量还是按照矢量原始顺序排列的。例如,假设第一组矢量有5个矢量,分别编号为矢量0、矢量1、矢量2、矢量3和矢量4。矢量1和矢量2属于子带0,矢量0和矢量3属于子带1,矢量4属于子带2。子带0中的矢量原始顺序是这样的:矢量1排在矢量2之前。子带1中的矢量原始顺序是这样的:矢量0排在矢量3之前。在这3个子带中,子带2量化的包络最小,子带1量化的包络最大,子带0量化的包络在它们之间。那么,第一组矢量中5个矢量的排序可以如下:矢量0,矢量3,矢量1,矢量2,矢量4。

可选地,作为另一实施例,编码端可以按照候选频谱系数所属的矢量所在的子带量化的包络从大到小的顺序,从候选频谱系数所属的矢量中选择m个矢量。

在该实施例中,编码端可以不再对候选频谱系数所属的矢量进行分组,而可以直接按照子带量化的包络从大到小的顺序选择m个矢量。例如,假设有4个矢量,分别编号为矢量0、矢量1、矢量2和矢量3。4个矢量分别属于4个不同子带,即子带0、子带1、子带2和子带3。其中,假设各个子带量化的包络的从大到小的顺序如下:子带2>子带1>子带3>子带0。如果要选择3个矢量进行二次编码,那么按照各个子带量化的包络的从大到小的顺序,就可以选择矢量2、矢量1和矢量3。

如果多个矢量属于同一子带,可以按照多个矢量在该子带内的原始顺序选择,或者,对于该子带内的多个矢量,可以先选择值为全0的矢量,然后选择值为非全0的矢量。例如,假设有5个矢量,分别编号为矢量0至矢量4。矢量0属于子带0,矢量1至矢量3属于子带1,矢量4属于子带2。其中,假设各个子带量化的包络的从大到小的顺序如下:子带2>子带1>子带0。如果要选择3个矢量进行二次编码,那么各个子带量化的包络的从大到小的顺序,首先选择矢量4,然后需要在子带1内的矢量1至矢量3中选择剩余的2个矢量。此时,可以按照矢量1至矢量3在子带1内的原始顺序选择剩余的2个矢量,或者也可以优先选择矢量1至矢量3中值为全0的矢量,然后选择值为非全0的矢量。

在对m个矢量的频谱系数进行二次编码时,编码端首先可以对m个矢量的频谱系数进行归一化,然后对m个矢量归一化的频谱系数进行量化。例如,编码端可以采用在一次编码时所使用的矢量量化算法,比如AVQ或SVQ等算法,对m个矢量归一化的频谱系数进行量化。在得到m个矢量量化的频谱系数后,编码端可以对m个矢量量化的频谱系数执行写码流操作。

其中,在对m个矢量的频谱系数进行归一化时,编码端可以采用不同的全局增益对m个矢量的频谱系数进行归一化。

可选地,作为另一实施例,编码端可以确定m个矢量的频谱系数的全局增益,使用m个矢量的频谱系数的全局增益对m个矢量的频谱系数进行归一化,然后可以对m个矢量归一化的频谱系数进行量化。

可选地,作为另一实施例,编码端可以确定第一组矢量的频谱系数的全局增益和第二组矢量的频谱系数的全局增益。编码端可以使用第一组矢量的频谱系数的全局增益对m个矢量中属于第一组矢量的频谱系数进行归一化,并使用第二组矢量的频谱系数的全局增益对m个矢量中属于第二组矢量的频谱系数进行归一化。然后编码端可以对m个矢量归一化的频谱系数进行量化。

例如,编码端也可以分别使用两组矢量各自的全局增益分别对从两组矢量中选出来的矢量进行归一化。

上面描述了编码端对信号进行编码的过程,解码是编码的逆过程。图2是根据本发明另一实施例的信号解码方法的示意性流程图。图2的方法由解码端执行,例如语音或音频解码器。

在解码过程中,解码端可以对从编码端接收的比特流进行解码,例如,解码端可以进行核心层(Core)解码来得到低频带信息,同时解码高频带各个子带的包络以及全局增益。然后,解码端可以利用上述解码得到的信息对高频带频谱系数执行解码操作和恢复操作。

210,根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k,其中i为正数,k为正整数。

步骤210类似与图1中的步骤110,此处不再赘述。由于第一饱和阈值i可以是预先确定的,因此,编码端和解码端可以使用相同的第一饱和阈值i。

220,根据解码的各个子带的包络从各个子带中选择k个子带,或者根据心理声学模型从各个子带中选择k个子带。

例如,解码端可以根据解码的各个子带的包络从大到小的顺序,从各个子带中选择k个子带。或者,解码端可以根据心理声学模型确定各个子带的重要性,可以按照各个子带的重要性由高到低的顺序选择k个子带。

230,进行一次解码操作,以得到k个子带量化的频谱系数。

类似于编码端,一次解码操作可以指解码端在解码过程中对频谱系数执行的第一次解码操作。一次解码操作可以包括去量化等操作。解码操作的具体过程可以参照现有技术,例如解码端可以对接收的码流执行第一次解码操作,比如解码端可以采用编码端对k个子带归一化的频谱系数进行量化时所使用的矢量量化算法,比如AVQ或SVQ等算法,基于接收的码流执行一次去量化操作,从而得到k个子带量化的频谱系数。

编码端在编码频谱系数时首先根据可用比特数和第一饱和阈值确定将要编码的子带数目k,然后从各个子带中选择k个子带来进行编码。由于解码过程是编码过程的逆过程,因此,解码端在解码频谱系数时可以首先根据可用比特数和第一饱和阈值确定将要解码的子带数目k,然后从各个子带中选择k个子带来进行解码,从而能够提升解码信号的质量,进而提升输出信号的听觉质量。

本发明实施例中,通过根据可用比特数和第一饱和阈值确定将要解码的子带数目k,并从各个子带中选择k个子带来进行解码,能够减少解码信号的频谱空洞,从而能够提升输出信号的听觉质量。

本发明实施例可以应用于各种类型的语音或音频信号,例如瞬态信号、摩擦音信号或大周期信号等。

可选地,作为一个实施例,如果信号为瞬态信号、摩擦音信号或大周期信号,则解码端可以根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k。

具体地,解码端可以根据解码的信号类型或从解码的低频带信息中提取的信号类型,确定要解码的信号是否为瞬态信号、摩擦音信号或大周期信号。如果要解码的信号为瞬态信号、摩擦音信号或大周期信号,则可以执行图2的方法。这样,能够提升瞬态信号、摩擦音信号或大周期信号的质量。

可选地,作为另一实施例,在步骤210中,解码端也可以按照等式(1)确定子带数目k。

可选地,作为另一实施例,在步骤230之后,如果在一次解码操作后可用比特数中剩余的比特数大于或等于第一比特数阈值,则解码端可以根据剩余的比特数和第二饱和阈值j,确定将要二次解码的矢量数目m,其中j为正数,m为正整数。然后解码端可以进行二次解码操作,以得到m个矢量归一化的频谱系数。

由于编码端在一次编码操作后可能进行了二次编码操作,因此,解码端可以按照同样的判断方式确定是否需要进行二次解码操作。第二饱和阈值j也可以是预先确定的,因此解码端与编码端可以使用相同的第二饱和阈值j。第二饱和阈值j的确定原则可以参照图1的实施例中的描述,此处不再赘述。

二次解码操作可以包括去量化等操作。例如,解码端可以采用一次解码操作时所使用的矢量量化算法,比如AVQ或SVQ等算法,基于接收的码流执行第二次去量化操作,从而得到m个矢量归一化的频谱系数。

可选地,作为另一实施例,解码端也可以按照等式(2)确定矢量数目m。

可选地,作为另一实施例,解码端可以确定m个矢量归一化的频谱系数与k个子带量化的频谱系数之间的对应关系。

可选地,作为另一实施例,解码端可以确定m个矢量与k个子带量化的频谱系数所属的矢量中第一类矢量之间的对应关系,其中m个矢量与第一类矢量之间是一一对应的。

由图1的实施例的过程可知,编码端从候选频谱系数所属的矢量中选择了m个矢量来进行二次编码,而候选频谱系数是通过k个子带归一化的频谱系数与k个子带量化的频谱系数进行相减得到的,因此,解码端在通过二次解码获得m个矢量归一化的频谱系数后,需要确定这m个矢量具体是候选频谱系数所属的矢量中哪些矢量,也就是确定m个矢量与k个子带量化的频谱系数所属的矢量中第一类矢量之间的一一对应关系。

具体地,解码端可以基于不同的方式确定m个矢量与k个子带量化的频谱系数所属的矢量中第一类矢量之间的对应关系。应理解,解码端所依据的方式应当与编码端选择用于二次编码的m个矢量所依据的方式相同。

可选地,作为另一实施例,解码端可以对k个子带量化的频谱系数所属的矢量进行排序,得到排序后的矢量,然后,解码端可以从排序后的矢量中选择前m个矢量作为第一类矢量,并建立第一类矢量与m个矢量之间的对应关系。其中,排序后的矢量划分为第一组矢量和第二组矢量,第一组矢量排列在第二组矢量之前,第一组矢量包括第一组解码的频谱系数所属的矢量中值为全0的矢量,第二组矢量包括第一组解码的频谱系数所属的矢量中值为非全0的矢量。

具体地,解码端可以对k个子带量化的频谱系数所属的矢量进行排序,得到排序后的矢量。排序后的矢量可以看作是由两组矢量组成。其中第一组矢量排在第二组矢量前面,第一组矢量均为值为全0的矢量,第二组矢量均为值为非全0的矢量。然后,解码端可以从排序后的矢量中选择前m个矢量作为第一类矢量。可见,在选择第一类矢量时,第一组矢量的优先级高于第二组矢量。

其中,对于每组矢量中的各个矢量也可以按照不同的方式进行排序。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带从低频到高频的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带的包络从大到小的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

可选地,作为另一实施例,解码端可以按照k个子带量化的频谱系数所属的矢量所在的子带的包络从大到小的顺序,从k个子带量化的频谱系数所属的矢量中选择m个作为第一类矢量。解码端可以建立第一类矢量与m个矢量之间的对应关系。

可选地,作为另一实施例,解码端可以解码m个矢量的全局增益,并使用m个矢量的全局增益对m个矢量归一化的频谱系数进行修正,以得到m个矢量的频谱系数。

解码端可以对第二组解码的频谱系数进行修正,此处解码端可以采用解码得到的m个矢量的全局增益对m个矢量归一化的频谱系数进行修正。

可选地,作为另一实施例,解码端可以解码第一全局增益和第二全局增益,使用第一全局增益对m个矢量归一化的频谱系数中与第一组矢量对应的频谱系数进行修正,并使用第二全局增益对m个矢量归一化的频谱系数中与第二组矢量对应的频谱系数进行修正,以得到m个矢量的频谱系数。

由图1的实施例的过程可知,编码端可以使用两个全局增益对m个矢量的频谱系数进行归一化,因此,相应地,解码端可以使用两个全局增益对m个矢量归一化的频谱系数进行修正。

可选地,作为另一实施例,解码端可以对k个子带量化的频谱系数和m个矢量的频谱系数进行叠加,得到k个子带归一化的频谱系数。解码端可以对k个子带归一化的频谱系数中值为0的频谱系数进行噪声填充,并对各个子带中除k个子带之外的其它子带的频谱系数进行恢复,以得到第一频带的频谱系数,其中第一频带由各个子带组成。编码端可以使用各个子带的包络修正第一频带的频谱系数,得到第一频带归一化的频谱系数,然后可以使用第一频带的全局增益对第一频带归一化的频谱系数进行修正,以得到最终的第一频带频域信号。

解码端可以在两次解码后,两次解码得到的频谱系数均属于有比特分配的k个子带。因此,将两次解码分别得到的频谱系数进行叠加,得到k个子带归一化的频谱系数。具体地,对于k个子带量化的频谱系数,实质上是编码端经过一次归一化处理后的频谱系数。而m个矢量归一化的频谱系数,实质是编码端经过二次归一化处理后的频谱系数,因此解码端需要对m个矢量归一化的频谱系数进行修正,得到m个矢量的频谱系数。然后可以对k个子带量化的频谱系数与m个矢量的频谱系数进行叠加,得到k个子带归一化的频谱系数。对于k个子带归一化的频谱系数值为0的频谱系数,解码端通常可以填充一些噪声,使得重建音频信号听起来更自然。并且,解码端还需要恢复各个子带中除k个子带之外的其它子带的频谱系数,由于第一频带由上述各个子带组成,从而得到第一频带的频谱系数。此处,第一频带可以指全频带,也可以是全频带中的部分频带。也就是,本发明实施例可以应用于全频带的处理,也可以应用于全频带中部分频带的处理。

可选地,作为另一实施例,解码端可以根据m个矢量归一化的频谱系数与k个子带量化的频谱系数之间的对应关系,对m个矢量的频谱系数和k个子带量化的频谱系数进行叠加。

具体地,由于解码端可以通过对应关系确定m个矢量是候选频谱系数所属的矢量中哪些矢量,而候选频谱系数所属的矢量是通过k个子带归一化的频谱系数所属的矢量与k个子带量化的频谱系数所属的矢量相减得到的,因此为了获得k个子带归一化的频谱系数,解码端可以根据该对应关系将m个矢量的频谱系数叠加到与m个矢量的频谱系数相对应的k个子带量化的频谱系数上。

为了对k个子带归一化的频谱系数中值为0的频谱系数进行噪声填充,可选地,作为另一实施例,解码端可以根据核心层解码信息,确定加权值,然后使用加权值,对在k个子带归一化的频谱系数中与值为0的频谱系数相邻的频谱系数以及随机噪声进行加权。

具体地,对于值为0的频谱系数,解码端可以对与其相邻的频谱系数和随机噪声进行加权。

可选地,作为另一实施例,解码端可以从核心层解码信息中获取信号分类信息。如果信号分类信息指示信号为摩擦音,则解码端可以获取预定的加权值。如果信号分类信息指示信号为除摩擦音之外的其它信号,则解码端可以从核心层解码信息中获取基音周期,并根据基音周期确定加权值。

在通过加权方式进行噪声填充时,针对不同的信号类型,解码端可以采用不同的加权值。例如,如果信号为摩擦音,那么该加权值可以是预先设定的。而对于摩擦音之外的其它信号,解码端可以根据基音周期确定加权值。通常,基音周期越大,加权值越小。

可选地,作为另一实施例,解码端可以从各个子带中选择与上述其它子带相邻的n个子带,并根据n个子带的频谱系数对上述其它子带的频谱系数进行恢复,其中n为正整数。或者,解码端可以从k个子带中选择p个子带,并根据p个子带的频谱系数对上述其它子带的频谱系数进行恢复,其中p个子带中每个子带被分配的比特数大于或等于第二比特数阈值。

具体地,解码端可以使用与除k个子带之外的其它子带相邻的子带的频谱系数对上述其它子带的频谱系数进行恢复。或者,解码端可以使用比特分配较多的子带的频谱系数对上述其它子带的频谱系数进行恢复。例如,比特分配较多可以是指比特数大于或等于预设的第二比特数阈值。

在得到最终的频域信号后,解码端可以对最终的频域信号进行频时变换,得到最终的时域信号。

下面将结合具体例子描述本发明实施例。应理解,这些例子只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。

图3是根据本发明一个实施例的信号编码方法的过程的示意性流程图。

301,编码端对时域信号进行时频变换。

302,编码端对频域信号的频谱系数划分子带。

具体地,编码端可以计算全局增益,使用全局增益对原始的频谱系数进行归一化,然后对归一化后的频谱系数进行分带,从而得到各个子带。

303,编码端计算各个子带的包络,并对各个子带的包络进行量化,得到各个子带量化的包络。

304,编码端确定将要编码的k个子带。

具体地,编码端可以采用图1的实施例中的过程,确定k个子带,此处不再赘述。

305,编码端对k个子带的频谱系数进行归一化并量化。

具体地,编码端可以对k个子带的频谱系数进行归一化,得到k个子带归一化的频谱系数。然后编码端可以对k个子带归一化的频谱系数进行量化,例如采用格型矢量量化算法,对k个子带归一化的频谱系数进行量化,得到k个子带量化的频谱系数。

306,编码端确定在一次编码后可用比特数中剩余的比特数是否大于或等于第一比特数阈值。

如果剩余的比特数小于第一比特数阈值,则转到步骤307。

如果剩余的比特数大于或等于第一比特数阈值,则转到步骤308。

307,如果剩余的比特数小于第一比特数阈值,则编码端写码流。

具体地,如果剩余的比特数小于第一比特数阈值,那么剩余的比特数将不能用于二次编码,编码端可以将一次编码结果、量化的全局增益以及各个子带量化的包络等的索引写入码流。具体过程可以参照现有技术,此处不再赘述。

308,如果剩余的比特数大于或等于第一比特数阈值,则编码端确定将要二次编码的m个矢量。

具体地,编码端可以根据k个子带量化的频谱系数确定候选频谱系数,从候选频谱系数所属的矢量中选择m个矢量。

上述候选频谱系数可以包括k个子带归一化的频谱系数减去对应的k个子带量化的频谱系数所得到的频谱系数。

作为示例,编码端可以从候选频谱系数所属的矢量中选择前m个矢量,其中候选频谱系数所属的矢量可以被划分为第一组矢量和第二组矢量,第一组矢量排在第二组矢量之前,第一组矢量对应于k个子带量化的频谱系数所属的矢量中值为全0的矢量,第二组矢量对应于k个子带量化的频谱系数所属的矢量中值为非全0的矢量。

下面将结合具体例子进行描述。图4是根据本发明实施例的确定二次编码的矢量的过程的示意图。

在图4中,假设在第一次编码时,编码端确定了3个子带,分别编号为子带1至子带3。子带1至子带3是按照低频到高频的顺序排列的。每个子带中有3个矢量,可以分别编号为矢量1a至1i。每个矢量中有8个归一化的频谱系数,这些频谱系数的具体取值可以如图4所示。例如,子带1中的矢量1a包含的归一化的频谱系数为51151151。

在对3个子带的归一化的频谱系数进行量化,得到量化的频谱系数,量化的频谱系数的具体取值如图4所示。其中,有些频谱系数被量化为0,有些频谱系数被量化为非0的值。这些量化的频谱系数也属于9个矢量,可以分别编号为矢量2a至2i。例如,对子带1的矢量1a包含的8个归一化的频谱系数量化,得到8个量化的频谱系数为40040240,其属于矢量2a。对子带1的矢量1b包含的8个归一化的频谱系数进行量化,得到8个量化的频谱系数为00000000,其属于矢量2b。

利用归一化的频谱系数减去对应的量化的频谱系数,得到候选频谱系数。例如,对于子带1的矢量1a,利用8个归一化的频谱系数51151151减去对应的8个量化的频谱系数为40040240,得到新的频谱系数1111-111。对于子带1的矢量1b,利用8个归一化的频谱系数11111111减去8个量化的频谱系数00000000,得到新的频谱系数11111111。以此类推。得到的全部的新频谱系数就是候选频谱系数,如图4所示。

从上述可以看出,候选频谱系数所属的矢量也可以理解为归一化的频谱系数所属的矢量与量化的频谱系数所属的矢量相减得到的。因此,相应地,这些候选频谱系数也属于9个矢量,为了与上述归一化的矢量和量化的矢量相对应,可以分别编号为3a至3i,如图4所示。例如,上述矢量1a减去量化的矢量2a得到矢量3a,矢量1b减去量化的矢量2b得到矢量3b。

这9个矢量可以由两组矢量组成,第一组矢量中有4个矢量,即矢量3b、矢量3e、矢量3g和矢量3i。第二组矢量中有5个矢量,即矢量3a、矢量3c、矢量3d、矢量3f和矢量3h。第一组矢量是通过减去矢量2a至2i中值为全0的矢量得到的,例如,矢量3b是矢量1b减去值为全0的矢量2b得到的;矢量3e是矢量1e减去值为全0的2e的矢量得到的;以此类推。第二组矢量是通过减去矢量2a至2i中值为非全0的矢量得到的。例如,矢量3a是矢量1a减去值为非全0的矢量1b得到的;矢量3c是矢量1c减去值为非全0的矢量2c得到的;以此类推。

如图4所示,每组矢量均可以是按照子带的频率从低频到高频的顺序排列的,且同一子带内的矢量可以是按照矢量原始顺序排列的。例如,在第一组矢量中,矢量3b属于子带1,矢量3e属于子带2,矢量3g和矢量3i属于子带3。在第二组矢量中,矢量3a和矢量3c属于子带1,矢量3d和矢量3f属于子带2,矢量3h属于子带3。

编码端可以从第一组矢量和第二组矢量组成的这组矢量中,选择前m个矢量作为二次编码的矢量。例如,可以选择前3个矢量进行二次编码,即矢量3b、矢量3e和矢量3g。

应理解,上述图4中的具体数值仅仅是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。

此外,除了图4所示的每组矢量中各个矢量的排序方式外,在每组矢量中,不同子带的矢量之间也可以是按照矢量所在子带量化的包络从大到小的顺序排列的,且同一子带内的矢量可以是按照矢量原始顺序排列的。

309,编码端对m个矢量的频谱系数进行归一化并量化。

对m个矢量的频谱系数进行归一化以及量化的具体过程可以参照图1的实施例所描述的内容,此处不再赘述。

310,编码端写码流。

具体地,编码端可以将一次编码得到的频谱系数、二次编码得到的频谱系数、量化的全局增益以及各个子带量化的包络等的索引写入码流。具体过程可以参照现有技术,此处不再赘述。

本发明实施例中,通过根据可用比特数和第一饱和阈值确定将要编码的子带数目k,并从各个子带中选择k个子带来进行编码,而非对整个频带进行编码,能够减少解码信号的频谱空洞,从而能够提升输出信号的听觉质量。

解码的具体过程是图3所示的编码过程的逆过程,下面结合图4的例子,重点描述如何确定m个矢量与k个子带量化的频谱系数所属的矢量中第一类矢量之间的一一对应关系。其它过程可以参照图2的实施例的过程,不再赘述。

例如,对于解码端,通过第一次解码可以得到矢量2a至矢量2i的频谱系数。假设根据剩余比特数和第二饱和阈值j,确定m为5。那么解码端可以通过第二次解码得到矢量3b、矢量3e、矢量3g、矢量3i和矢量3a这5个矢量的频谱系数。由于解码端需要将这5个矢量的频谱系数分别与矢量2b、矢量2e、矢量2g、矢量2i和矢量2a叠加,但是,解码端在解码得到矢量3b、矢量3e、矢量3g、矢量3i和矢量3a后,并不知道这5个矢量与矢量2a至矢量2i中的哪5个相对应。因此,解码端首先需要确定这5个矢量分别与矢量2b、矢量2e、矢量2g、矢量2i和矢量2a之间的一一对应关系,即矢量2b、矢量2e、矢量2g、矢量2i和矢量2a为k个子带量化的频谱系数所属的矢量中第一类矢量,然后将矢量3b、矢量3e、矢量3g、矢量3i和矢量3a这5个矢量的频谱系数分别与矢量2b、矢量2e、矢量2g、矢量2i和矢量2a的频谱系数叠加。具体地,解码端可以按照图2的实施例所描述的方式确定,此处不再赘述。

图5是根据本发明一个实施例的信号编码设备的示意框图。图5的设备500的例子为语音或音频编码器。设备500包括确定单元510、选择单元520和编码单元530。

确定单元510根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k,其中i为正数,k为正整数。选择单元520根据确定单元510确定的子带数目k,根据各个子带量化的包络从各个子带中选择k个子带,或者根据心理声学模型从各个子带中选择k个子带。编码单元530对选择单元520所选择的k个子带的频谱系数进行一次编码操作。

本发明实施例中,通过根据可用比特数和第一饱和阈值确定将要编码的子带数目k,并从各个子带中选择k个子带来进行编码,而非对整个频带进行编码,能够减少解码信号的频谱空洞,从而能够提升输出信号的听觉质量。

可选地,作为一个实施例,编码单元530可以对k个子带的频谱系数进行归一化,以得到k个子带归一化的频谱系数,并对k个子带归一化的频谱系数进行量化,以得到k个子带量化的频谱系数。

可选地,作为另一实施例,如果在一次编码操作后可用比特数中剩余的比特数大于或等于第一比特数阈值,则选择单元520还可以根据剩余的比特数、第二饱和阈值j和k个子带量化的频谱系数,确定将要二次编码的m个矢量,其中j为正数,m为正整数。编码单元530还可以对选择单元520所确定的m个矢量的频谱系数进行二次编码操作。

可选地,作为另一实施例,选择单元520可以根据剩余的比特数和第二饱和阈值j,确定将要编码的矢量数目m,根据k个子带量化的频谱系数确定候选频谱系数,从候选频谱系数所属的矢量中选择m个矢量。其中,候选频谱系数可以包括k个子带归一化的频谱系数减去对应的k个子带量化的频谱系数所得到的频谱系数。

可选地,作为另一实施例,选择单元520可以对候选频谱系数所属的矢量进行排序,以得到排序后的矢量。选择单元520可以从排序后的矢量中选择前m个矢量。其中,排序后的矢量划分为第一组矢量和第二组矢量,第一组矢量排在第二组矢量之前,第一组矢量对应于k个子带量化的频谱系数所属的矢量中值为全0的矢量,第二组矢量对应于k个子带量化的频谱系数所属的矢量中值为非全0的矢量。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间可以是按照矢量所在子带的频率从低频到高频的顺序排列的,且同一子带内的矢量可以是按照矢量原始顺序排列的。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带量化的包络从大到小的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

可选地,作为另一实施例,选择单元520可以按照候选频谱系数所属的矢量所在的子带量化的包络从大到小的顺序,从候选频谱系数所属的矢量中选择m个矢量。

可选地,作为另一实施例,编码单元530可以确定m个矢量的频谱系数的全局增益,使用m个矢量的频谱系数的全局增益对m个矢量的频谱系数进行归一化,对m个矢量归一化的频谱系数进行量化。

可选地,作为另一实施例,编码单元530可以确定第一组矢量的频谱系数的全局增益和第二组矢量的频谱系数的全局增益,使用第一组矢量的频谱系数的全局增益对m个矢量中属于第一组矢量的频谱系数进行归一化,并使用第二组矢量的频谱系数的全局增益对m个矢量中属于第二组矢量的频谱系数进行归一化,对m个矢量归一化的频谱系数进行量化。

可选地,作为另一实施例,选择单元520可以按照下列等式(2)确定m。

可选地,作为另一实施例,确定单元510可以按照下列等式(1)确定k。

可选地,作为另一实施例,如果信号为瞬态信号、摩擦音信号或大周期信号,则确定单元510可以根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k。

图5的设备500的其它功能和操作可以参照上面图1、图3和图4的方法实施例中涉及编码端的过程,为了避免重复,此处不再赘述。

图6是根据本发明一个实施例的信号解码设备的示意框图。图6的设备600的例子为语音或音频解码器。设备600包括第一确定单元610、选择单元620和解码单元630。

第一确定单元610根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k,其中i为正数,k为正整数。选择单元620根据第一确定单元610确定的子带数目k,根据解码的各个子带的包络从各个子带中选择k个子带,或根据心理声学模型从各个子带中选择k个子带。解码单元630进行一次解码操作,以得到选择单元620选择的k个子带量化的频谱系数。

本发明实施例中,通过根据可用比特数和第一饱和阈值确定将要解码的子带数目k,并从各个子带中选择k个子带来进行解码,能够减少解码信号的频谱空洞,从而能够提升输出信号的听觉质量。

可选地,作为另一实施例,如果在一次解码操作后可用比特数中剩余的比特数大于或等于第一比特数阈值,则第一确定单元610还可以根据剩余的比特数和第二饱和阈值j,确定将要二次解码的矢量数目m,其中j为正数,m为正整数。解码单元630还可以进行二次解码操作,以得到m个矢量归一化的频谱系数。

可选地,作为另一实施例,设备600还可以包括第二确定单元640。第二确定单元640可以确定m个矢量归一化的频谱系数与k个子带量化的频谱系数之间的对应关系。

可选地,作为另一实施例,第二确定单元640可以确定m个矢量与k个子带量化的频谱系数所属的矢量中第一类矢量之间的对应关系,其中m个矢量与第一类矢量之间是一一对应的。

可选地,作为另一实施例,第二确定单元640可以对k个子带量化的频谱系数所属的矢量进行排序,得到排序后的矢量;从排序后的矢量中选择前m个作为第一类矢量;建立第一类矢量与m个矢量之间的对应关系。其中,排序后的矢量划分为第一组矢量和第二组矢量,第一组矢量排列在第二组矢量之前,第一组矢量包括第一组解码的频谱系数所属的矢量中值为全0的矢量,第二组矢量包括第一组解码的频谱系数所属的矢量中值为非全0的矢量。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带的频率从低频到高频的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带的包络从大到小的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

可选地,作为另一实施例,第二确定单元640可以按照k个子带量化的频谱系数所属的矢量所在的子带的包络从大到小的顺序,从k个子带量化的频谱系数所属的矢量中选择m个作为第一类矢量;建立第一类矢量与m个矢量之间的对应关系。

可选地,作为另一实施例,设备600还可以包括修正单元650。

解码单元630可以解码m个矢量的全局增益。

修正单元650可以使用m个矢量的全局增益对m个矢量归一化的频谱系数进行修正,以得到m个矢量的频谱系数。

可选地,作为另一实施例,解码单元630可以解码第一全局增益和第二全局增益。

修正单元650可以使用第一全局增益对m个矢量归一化的频谱系数中与第一组矢量对应的频谱系数进行修正,并使用第二全局增益对m个矢量归一化的频谱系数中与第二组矢量对应的频谱系数进行修正,以得到m个矢量的频谱系数。

可选地,作为另一实施例,设备600还可以包括叠加单元660和恢复单元670。叠加单元660可以对k个子带量化的频谱系数和m个矢量的频谱系数进行叠加,得到k个子带归一化的频谱系数。恢复单元670可以对k个子带归一化的频谱系数中值为0的频谱系数进行噪声填充,并对各个子带中除k个子带之外的其它子带的频谱系数进行恢复,以得到第一频带的频谱系数,其中第一频带由各个子带组成。修正单元650可以使用各个子带的包络修正第一频带的频谱系数,得到第一频带归一化的频谱系数。修正单元650还可以使用第一频带的全局增益对第一频带归一化的频谱系数进行修正,以得到最终的第一频带频域信号。

可选地,作为另一实施例,恢复单元670可以根据核心层解码信息,确定加权值,并使用加权值,对在k个子带归一化的频谱系数中与值为0的频谱系数相邻的频谱系数以及随机噪声进行加权。

可选地,作为另一实施例,恢复单元670可以从核心层解码信息中获取信号分类信息。如果信号分类信息指示信号为摩擦音,则恢复单元670可以获取预定的加权值。如果信号分类信息指示信号为除摩擦音之外的其它信号,则恢复单元670可以从核心层解码信息中获取基音周期,并根据基音周期确定加权值。

可选地,作为另一实施例,恢复单元670可以从各个子带中选择与上述其它子带相邻的n个子带,并根据n个子带的频谱系数对上述其它子带的频谱系数进行恢复,其中n为正整数。或者,恢复单元670可以从k个子带中选择p个子带,并根据p个子带的频谱系数对上述其它子带的频谱系数进行恢复,其中p个子带中每个子带被分配的比特数大于或等于第二比特数阈值,其中p为正整数。

可选地,作为另一实施例,第一确定单元610可以按照下列等式(2)确定m。

可选地,作为另一实施例,第一确定单元610可以按照下列等式(1)确定k。

可选地,作为另一实施例,如果信号为瞬态信号、摩擦音信号或大周期信号,则第一确定单元610可以根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k。

图6的设备600的其它功能和操作可以参照上面图2的方法实施例中涉及编码端的过程,为了避免重复,此处不再赘述。

图7是根据本发明另一实施例的信号编码设备的示意框图。图7的设备700的例子为语音或音频编码器。设备700包括存储器710和处理器720。

存储器710可以包括随机存储器、闪存、只读存储器、可编程只读存储器、非易失性存储器或寄存器等。处理器720可以是中央处理器(Central Processing Unit,CPU)。

存储器710用于存储可执行指令。处理器720可以执行存储器710中存储的可执行指令,用于:根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k,其中i为正数,k为正整数;根据各个子带量化的包络从各个子带中选择k个子带,或者根据心理声学模型从各个子带中选择k个子带;对k个子带的频谱系数进行一次编码操作。

本发明实施例中,通过根据可用比特数和第一饱和阈值确定将要编码的子带数目k,并从各个子带中选择k个子带来进行编码,而非对整个频带进行编码,能够减少解码信号的频谱空洞,从而能够提升输出信号的听觉质量。

可选地,作为一个实施例,处理器720可以对k个子带的频谱系数进行归一化,以得到k个子带归一化的频谱系数,并对k个子带归一化的频谱系数进行量化,以得到k个子带量化的频谱系数。

可选地,作为另一实施例,如果在一次编码后可用比特数中剩余的比特数大于或等于第一比特数阈值,则处理器720还可以根据剩余的比特数、第二饱和阈值j和k个子带量化的频谱系数,确定将要二次编码的m个矢量,其中j为正数,m为正整数。处理器720还可以对m个矢量的频谱系数进行二次编码操作。

可选地,作为另一实施例,处理器720可以根据剩余的比特数和第二饱和阈值j,确定将要编码的矢量数目m,根据k个子带量化的频谱系数确定候选频谱系数,从候选频谱系数所属的矢量中选择m个矢量。候选频谱系数可以包括k个子带归一化的频谱系数减去对应的k个子带量化的频谱系数所得到的频谱系数。

可选地,作为另一实施例,处理器720可以对候选频谱系数所属的矢量进行排序,以得到排序后的矢量,从排序后的矢量中选择前m个矢量。其中,排序后的矢量划分为第一组矢量和第二组矢量,第一组矢量排在第二组矢量之前,第一组矢量对应于k个子带量化的频谱系数所属的矢量中值为全0的矢量,第二组矢量对应于k个子带量化的频谱系数所属的矢量中值为非全0的矢量。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间可以是按照矢量所在子带的频率从低频到高频的顺序排列的,且同一子带内的矢量可以是按照矢量原始顺序排列的。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带量化的包络从大到小的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

可选地,作为另一实施例,处理器720可以按照候选频谱系数所属的矢量所在的子带量化的包络从大到小的顺序,从候选频谱系数所属的矢量中选择m个矢量。

可选地,作为另一实施例,处理器720可以确定m个矢量的频谱系数的全局增益,使用m个矢量的频谱系数的全局增益对m个矢量的频谱系数进行归一化,对m个矢量归一化的频谱系数进行量化。

可选地,作为另一实施例,处理器720可以确定第一组矢量的频谱系数的全局增益和第二组矢量的频谱系数的全局增益,使用第一组矢量的频谱系数的全局增益对m个矢量中属于第一组矢量的频谱系数进行归一化,并使用第二组矢量的频谱系数的全局增益对m个矢量中属于第二组矢量的频谱系数进行归一化,对m个矢量归一化的频谱系数进行量化。

可选地,作为另一实施例,处理器720可以按照下列等式(2)确定m。

可选地,作为另一实施例,处理器720可以按照下列等式(1)确定k。

可选地,作为另一实施例,如果信号为瞬态信号、摩擦音信号或大周期信号,则处理器720可以根据可用比特数和第一饱和阈值i,确定将要编码的子带数目k。

图7的设备700的其它功能和操作可以参照上面图1、图3和图4的方法实施例中涉及编码端的过程,为了避免重复,此处不再赘述。

图8是根据本发明另一实施例的信号解码设备的示意框图。图6的设备800的例子为语音或音频解码器。设备800包括存储器810和处理器820。

存储器810可以包括随机存储器、闪存、只读存储器、可编程只读存储器、非易失性存储器或寄存器等。处理器820可以是中央处理器(Central Processing Unit,CPU)。

存储器810用于存储可执行指令。处理器820可以执行存储器810中存储的可执行指令,用于:根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k,其中i为正数,k为正整数;根据子带数目k,根据解码的各个子带的包络从各个子带中选择k个子带,或根据心理声学模型从各个子带中选择k个子带;进行一次解码操作,以得到k个子带量化的频谱系数。

本发明实施例中,通过根据可用比特数和第一饱和阈值确定将要解码的子带数目k,并从各个子带中选择k个子带来进行解码,能够减少解码信号的频谱空洞,从而能够提升输出信号的听觉质量。

可选地,作为另一实施例,如果在一次解码操作后可用比特数中剩余的比特数大于或等于第一比特数阈值,则处理器820还可以根据剩余的比特数和第二饱和阈值j,确定将要二次解码的矢量数目m,其中j为正数,m为正整数。处理器820还可以进行二次解码操作,以得到m个矢量归一化的频谱系数。

可选地,作为另一实施例,处理器820可以确定m个矢量归一化的频谱系数与k个子带量化的频谱系数之间的对应关系。

可选地,作为另一实施例,处理器820可以确定m个矢量与k个子带量化的频谱系数所属的矢量中第一类矢量之间的对应关系,其中m个矢量与第一类矢量之间是一一对应的。

可选地,作为另一实施例,处理器820可以对k个子带量化的频谱系数所属的矢量进行排序,得到排序后的矢量,可以从排序后的矢量中选择前m个作为第一类矢量,并可以建立第一类矢量与m个矢量之间的对应关系。其中,排序后的矢量划分为第一组矢量和第二组矢量,第一组矢量排列在第二组矢量之前,第一组矢量包括第一组解码的频谱系数所属的矢量中值为全0的矢量,第二组矢量包括第一组解码的频谱系数所属的矢量中值为非全0的矢量。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带的频率从低频到高频的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

可选地,作为另一实施例,在第一组矢量和第二组矢量中的每组矢量中,不同子带的矢量之间是按照矢量所在子带的包络从大到小的顺序排列的,且同一子带内的矢量是按照矢量原始顺序排列的。

可选地,作为另一实施例,处理器820可以按照k个子带量化的频谱系数所属的矢量所在的子带的包络从大到小的顺序,从k个子带量化的频谱系数所属的矢量中选择m个作为第一类矢量;建立第一类矢量与m个矢量之间的对应关系。

可选地,作为另一实施例,处理器820可以解码m个矢量的全局增益,并使用m个矢量的全局增益对m个矢量归一化的频谱系数进行修正,以得到m个矢量的频谱系数。

可选地,作为另一实施例,处理器820可以解码第一全局增益和第二全局增益,并使用第一全局增益对m个矢量归一化的频谱系数中与第一组矢量对应的频谱系数进行修正,并使用第二全局增益对m个矢量归一化的频谱系数中与第二组矢量对应的频谱系数进行修正,以得到m个矢量的频谱系数。

可选地,作为另一实施例,处理器820可以对k个子带量化的频谱系数和m个矢量的频谱系数进行叠加,得到k个子带归一化的频谱系数。处理器820可以对k个子带归一化的频谱系数中值为0的频谱系数进行噪声填充,并对各个子带中除k个子带之外的其它子带的频谱系数进行恢复,以得到第一频带的频谱系数,其中第一频带由各个子带组成。处理器820可以使用各个子带的包络修正第一频带的频谱系数,得到第一频带归一化的频谱系数。处理器820还可以使用第一频带的全局增益对第一频带归一化的频谱系数进行修正,以得到最终的第一频带频域信号。

可选地,作为另一实施例,处理器820可以根据核心层解码信息,确定加权值,并使用加权值,对在k个子带归一化的频谱系数中与值为0的频谱系数相邻的频谱系数以及随机噪声进行加权。

可选地,作为另一实施例,处理器820可以从核心层解码信息中获取信号分类信息。如果信号分类信息指示信号为摩擦音,则处理器820可以获取预定的加权值。如果信号分类信息指示信号为除摩擦音之外的其它信号,则处理器820可以从核心层解码信息中获取基音周期,并根据基音周期确定加权值。

可选地,作为另一实施例,处理器820可以从各个子带中选择与上述其它子带相邻的n个子带,并根据n个子带的频谱系数对上述其它子带的频谱系数进行恢复,其中n为正整数。或者,处理器820可以从k个子带中选择p个子带,并根据p个子带的频谱系数对上述其它子带的频谱系数进行恢复,其中p个子带中每个子带被分配的比特数大于或等于第二比特数阈值,其中p为正整数。

可选地,作为另一实施例,处理器820可以按照下列等式(2)确定m。

可选地,作为另一实施例,处理器820可以按照下列等式(1)确定k。

可选地,作为另一实施例,如果信号为瞬态信号、摩擦音信号或大周期信号,则处理器820可以根据可用比特数和第一饱和阈值i,确定将要解码的子带数目k。

图8的设备800的其它功能和操作可以参照上面图2的方法实施例中涉及编码端的过程,为了避免重复,此处不再赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

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

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

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

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