掌桥专利:专业的专利平台
掌桥专利
首页

编解码方法及电子设备

文献发布时间:2024-04-18 19:58:26


编解码方法及电子设备

技术领域

本申请实施例涉及编解码领域,尤其涉及一种编解码方法及电子设备。

背景技术

随着人工智能(Artificial Intelligence,AI)技术的不断发展和成熟,越来越多的领域开始运用神经网络技术替代或结合传统技术(例如,将AI技术引入到音视频编解码领域),都取得了长足的进步。

目前,现有技术对音频数据进行编码方式是,对经过AI编码网络后的音频数据直接进行矢量量化,得到码流。然而,当经过AI编码网络后得到的矢量较长时,所需的码书的尺寸也越大;相应的,码书占用的存储空间越大。

发明内容

为了解决上述技术问题,本申请提供一种编解码方法及电子设备。该方法能够降低码书占用的存储空间。

第一方面,本申请实施例提供一种编码方法,该方法包括:首先,获取待编码数据;接着,依据预设网络对待编码数据进行特征变换,以得到待编码数据对应的隐特征;随后,对隐特征进行小波分解,以得到N个小波系数组,N为大于1的整数;然后对N个小波系数组分别进行矢量量化,以得到待编码数据的码流。相对于直接对隐特征进行矢量量化而言,将隐特征分解为尺寸更小的多个小波系数组后再进行矢量量化,在同等码率下,矢量量化所使用码书的尺寸更小,进而本申请可以降低编码端中码书所占用的存储空间。

举个例子,假设码流为16*50=800bps,即1s可以传输50帧音频数据的码流,传输一帧音频数据的码流需要使用16bit。若一帧音频数据对应的隐特征为1*16的矢量,则进行矢量量化所需使用的码书的尺寸为16*2

示例性的,待编码数据可以是源数据,源数据可以是指采集模块采集到的数据,源数据可以包括音频数据、视频数据或图像。

示例性的,音频数据包括但不限于:单声道音频数据、立体声音频数据、多声道音频数据或者3D(3Dimensions,三维)音频数据等,本申请对此不做限制。视频数据可以包括2D(2Dimensions,二维)视频数据、3D视频数据等,本申请对此不作限制。图像可以包括2D图像、3D图像等,本申请对此不作限制。

示例性的,待编码数据可以是对源数据进行频域变换所得到的频域数据,后续称为源数据的频域数据。

示例性的,待编码数据可以是对源数据/源数据的频域数据预处理后的数据;其中,预处理包括但不限于分帧、加窗等,本申请对此不作限制。

示例性的,预设网络为AI编码网络,可以由神经网络实现。

示例性的,N个小波系数组中任意两个小波系数组的尺寸可以相同,也可以不同,本申请对此不作限制。

示例性的,码流中包括N个小波系数组对应在码书中的矢量量化值索引。

根据第一方面,对隐特征进行小波分解,以得到N个小波系数组,包括:对隐特征进行多级小波分解,以得到N个小波系数组。这样,可以进一步降低小波系数组的尺寸,进而能够降低进行矢量量化所需使用的码书的尺寸,从而进一步降低码书在编码端占用的存储空间。

根据第一方面,或者以上第一方面的任意一种实现方式,对N个小波系数组分别进行矢量量化,以得到待编码数据的码流,包括:从已训练的M组码书中,确定N个小波系数组分别对应的目标码书;其中,M为小于或等于N的正整数;基于N个小波系数组分别对应的目标码书,对N个小波系数组分别进行矢量量化,以得到待编码数据的码流。

根据第一方面,或者以上第一方面的任意一种实现方式,从已训练的M组码书中,确定N个小波系数组分别对应的目标码书,包括:根据第一预设关系,从M组码书中确定N个小波系数组分别对应的目标码书;其中,第一预设关系用于描述M组码书与N个小波系数组之间的关系。

示例性的,当M等于N时,一组码书与一个小波系数组对应;当M小于N时,一组码书与多个小波系数组对应。

根据第一方面,或者以上第一方面的任意一种实现方式,从已训练的M组码书中,确定N个小波系数组分别对应的目标码书,包括:针对N个小波系数组中的第i个小波系数组,i为1至N之间的整数:根据第i个小波系数组和第i个小波系数组对应的M组矢量量化值,确定M组量化误差,其中,M组矢量量化值是基于M组码书分别对第i个小波系数组进行矢量量化得到的;确定M组码书中,与M组矢量量化误差中最小矢量量化误差所对应的一组码书;将最小矢量量化误差所对应的一组码书,确定为第i个小波系数组对应的目标码书。这样,能够降低编码误差,提高编码质量(也就是数据重建质量)。

根据第一方面,或者以上第一方面的任意一种实现方式,M组码书中部分码书的精度不同。

由于不同小波系数组对数据重建质量的重要程度不同,在设计不同的小波系数组对应的码书时,可以增加对数据重建质量重要程度大的小波系数组对应码书的精度(也就是码书中码字的数量),以及降低对数据重建质量重要程度小的小波系数组对应码书的精度。这样,针对不同小波系数组采用不同的码书进行矢量量化后,能够在同等码率下,增加码流中对数据重建质量的重要程度大的小波系数组的占比,进而能够增加数据重建质量。

示例性的,M组码书中所有码书的精度不同。

示例性的,M组码书中一部分码书的精度不同,另一部分码书的精度相同。

根据第一方面,或者以上第一方面的任意一种实现方式,该方法还包括:对N个小波系数组中的X1个小波系数组分别进行矢量分裂,以得到X1个小波系数组分别对应的U1个子矢量,X1为小于或等于N的正整数,U1为大于1的整数;对N个小波系数组分别进行矢量量化,以得到待编码数据的码流,包括:对N个小波系数组中另外X2个小波系数组进行矢量量化,以及对X1个小波系数组分别对应的U1个子矢量分别进行矢量量化,以得到待编码数据的码流;X2为小于N的整数,X1+X2=N。这样,可以将小波系数组矢量分裂为尺寸更小的子矢量,能够进一步降低进行矢量量化所需使用的码书的尺寸,从而进一步降低码书在编解码端占用的存储空间。

根据第一方面,或者以上第一方面的任意一种实现方式,对N个小波系数组中另外X2个小波系数组进行矢量量化,以及对X1个小波系数组分别对应的U1个子矢量分别进行矢量量化,以得到待编码数据的码流,包括:依据目标码率,从X1个小波系数组分别对应的U1个子矢量中选取待矢量量化的U2个目标子矢量,以及从X2个小波系数组中选取待矢量量化的X3个小波系数组,X3为小于或等于X2的正整数,U2为正整数;对X3个小波系数组进行矢量量化,以及对U2个目标子矢量进行矢量量化,以得到待编码数据的码流。这样,通过丢弃部分子矢量和/或部分小波系数组,能够实现多码率传输,且无需训练多套预设网络。

示例性的,依据目标码率,从X1个小波系数组分别对应的U1个子矢量中选取待矢量量化的U2个目标子矢量,包括:依据目标码率和第三预设关系,从X1个小波系数组分别对应的U1个子矢量中选取U2个目标子矢量;其中,第三预设关系用于描述多种码率和多个子矢量之间的关系。

示例性的,依据目标码率,从X1个小波系数组分别对应的U1个子矢量中选取待矢量量化的U2个目标子矢量,包括:确定X1个小波系数组分别对应的数值特征信息,数值特征信息包括以下至少一种:频段、能量、方差或均值;依据目标码率和X1个小波系数组分别对应的数值特征信息,从X1个小波系数组分别对应的U1个子矢量中选取U2个目标子矢量。其中,数值特征信息与数据重建质量相关,通过根据子矢量对数据重建质量的重要程度,来选取待矢量量化的的目标子矢量,例如,选取对数据重建质量的重要程度大的子矢量,作为待矢量量化的的目标子矢量,能够在实现多码率传输的同时,尽可能保证数据重建质量。

根据第一方面,或者以上第一方面的任意一种实现方式,在对N个小波系数组分别进行矢量量化,以得到待编码数据的码流,包括:依据目标码率,从N个小波系数组中选取待矢量量化的G个小波系数组,G为小于N的正整数;对G个小波系数组进行矢量量化,以得到待编码数据的码流。这样,通过丢弃部分小波系数组,能够实现多码率传输,且无需训练多套预设网络。

根据第一方面,或者以上第一方面的任意一种实现方式,从N个小波系数组中选取待矢量量化的G个小波系数组,包括:依据目标码率和第二预设关系,确定G个小波系数组;其中,第二预设关系用于描述多种码率和N个小波系数组之间的关系。

根据第一方面,或者以上第一方面的任意一种实现方式,依据目标码率,从N个小波系数组中选取待矢量量化的G个小波系数组,包括:确定N个小波系数组分别对应的数值特征信息,数值特征信息包括以下至少一种:频段、能量、方差或均值;依据目标码率和N个小波系数组分别对应的数值特征信息,从N个小波系数组中选取待矢量量化的G个小波系数组。其中,数值特征信息与数据重建质量相关,通过根据小波系数组对数据重建质量的重要程度,来选取待矢量量化的的小波系数组,例如,选取对数据重建质量的重要程度大的小波系数组,作为待矢量量化的的小波系数组,能够在实现多码率传输的同时,尽可能保证数据重建质量。

根据第一方面,或者以上第一方面的任意一种实现方式,码流包括:码书标识。

示例性的,码书标识可以是码书索引。

根据第一方面,或者以上第一方面的任意一种实现方式,码流包括:小波系数组标识。

示例性的,小波系数组标识可以是小波系数组标识。

示例性的,码流包括:目标子矢量的子矢量标识。

示例性的,子矢量标识可以是子矢量索引。

第二方面,本申请实施例提供一种解码方法,该方法包括:首先,获取待解码的码流;接着,基于码流进行矢量反量化,以得到N个小波系数组,N为大于1的整数;随后,对N个小波系数组进行小波合成,以得到隐特征;然后依据预设网络对隐特征进行特征变换,以得到重建数据。这样,相对于对尺寸大的矩阵矢量量化得到的码流进行矢量反量化而言,解码端对多个尺寸小的矩阵矢量量化得到的码流进行矢量反量化,所需使用的码书的尺寸更小,进而能够降低码书在解码端所占用的存储空间。

根据第二方面,对N个小波系数组进行小波合成,以得到隐特征,包括:对N个小波系数组进行多级小波合成,以得到隐特征。

根据第二方面,或者以上第二方面的任意一种实现方式,基于码流进行矢量反量化,以得到N个小波系数组,包括:从已训练的M组码书中,确定N个小波系数组分别对应的目标码书;其中,M为小于或等于N的正整数;基于N个小波系数组分别对应的目标码书和码流进行矢量反量化,以得到N个小波系数组。

根据第二方面,或者以上第二方面的任意一种实现方式,从已训练的M组码书中,确定N个小波系数组分别对应的目标码书,包括:根据第一预设关系,从M组码书中确定N个小波系数组分别对应的目标码书;其中,第一预设关系包括M组码书与N个小波系数组之间的关系。

根据第二方面,或者以上第二方面的任意一种实现方式,码流包括码书标识;

从已训练的M组码书中,确定N个小波系数组分别对应的目标码书,包括:包括:根据码流中的码书标识,确定N个小波系数组分别对应的目标码书。

根据第二方面,或者以上第二方面的任意二种实现方式,M组码书中部分码书的精度不同。

根据第二方面,或者以上第二方面的任意一种实现方式,基于码流进行矢量反量化,以得到N个小波系数组,包括:基于码流进行矢量反量化,以得到X1个小波系数组分别对应的U1个子矢量和X2个小波系数组,X1为小于或等于N的正整数,X2为小于N的整数,X1+X2=N,U1为大于1的整数;对X1个小波系数组分别对应的U1个子矢量进行矢量合并,以得到X1个小波系数组。

根据第二方面,或者以上第二方面的任意一种实现方式,码流包括小波系数组标识;基于码流进行矢量反量化,以得到N个小波系数组,包括:基于码流进行矢量反量化,以得到G个小波系数组,G为小于N的正整数;对N个小波系数组进行小波合成,以得到隐特征,包括:根据小波系数组标识,对G个小波系数组进行小波合成,以得到隐特征。

第二方面以及第二方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二方面以及第二方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第三方面,本申请实施例提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第一方面或第一方面的任意可能的实现方式中的编码方法。

第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第四方面,本申请实施例提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第二方面或第二方面的任意可能的实现方式中的解码方法。

第四方面以及第四方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第五方面,本申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第一方面或第一方面的任意可能的实现方式中的编码方法。

第五方面以及第五方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第六方面,本申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第二方面或第二方面的任意可能的实现方式中的解码方法。

第六方面以及第六方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第六方面以及第六方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第七方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第一方面或第一方面的任意可能的实现方式中的编码方法。

第七方面以及第七方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第七方面以及第七方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第八方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第二方面或第二方面的任意可能的实现方式中的解码方法。

第八方面以及第八方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第八方面以及第八方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第九方面,本申请实施例提供一种计算机程序产品,计算机程序产品包括软件程序,当软件程序被计算机或处理器执行时,使得计算机或处理器执行第一方面或第一方面的任意可能的实现方式中的编码方法。

第九方面以及第九方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第九方面以及第九方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第十方面,本申请实施例提供一种计算机程序产品,计算机程序产品包括软件程序,当软件程序被计算机或处理器执行时,使得计算机或处理器执行第二方面或第二方面的任意可能的实现方式中的解码方法。

第十方面以及第十方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第十方面以及第十方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。

附图说明

图1a示出了系统框架示意图;

图1b示出了系统框架示意图;

图1c为示例性示出的应用场景示意图;

图1d为示例性示出的应用场景示意图;

图2为示例性示出的编码过程示意图;

图3为示例性示出的解码过程示意图;

图4a为示例性示出的小波分解示意图;

图4b为示例性示出的小波分解示意图;

图5为示例性示出的编码过程示意图;

图6为示例性示出的解码过程示意图;

图7为示例性示出的编码过程示意图;

图8为示例性示出的解码过程示意图;

图9为示例性示出的编码过程示意图;

图10为示例性示出的解码过程示意图;

图11为示例性示出的编码过程示意图;

图12为示例性示出的解码过程示意图;

图13为示例性示出的装置的结构示意图。

具体实施方式

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

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。

本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。

在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。

在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。

图1a示出了系统框架示意图。

参照图1a,示例性的,本申请的系统可以包括第一终端、第二终端以及有线或无线网络通信设备。其中,第一终端和第二终端可以包括但不限于:手机(Mobile Phone)、个人电脑(Personal Computer,PC)、笔记本电脑、平板电脑、智慧电视、移动互联网设备(MobileInternet Device,MID)、可穿戴设备(如智能手表、智能眼镜或者智能头盔等),虚拟现实(Virtual Reality,VR)设备、增强现实(Augmented Reality,AR)设备等,本申请对此不作限制。有线网络通信设备可以包括路由器、交换机等,无线网络通信设备可以包括基站、核心网、无线网卡、无线AP(Access Point,接入点)等,本申请对此不作限制。

参照图1a,示例性的,第一终端可以包括:数据采集模块、编码器、信道编码模块、数据播放模块、解码器和信道解码模块。第二终端也可以包括:数据采集模块、编码器、信道编码模块、数据播放模块、解码器和信道解码模块。应该理解的是,图1a所示第一终端和第二终端仅是一个范例,并且第一终端和第二终端可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图1a中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。此外,第一终端和第二终端所包含的模块可以相同,也可以不同,本申请对此不作限制。

示例性的,第一终端的数据采集模块可以采集媒体数据(如音频数据、视频数据或图像),并将媒体数据发送至编码器。接着,编码器可以对媒体数据进行信源编码,得到码流并将码流发送至信道编码模块。随后,信道编码模块对码流进行信道编码,得到可用于传输的数据;然后将可用于传输的数据通过与第一终端连接的有线或无线网络通信设备,发送至与第二终端连接的有线或无线网络通信设备;再由与第二终端设备连接的有线或无线网络通信设备将可用于传输的数据发送给第二终端。

示例性的,第二终端的信道解码模块可以对接收到的数据进行信道解码,得到码流并将码流发送至解码器。接着,解码器可以对码流进行信源解码,得到媒体数据;然后将解码得到的媒体数据输入至数据播放模块进行播放。

应该理解的是,第二终端将对采集到的媒体数据编码得到的码流发送至第一终端,第一终端对码流进行信源解码并播放解码得到的媒体数据的过程,与上述过程类似,在此不再赘述。

需要说明的是,音频数据包括但不限于单声道音频数据、立体声音频数据、多声道音频数据或者3D(3Dimensions,三维)音频数据等,本申请对此不做限制。视频数据可以包括2D(2Dimensions,二维)视频数据、3D视频数据等,本申请对此不作限制。图像可以包括2D图像、3D图像等,本申请对此不作限制。

这样,两个终端可以通过内部的编解码器对媒体数据进行编解码,实现媒体数据的交互。

图1b示出了系统框架示意图。

参照图1b,一种可能的方式中,本申请的系统可以包括第一终端、第二终端以及转码设备。其中,转码设备可以包括具有转码功能的设备,如无线接入网、核心网设备、媒体资源服务器等等,本申请对此不作限制。

示例性的,图1b中的第一终端与图1a中的第一终端类似,图1b中的第二终端与图1a中的第二终端类似,在此不再赘述。其中,图1b中的第一终端中的编解码器与第二终端的编解码器所支持的编码协议不同,为了便于区分,可以将图1b中第一终端的编码器称为第一编码器,将图1b中第一终端的解码器称为第一解码器,将图1b中第二终端的编码器称为第二编码器,将图1b中第二终端的的解码器称为第二解码器。

参照图1b,示例性的,转码设备可以包括第一解码器、第一编码器、第二解码器、第二编码器、信道编码模块和信道解码模块。应该理解的是,图1b所示转码设备仅是一个范例,并且转码设备可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图1b中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。

参照图1b(1),示例性的,第一终端将第一编码器编码媒体数据得到的第一码流进行信道编码后,发送给转码设备;这与图1a描述的过程类似,在此不再赘述。

参照图1b(1),示例性的,转码设备的信道解码模块可以对从第一终端接收到的数据进行信道解码,得到第一码流并将第一码流发送给第一解码器;由第一解码器对第一码流进行信源解码,得到媒体数据。然后第一解码器将解码得到的媒体数据,发送给第二编码器,由第二编码器进行信源编码,得到第二码流并将第二码流发送给信道编码模块进行信道编码,得到可用于传输的数据并将可用于传输的数据发送至第二终端。

参照图1b(1),示例性的,第二终端对接收的数据进行信道解码得到第二码流,然后采用第二解码器对第二码流进行信源解码,可以得到媒体数据;接着可以播放媒体数据。这与图1a描述的过程类似,在此不再赘述。

参照图1b(2),示例性的,第二终端将第二编码器编码媒体数据得到的第三码流进行信道编码后,发送给转码设备;这与图1a描述的过程类似,在此不再赘述。

参照图1b(2),示例性的,转码设备的信道解码模块可以对从第二终端接收到的数据进行信道解码,得到第三码流并将第三码流发送给第二解码器;由第二解码器对第三码流进行信源解码,得到媒体数据。然后第二解码器将解码得到的媒体数据,发送给第一编码器,由第一编码器进行信源编码,得到第四码流并将第四码流发送给信道编码模块进行信道编码,得到可用于传输的数据并将可用于传输的数据发送至第一终端。

参照图1b(2),示例性的,第一终端的对接收的数据进行信道解码得到第四码流,然后采用第一解码器对第四码流进行信源解码,可以得到媒体数据;接着可以播放媒体数据。这与图1a描述的过程类似,在此不再赘述。

这样,两个支持不同编码协议的终端,可以通过转码设备的编解码器对媒体数据进行编码器,实现媒体数据的交互。

图1c为示例性示出的应用场景示意图。其中,在图1c的实施例中,其应用场景为直播场景,媒体数据为3D音频数据。

参照图1c,示例性的,直播终端将在直播节目过程采集到的音频数据输入至3D音频制作模块,由3D音频制作模块将采集到的音频数据制作成直播节目3D音频数据,然后将直播节目3D音频数据发送至3D音频编码器。接着,3D音频编码器可以对直播节目3D音频数据进行编码,得到对应的码流,并通过广播电视网络发送至机顶盒。随后,机顶盒中的3D音频解码器可以对接收到的码流进行解码,得到直播节目3D音频数据,然后将直播节目3D音频数据发送至电视的扬声器进行播放。

图1d为示例性示出的应用场景示意图。其中,在图1d的实施例中,其应用场景为音频的后期制作场景,媒体数据为3D音频数据。

参照图1d,示例性的,3D音频制作终端将录播节目的音频数据输入至3D音频制作模块,由3D音频制作模块将采集到的音频数据制作成录播节目3D音频数据,然后将录播节目3D音频数据发送至3D音频编码器。接着,3D音频编码器可以对录播节目3D音频数据进行编码,得到对应的码流。一方面,3D音频制作终端,可以通过互联网将码流发送至网络接收器。随后,网络接收器中的3D音频解码器可以对接收到的码流进行解码,得到录播节目3D音频数据,然后将录播节目3D音频数据发送至电视的扬声器进行播放。另一方面,3D音频制作终端,可以通过互联网将码流发送至移动终端。随后,移动终端中的3D音频解码器可以对接收到的码流进行解码,得到录播节目3D音频数据,然后将录播节目3D音频数据发送至耳机进行播放。

此外,本申请还可以应用于其他的场景如VR场景中,本申请对此不作限制。

以下对图1a中编码器,图1b中的第一编码器(或第二编码器),图1c和图1d中的3D音频编码器的编码过程;以及1a中解码器,图1b中第一解码器(或第二解码器),图1c和图1d中的3D音频解码器的解码过程进行说明。

图2为示例性示出的编码过程示意图。

S201,获取待编码数据。

一种可能的方式中,待编码数据可以是源数据,即数据采集模块采集到的数据,源数据可以包括音频数据、视频数据或图像。

一种可能的方式中,待编码数据可以是对源数据进行频域变换所得到的频域数据,后续称为源数据的频域数据。

一种可能的方式中,待编码数据可以是对源数据或源数据的频域数据预处理后的数据;其中,预处理包括但不限于分帧、加窗等,本申请对此不作限制。

需要说明的是,当编码器获取的待编码数据是源数据或源数据的频域数据时,则编码器还可以执行对待编码数据进行预处理的流程。当编码器获取的待编码数据是对源数据或源数据的频域数据预处理后的数据时,编码器无需执行预处理流程。

还需要说明的是,上述所指的待编码数据,是指待进行信源编码的数据。

S202,依据预设网络对待编码数据进行特征变换,以得到待编码数据对应的隐特征。

示例性的,预设网络可以是指训练后的网络,在某些场景下也可以称为AI编码网络,可以用于去冗余、去相关等。示例性的,预设网络可以采用神经网络来实现,例如,可以使用卷积层(或反卷积层)与激活层穿插级联构成的神经网络来实现。

举个例子,可以使用4个卷积层与3个激活层插级联构成的神经网络来实现,如卷积层-激活层-卷积层-激活层-卷积层-激活层-卷积层。其中,每个卷积层的卷积核大小可设置为5,输出特征通道数设置为K(K为正整数),且每层卷积层均进行2倍下采样。示例性的,本申请不限制卷积层的层数、通道数、下采样倍数、下采样次数等,也不限制激活层数;应该理解的是,本申请也不限制构成神经网络的网络层的种类与层数。

示例性的,在获取到待编码数据后,可以将待编码数据输入至预设网络,由预设网络对待编码数据进行特征变换,来去除待编码数据的冗余,以及去除待编码数据之间的相关性,使得待编码数据更好压缩。

示例性的,对待编码数据进行特征变换后,可以得到待编码数据对应的隐特征。

示例性的,当待编码数据是音频数据时,得到的待编码数据对应的隐特征可以是尺寸为1*H的矩阵,也就是矢量;其中,H为正整数。

示例性的,当待编码数据是视频数据或图像时,得到的待编码数据对应的隐特征可以是尺寸为K1*K2的矩阵;其中,K1和K2均为大于1的整数。

S203,对隐特征进行小波分解,以得到N个小波系数组。

示例性的,在得到隐特征后,可以基于小波函数对隐特征进行小波分解,将隐特征分解成尺寸均小于隐特征的N个小波系数组。其中,N为大于1的整数,每个小波系数组可以包括至少一个小波系数。

示例性的,当待编码数据是音频数据时,每个小波系数组是尺寸为1*h的矩阵,也就是矢量;其中,h为正整数,h小于H。

示例性的,当待编码数据是视频数据或图像时,每个小波系数组可以是尺寸为k1*k2的矩阵;其中,k1和k2均为大于1的整数,k1小于或等于K1,k2小于或等于K2;需要说明的是,当k1等于K1时,k2不等于K2。

需要说明的是,N个小波系数组的尺寸可以相同,也可以不同,本申请对此不作限制。

S204,对N个小波系数组分别进行矢量量化,以得到待编码数据的码流。

示例性的,可以根据预先训练的一个或多个码书,对N个小波系数组分别进行矢量量化,以得到待编码数据的码流。

示例性的,码书的尺寸可以为a*b,a为码书中码字的长度(其中,每个码字均为矢量),b为码书中码字的数量。其中,一个码书中的每个码字的长度可以等于至少一个小波系数组的长度;当小波系数组为k1*k2的矩阵时,小波系数组的长度可以是指小波系数组的行数k1或列数k2。

示例性的,当小波系数组为1*h的矢量时,针对N个小波系数组中的第i(i为1至N之间的整数)个小波系数组,可以根据从预先训练得到的码书中,查找与第i个小波系数组的量化误差最小的码字(也就是第i个小波系数组对应的矢量量化值);以及确定第i个小波系数组的矢量量化值在码书中的矢量量化值索引。

示例性的,当小波系数组为k1*k2的矩阵时,针对N个小波系数组中的第i个小波系数组,可以根据从预先训练得到的码书中,查找与第i个小波系数组中每个行向量(或列向量)的量化误差最小的码字(也就是第i个小波系数组中每个行向量(或列向量)对应的矢量量化值);以及确定第i个小波系数组中每个行向量(或列向量)的矢量量化值在码书中的矢量量化值索引。

示例性的,待确定N个小波系数组分别对应的矢量量化值索引后,可以基于这N个小波系数组分别对应的矢量量化值索引,生成待编码数据的码流。

这样,通过将尺寸大的矩阵分解成多个尺寸小的矩阵后,再进行矢量量化,能够在同等码率下,降低矢量量化所使用码书的尺寸,进而可以降低编码端中码书所占用的存储空间。

举个例子,假设码流为16*50=800bps,即1s可以传输50帧音频数据的码流,传输一帧音频数据的码流需要使用16bit。若一帧音频数据对应的隐特征为1*16的矢量,则进行矢量量化所需使用的码书的尺寸为16*2

图3为示例性示出的解码过程示意图。在图3的实施例中,描述了与图2实施例中编码过程所对应的解码过程。

S301,获取待解码的码流。

示例性的,待解码的码流可以是音频数据的码流,也可以是视频数据的码流,还可以是图像的码流,本申请对此不作限制。

需要说明的是,上述所指的待解码的码流,是指待进行信源解码的码流。

S302,基于码流进行矢量反量化,以得到N个小波系数组。

示例性的,可以根据预先训练的一个或多个码书,基于码流进行矢量反量化,以得到N个小波系数组。其中,N为大于1的整数。

示例性的,图3实施例中进行矢量反量化所使用的码书,与图2实施例中进行矢量量化所使用的码书相同。

示例性的,码流包含的是矢量量化值索引,因此在进行矢量反量化过程中,可以根据码流中的矢量量化值索引,从码书中查找矢量量化值索引对应矢量量化值,进而可以得到N个小波系数组。

需要说明的是,图3实施例中的N个小波系数组与图2实施例中的N个小波系数组存在区别,图3实施例中的N个小波系数组中的每个小波系数,是图2实施例中的N个小波系数组中的每个小波系数的矢量量化值。

S303,对N个小波系数组进行小波合成,以得到隐特征。

示例性的,在得到N个小波系数组后,可以对这N个小波系数组进行小波合成,以得到隐特征。

示例性的,图3的实施例中的小波合成过程,是图2的实施例中的小波分解过程的逆过程。

示例性的,编码端可以预先与解码端共享小波分解参数,也可以在码流中添加小波分解参数;这样,解码端可以按照小波分解参数,对N个小波系数组进行小波合成,以得到隐特征。

需要说明的是,图3的实施例中得到的隐特征,与图2的实施例中得到的隐特征存在区别。

S304,依据预设网络对隐特征进行特征变换,以得到重建数据。

示例性的,图3的实施例中的预设网络也可以是预先训练的网络,在某些场景中可以称为AI解码网络,可以用于特征合成等。示例性的,预设网络可以采用神经网络来实现,例如,可以使用卷积层(反卷积层)与激活层穿插级联构成的神经网络来实现。

举个例子,可以使用4个卷积层与3个激活层插级联构成的神经网络来实现,如卷积层-激活层-卷积层-激活层-卷积层-激活层-卷积层;其中,每个卷积层的卷积核大小可设置为5,输出特征通道数设置为K(K为正整数),且每层卷积层均进行2倍下采样。示例性的,本申请不限制卷积层的层数、通道数、下采样倍数、下采样次数等,也不限制激活层数;应该理解的是,本申请也不限制构成神经网络的网络层的种类与层数。

需要说明的是,图3的实施例中预设网络,与图2的实施例中预设网络可以是结构相同但网络参数不同的网络;当然,图3的实施例中预设网络,与图2的实施例中预设网络可以是结构不同的网络,本申请对此不作限制。

示例性的,可以将隐特征输入至预设网络,由预设网络进行特征合成,来实现数据重建,进而可以得到重建数据。

示例性的,当待解码的码流为音频数据的码流时,重建数据为音频数据;当待解码的码流为视频数据的码流时,重建数据为视频数据;当待解码的码流为图像的码流时,重建数据为图像。

这样,相对于对尺寸大的矩阵矢量量化得到的码流进行矢量反量化而言,解码端对多个尺寸小的矩阵矢量量化得到的码流进行矢量反量化,所需使用的码书的尺寸更小,进而能够降低码书在解码端所占用的存储空间。

示例性的,在编码过程中,可以对隐特征进行多级小波分解,以得到N个小波系数组;这样,可以进一步降低小波系数组的尺寸,进而能够降低进行矢量量化/矢量反量化所需使用的码书的尺寸,从而进一步降低码书在编解码端占用的存储空间。

图4a为示例性示出的小波分解示意图。在图4a的实施例中示出了三级小波分解的示意图;且第二级小波分解和第三级小波分解仅对上一级小波分解得到的部分小波系数组进行小波分解。

参照图4a,示例性的,第一级小波分解:对隐特征进行小波分解,可以得到2个小波系数组:cd1和ca1;其中,cd1对应的频段高于ca1对应的频段。

第二级小波分解:对小波系数组ca1进行小波分解,可以得到2个小波系数组cd2和ca2;其中,cd2对应的频段高于ca2对应的频段。

第三级小波分解:对小波系数组ca2进行小波分解,可以得到2个小波系数组cd3和ca3;其中,cd3对应的频段高于ca2对应的。

这样,对隐特征进行三级小波分解,最终可以得到4组小波系数组:cd1、cd2、cd3和ca3。

图4b为示例性示出的小波分解示意图。在图4的实施例中示出了三级小波分解的示意图;且第二级小波分解和第三级小波分解对上一级小波分解得到的所有小波系数组进行小波分解。

参照图4b,示例性的,第一级小波分解:对隐特征进行小波分解,可以得到2个小波系数组:kd11和ka11;其中,kd11对应的频段高于ka1对应的频段。

第二级小波分解:对小波系数组ka11进行小波分解,可以得到2个小波系数组kd22和ka22;其中,kd22对应的频段高于ka22对应的频段;以及对小波系数组kd11进行小波分解,可以得到2个小波系数组kd21和ka21;其中,kd21对应的频段高于ka21对应的频段。以此类推,可以对kd21、ka21、kd22和ka22分别进行小波分解,即第三级小波分解。

这样,对隐特征进行三级小波分解,最终可以得到8组小波系数组:kd31、ka31、kd32、ka32、kd33、ka33、kd34和ka34。

应该理解的是,图4a和图4b仅是本申请多级小波分解的示例,本申请还可以对隐特征进行更多或更少级的小波分解。

此外,本申请还可以采用其他方式进行小波分解,例如,图4a中在进行第三级小波分解时,对cd2也进行小波分解;或者在图4b中在第三级小波分解时,对kd21和kd22不进行小波分解;本申请对此不作限制。

需要说明的是,在解码过程中,可以对N个小波系数组进行多级小波合成,以得到隐特征;具体进行多级小波合成的方式,可以是上述图4a和图4b中所示的多级小波分解的逆过程,在此不再赘述。

一种可能的方式中,编码端可以预先与解码端共享N个小波系数组分别对应的矢量量化值索引,在码流中的位置和长度。这样,解码端基于码流进行矢量反量化得到N个小波系数组后,在进行每一级小波合成时,可以根据编码端预先共享的信息,确定该级小波合成所需使用的小波系数组。

一种可能的方式中,编码器也可以在码流中添加N个小波系数组分别对应的矢量量化值索引在码流中的位置和长度。这样,解码端基于码流进行矢量反量化得到N个小波系数组后,在进行每一级小波合成时,根据从码流中解析出的信息,确定该级小波合成所需使用的小波系数组。

示例性的,可以对N个小波系数组中的X1个小波系数组分别进行矢量分裂,以得到X1个小波系数组分别对应的U1(U1为大于1的整数)个子矢量;然后对N个小波系数组中另外X2个小波系数组进行矢量量化,以及对X1个小波系数组分别对应的U1个子矢量分别进行矢量量化,以得到待编码数据的码流。其中,X1为小于或等于N的正整数,X2为小于N的整数,X1+X2=N。

这样,可以将小波系数组矢量分裂为尺寸更小的子矢量;进而,能够进一步降低进行矢量量化所需使用的码书的尺寸,从而进一步降低码书在编解码端占用的存储空间。本申请以X1=N,X2=0为例进行示例性说明。

图5为示例性示出的编码过程示意图。在图5的实施例中,描述了X1=N,X2=0时的编码过程。

S501,获取待编码数据。

S502,依据预设网络对待编码数据进行特征变换,以得到待编码数据对应的隐特征。

S503,对隐特征进行小波分解,以得到N个小波系数组。

示例性的,S501~S503可以参照上述S201~S203,在此不再赘述。

S504,对N个小波系数组分别进行矢量分裂,以得到N个小波系数组分别对应的U1个子矢量。

示例性的,针对N个小波系数组中的第i个小波系数组,当第i个小波系数组为1*h的矢量时,可以将第i个小波系数组矢量分裂为至少两个子矢量,其中,第i个小波系数组的所有子矢量的长度之和等于h。这样,这N个小波系数组中每个小波系数组可以矢量分裂为至少两个子矢量。

例如,假设按照图4a的方式对隐特征进行二级小波分解,则可以得到3个小波系数组:cd1、cd2、ca2;其中,cd1长度为128,cd2和ca2长度均为64。可以将cd1矢量分裂成16个子矢量,cd2可以矢量分裂成8个子矢量,ca2可以矢量分裂成8个子矢量;进而可以得到32个子矢量。

示例性的,针对N个小波系数组中的第i个小波系数组,当第i个小波系数组为k1*k2的矢量时,可以先将第i个小波系数组矢量分裂为k1个长度为k2的矢量;然后针对k1个矢量中的第j(j为1至k1之间的整数)矢量,可以将第j个矢量矢量分裂为至少两个子矢量,其中,第j个矢量的所有子矢量的长度之和等于k2。这样,这N个小波系数组中每个小波系数组可以矢量分裂为至少四个子矢量。

例如,假设按照图4a的方式对隐特征进行二级小波分解,则可以得到3个小波系数组:cd1、cd2、ca2;其中,cd1尺寸为4*128,cd2和ca2长度均为4*64。

示例性的,可以先将cd1矢量分裂成长度为128的4个矢量,然后再将这4个矢量分别矢量分裂为16个子矢量;这样,cd1可以矢量分裂为4*16=64个子矢量。类似的,可以先将cd2矢量分裂成长度为64的4个矢量,然后再将这4个矢量分别矢量分裂为8个子矢量;这样,cd2可以矢量分裂为4*8=32个子矢量。以及可以先将ca2矢量分裂成长度为64的4个矢量,然后再将这4个矢量分别矢量分裂为8个子矢量;这样,ca2可以矢量分裂为4*8=32个子矢量。进而,可以得到128个子矢量。

示例性的,针对N个小波系数组中的第i个小波系数组,当第i个小波系数组为k1*k2的矢量时,可以先将第i个小波系数组矢量分裂为k2个长度为k1的矢量;然后针对k2个矢量中的第g(g为1至k2之间的整数)矢量,可以将第g个矢量矢量分裂为至少两个子矢量,其中,第g个矢量的所有子矢量的长度之和等于k1。这样,这N个小波系数组中每个小波系数组可以矢量分裂为至少四个子矢量。

例如,假设按照图4a的方式对隐特征进行二级小波分解,则可以得到3个小波系数组:cd1、cd2、ca2;其中,cd1尺寸为16*128,cd2和ca2长度均为16*64。

示例性的,可以先将cd1矢量分裂成长度为16的128个矢量,然后再将这128个矢量分别矢量分裂为4个子矢量;这样,cd1可以矢量分裂为4*128=512个子矢量。类似的,可以先将cd2矢量分裂成长度为16的64个矢量,然后再将这64个矢量分别矢量分裂为4个子矢量;这样,cd2可以矢量分裂为4*64=256个子矢量。以及可以先将ca2矢量分裂成长度为16的64个矢量,然后再将这64个矢量分别矢量分裂为4个子矢量;这样,ca2可以矢量分裂为4*64=256个子矢量。进而,可以得到1024个子矢量。

需要说明的是,在第i个小波系数组为k1*k2的矩阵情况下,当将小波系数组矢量分裂为矢量后,若矢量的长度小于预设长度,则可以无需对矢量进行矢量分裂,直接将矢量确定为小波系数组的子矢量即可。其中,预设长度可以按照需求设置,本申请对此不作限制。

需要说明的是,同一小波系数组对应的U1个子矢量的长度可以相同,也可以不同,本申请对此不作限制。

S504,对N个小波系数组分别对应的U1个子矢量分别进行矢量量化,以得到待编码数据的码流。

示例性的,针对N个小波系数组中第i个小波系数组,可以采用预先训练得到的一个或多个码书,对第i个小波系数组的每个子矢量分别进行矢量量化,确定第i个小波系数组中每个子矢量的矢量量化值索引。这样,在得到N个小波系数组的所有子矢量的矢量量化值索引后,可以基于N个小波系数组的所有子矢量的矢量量化值索引,生成待编码数据的码流。

图6为示例性示出的解码过程示意图。在图6的实施例中,描述了与图5中编码过程对应的解码过程。

S601,获取待解码的码流。

示例性的,S601可以参照上述S301的描述,在此不再赘述。

S602,基于码流进行矢量反量化,以得到N个小波系数组分别对应的U1个子矢量。

示例性的,编码端将每个小波系数组矢量分裂为U1个子矢量,然后对每个子矢量进行矢量量化后,得到的码流中可以包括N个小波系数组分别对应的U1个子矢量的矢量量化索引。进而,解码端在获取到码流以及进行矢量反量化后,可以得到N个小波系数组分别对应的U1个子矢量。

需要说明的是,图6实施例中的子矢量,与图5实施例中的子矢量存在区别;图6实施例中的子矢量,是图5实施例中子矢量的矢量量化值。

示例性的,可以根据码流中的一矢量量化索引,从预先训练的码书中查找对应的矢量量化值,可以得到一个子矢量。进而,按照这种方式,可以从预先训练的一个或多个码书中,查找N个小波系数组分别对应的U1个子矢量。

应该理解的是,图6实施例中进行矢量反量化所使用的码书,与图5实施例中进行矢量量化所使用的码书相同。

S603,对N个小波系数组分别对应的U1个子矢量进行矢量合并,以得到N个小波系数组。

一种可能的方式中,编码端可以预先与解码端共享码流中每个子矢量的矢量量化索引在码流中的位置和长度,以及每个子矢量所属的小波系数组。这样,解码端可以根据编码器预先共享的信息,将属于同一小波系数组的子矢量进行矢量合并,得到一个小波系数组;进而按照这种方式,可以得到N个小波系数组。

一种可能的方式中,编码器也可以在码流中添加每个子矢量的矢量量化索引在码流中的位置和长度,以及每个子矢量所属的小波系数组。这样,解码端可以根据从码流中解析出的信息,将属于同一小波系数组的子矢量进行矢量合并,得到一个小波系数组;进而按照这种方式,可以得到N个小波系数组。

S604,基于N个小波系数组进行小波合成,以得到隐特征。

S605,依据预设网络对隐特征进行特征变换,以得到重建数据。

示例性的,S604~S605可以参照上述S303~S304,在此不再赘述。

需要说明的是,编码端也可以仅将部分小波系数组矢量分裂为对应的U1个子矢量,以及编码端还可以不将任一小波系数组矢量分裂为对应的U1个子矢量;具体可以根据每个小波系数组对于数据重建质量的重要程度,小波系数组的尺寸,设备性能,应用场景等多个因素确定,本申请对此不作限制。示例性的,每个小波系数组对应的子矢量的数量U1,可以相同,也可以不同,本申请对此不作限制。

需要说明的是,若X1小于N,且X2大于0,则解码端基于码流进行矢量反量化,可以得到X1个小波系数组分别对应的U1个子矢量和X2个小波系数组;然后可以对X1个小波系数组分别对应的U1个子矢量进行矢量合并,以得到X1个小波系数组。这样,解码端可以得到N个小波系数组。

示例性的,可以预先为N个小波系数组训练M组码书,其中,M为小于或等于N的正整数。这样,在对N个小波系数组分别进行矢量量化的过程中,可以从已训练的M组码书中,确定N个小波系数组分别对应的目标码书;接着,基于N个小波系数组分别对应的目标码书,对N个小波系数组分别进行矢量量化,以得到待编码数据的码流。

示例性的,可以先根据N个小波系数组设计M组码书的尺寸,并建立用于描述M组码书与N个小波系数组之间关系的第一预设关系;然后基于第一预设关系,并联合AI编码网络和AI解码网络,对M组码书进行训练,以得到M组码书中各个矢量量化值。

示例性的,当M等于N时,一组码书可以与一个小波系数组对应。针对N个小波系数组中的第i个小波系数组,可以根据第i个小波系数组的尺寸和第i个小波系数组对数据重建质量的重要程度,确定第i个小波系数组对应的第m(m为1~M之间的整数)组码书中码字的长度和数量(即第m组码书的尺寸)。

示例性的,若第i个小波系数组无需矢量分裂为U1个子矢量,则第m组码书中可以仅包括一个码书。此时,可以根据第i个小波系数组的尺寸,确定第m组码书中每个码字的长度;以及根据第i个小波系数组对数据重建质量的重要程度,确定第m组码书中码字的数量。接着,可以采用预设值为第m组码书中各个码字进行赋值,并建立第i个小波系数组与第m组码书之间的组映射关系。进而,按照这种方式,可以建立M组码书与N个小波系数组之间的组映射关系。

示例性的,对数据重建质量的重要程度高的小波系数组对应的码书中码字的数量,可以大于对数据重建质量的重要程度低的小波系数组对应的码书中码字的数量。这样,能够提高数据重建质量。应该理解的是,对数据重建质量的重要程度高的小波系数组对应的码书中码字的数量,也可以等于对数据重建质量的重要程度低的小波系数组对应的码书中码字的数量,本申请对此不作限制。

例如,如上述图4a所示,N等于4,则M可以等于4。此时,可以为小波系数组cd1、cd2、cd3和ca3分别设计对应的一组码书m1、m2、m3和m4;并建立4组码书与4个小波系数组之间的组映射关系,如表1所示:

表1

示例性的,表1中,码书m1中码字的长度与cd1的尺寸对应,码书m2中码字的长度与cd2的尺寸对应,码书m3中码字的长度与cd3的尺寸对应,码书m4中码字的长度与ca3的尺寸对应。

示例性的,表1中,若小波系数组cd1、cd2、cd3和ca3对数据重建质量的重要程度依次增加,则码书m1、m2、m3和m4中码字数量可以依次增加。当然,码书m1、m2、m3和m4中码字的数量也可以相同。

示例性的,若第i个小波系数组需要矢量分裂为v1(v1为大于1的整数)个子矢量,则第m组码书中可以包括v2(v2为正整数,v2小于或等于v1)个码书。当v2等于v1时,可以根据v1个子矢量中的第s1(s1为1~v1之间的整数)个子矢量的长度,确定对应的第s2(s2为1~v2之间的整数)个码书中每个码字的长度;以及按照需求,确定第s2个码书中码字的数量。接着,可以采用预设值为第s2个码书中各个码字进行赋值,并建立第s1个子矢量与第s2个码书之间的元素映射关系(其中,每个子矢量可以称为所属小波系数组中的元素,一个码书可以称为所属的一组码书中的元素)。

当v2小于v1时,可以根据v1个子矢量中的y1个子矢量的长度(这y1个子矢量的长度相同,y1为小于或等于v1的正整数),确定对应的第s2(个码书中每个码字的长度;以及按照需求,确定第s2个码书中码字的数量。接着,可以采用预设值为第s2个码书中各个码字进行赋值,并建立y1个子矢量与第s2个码书之间的元素映射关系。进而,按照这种方式,可以建立M组码书对应的多个码书与N个小波系数组分别对应的U1个子矢量之间的元素映射关系。

需要说明的是,同一个小波系数组矢量分裂所得到的U1个子矢量中,各个子矢量对应码书中码字的数量,可以相同,也可以不同;具体可以按照需求设置,本申请对此不作限制。

需要说明的是,当第r(r为1~N之间的正整数,r不等于i)个小波系数组对应的频段,低于第i个小波系数组对应的频段时,则说明第r个小波系数组对数据重建质量的重要程度,大于第i个小波系数组对数据重建质量的重要程度;此时,第r个小波系数组矢量分裂得到的U1个子矢量中,每个子矢量对应码书中码字的数量,均可以大于第i个小波系数组矢量分裂得到的U1个子矢量中,每个子矢量对应码书中码字的数量。

例如,如上述图4a所示,N等于4,则M可以等于4。此时,可以为小波系数组cd1、cd2、cd3和cd4分别设计对应的一组码书m1、m2、m3和m4。假设,小波系数组cd1、cd2、cd3和cd4均为矢量,cd1的长度为256,cd2的长度为128,cd3的长度为64,ca3的长度为64,cd1被矢量分裂为32个子矢量,cd2被矢量分裂为16个子矢量,cd3被矢量分裂为8个子矢量,ca3被矢量分裂为8个子矢量。若每个子矢量对应一个码书,则建立的64个子矢量与64个码书之间的元素映射关系可以如表2所示:

表2

示例性的,表2中,码书s21_1中码字的长度与s11_1的尺寸对应,码书s21_2中码字的长度与s11_2的尺寸对应,......码书s21_32中码字的长度与s11_32的尺寸对应;依次类推。

示例性的,表2中,若小波系数组s11_1、s11_2、......s11_32对数据重建质量的重要程度依次增加,则码书s21_1、s21_2、......和s21_32中码字数量可以依次增加。当然,码书s21_1、s21_2、......和s21_32中码字的数量也可以相同;依次类推。

若多个子矢量对应一个码书,且M组码书包括56个码书,则建立的64个子矢量与56个码书之间的元素映射关系可以如表3所示:

表3

示例性的,表3中,s11_1和s11_2的尺寸相同,码书s21_1中码字的长度与s11_1或s11_2的尺寸对应。s11_3和s11_4的尺寸相同,码书s21_2中码字的长度与s11_3或s11_4的尺寸对应。码书s21_5中码字的长度与s11_3的尺寸对应,......码书s21_30中码字的长度与s11_32的尺寸对应;依次类推。

示例性的,表3中,若小波系数组s11_1、s11_2、......s11_32对数据重建质量的重要程度依次增加,则码书s21_1、s21_2、......和s21_30中码字数量可以依次增加。当然,码书s21_1、s21_2、......和s21_30中码字的数量也可以相同;依次类推。

示例性的,当M小于N时,一组码书可以与多个小波系数组对应。针对N个小波系数组中的y2个小波系数组(y2为小于或等于N的正整数),可以根据y2个小波系数组的尺寸和y2个小波系数组对数据重建质量的平均重要程度,确定y2个小波系数组对应的第m(m为1~M之间的整数)组码书中码字的长度和数量;具体方式可以参照上述建立第i个小波系数组对应的第m组码书之间的组映射关系,或,建立M组码书对应的多个码书与N个小波系数组分别对应的U1个子矢量之间的元素映射关系,在此不再赘述。

例如,如上述图4a所示,N等于4,则M可以等于3。此时,可以小波系数组cd1和cd2对应一组码书m1,cd3和ca3分别对应的一组码书m2和m3;并建立3组码书与4个小波系数组之间的组映射关系,如表4所示:

表4

示例性的,表4中,cd1和cd2的尺寸相同,码书m1中码字的长度与cd1或cd2的尺寸对应,码书m2中码字的长度与cd3的尺寸对应,码书m3中码字的长度与ca3的尺寸对应。

示例性的,表4中,若小波系数组cd1、cd2、cd3和ca3对数据重建质量的重要程度依次增加,则码书m1、m2和m3中码字数量可以依次增加。当然,码书m1、m2和m3中码字的数量也可以相同。

示例性的,可以将M组码书与N个小波系数组之间的组映射关系,或,M组码书对应的多个码书与N个小波系数组分别对应的U1个子矢量之间的元素映射关系,称为第一预设关系。

示例性的,可以收集多组训练数据,其中,训练数据可以包括音频数据、视频数据和图像。以下以一组训练数据为例,对如何训练M组码书进行说明。一种可能的方式中,可以将一组训练数据输入至AI编码网络进行特征变换,得到隐特征;接着,对隐特征进行小波分解,可以得到N个小波系数组;随后,根据预设的M组码书以及M组码书与N个小波系数组之间的组映射关系,对N个小波系数组进行矢量量化,得到矢量量化值索引。然后,根据矢量量化值索引,预设的M组码书以及M组码书与N个小波系数组之间的组映射关系,进行矢量反量化,可以得到N个小波系数组。接着,将N个小波系数组进行小波合成,得到隐特征;将隐特征输入至AI解码网络中,可以得到AI解码网络输出的重建数据。接着,可以根据AI解码网络输出的重建数据和训练数据进行反向传播,对AI编码网络的网络参数、AI解码网络的网络参数和M组码书中各个码字的值进行调整。

一种可能的方式中,可以将一组训练数据输入至AI编码网络进行特征变换,得到隐特征;接着,对隐特征进行小波分解,可以得到N个小波系数组;随后,可以将N个小波系数组矢量分裂为分别对应的U1个子矢量,根据预设的M组码书以及M组码书对应的多个码书与N个小波系数组分别对应的U1个子矢量之间的元素映射关系,对N个小波系数组中的各子矢量进行矢量量化,得到矢量量化值索引。然后,根据矢量量化值索引,预设的M组码书以及M组码书对应的多个码书与N个小波系数组分别对应的U1个子矢量之间的元素映射关系,进行矢量反量化,可以得到N个小波系数组分别对应的U1个子矢量。接着,将N个小波系数组分别对应的U1个子矢量进行矢量合并,可以得到N个小波系数组;随后,将N个小波系数组进行小波合成,得到隐特征;将隐特征输入至AI解码网络中,可以得到AI解码网络输出的重建数据。然后可以根据AI解码网络输出的重建数据和训练数据进行反向传播,对AI编码网络的网络参数、AI解码网络的网络参数和M组码书中各个码字的值进行调整。

按照上述方式,采用多组训练数据进行训练后,可以得到训练后的AI编码网络、训练后的AI解码网络和训练后的M组码书。

图7为示例性示出的编码过程示意图。在图7的实施例中,描述了M等于N,且未将小波系数组矢量分裂为子矢量的编码过程。

S701,获取待编码数据。

S702,依据预设网络对待编码数据进行特征变换,以得到待编码数据对应的隐特征。

S703,对隐特征进行小波分解,以得到N个小波系数组。

示例性的,S701~S703,可以参照S201~S203的描述,在此不再赘述。

S704,根据第一预设关系,从预设的M组码书中,确定N个小波系数组分别对应的目标码书。

示例性的,编码端可以预先存储第一预设关系,进而,针对N个小波系数组中第i个小波系数组,可以根据M组码书与N个小波系数组之间的组映射关系,确定M组码书中与第i个小波系数组对应的目标码书;这样,可以确定N个小波系数组分别对应的目标码书。

S705,基于N个小波系数组分别对应的目标码书,对N个小波系数组分别进行矢量量化,以得到待编码数据的码流。

示例性的,针对N个小波系数组中第i个小波系数组,可以第i个小波系数组对应的目标码书中,查找第i个小波系数对应的矢量量化值(即目标码书中的一个码字);以及确定第i个小波系数对应的矢量量化值的矢量量化值索引。进而,在确定N个小波系数组对应的矢量量化值索引后,可以根据第N个小波系数组对应的矢量量化值索引,生成待编码数据的码流。

示例性的,不同小波系数组对数据重建质量的重要程度不同,在设计不同的小波系数组对应的码书时,可以增加对数据重建质量重要程度大的小波系数组对应的码书的精度(也就是码书中码字的数量),以及降低对数据重建质量重要程度小的小波系数组对应的码书的精度。这样,针对不同小波系数组采用不同的码书进行矢量量化后,能够在同等码率下,增加码流中对数据重建质量的重要程度大的小波系数组的占比,进而能够增加数据重建质量。

图8为示例性示出的解码过程示意图。在图8的实施例中,描述与图7的实施例中编码过程对应的解码过程。

S801,获取待解码的码流。

示例性的,S801可以参照上述S301的描述,在此不再赘述。

S802,根据第一预设关系,从M组码书中确定N个小波系数组分别对应的目标码书。

S803,基于N个小波系数组分别对应的目标码书和码流进行矢量反量化,以得到N个小波系数组。

示例性的,编码端根据M组码书对N个小波系数组进行矢量量化后,对应的,解码端可以从预设的M组码书中,确定N个小波系数组分别对应的目标码书;然后基于N个小波系数组分别对应的目标码书和码流进行矢量反量化,以得到N个小波系数组。

示例性的,解码端可以预先存储第一预设关系,进而,在获取码流后,针对N个小波系数组中的第i个小波系数组,可以根据第一预设关系,从M组码书中查找第i个小波系数组对应的目标码书。接着,根据码流中第i个小波系数组对应的矢量量化值索引,从第i个小波系数组对应的目标码书中,查找第i个小波系数组对应的矢量量化值;这样,可以得到N个小波系数组分别对应的矢量量化值。

S804,基于N个小波系数组进行小波合成,以得到隐特征;

S805,依据预设网络对隐特征进行特征变换,以得到重建数据。

示例性的,S804~S805,可以参照上述S303~S304的描述,在此不再赘述。

这样,在编码端针对对于数据重建程度高的小波系数组采用精度高的码书进行矢量量化后,解码端在同等码率下,接收到码流中对数据重建质量的重要程度大的小波系数组的占比更多;进而解码端也针对不同的小波系数组采用不同的码书进行矢量反量化,然后再经过小波合成和特征变换后,得到的数据重建质量更高。

图9为示例性示出的编码过程示意图。在图9的实施例中,描述了M小于N,且未将小波系数组矢量分裂为子矢量的情况。

S901,获取待编码数据。

S902,依据预设网络对待编码数据进行特征变换,以得到待编码数据对应的隐特征。

S903,对隐特征进行小波分解,以得到N个小波系数组。

S904,根据第一预设关系,从预设的M组码书中,确定N个小波系数组分别对应的目标码书。

S905,基于N个小波系数组分别对应的目标码书,对N个小波系数组分别进行矢量量化,以得到待编码数据的码流。

示例性的,S901~S905的实施方式及效果,可以参照S701~S705的描述,在此不再赘述。

图10为示例性示出的解码过程示意图。在图10的实施例中,描述与图9的实施例中编码过程对应的解码过程。

S1001,获取待解码的码流。

S1002,根据第一预设关系,从M组码书中确定N个小波系数组分别对应的目标码书。

S1003,基于N个小波系数组分别对应的目标码书和码流进行矢量反量化,以得到N个小波系数组。

S1004,基于N个小波系数组进行小波合成,以得到隐特征;

S1005,依据预设网络对隐特征进行特征变换,以得到重建数据。

示例性的,S1001~S1005的实施方式及效果,可以参照上述S801~S805的描述,在此不再赘述。

应该理解的是,当将N个小波系数组矢量分别分裂为U1个子矢量后,在编码过程中,还可以根据M组码书对应的多个码书与N个小波系数组分别对应的U1个子矢量之间的元素映射关系,确定每个子矢量对应的目标码书;然后针对每个子矢量,可以采用该子矢量对应的目标码书,对该子矢量进行矢量量化。以及在解码过程中,还可以根据M组码书对应的多个码书与N个小波系数组分别对应的U1个子矢量之间的元素映射关系,确定每个子矢量对应的目标码书;然后可以根据每个子矢量对应的矢量量化值索引,从其对应的目标码书中查找其矢量量化值。

一种可能的方式中,在根据N个小波系数组设计M组码书的尺寸后,可以无需建立建立用于描述M组码书与N个小波系数组之间关系的第一预设关系;而是直接联合AI编码网络和AI解码网络,对M组码书进行训练,以得到M组码书中各个矢量量化值。训练过程可以如下:一种可能的方式中,可以将一组训练数据输入至AI编码网络进行特征变换,得到隐特征;接着,对隐特征进行小波分解,可以得到N个小波系数组。随后,针对N个小波系数组中的第i个小波系数组,可以将M组码书中,矢量量化值与第i个小波系数组的矢量量化误差最小的一组,确定为第i个小波系数组对应的目标码书;这样,可以确定N个小波系数组分别对应的目标码书。然后基于N个小波系数组分别对应的目标码书,对N个小波系数组进行矢量量化,得到矢量量化值索引。然后,根据N个小波系数组对应的目标码书,进行矢量反量化,可以得到N个小波系数组。接着,将N个小波系数组进行小波合成,得到隐特征;将隐特征输入至AI解码网络中,可以得到AI解码网络输出的重建数据。然后可以根据AI解码网络输出的重建数据和训练数据进行反向传播,对AI编码网络的网络参数、AI解码网络的网络参数和M组码书中各个码字的值进行调整。

一种可能的方式中,可以将一组训练数据输入至AI编码网络进行特征变换,得到隐特征;接着,对隐特征进行小波分解,可以得到N个小波系数组;随后,可以将N个小波系数组矢量分裂为分别对应的U1个子矢量,针对一个子矢量,可以将M组码书中,矢量量化值与该子矢量的矢量量化误差最小的一个码书,确定为该子矢量对应的目标码书;这样,可以确定N个小波系数组分别对应的U1个子矢量分别对应的目标码书,然后基于N个小波系数组分别对应的U1个子矢量分别对应的目标码书,对N个小波系数组分别对应的U1个子矢量进行矢量量化,得到矢量量化值索引。然后,根据N个小波系数组分别对应的U1个子矢量分别对应的目标码书,进行矢量反量化,可以得到N个小波系数组分别对应的U1个子矢量。接着,将N个小波系数组分别对应的U1个子矢量进行矢量合并,可以得到N个小波系数组;随后,将N个小波系数组进行小波合成,得到隐特征;将隐特征输入至AI解码网络中,可以得到AI解码网络输出的重建数据。然后可以根据AI解码网络输出的重建数据和训练数据进行反向传播,对AI编码网络的网络参数、AI解码网络的网络参数和M组码书中各个码字的值进行调整。

示例性的,在编码过程中,一种从预设的M组码书中,确定N个小波系数组分别对应的目标码书的方式,可以是针对N个小波系数组中的第i个小波系数组:根据第i个小波系数组和第i个小波系数组对应的M组矢量量化值,确定M组量化误差,其中,M组矢量量化值是基于M组码书分别对第i个小波系数组进行矢量量化得到的;确定M组码书中,与M组矢量量化误差中最小矢量量化误差所对应的一组码书;将最小矢量量化误差所对应的一组码书,确定为第i个小波系数组对应的目标码书。

示例性的,一种根据第i个小波系数组和第i个小波系数组对应的M组矢量量化值,确定M组量化误差的方式可以是,分别计算第i个小波系数组和第i个小波系数组对应的M组矢量量化值的差值,可以得到M个差值;可以将这M个差值,确定为M组量化误差。一种根据第i个小波系数组和第i个小波系数组对应的M组矢量量化值,确定M组量化误差的方式可以是,分别计算第i个小波系数组和第i个小波系数组对应的M组矢量量化值的均方误差,可以得到M个均方误差;可以将这M个均方误差,确定为M组量化误差。应该理解的是,还可以采用其他方式确定M组量化误差,本申请对此不作限制。

示例性的,在将最小矢量量化误差所对应的一组码书,确定为第i个小波系数组对应的目标码书的情况下,编码端可以将每个小波系数组对应的一组目标码书的码书标识添加至码流中。这样,解码端在接收到码流后,根据码流中N个小波系数组分别对应的码书标识,确定N个小波系数组分别对应的目标码书;然后再基于N个小波系数组分别对应的目标码书和码流进行矢量反量化,以得到N个小波系数组。其中,码书标识用于唯一标识一个码书,例如可以是码书索引。

应该理解的是,在编码过程中,若将N个小波系数组矢量分别分裂为U1个子矢量,也可以参照上述方式,确定子矢量对应的目标码书,本申请对此不作限制。此外,编码器也可以将每个子矢量对应的一个码书的码书标识添加至码流中。这样,解码端在接收到码流后,根据码流中N个小波系数组分别对应的U1个子矢量分别对应的码书标识,确定N个小波系数组分别对应的U1个子矢量分别对应的目标码书;然后再基于N个小波系数组分别对应的U1个子矢量分别对应的目标码书和码流进行矢量反量化,以得到N个小波系数组分别对应的U1个子矢量。

很多情况下会调整码率,例如,在码流传输的过程中,信道状态变差时,为了保证重建数据播放的流畅性,会降低码率。又例如,在场景切换时,为了满足不同场景需求,也可能会调整码率。进而,本申请在码率降低时,可以丢弃部分小波系数组或者小波系数组中的部分子矢量,不对这些小波系数组或子矢量进行矢量量化;在码率升高时,恢复对丢弃的小波系数组或者子矢量的矢量量化,以实现适应不同码率编码。

图11为示例性示出的编码过程示意图。在图11的实施例中,编码端能够适应不同码率进行编码。

S1101,获取待编码数据。

S1102,依据预设网络对待编码数据进行特征变换,以得到待编码数据对应的隐特征。

S1103,对隐特征进行小波分解,以得到N个小波系数组。

示例性的,S1101~S1103可以参照上文中S201~S202的描述,在此不再赘述。

S1104,依据目标码率,从N个小波系数组中选取待矢量量化的G个小波系数组。

示例性的,在进行小波分解得到N个小波系数组后,可以根据目标码率,从N个小波系数组中选取待矢量量化的G个小波系数组,即丢弃部分小波系数组。其中,G为小于N的正整数。

一种可能的方式中,可以预先根据N个小波系数组中每个小波系数组的传输数据量(即每个小波系数组对应矢量量化值索引的数据量)、N个小波系数组对数据重建质量的重要程度以及多种码率,来建立用于描述多种码率和N个小波系数组之间关系的第二预设关系。

例如,参照上述图4a,假设小波系数组包括:cd1、cd2、cd3和ca3;其中,cd1的长度为128,cd2的长度为64,cd3的长度为32,ca3的长度为32。若cd1的传输数据量(即cd1对应矢量量化值索引的数据量)为128bit,cd2的传输数据量为64bit,cd3的传输数据量为32bit,ca3的传输数据量为32bit;也就是说传输一帧数据需要花费256bit。若需要1s传输50帧数据,则在不丢弃小波系数组的情况下,码率为12800bps。若码率降为11200bps,则每帧数据可以丢弃32bit。由于ca3对应的频段低于cd3对应的频段,因此ca3对于数据重建质量的程度大于cd3对于数据重建质量的程度,进而可以丢弃cd3。若码率降为9600bps,则每帧数据可以丢弃64bit;由于cd2对应的频段低于cd3对应的频段,且低于ca3对应的频段,因此可以丢弃cd2。基于此,可以建立第二预设关系,可以如表5所示:

表5

示例性的,在表5的“是否丢弃”列中“1”表示不丢弃,“0”表示丢弃。

进而,在得到N个小波系数组后,可以依据目标码率和第二预设关系,确定G个小波系数组。例如,参照表5,当目标码率为12800bps时,选取cd1、cd2、cd3和ca3这四个小波系数组,均为G个小波系数组。当目标码率为11200bps时,选取出cd1、cd2和ca3为G个小波系数组。当目标码率为9600bps时,选取出cd1、cd3和ca3为G个小波系数组。

一种可能的方式中,也可以无需建立第二预设关系,而是确定N个小波系数组分别对应的数值特征信息;然后,依据目标码率和N个小波系数组分别对应的数值特征信息,从N个小波系数组中选取待矢量量化的G个小波系数组。

其中,数值特征信息包括以下至少一种:频段、能量、方差或均值;应该理解的是,数值特征信息还可以包括其他信息,本申请对此不作限制。

示例性的,可以根据目标码率,确定目标丢弃数据量;根据目标丢弃数据量和N个小波系数组分别对应的传输数据量,从N个小波系数组中选取多个候选小波系数组。若多个候选小波系数组的传输数据量相同,且等于目标丢弃数据量,则根据数值特征信息,从多个候选小波系数组中选取出一个目标小波系数组。然后,从N个小波系数组中选取除该目标小波系数组外的其它小波系数组,得到G个小波系数组。若多个候选小波系数组包括第一类小波系数组和第二类小波系数组;其中,第一类小波系数为已确定需要丢弃的小波系数组,第二类小波系数组中各小波系数组的传输数据量相同,第一类小波系数中的任一小波系数组与第二类小波系数组中的任一小波系数组的传输数据量等于目标丢弃数据量。则根据数值特征信息,从第二类小波系数组中选取出一个目标小波系数组。然后,从N个小波系数组中选取除该目标小波系数组和第一类小波系数组外的其它小波系数组,得到G个小波系数组。

其中,数据特征信息与数据重建质量相关,可以丢弃对数据重建质量重要程度低的小波系数组,选取对数据重建质量重要程度高的小波系数组;这样在适配码率的情况下,降低对数据重建质量的影响。

例如,若数值特征信息为频段,则丢弃多个候选小波系数组中对应频段最高的小波系数组。(频段越高,对数据重建质量的重要程度越低)。

例如,若数值特征信息为能量,则丢弃多个候选小波系数组中对应能量最低的小波系数组。(能量越低,对数据重建质量的重要程度越低)。

例如,若数值特征信息为均值,则丢弃多个候选小波系数组中对应均值最低的小波系数组。(均值越低,对数据重建质量的重要程度越低)。

S1105,对G个小波系数组进行矢量量化,以得到待编码数据的码流。

示例性的,S1105可以参照上文中对N个小波系数组进行矢量量化的描述,在此不再赘述。

应该理解的是,当对N个小波系数组中的N个小波系数组分别进行矢量分裂,以得到N个小波系数组分别对应的U1个子矢量后,可以依据目标码率,从N个小波系数组分别对应的U1个子矢量中选取待矢量量化的U2(U2为正整数)个目标子矢量。一种可能的方式中,可以预先建立第三预设关系,第三预设关系可以用于描述多种码率和多个子矢量之间的关系;然后依据目标码率和第三预设关系,从N个小波系数组分别对应的U1个子矢量中选取U2个目标子矢量。一种可能的方式中,可以确定N个小波系数组分别对应的数值特征信息,数值特征信息包括以下至少一种:频段、能量、方差或均值;依据目标码率和N个小波系数组分别对应的数值特征信息,从N个小波系数组分别对应的U1个子矢量中选取U2个目标子矢量。其中,选取目标子矢量的方式与上述选取G个小波系数组的方式类似,在此不再赘述。

示例性的,编码端在依据目标码率,从N个小波系数组中选取待矢量量化的G个小波系数组;接着,对G个小波系数组进行矢量量化,以得到待编码数据的码流后,可以将G个小波系数组的小波系数组标识写入码流中;这样,解码端在进行矢量反量化得到G个小波系数组后,可以根据小波系数组标识,将G个小波系数组进行小波合成,以得到隐特征。

示例性的,编码端在依据目标码率,从N个小波系数组分别对应的U1个子矢量中选取待矢量量化的U2个目标子矢量;接着对U2个目标子矢量进行矢量量化,以得到待编码数据的码流后,可以将目标子矢量的子矢量标识写入码流中。这样,解码端在进行矢量反量化得到U2个目标子矢量后,可以根据目标子矢量的子矢量标识,将U2个目标子矢量进行小波合成,以得到隐特征。其中,子矢量标识可以用于唯一标识一个子矢量,例如子矢量索引。

这样,无需训练多套预设网络,通过舍弃部分子矢量或小波系数组也可以实现多码率传输,增加了本申请编码方法的通用性。

图12为示例性示出的解码示意图。在图12的实施例中,示出了与图11的编码过程对应的解码过程。

S1201,获取待解码的码流。

S1202,基于码流进行矢量反量化,以得到G个小波系数组,G为小于N的正整数。

示例性的,S1201~S1202,可以参照上述S301~S302的描述,在此不再赘述。

其中,编码端从N个小波系数组中选取G个小波系数组进行矢量量化后,码流中仅包括G个小波系数组;进而解码端基于码流进行矢量反量化,以得到G个小波系数组。

S1203,根据小波系数组标识,对G个小波系数组的矢量量化值进行小波合成,以得到隐特征。

示例性的,解码端可以根据从码流中解析出的小波系数组标识,确定编码端发送了N个小波系数组中的哪些小波系数组;然后在每级小波合成时,根据小波系数组标识确定对应所需使用的小波系数组,进而可以得到隐特征。

S1204,依据预设网络对隐特征进行特征变换,以得到重建数据。

示例性的,S1204,可以参照上述S304的描述,在此不再赘述。

这样,无需训练多套预设网络,也可以实现多码率传输,增加了本申请解码方法的通用性。

需要说明的是,若X1小于N,且X2大于0,则当U2个目标子矢量对应X4(X4可以小于或等于X1)个小波系数组时,编码端也可以依据目标码率,从X2个小波系数组中选取待矢量量化的X3个小波系数组,X3为小于或等于X2的正整数。这样,编码端在进行矢量量化的过程中,可以对X3个小波系数组进行矢量量化,以及对U2个目标子矢量进行矢量量化,以得到待编码数据的码流。对应的,解码端基于码流进行矢量反量化,可以得到X4个小波系数组分别对应的U2个目标子矢量和X3个小波系数组;然后可以将X4个小波系数组分别对应的U2个目标子矢量进行矢量合并,可以得到X4个小波系数组。

一个示例中,图13示出了本申请实施例的一种示意性框图装置1300,可包括:处理器1301和收发器/收发管脚1302,可选地,还包括存储器1303。

装置1300的各个组件通过总线1304耦合在一起,其中总线1304除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都称为总线1304。

可选地,存储器1303可以用于存储前述方法实施例中的指令。该处理器1301可用于执行存储器1303中的指令,并控制接收管脚接收信号,以及控制发送管脚发送信号。

装置1300可以是上述方法实施例中的电子设备或电子设备的芯片。

其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的编解码方法。

本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的编解码方法。

另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的编解码方法。

其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。

通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

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

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

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

本申请各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请的范围之内。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

结合本申请实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机可读存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

相关技术
  • 立体声信号的编解码方法和编解码装置
  • 帧间预测方法、装置、编解码方法、编解码器及电子设备
  • 帧内预测方法、编解码方法、编解码器、系统、电子设备和存储介质
技术分类

06120116489884