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

音频编码方法、音频解码方法、装置、可读存储介质

文献发布时间:2024-04-18 19:59:31


音频编码方法、音频解码方法、装置、可读存储介质

技术领域

本申请涉及人工智能技术,尤其涉及一种音频编码方法、音频解码方法、装置、电子设备、计算机可读存储介质及计算机程序产品。

背景技术

人工智能(AI,Artificial Intelligence)是计算机科学的一个综合技术,通过研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能技术是一门综合学科,涉及领域广泛,例如自然语言处理技术以及机器学习/深度学习等几大方向,随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。

音频编解码技术是人工智能领域的重要应用之一,音频编解码技术是包括远程音视频通话在内的通信服务中的一项核心技术。语音编码技术,简单讲,就是使用较少的网络带宽资源去尽量多的传递语音信息。从香农信息论的角度来讲,语音编码是一种信源编码,信源编码的目的是在编码端尽可能的压缩我们想要传递信息的数据量,去掉信息中的冗余,同时在解码端还能够无损(或接近无损)的恢复出来。

相关技术中,解码端解码所生成的音频的质量较为单一,无法满足用户需求。

发明内容

本申请实施例提供一种音频编码方法、音频解码方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够在保证音频解码的效率的情况下,输出不同质量级别的合成音频信号。

本申请实施例的技术方案是这样实现的:

本申请实施例提供一种音频编码方法,包括:

响应于针对音频信号的编码请求,从多个编码模式中获取针对所述音频信号的目标编码模式,从多个码率模式中获取针对所述音频信号的目标码率模式;

通过所述目标编码模式,从所述音频信号中提取出所述音频信号的编码特征;

通过所述目标码率模式,对所述音频信号的编码特征进行信号编码处理,得到所述音频信号的音频码流;

基于所述目标编码模式以及所述目标码率模式,确定帧头;

基于所述音频码流以及所述帧头,生成所述音频信号的音频码流封装。

本申请实施例提供一种音频解码方法,包括:

响应于针对音频码流封装的解码请求,从所述音频码流封装包括的帧头中获取目标编码模式以及目标码率模式;

其中,所述音频码流封装包括的音频码流是通过所述目标编码模式以及所述目标码率模式,对音频信号进行音频编码得到的,所述目标编码模式是从多个编码模式中获取的,所述目标码率模式是从多个码率模式中获取的;

通过所述目标编码模式以及所述目标码率模式,对所述音频码流进行信号解码处理,得到所述音频码流对应的编码特征估计值;

通过所述目标编码模式,对所述音频码流对应的编码特征估计值进行重建处理,得到所述音频码流对应的合成音频信号。

本申请实施例提供一种音频编码装置,包括:

第二获取模块,用于响应于针对音频信号的编码请求,从多个编码模式中获取针对所述音频信号的目标编码模式,从多个码率模式中获取针对所述音频信号的目标码率模式;

提取模块,用于通过所述目标编码模式,从所述音频信号中提取出所述音频信号的编码特征;

信号编码模块,用于通过所述目标码率模式,对所述音频信号的编码特征进行信号编码处理,得到所述音频信号的音频码流;

构建模块,用于基于所述目标编码模式以及所述目标码率模式,确定帧头;

生成模块,用于基于所述音频码流以及所述帧头,生成所述音频信号的音频码流封装。

本申请实施例提供一种音频解码装置,包括:

第一获取模块,用于响应于针对音频码流封装的解码请求,从所述音频码流封装包括的帧头中获取目标编码模式以及目标码率模式;

其中,所述音频码流封装包括的音频码流是通过所述目标编码模式以及所述目标码率模式,对音频信号进行音频编码得到的,所述目标编码模式是从多个编码模式中获取的,所述目标码率模式是从多个码率模式中获取的;

信号解码模块,用于通过所述目标编码模式以及所述目标码率模式,对所述音频码流进行信号解码处理,得到所述音频码流对应的编码特征估计值;

重建模块,用于通过所述目标编码模式,对所述音频码流对应的编码特征估计值进行重建处理,得到所述音频码流对应的合成音频信号。

本申请实施例提供一种电子设备,所述电子设备包括:

存储器,用于存储计算机可执行指令;

处理器,用于执行所述存储器中存储的计算机可执行指令时,实现本申请实施例提供的音频编码方法或音频解码方法。

本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令,被处理器执行时,实现本申请实施例提供的音频编码方法或音频解码方法。

本申请实施例提供一种计算机程序产品,包括计算机可执行指令,所述计算机可执行指令被处理器执行时实现本申请实施例提供的音频编码方法或音频解码方法。

本申请实施例具有以下有益效果:

通过不同编码模式以及码率模式,对音频码流进行信号解码,从而得到不同精度的编码特征估计值,然后对不同精度的编码特征估计值进行重建,从而得到不同质量级别的合成音频信号,提高合成音频信号的质量的多样化,以满足用户的实际应用需求。

附图说明

图1是本申请实施例提供的不同码率下的频谱比较示意图;

图2是本申请实施例提供的音频编解码系统的架构示意图;

图3A是本申请实施例提供的电子设备的第一结构示意图;

图3B是本申请实施例提供的电子设备的第二结构示意图;

图4A是本申请实施例提供的音频编码方法的第一流程示意图;

图4B是本申请实施例提供的音频编码方法的第二流程示意图;

图4C是本申请实施例提供的音频编码方法的第三流程示意图;

图4D是本申请实施例提供的音频编码方法的第四流程示意图;

图4E是本申请实施例提供的音频编码方法的第五流程示意图;

图5A是本申请实施例提供的音频解码方法的第一流程示意图;

图5B是本申请实施例提供的音频解码方法的第二流程示意图;

图5C是本申请实施例提供的音频解码方法的第三流程示意图;

图6A是本申请实施例提供的未采用分组卷积的通道示意图;

图6B是本申请实施例提供的采用分组卷积的通道示意图;

图6C是本申请实施例提供的语音通信链路示意图;

图7是本申请实施例提供的多模式多速率语音编码方法的流程示意图;

图8是本申请实施例提供的滤波器组示意图;

图9A是本申请实施例提供的普通卷积网络的示意图;

图9B是本申请实施例提供的空洞卷积网络的示意图;

图10是本申请实施例提供的频带扩展的示意图;

图11是本申请实施例提供的第三神经网络的示意图;

图12A是本申请实施例提供的编码块中使用的残差块结构示意图;

图12B是本申请实施例提供的残差单元结构示意图;

图13A是本申请实施例提供的宽带编码模式下的码流封装的结构示意图;

图13B是本申请实施例提供的超宽带编码模式下不包含残差、不包含平坦度边信息的码流封装的结构示意图;

图13C是本申请实施例提供的超宽带编码模式下包含残差、不包含平坦度边信息的码流封装的结构示意图;

图13D是本申请实施例提供的超宽带编码模式下不包含残差、包含平坦度边信息的码流封装的结构示意图;

图13E是本申请实施例提供的超宽带编码模式下包含残差、包含平坦度边信息的码流封装的结构示意图;

图14是本申请实施例提供的第一神经网络的示意图;

图15A是本申请实施例提供的宽带立体声编码模式下的码流封装的结构示意图;

图15B是本申请实施例提供的超宽带立体声编码模式下不包含残差、不包含平坦度边信息的码流封装的结构示意图;

图15C是本申请实施例提供的超宽带立体声编码模式下包含残差、不包含平坦度边信息的码流封装的结构示意图;

图15D是本申请实施例提供的超宽带立体声编码模式下不包含残差、包含平坦度边信息的码流封装的结构示意图;

图15E是本申请实施例提供的超宽带立体声编码模式下包含残差、包含平坦度边信息的码流封装的结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,所涉及的术语“第一第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。

1)神经网络(NN,Neural Network):是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

2)深度学习(DL,Deep Learning):是机器学习(ML,Machine Learning)领域中一个新的研究方向,深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。

3)量化:是指将信号的连续取值(或者大量离散取值)近似为有限多个(或较少的)离散值的过程。其中,量化包括矢量量化(VQ,Vector Quantization)以及标量量化。

其中,矢量量化是一种有效的有损压缩技术,其理论基础是香农的速率失真理论。矢量量化的基本原理是用码表中与输入矢量最匹配的码字的索引(又称量化值)代替输入矢量进行传输与存储,而解码时仅需要简单地查表操作。例如,将若干个标量数据组成一个矢量空间,将矢量空间划分为若干个小区域,量化时将落入小区域的矢量,使用对应的索引代替输入矢量。

标量量化是对标量进行量化,即一维的矢量量化,将动态范围分成若干个小区间,每个小区间有一个代表值(即索引)。当输入信号落入某区间时,将输入信号量化成该代表值。

4)熵编码:编码过程中按熵原理不丢失任何信息的无损编码方式,也是有损编码中的一个关键模块,处于编码器的末端。熵编码包括香农(Shannon)编码、哈夫曼(Huffman)编码、指数哥伦布编码(Exp-Golomb)和算术编码(arithmetic coding)。

5)正交镜像滤波器组(QMF,Quadrature Mirror Filters):是一个包含分析-合成的滤波器对,其中,QMF分析滤波器用于子带信号分解,以降低信号带宽,使各个子带信号可顺利通过各自通道进行处理;QMF合成滤波器用于将解码端恢复出的各子带信号进行合成处理,例如通过零值内插和带通滤波等方式重建出原始的音频信号。

语音编码技术就是使用较少的网络带宽资源去尽量多地传递语音信息。语音编解码器的压缩率可以达到10倍以上,也就是原本10MB的语音数据经过编码器的压缩后,只需要1MB来传输,大大降低了传递信息所需消耗的带宽资源。例如,对于采样率为16000Hz的宽带语音信号,如果采用16-bit采样深度(取样中对语音强度记录的精细程度),无压缩版本的码率(单位时间内传送数据量)为256kbps;如果使用语音编码技术,即使是有损编码,在10-20kbps的码率范围内,重建的语音信号的质量可以接近无压缩版本,甚至听感上认为无差别。如果需要更高采样率的服务,比如32000Hz的超宽带语音,码率范围至少要达到30kbps以上。

在通信系统中,为了保证通信的顺利,行业内部部署标准的语音编解码协议,例如来自ITU-T、3GPP、IETF、AVS、CCSA等国际国内标准组织的标准,G.711、G.722、AMR系列、EVS、OPUS等标准。图1给出一个不同码率下的频谱比较示意图,以示范压缩码率与质量的关系。曲线101为原始语音的频谱曲线,即没有压缩的信号;曲线102为OPUS编码器在20kbps码率下的频谱曲线;曲线103为OPUS编码在6kbps码率下的频谱曲线。由图1可知,随着编码码率的提升,压缩后的信号更为接近原始信号。

语音编码原理大致如下:语音编码可以直接对语音波形样本,逐样本地进行编码;或者,基于人的发声原理,提取相关低维度特征,编码端对特征进行编码,解码端基于这些参数重建语音信号。

上述编码原理均来自语音信号建模,即基于信号处理的压缩方法,无法保证音频的编码质量。为了在保证语音质量的情况下,提高编码效率,本申请实施例提供一种音频编码方法、音频解码方法、装置、电子设备、计算机可读存储介质及计算机程序产品。下面说明本申请实施例提供的电子设备的示例性应用,本申请实施例提供的电子设备可以实施为终端设备,也可以实施为服务器,或者由终端设备和服务器协同实施。下面以电子设备实施为终端设备为例进行说明。

示例的,参见图2,图2是本申请实施例提供的音频编解码系统10的架构示意图,音频解码系统10包括:服务器200、网络300、终端设备400(即编码端)和终端设备500(即解码端),其中,网络300可以是局域网,或者是广域网,又或者是二者的组合。

在一些实施例中,在终端设备400上运行有客户端410,客户端410可以是各种类型的客户端,例如即时通信客户端、网络会议客户端、直播客户端、浏览器等。客户端410响应于发送方(例如网络会议的发起者、主播、语音通话的发起者等)触发的音频采集指令,调用终端设备400自带的麦克风进行音频信号的采集,并对采集得到的音频信号进行音频编码处理,得到音频码流。

例如,客户端410调用本申请实施例提供的音频编码方法对采集得到的音频信号进行编码,即从多个编码模式中获取针对音频信号的目标编码模式,从多个码率模式中获取针对音频信号的目标码率模式;通过目标编码模式,从音频信号中提取出音频信号的编码特征;通过目标码率模式,对音频信号的编码特征进行信号编码处理,得到音频信号的音频码流;基于目标编码模式以及目标码率模式,确定帧头;基于音频码流以及帧头,生成音频信号的音频码流封装。

客户端410可以将音频码流封装通过网络300发送至服务器200,以使服务器200将音频码流封装发送至接收方(例如网络会议的参会对象、观众、语音通话的接收者等)关联的终端设备500。

客户端510(例如即时通信客户端、网络会议客户端、直播客户端、浏览器等)在接收到服务器200发送的音频码流封装后,可以对音频码流封装进行音频解码处理,以得到合成音频信号,从而实现音频通信。

例如,客户端510调用本申请实施例提供的音频解码方法对接收到的音频码流封装进行解码,即从音频码流封装包括的帧头中获取目标编码模式以及目标码率模式;其中,音频码流封装包括的音频码流是通过目标编码模式以及目标码率模式,对音频信号进行音频编码得到的,目标编码模式是从多个编码模式中获取的,目标码率模式是从多个码率模式中获取的;通过目标编码模式以及目标码率模式,对音频码流进行信号解码处理,得到音频码流对应的编码特征估计值;通过目标编码模式,对音频码流对应的编码特征估计值进行重建处理,得到音频码流对应的合成音频信号。

在一些实施例中,本申请实施例可以借助云技术(Cloud Technology)实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、存储、处理和共享的一种托管技术。

云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。上述服务器200之间的服务交互功能可以通过云技术实现。

示例的,图2中示出的服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。图2中示出的终端设备400和终端设备500可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端等,但并不局限于此。终端设备(例如终端设备400和终端设备500)以及服务器200可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。

在一些实施例中,终端设备或服务器200还可以通过运行计算机程序来实现本申请实施例提供的音频编码方法或音频解码方法。举例来说,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即需要在操作系统中安装才能运行的程序,如直播APP、网络会议APP、或者即时通信APP等;也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。

在一些实施例中,多个服务器可组成为一区块链,而服务器200为区块链上的节点,区块链中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。其中,本申请实施例提供的音频编码方法或音频解码方法所相关的数据(例如音频编码的逻辑、音频解码的逻辑、高频码流以及低频码流)可保存于区块链上。

参见图3A,图3A是本申请实施例提供的电子设备500的结构示意图,以电子设备500是终端设备为例说明,图3A所示的电子设备500包括:至少一个处理器520、存储器550、至少一个网络接口530和用户接口540。电子设备500中的各个组件通过总线系统550耦合在一起。可理解,总线系统550用于实现这些组件之间的连接通信。总线系统550除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3A中将各种总线都标为总线系统550。

处理器520可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

存储器550可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器550可选地包括在物理位置上远离处理器520的一个或多个存储设备。

存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器550旨在包括任意适合类型的存储器。

在一些实施例中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。

操作系统551,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;

网络通信模块552,用于经由一个或多个(有线或无线)网络接口530到达其他计算设备,示例性的网络接口530包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等。

在一些实施例中,本申请实施例提供的音频编码装置可以采用软件方式实现,图3A示出了存储在存储器550中的音频编码装置555,其可以是程序和插件等形式的软件,包括以下软件模块:第二获取模块5551、提取模块5552、信号编码模块5553、构建模块5554以及生成模块5555,其中,第二获取模块5551、提取模块5552、信号编码模块5553、构建模块5554以及生成模块5555用于实现音频编码功能,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。

参见图3B,图3B是本申请实施例提供的电子设备600的结构示意图,以电子设备600是终端设备为例说明,图3B所示的电子设备600包括:至少一个处理器620、存储器650、至少一个网络接口630和用户接口640。电子设备600中的各个组件通过总线系统650耦合在一起。存储器650包括操作系统651、网络通信模块652。需要说明的是,图3B中的结构的功能与图3A中的结构的功能类似。本申请实施例提供的音频编码装置可以采用软件方式实现,图3B示出了存储在存储器650中的音频解码装置655,其可以是程序和插件等形式的软件,包括以下软件模块:第一获取模块6551、信号解码模块6552、重建模块6553,其中,第一获取模块6551、信号解码模块6552、重建模块6553用于实现音频解码功能,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。

如前所述,本申请实施例提供的音频编码方法可以由各种类型的电子设备实施。参见图4A,图4A是本申请实施例提供的音频编码方法的流程示意图,通过音频编码方法实现音频编码功能,下面结合图4A示出的步骤101-步骤105进行说明。

在步骤101中,响应于针对音频信号的编码请求,从多个编码模式中获取针对音频信号的目标编码模式,从多个码率模式中获取针对音频信号的目标码率模式。

其中,编码请求用于指示对音频信号进行音频编码处理,编码请求包括编码的配置信息,例如音频信号的采样率、音频信号的类型(例如宽带信号、超宽带信号)等。其中,多个编码模式包括宽带编码模式以及超宽带编码模式,码率模式用于指示采用指定的码表以及对应码率进行信号编码,不同的码率模式对应不同的码表以及码率。在配置阶段,针对不同的音频信号可以配置不同的编码模式以及码率模式。

作为获取音频信号的示例,编码端响应于发送方(例如网络会议的发起者、主播、语音通话的发起者等)触发的音频采集指令,调用编码端的终端设备自带的麦克风进行音频信号的采集,以获取音频信号(又称输入信号)。

在步骤102中,通过目标编码模式,从音频信号中提取出音频信号的编码特征。

如图4B所示,图4B是本申请实施例提供的音频编码方法的一个流程示意图,当目标编码模式为宽带编码模式时,图4B示出在图4A中的步骤102可以通过步骤1021A-步骤1022A实现:在步骤1021A中,基于宽带编码模式调用第一神经网络;在步骤1022A中,通过第一神经网络,从音频信号中提取出音频信号的编码特征。

这里,当目标编码模式为宽带编码模式时,采用人工智能技术直接提取频信号的编码特征。

如图4C所示,图4C是本申请实施例提供的音频编码方法的一个流程示意图,图4C示出在图4B中的步骤1022A可以通过步骤10221A-步骤10222A实现:

在步骤10221A中,对音频信号进行特征提取处理,得到音频信号的音频特征。

这里,本申请实施例可以基于音频信号调用第一神经网络(NN),通过第一神经网络从音频信号中提取音频特征,以便后续继续基于音频特征进行特征提炼。需要说明的是,本申请实施例并不局限于第一NN的结构,第一NN可以是卷积神经网络、深度神经网络等。

在步骤10222A中,利用第一神经网络包括的至少一个残差单元,对音频特征进行残差处理,得到音频信号的编码特征。

这里,第一神经网络包括4个编码块,每个编码块包括4个或5个残差单元。

如图4D所示,图4D是本申请实施例提供的音频编码方法的一个流程示意图,当目标编码模式为超宽带编码模式时,图4D示出在图4A中的步骤102可以通过步骤1021B-步骤1024B实现:

在步骤1021B中,对音频信号进行子带分解处理,得到音频信号的低频子带信号以及高频子带信号。

这里,当目标编码模式为超宽带编码模式时,说明音频信号为超宽带信号,可以对超宽带信号进行子带分解处理,得到音频信号的低频子带信号以及高频子带信号。

需要说明的是,本申请实施例并不限定低频子带信号以及高频子带信号的频带,即分解得到的低频子带信号与高频子带信号可以是平均分割音频信号的频带所得到的两个子带信号,也可以是非平均分割音频信号的频带所得到的两个子带信号,例如,音频信号x(n)的有效带宽为0-16kHz,则低频子带信号x

作为子带分解的示例,通过QMF分析滤波器将音频信号分解成低频子带信号x

在一些实施例中,步骤1021B可以通过以下方式实现:对音频信号进行采样处理,得到采样信号,其中,采样信号包括采样得到的多个样本点;对采样信号进行低通滤波处理,得到低通滤波信号;对低通滤波信号进行下采样处理,得到音频信号的低频子带信号;对采样信号进行高通滤波处理,得到高通滤波信号;对高通滤波信号进行下采样处理,得到音频信号的高频子带信号。

这里,音频信号为连续的模拟信号,采样信号为离散的数字信号,采样点为从音频信号中采样得到的采样值。

作为示例,以音频信号为采样率Fs=32000Hz的输入信号为例,对音频信号进行采样,得到包括640个样本点的采样信号x(n)。调用QMF滤波器组中的分析滤波器(2通道),对采样信号进行低通滤波处理,得到低通滤波信号,对采样信号进行高通滤波处理,得到高通滤波信号,对低通滤波信号进行下采样处理,得到音频信号的低频子带信号x

需要说明的是,QMF滤波器组是一个包含分析-合成的滤波器对。对于QMF分析滤波器,可以将输入的采样率为Fs的信号分解成两路采样率为Fs/2的信号,分别表示QMF低通信号和QMF高通信号。解码端恢复出的低通信号和高通信号后,经过QMF合成滤波器进行合成处理,即可以恢复出输入信号对应的采样率Fs的重建信号。

在步骤1022B中,通过第二神经网络,从低频子带信号提取出低频子带信号的低频特征。

需要说明的是,步骤1022B与步骤10221A类似,区别在于步骤10221A的处理对象为音频信号,步骤1022B的处理对象为低频子带信号。其中,第一神经网络与第二神经网络的结构相似。例如,第二神经网络与第一神经网络一样,第二神经网络包括4个编码块,每个编码块包括4个或5个残差单元。

在一些实施例中,步骤1022B可以通过步骤10221B-步骤10222B实现:

在步骤10221B中,对低频子带信号进行特征提取处理,得到低频子带信号的低频特征。

这里,本申请实施例可以基于低频子带信号,调用第二神经网络(NN),通过第二神经网络从低频子带信号中提取低频特征,以便后续继续基于重要的低频特征进行特征提炼。需要说明的是,本申请实施例并不局限于第二NN的结构,第二NN可以是卷积神经网络、深度神经网络等。

在一些实施例,步骤1022B可以通过以下方式实现:通过第二神经网络,对音频信号的低频子带信号进行因果卷积处理,得到因果卷积特征;对因果卷积特征进行池化处理,得到低频子带信号的低频编码特征。

例如,参见图11所示的第二NN的网络结构图,第二NN包括一个因果卷积层、预处理层,首先,调用一个16通道的因果卷积层,可以将输入的张量(即低频子带信号),扩展为16×320的因果卷积特征;然后,通过预处理层对16×320的因果卷积特征进行预处理,例如,对16×320的因果卷积特征进行一次卷积运算后,做因子为2的池化(Pooling)处理、且激活函数可以为参数修正线性单元(PReLU,Parametric Rectified Linear Unit),以生成16×160的张量(即低频编码特征)。

在步骤10222B中,利用第二神经网络包括的至少一个残差单元,对低频编码特征进行残差处理,得到低频子带信号的低频特征。

这里,通过对低频子带信号的低频编码特征进行残差处理,以保证对低频编码特征进行全面学习的同时,还能够更好地利用低频编码特征的浅层特征信息,避免遗漏低频编码特征的浅层特征信息。

在一些实施例中,步骤10222B可以通过步骤102221B-102222B实现。

在步骤102221B中,通过第二神经网络包括的至少一个残差单元,对低频特征进行特征残差处理,得到低频子带信号的残差特征。

在一些实施例中,当至少一个残差单元为一个残差单元时,步骤102221B可以通过以下方式实现:通过一个残差单元,对低频特征进行残差处理,得到低频子带信号的残差特征。

在一些实施例中,当至少一个残差单元为多个级联的残差单元时,步骤102221B可以通过以下方式实现:通过多个级联的残差单元的第一个残差单元,对低频编码特征进行残差处理;将第一个残差单元输出的残差结果输出到后续级联的残差单元,通过后续级联的残差单元继续进行残差处理以及残差结果的输出;将最后一个残差单元输出的残差结果作为低频子带信号的残差特征。

例如,第二神经网络包括4个编码块,每个编码块包括4个或5个残差单元。如图12A所示,当用于特征残差的至少一个残差单元有5个级联的残差单元时,第一个残差单元对低频编码特征进行残差处理,并将第一个残差单元输出的残差结果输出到第二个残差单元;第二个残差单元对第一个残差单元输出的残差结果进行残差处理,并将第二个残差单元输出的残差结果输出到第三个残差单元;第三个残差单元对第二个残差单元输出的残差结果进行残差处理,并将第三个残差单元输出的残差结果输出到第四个残差单元;第四个残差单元对第三个残差单元输出的残差结果进行残差处理,并将第四个残差单元输出的残差结果输出到第五个残差单元;第五个残差单元对第四个残差单元输出的残差结果进行残差处理,得到低频子带信号的残差特征。

本申请各实施例并不局限神经网络中编码块的数量,可以是2个、3个、4个、5个等任意正整数。本申请实施例也不局限编码块中残差单元的数量,可以是2个、3个、4个、5个、6个等任意正整数,多个编码块中的残差单元的数量可以相同也可以不同,例如一个编码块中包含4个残差单元,另一个编码块中包含5个残差单元。

在一些实施例中,残差单元的处理过程如下:通过多个级联的残差单元的第k个残差单元执行以下处理:对第k个残差单元的输入进行卷积处理,得到第k个残差单元的卷积结果;将第k个残差单元的卷积结果与第k个残差单元的输入进行相加处理,得到第k个残差单元输出的残差结果,其中,k为依次递增的正整数,1≤k≤J,J为残差单元的数量,当k为1时,第k个残差单元的输入为低频编码特征,当k不为1时,第k个残差单元的输入为残差特征第k-1个残差单元输出的残差结果。

承接上述实施例,每个残差单元包括空洞卷积算子;对第k个残差单元的输入进行卷积处理,得到第k个残差单元的卷积结果,可以通过以下方式实现:通过多个级联的残差单元的第k个残差单元执行以下处理:对第k个残差单元的输入进行空洞卷积处理,得到第k个残差单元的卷积结果。也就是,通过第一个残差单元包括的空洞卷积算子,对低频编码特征进行空洞卷积处理,得到第一个残差单元的空洞卷积结果。通过多个级联的残差单元的第j个残差单元执行以下处理:通过第j个残差单元包括的空洞卷积算子,对第j-1个残差单元输出的残差结果进行空洞卷积处理,得到第j个残差单元的空洞卷积结果,其中,j为依次递增的正整数,1<j≤J,J为残差单元的数量。需要说明的是,每个残差单元包含指定扩张率(Dilation rate)的空洞卷积算子,使用渐进的扩张率的空洞卷积算子,相当于使用不同感受野提取输入在不同分辨率下的特征,可以更好地对数据进行相对全面的分析。每个残差单元经过扩张率的空洞卷积算子的卷积处理后,与跳连接过来的浅层特征(即每个残差单元的输入)相加,从而直接利用浅层特征信息,使得网络在学习过程中可以充分利用浅层特征信息。

承接上述实施例,每个残差单元不仅包括空洞卷积算子,还包括至少一个因果卷积算子;对第k个残差单元的输入进行卷积处理,得到第k个残差单元的卷积结果之后,通过第k个残差单元包括的至少一个因果卷积算子,对得到的空洞卷积结果进行因果卷积处理,将得到的因果卷积结果作为第k个残差单元的卷积结果。也就是,通过第一个残差单元包括的至少一个因果卷积算子,对第一个残差单元的空洞卷积结果进行因果卷积处理,将得到的因果卷积结果作为第一个残差单元输出的卷积结果。通过第j个残差单元包括的空洞卷积算子,对第j-1个残差单元输出的残差结果进行空洞卷积处理,得到第j个残差单元的空洞卷积结果之后,通过第j个残差单元包括的至少一个因果卷积算子,对第j个残差单元的空洞卷积结果进行因果卷积处理,将第j个残差单元的因果卷积结果作为第j个残差单元的卷积结果。需要说明的是,每个残差单元还包括至少一个因果卷积算子,通过因果卷积算子继续提取输入到因果卷积算子的特征的局部信息。

在一些实施例中,可以对残差单元的卷积算子(包括空洞卷积算子以及因果卷积算子)应用分组卷积,分组卷积就是将输入通道分成多个组别进行卷积运算,只在每个组内的输入通道和输出通道产生关联。需要说明的是,当输入通道被分成多个组别后,对应的输出通道也会分成多个组别,即输入通道的组别数量与输出通道的组别数量相同,从而实现在组内进行卷积后,只在每个组内的输入通道和输出通道产生关联。这里,假定输入某个卷积算子的特征的输入通道为4、输出通道为4。如果分组数为1,每个输入通道均与4个输出通道产生关联。如果分组数为2,首先将4个输入通道分成0-1和2-3两个组,在两个组内,输入通道与本组内的输出通道产生关联,例如第一组中的输入通道0-1与输出通道的0-1相关联,第二组中的输入通道2-3与输出通道的2-3相关联。如图6A所示,当未采用分组卷积方案时,每个输入通道均与4个输出通道产生关联;如图6B所示,当未采用分组卷积方案时,第0个输出通道,只与第0-1输入通道产生关联,不与第2-3输入通道产生关联,第2个输出通道,只与第2-3输入通道产生关联,不与第0-1输入通道产生关联。这样一比较可以看出,引入分组卷积,可以避免任意输入通道与所有输出通道产生关联,减少连接数,可以降低复杂度。

例如,当对残差单元包括的空洞卷积算子应用分组卷积时,对低频编码特征进行空洞卷积处理,可以通过以下方式实现:对低频编码特征的输入通道进行分组处理,得到多个组别,其中,每个组别包括低频编码特征中的至少两个通道对应的第一元素;对每个组别内的第一元素进行空洞卷积处理。当对残差单元包括的因果卷积算子应用分组卷积时,对得到的空洞卷积结果进行因果卷积处理,可以通过以下方式实现:对空洞卷积结果的输入通道进行分组处理,得到多个组别,其中,每个组别包括空洞卷积结果中的至少两个通道对应的第二元素;对每个组别内的第二元素进行因果卷积处理。

承接步骤102221B,在步骤102222B中,对残差特征进行特征编码处理,得到低频子带信号的低频特征。

这里,对残差特征进行特征编码处理,得到低频子带信号的低频特征,以便后续基于低频特征进行信号编码处理,得到音频信号的低频码流。

在一些实施例中,步骤102222B可以通过以下方式实现:对残差特征进行卷积处理,得到卷积特征,其中,卷积特征的通道数大于残差特征的通道数;对卷积特征进行池化处理,得到低频子带信号的低频特征。

例如,基于低频子带信号调用第二NN,经过第二NN中的残差单元处理后,得到残差特征,然后通过第二NN中的卷积层对残差特征进行卷积处理,以增加残差特征的通道数;最后,通过第二NN中的池化层对卷积特征进行池化处理,得到低频子带信号的低频特征。当然,第二NN还可以包括因果卷积层,通过因果卷积层对低频特征进行因果卷积,得到因果卷积后的低频特征,并对因果卷积后的低频子带信号的低频特征进行信号编码处理,得到音频信号的低频码流。

例如,如图11所示,当基于低频子带信号调用第二NN后,通过第二NN得到低频编码特征(图11中预处理后得到的16×160的张量),第二NN包括级联的4个不同下采样因子(Down_factor)的编码块。其中,每个编码块包含一个残差块(包括至少一个残差单元)、一个卷积层以及一个池化层,其中,每个残差块包括5个基于空洞卷积的残差单元(ResidualUnit)(残差单元的输入、输出的特征维度不会产生变化);一个卷积层用于将输入通道数增加一倍,并且激活函数可以为PReLU,从而保证数据量,避免丢失数据;池化层为一个包含Down_factor的池化操作,以完成降采样,实现数据压缩。这里,4个编码块的Down_factor分别设置为2、4、4、5。因此,4个编码块输出通道数分别设置为32、64、128、256。经过4个编码块处理后,输入的16×160张量分别转换成32×80、64×20、128×5和256×1的张量。例如,通过第一个编码块中的残差块,对低频编码特征(即16×160张量)进行残差处理,并将第一个编码块中的残差块输出的残差结果输出到第一个编码块中的特征编码块,经过第一个编码块中的特征编码块(包括一个卷积层以及一个池化层)处理后,得到第一个编码块中的特征编码块的编码结果(即32×80的张量),并将第一个编码块中的特征编码块的编码结果(即32×80的张量)输出到第二个编码块;通过第二个编码块中的残差块,对第一个编码块中的特征编码块的编码结果(即32×80的张量)进行残差处理,并将第二个编码块中的残差块输出的残差结果输出到第二个编码块中的特征编码块,经过第二个编码块中的特征编码块(包括一个卷积层以及一个池化层)处理后,得到第二个编码块中的特征编码块的编码结果(即64×20的张量),并将第一个编码块中的特征编码块的编码结果(即64×20的张量)输出到第三个编码块;依次进行上述处理,将最后一个编码块的输出作为低频特征。其中,本申请实施例并不局限编码块的数量,可以是2个、3个、4个、5个等任意正整数。

在步骤1023B中,对高频子带信号进行高频分析处理,得到高频子带信号的高频特征。

在一些实施例中,可以调用第五神经网络,从高频子带信号中提取出高频子带信号的高频特征,第五神经网络与第二神经网络的结构类似。其中,高频特征的维度小于低频特征的维度。

在一些实施例中,对高频子带信号进行高频分析处理,得到高频子带信号的高频特征,可以通过以下方式实现:对高频子带信号进行分帧处理,得到高频子带信号的多个子帧;对每个子帧进行频带扩展处理,得到每个子帧的子带谱包络;将多个子帧分别对应的子带谱包络,作为高频子带信号的高频特征。其中,多个子帧的数量可以是2个,还可以是4、6等,本申请实施例并不局限于子帧的数量。

这里,由于相对低频子带信号,高频子带信号对质量的重要程度相对低,因此可以通过另一种方法压缩高频子带信号,即频带扩展(从频带受限的窄带语音信号中恢复宽带语音信号),以快速压缩高频子带信号,提取高频子带信号的高频特征。

在一些实施例中,对每个子帧进行频带扩展处理,得到每个子帧的子带谱包络,可以通过以下方式实现:基于子帧包括的多个样本点进行频域变换处理,得到多个样本点分别对应的变换系数;将多个样本点分别对应的变换系数划分为多个子带;对每个子带包括的变换系数进行均值处理,得到每个子带对应的平均能量,并将平均能量作为每个子带对应的子带谱包络。

需要说明的是,本申请实施例的频域变换方法包括改进型离散余弦变换(MDCT,Modified Discrete Cosine Transform)、离散余弦变换(DCT,Discrete CosineTransform)、快速傅立叶变换(FFT,Fast Fourier Transform)等,本申请实施例并不局限于频域变换的方式。本申请实施例的均值处理包括算术平均、几何平均,本申请实施例并不局限于均值处理的方式。

在一些实施例中,基于子帧包括的多个样本点进行频域变换处理,得到多个样本点分别对应的变换系数,包括:针对每个子帧执行以下处理:获取与子帧相邻的相邻子帧;基于相邻子帧包括的多个样本点以及子帧包括的多个样本点,对子帧包括的多个样本点进行离散余弦变换处理,得到子帧包括的多个样本点分别对应的变换系数。

作为示例,对于包括320点的高频子带信号x

在一些实施例中,对每个子带包括的变换系数进行几何均值处理的过程如下:确定每个子带包括的样本点对应的变换系数的平方和;将平方和与子带包括的样本点的数量的比值,确定为得到每个子带对应的平均能量。

承接步骤1023B,在步骤1024B中,将低频特征以及高频特征,确定为音频信号的编码特征。

承接步骤102,在步骤103中,通过目标码率模式,对音频信号的编码特征进行信号编码处理,得到音频信号的音频码流。

在一些实施例中,当目标编码模式为宽带编码模式时,目标码率模式用于指示采用目标码表,对音频信号的编码特征进行信号编码;步骤103可以通过以下方式实现:通过目标码表,对音频信号的编码特征进行量化处理,得到编码特征的量化值;通过目标码表对应的目标码率,对量化值进行熵编码处理,得到音频信号的音频码流。

如图4E所示,图4E是本申请实施例提供的音频编码方法的一个流程示意图,当目标编码模式为超宽带编码模式时,目标码率模式包括指示采用第一码表对低频特征进行信号编码,采用第二码表对高频特征进行信号编码;图4E示出在图4A中的步骤103可以通过步骤1031-步骤1033实现:在步骤1031中,通过第一码表,对低频特征进行量化处理,得到低频特征的量化值,并通过第一码表对应的码率,对低频特征的量化值进行熵编码处理,得到低频子带信号的低频码流;在步骤1032中,通过第二码表,对高频特征进行量化处理,得到高频特征的量化值,并通过第二码表对应的码率,对高频特征的量化值进行熵编码处理,得到高频子带信号的高频码流;在步骤1033中,基于低频码流以及高频码流,构建音频信号的音频码流。其中,不同码表对应的量化程度(即量化精度)可以不同。例如,第一码表的量化精度大于第二码表的量化,由于低频特征中的每一维度的取值区间为[-1,1],可以将[-1,1]的区间平均分为11等份,以形成包含11个元素的第一码表,通过第一码表对低频特征进行量化处理;由于高频特征中的每一维度的取值区间为[-1,1],可以将[-1,1]的区间平均分为5等份,以形成包含5个元素的第二码表,通过第二码表对低高频特征进行量化处理。

这里,对于低频子带信号的低频特征F

需要说明的是,当目标码率模式仅包括指示采用第一码表对低频特征进行信号编码,采用第二码表对高频特征进行信号编码时,结合低频码流以及高频码流,以得到音频信号的音频码流。

在一些实施例中,目标码率模式还包括指示采用第三码表对高频特征的残差特征进行残差编码;步骤1033之前,确定高频子带信号的子帧对应的子带,并将子带划分为多个子集;对每个子集包括的变换系数进行均值处理,得到每个子集对应的平均能量,并将平均能量作为每个子集对应的包络值;在高频特征的量化值中,确定与子集对应的子带的子带谱包络的量化值,并将子集对应的包络值与子带谱包络的量化值的差值,作为第一个残差值;基于第一个残差值,确定高频特征的残差特征;通过第三码表,对高频特征的残差特征进行量化处理,得到高频特征的残差特征的量化值,并通过第三码表对应的码率,对高频特征的残差特征的量化值进行熵编码处理,得到残差特征的残差码流;对应的,步骤1033可以通过以下方式实现:将低频码流、高频码流以及残差码流,作为音频信号的音频码流。其中,第三码表的量化程度可以与第一码表、第二码表的量化程度不同。

在一些实施例中,残差值的数量为N时,N为大于1的正整数,基于第一个残差值,确定高频特征的残差特征,可以通过以下方式实现:确定第n个残差值的量化值,并确定第n个残差值的量化值与对应的子带的子带谱包络的量化值的加和;将子集对应的包络值与加和的差值,作为第n+1个残差值;将N个残差值,确定为高频特征的残差特征;其中,n为依次递增的正整数,1≤n≤N。

以残差值的数量为2进行示例说明,通过以下方式确定残差值:

1)对于每10ms子帧,将子帧划分为4个子带,每个子带进一步均匀划分为2子集。

例如,4个子带的包络值的集合为{e

2)对于每个子带的每一子集,计算该子集的包络值。

例如,所有子集的包络值的集合为{e

3)将每个子集的包络值,减去对应的高频特征向量量化值(即高频特征的量化值),获得第一高频特征向量残差(简称第一个残差值)。

例如,高频特征向量量化值为

4)将上述第一高频特征残差,使用类似的量化和熵编码,得到第一高频特征向量残差量化值(简称第一个残差值的量化值)。

这里,考虑到残差值动态范围较原始值低很多,因此,对每一个残差进行标量量化时,只需分配2bit,这样,需要2*16*50=1.6kbps参考码率(类似地,因为是非均匀分布的熵编码,实际码率一般小于1.6kbps),获得第一高频特征向量残差量化值。

5)将每一子集的包络值,减去对应的高频特征向量量化值与第一高频特征向量残差量化值之和,得到第二高频特征向量残差(简称第二个残差值)。

在步骤104中,基于目标编码模式以及目标码率模式,确定帧头。

这里,可以先构建一个空的帧头,该空的帧头包括编码模式位以及码率模式位,将目标编码模式写入空的帧头包括的编码模式位,将目标码率模式写入空的帧头包括的码率模式位,以确定帧头。本申请实施例并不局限帧头的位数,也不局限目标编码模式以及目标码率模式在帧头中的位置,例如目标编码模式可以写入帧头的第一位,也可以写入帧头的最后一位,也不局限于编码模式位以及码率模式位在帧头所占的位数。

在步骤105中,基于音频码流以及帧头,生成音频信号的音频码流封装。

在一些实施例中,步骤105之前,确定高频子带信号的平坦度边信息;因此,步骤105可以通过以下方式实现:结合音频码流、帧头以及平坦度边信息,得到音频信号的音频码流封装。

例如,将帧头设置在音频码流封装的首位,将音频码流、平坦度边信息设置在帧头的后面,本申请实施例并不局限于音频码流、平坦度边信息的先后顺序。

在一些实施例中,确定高频子带信号的平坦度边信息,可以通过以下方式实现:将高频子带信号的子帧包括的变换系数划分为多个块;确定每个块的第一平坦度,并确定音频信号的低频指定频段的第二平坦度;当第一平坦度小于第二平坦度,或第一平坦度小于平坦度阈值时,将平坦度边信息设置为第一值,其中,第一值表征音频解码时需要进行平坦化处理;当第一平坦度大于或者等于第二平坦度,且第一平坦度大于或者等于平坦度阈值时,将平坦度边信息设置为第二值,其中,第二值表征音频解码时不需要进行平坦化处理。

例如,这里第一值可以为1,第二值为0;第一值也可以为0,第二值为1。

在一些实施例中,帧头还包括至少1位声道位,声道位用于指示采用单声道编码方法或立体声编码方法对音频信号进行音频编码。当音频信号为通过左声道的输入信号以及右声道的输入信号下混后的立体声信号时,将帧头中的声道位设置为第一值(例如1),第一值表示采用立体声编码方法对音频信号进行编码。对左声道的输入信号以及右声道的输入信号进行参数立体声编码,得到立体声特征向量,则基于立体声特征向量、音频码流以及帧头,生成音频信号的音频码流封装;当音频信号为单声道的输入信号时,将帧头中的声道位设置为第二值(例如0),第二值表示采用单声道编码方法对音频信号进行编码,基于音频码流以及帧头,生成音频信号的音频码流封装。

如前所述,本申请实施例提供的音频解码方法可以由各种类型的电子设备实施。参见图5A,图5A是本申请实施例提供的音频解码方法的流程示意图,通过音频解码方法实现音频解码功能,音频解码方法与上述音频编码方法互为逆过程,下面结合图5A示出的步骤进行说明。

在步骤201中,响应于针对音频码流封装的解码请求,从音频码流封装包括的帧头中获取目标编码模式以及目标码率模式。

其中,音频码流封装包括的音频码流是通过目标编码模式以及目标码率模式,对音频信号进行音频编码得到的,目标编码模式是从多个编码模式中获取的,目标码率模式是从多个码率模式中获取的。

这里,解码请求用于指示对音频信号进行音频解码处理。

作为示例,通过如图4A所示的音频编码方法编码得到音频码流封装后,将音频码流封装传输至解码端,解码端接收到音频码流封装后,对音频码流封装进行音频解码处理,首先从音频码流封装包括的帧头中获取目标编码模式以及目标码率模式,例如从帧头包括的编码模式位中获取目标编码模式,从帧头包括的码率模式位中获取目标码率模式。

在步骤202中,通过目标编码模式以及目标码率模式,对音频码流进行信号解码处理,得到音频码流对应的编码特征估计值。

需要说明的是,信号解码是信号编码的逆过程。由于解码端对接收到的码流进行解码的过程是编码端进行编码的过程的逆过程,因此,解码过程中产生的值是相对于编码过程中的值的估计值,例如解码过程中产生的编码特征估计值相对于编码过程中的编码特征是一种估计值。

在一些实施例中,目标编码模式为宽带编码模式,目标码率模式用于指示采用目标码表,对音频信号的编码特征进行信号编码;步骤202可以通过以下方式实现:通过目标码表对应的目标码率,对音频码流进行熵解码处理,得到音频码流对应的量化值;通过目标码表,对音频码流对应的量化值进行逆量化处理,得到音频码流对应的编码特征估计值。

参见图5B,图5B是本申请实施例提供的音频解码方法的流程示意图,目标编码模式为超宽带编码模式,目标码率模式包括指示采用第一码表对音频信号的低频特征进行信号编码,采用第二码表对音频信号的高频特征进行信号编码,音频码流包括低频码流以及高频码流;图5B示出步骤202可以通过步骤2021-步骤2024实现:在步骤2021中,通过目标编码模式,从音频码流中获取低频码流以及高频码流;在步骤2022中,通过第一码表对应的码率,对低频码流进行熵解码处理,得到低频码流对应的量化值,并通过第一码表对低频码流对应的量化值进行逆量化处理,得到低频码流对应的低频特征估计值;在步骤2023中,通过第二码表对应的码率,对高频码流进行熵解码处理,得到高频码流对应的量化值,并通过第二码表对高频码流对应的量化值进行逆量化处理,得到高频码流对应的高频特征估计值;在步骤2024中,基于低频特征估计值以及高频特征估计值,确定音频码流对应的编码特征估计值。

例如,对于低频码流,先通过第一码表对应的码率,对低频码流进行熵解码处理,得到低频码流对应的量化值,并通过查第一码表,获得低频码流对应的低频特征估计值F′

在一些实施例中,音频码流还包括残差码流,目标码率模式还包括指示采用第三码表对音频码流对应的高频特征的残差特征进行残差编码;步骤2024之前,通过第三码表对应的码率,对残差码流进行熵解码处理,得到残差码流对应的量化值,并通过第三码表对残差码流对应的量化值进行逆量化处理,得到残差码流对应的残差特征估计值。对应的,步骤2024可以通过以下方式实现:将高频特征估计值与残差特征估计值的加和,确定为高频特征最终估计值;将低频特征估计值、高频特征最终估计值,确定为音频码流对应的编码特征估计值。

其中,高频特征估计值中的第i个值分别与残差特征估计值中的第2i-1个值以及第2i个值相加,分别得到高频特征最终估计值中的第2i-1个值以及第2i个值。例如,高频特征估计值为F′

在步骤203中,通过目标编码模式,对音频码流对应的编码特征估计值进行重建处理,得到音频码流对应的合成音频信号。

需要说明的是,重建过程是提取过程的逆过程。由于解码端对接收到的码流进行解码的过程是编码端进行编码的过程的逆过程,因此,解码过程中产生的值是相对于编码过程中的值的估计值,例如解码过程中产生的合成音频信号相对于编码过程中的音频信号是一种估计值。

在一些实施例中,目标编码模式为宽带编码模式,步骤203可以通过以下方式实现:基于宽带编码模式调用第三神经网络;通过第三神经网络,对音频码流对应的编码特征估计值进行重建处理,得到音频码流对应的合成音频信号。

需要说明的是,通过第三神经网络进行重建过程是通过第一神经网络进行提取过程的逆过程。

作为示例,对音频码流对应的编码特征估计值进行重建处理,得到音频码流对应的合成音频信号,可以通过以下方式实现:利用第三神经网络包括的至少一个残差单元,对音频码流对应的编码特征估计值进行残差处理,得到音频码流对应的音频特征估计值;对音频码流对应的音频特征估计值进行特征重建处理,得到音频码流对应的合成音频信号。其中,第三神经网络包括4个解码块,每个解码块包括4个或5个残差单元。

本申请各实施例并不局限解码块的数量,可以是2个、3个、4个、5个等任意正整数。本申请各实施例也不局限解码块中残差单元的数量,可以是2个、3个、4个、5个、6个等任意正整数。参见图5C,图5C是本申请实施例提供的音频解码方法的流程示意图,目标编码模式为超宽带编码模式,图5C示出步骤203可以通过步骤2031-步骤2033实现:

在步骤2031中,通过第四神经网络,对编码特征包括的低频特征估计值进行特征重建处理,得到音频码流对应的低频子带信号估计值。其中,第四神经网络的结构与第三神经网络的结构相似。

在一些实施例中,步骤2031可以通过步骤20311-20312实现。

在步骤20311中,利用第四神经网络包括的至少一个残差单元,对低频特征估计值进行残差处理,得到低频编码特征估计值。其中,第四神经网络包括4个解码块,每个解码块包括4个或5个残差单元。

在一些实施例中,步骤20311可以通过步骤203111-步骤203112实现:

在步骤203111中,对低频特征估计值进行特征解码处理,得到残差特征。

例如,特征解码是特征编码的逆过程,对低频特征估计值进行特征解码处理,得到残差特征(一种估计值)。

在一些实施例中,步骤203111可以通过以下方式实现:对低频特征进行卷积处理,得到卷积特征,其中,卷积特征的通道数小于低频特征的通道数;对卷积特征进行上采样处理,得到残差特征。

当然,在步骤203111之前,还可以对低频特征进行因果卷积,得到因果卷积后的低频特征,并基于因果卷积后的低频特征执行步骤203111,即对因果卷积后的低频特征进行特征解码处理,得到残差特征。

在步骤203112中,通过第四神经网络包括的至少一个残差单元,对残差特征进行特征残差处理,得到低频编码特征估计值。

这里,通过对残差特征进行残差处理,以保证对残差特征进行全面学习的同时,还能够更好地利用残差特征的浅层特征信息,避免遗漏浅层特征信息。

在一些实施例中,当至少一个残差单元为多个级联的残差单元时,步骤203112可以通过以下方式实现:通过一个残差单元,对残差特征进行残差处理,得到低频编码特征估计值。

在一些实施例中,当至少一个残差单元为多个级联的残差单元时,步骤203112可以通过以下方式实现:通过多个级联的残差单元的第一个残差单元,对残差特征进行残差处理;将第一个残差单元输出的残差结果输出到后续级联的残差单元,通过后续级联的残差单元继续进行残差处理以及残差结果的输出;将最后一个残差单元输出的残差结果作为低频编码特征估计值。

在一些实施例中,残差单元的处理过程如下:通过多个级联的残差单元的第k个残差单元执行以下处理:对第k个残差单元的输入进行卷积处理,得到第k个残差单元的卷积结果;将第k个残差单元的卷积结果与第k个残差单元的输入进行相加处理,得到第k个残差单元输出的残差结果,其中,k为依次递增的正整数,1≤k≤J,J为残差单元的数量,当k为1时,第k个残差单元的输入为残差特征,当k不为1时,第k个残差单元的输入为第k-1个残差单元输出的残差结果。

承接上述实施例,每个残差单元包括空洞卷积算子;对第k个残差单元的输入进行卷积处理,得到第k个残差单元的卷积结果,可以通过以下方式实现:通过多个级联的残差单元的第k个残差单元执行以下处理:对第k个残差单元的输入进行空洞卷积处理,得到第k个残差单元的卷积结果。也就是,通过第一个残差单元包括的空洞卷积算子,对残差特征进行空洞卷积处理,得到第一个残差单元的空洞卷积结果。通过多个级联的残差单元的第j个残差单元执行以下处理:通过第j个残差单元包括的空洞卷积算子,对第j-1个残差单元输出的残差结果进行空洞卷积处理,得到第j个残差单元的空洞卷积结果,其中,j为依次递增的正整数,1<j≤J,J为残差单元的数量。

承接上述实施例,每个残差单元不仅包括空洞卷积算子,还包括至少一个因果卷积算子;对第k个残差单元的输入进行卷积处理,得到第k个残差单元的卷积结果之后,通过第k个残差单元包括的至少一个因果卷积算子,对得到的空洞卷积结果进行因果卷积处理,将得到的因果卷积结果作为第k个残差单元的卷积结果。也就是,通过第一个残差单元包括的至少一个因果卷积算子,对第一个残差单元的空洞卷积结果进行因果卷积处理,将得到的因果卷积结果作为第一个残差单元输出的卷积结果。通过第j个残差单元包括的空洞卷积算子,对第j-1个残差单元输出的残差结果进行空洞卷积处理,得到第j个残差单元的空洞卷积结果之后,通过第j个残差单元包括的至少一个因果卷积算子,对第j个残差单元的空洞卷积结果进行因果卷积处理,将第j个残差单元的因果卷积结果作为第j个残差单元的卷积结果。

在一些实施例中,当对残差单元包括的空洞卷积算子应用分组卷积时,对低频特征进行空洞卷积处理,可以通过以下方式实现:对残差特征的输入通道进行分组处理,得到多个组别,其中,每个组别包括残差特征中的至少两个通道对应的第一元素;对每个组别内的第一元素进行空洞卷积处理。当对残差单元包括的因果卷积算子应用分组卷积时,对得到的空洞卷积结果进行因果卷积处理,可以通过以下方式实现:对空洞卷积结果的输入通道进行分组处理,得到多个组别,其中,每个组别包括空洞卷积结果中的至少两个通道对应的第二元素;对每个组别内的第二元素进行因果卷积处理。

在一些实施例中,用于音频解码的第四神经网络包括多个级联的解码块,每个解码块包括特征解码块以及至少一个残差单元;步骤203111可以通过步骤203111A实现,步骤203112可以通过步骤203112A实现:在步骤203111A中,通过多个级联的解码块中的特征解码块,对低频特征进行特征解码处理,得到残差特征;对应的,在步骤203112A中,通过多个级联的解码块中的至少一个残差单元,对残差特征进行残差处理,得到低频编码特征估计值。

在一些实施例中,步骤203111A可以通过以下方式实现:通过多个级联的解码块的第一个解码块中的特征解码块,对低频特征进行特征解码处理,并将第一个解码块中的特征解码块输出的解码结果输出到第一个解码块中的至少一个残差单元;通过多个级联的解码块的第i个解码块中的特征解码块,对第i-1个解码块中的至少一个残差单元输出的残差结果进行特征解码处理,并将第i个解码块中的特征解码块输出的解码结果输出到第i个解码块中的至少一个残差单元;将最后一个解码块中的特征解码块输出的解码结果作为残差特征;其中,i为依次递增的正整数,1<i≤I,I为解码块的数量。其中,第一个解码块中的特征解码块输出的解码结果是通过多个级联的解码块的第一个解码块中的特征解码块执行以下处理得到的:对低频特征进行卷积处理,得到卷积特征,其中,卷积特征的通道数小于低频特征的通道数;对卷积特征进行上采样处理,得到第一个解码块中的特征解码块输出的解码结果。其中,第i个解码块中的特征解码块输出的解码结果是通过第i个解码块中的特征解码块执行以下处理得到的:对第i-1个解码块中的至少一个残差单元输出的残差结果进行卷积处理,得到卷积特征,其中,卷积特征的通道数小于至少一个残差单元输出的残差结果的通道数;对卷积特征进行上采样处理,得到第i个解码块中的特征解码块输出的解码结果。

作为示例,第四神经网络包括4个解码块,每个解码块包括4个或5个残差单元。

在一些实施例中,步骤203112A可以通过以下方式实现:通过多个级联的解码块的最后一个解码块中的至少一个残差单元,对残差特征进行残差处理,得到低频编码特征估计值。

在步骤2032中,对编码特征包括的高频特征估计值进行高频重建处理,得到音频码流对应的高频子带信号估计值。

需要说明的是,解码端的特征重建是编码端的提取过程的逆过程,解码端的高频重建是编码端的高频分析的逆过程。

在一些实施例中,对编码特征包括的高频特征估计值进行高频重建处理,得到音频码流对应的高频子带信号估计值,可以通过以下方式实现:调用第六神经网络,对编码特征包括的高频特征估计值进行特征重建处理,得到音频码流对应的高频子带信号估计值,其中,第六神经网络与第三神经网络的结构类似。

在一些实施例中,步骤2032可以通过步骤20321-步骤20324实现:

在步骤20321中,对低频子带信号估计值包括的前半部分的样本点以及后半部分的样本点进行频域变换处理,得到前半部分的样本点对应的第一变换系数以及后半部分的样本点对应的第二变换系数。

需要说明的是,本申请实施例的频域变换方法包括改进型离散余弦变换(MDCT,Modified Discrete Cosine Transform)、离散余弦变换(DCT,Discrete CosineTransform)、快速傅立叶变换(FFT,Fast Fourier Transform)等,本申请实施例并不局限于频域变换的方式。

在步骤20322中,基于第一变换系数,对高频特征估计值进行频带扩展的逆处理,得到第一高频子带信号估计值。

在一些实施例中,步骤20322可以通过以下方式实现:对第一变换系数中的后半部分的变换系数进行频谱复制处理,得到参考高频子带信号的第一参考变换系数;基于高频特征估计值对应的前半部分子带谱包络,对第一参考变换系数进行增益处理,得到增益后的第一参考变换系数;对增益后的第一参考变换系数进行反频域变换处理,得到第一高频子带信号估计值。

在一些实施例中,基于高频特征估计值对应的前半部分子带谱包络,对第一参考变换系数进行增益处理,得到增益后的第一参考变换系数,包括:基于前半部分子带谱包络,将参考高频子带信号的第一参考变换系数划分为多个第一子带;针对多个第一子带中的任意第一子带执行以下处理:确定前半部分子带谱包络中与第一子带对应的第一平均能量,并确定第一子带对应的第二平均能量;基于第一平均能量与第二平均能量的比值,确定增益因子;将增益因子与第一子带包括的每个第一参考变换系数相乘,得到增益后的第一参考变换系数。

作为示例,先将解码端生成的低频子带信号估计值x′

然后,针对第一组160个点的MDCT系数(即前半部分的样本点对应的第一变换系数),将由x′

接下来,调用前面获得的8个子带谱包络(即通过查询量化表后得到的8个子带谱包络,即高频特征对应的子带谱包络),这8个子带谱包络对应8个高频子带,并将生成的160个点的参考高频子带信号的MDCT系数的参考值分为8个参考高频子带(即将参考高频子带信号的第一参考变换系数划分为多个第一子带),分带地,基于一个高频子带与对应的参考高频子带,对生成的320点的参考高频子带信号的MDCT系数的参考值进行增益控制(频域上就是做乘法),例如根据高频子带的平均能量(即第一平均能量)与对应的参考高频子带的平均能量(第二平均能量)计算增益因子,将该对应的参考高频子带中的每个点对应的MDCT系数乘以增益因子,确保解码虚拟生成的高频MDCT系数的能量,与编码端原始的系数能量接近。

例如,假定参考高频子带(即由生成的高频部分信号的160个点的MDCT系数的参考值所划分得到的第一子带)的平均能量是Y_L,当前高频子带(即基于码流解码出来的子带谱包络对应的子带)的平均能量是Y_H,则计算一个增益因子a=sqrt(Y_H/Y_L),其中,sqrt()表示平方根计算函数,用于计算(Y_H/Y_L)的平方根。有了增益因子a后,直接将参考高频子带中的每个点的MDCT系数均乘以a。经过增益控制后的MDCT系数(虚拟生成的)的平均能量,就跟编码端原始的非常接近的。

最后,调用MDCT反变换,生成高频子带信号的第一子帧的估计值(即第一高频子带信号估计值)。

在步骤20323中,基于第二变换系数,对高频特征估计值进行频带扩展的逆处理,得到第二高频子带信号估计值。

这里,步骤20323与步骤20322类似,区别在于步骤20323的处理对象为第二变换系数,步骤20322的处理对象为第一变换系数。

在一些实施例中,步骤20323可以通过以下方式实现:对第二变换系数中的后半部分的变换系数进行频谱复制处理,得到参考高频子带信号的第二参考变换系数;基于高频特征估计值对应的后半部分子带谱包络,对第二参考变换系数进行增益处理,得到增益后的第二参考变换系数;对增益后的第二参考变换系数进行反频域变换处理,得到第二高频子带信号估计值。

在一些实施例中,基于高频特征估计值对应的后半部分子带谱包络,对第二参考变换系数进行增益处理,得到增益后的第二参考变换系数,包括:基于后半部分子带谱包络,将参考高频子带信号的第二参考变换系数划分为多个第二子带;针对多个第二子带中的任意第二子带执行以下处理:确定后半部分子带谱包络中与第二子带对应的第一平均能量,并确定第二子带对应的第二平均能量;基于第一平均能量与第二平均能量的比值,确定增益因子;将增益因子与第二子带包括的每个第二参考变换系数相乘,得到增益后的第二参考变换系数。

在步骤20324中,结合第一高频子带信号估计值以及第二高频子带信号估计值,得到音频码流对应的高频子带信号估计值。

在步骤2033中,对低频子带信号估计值以及高频子带信号估计值进行子带合成,得到音频码流对应的合成音频信号。

例如,子带合成处理是子带分解处理的逆过程,解码端对低频子带信号以及高频子带信号进行子带合成处理,以恢复出合成音频信号,其中,合成音频信号即为恢复出的重建信号。

在一些实施例中,对低频子带信号以及高频子带信号进行子带合成处理,得到合成音频信号,包括:对低频子带信号进行上采样处理,得到低通滤波信号;对高频子带信号进行上采样处理,得到高频滤波信号;对低通滤波信号以及高频滤波信号进行滤波合成处理,得到合成音频信号。

例如,在获取低频子带信号以及高频子带信号后,通过QMF合成滤波器对低频子带信号以及高频子带信号进行子带合成以恢复出合成音频信号。

在一些实施例中,帧头还包括至少1位声道位,声道位用于指示采用单声道解码方法或立体声解码方法对音频码流进行音频解码。当音频码流封装包括的帧头中的声道位为第一值时,表示需要采用立体声解码方法对音频码流进行解码,即通过解码出的合成音频信号以及音频码流封装中的立体声特征向量,重建出合成立体声信号;当音频码流封装包括的帧头中的声道位为第二值时,表示需要采用单声道解码方法对音频码流进行音频解码,即将解码出的合成音频信号作为单声道的合成音频信号。

下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。

本申请实施例可以应用于各种音频场景,例如语音通话、即时通信等。下面以语音通话为例进行说明:

相关技术中,语音编码原理大致如下:语音编码可以直接对语音波形样本,逐样本地进行编码;或者,基于人的发声原理,提取相关低维度特征,编码端对特征进行编码,解码端基于这些参数重建语音信号。

上述编码原理均来自语音信号建模,即基于信号处理的压缩方法。为了相对于基于信号处理的压缩方法,在保证语音编码效率的情况下,提高编码质量。本申请实施例提供一种多模式多速率语音编码方法(即音频编码方法以及音频解码方法),基于音频信号特点,对于重要的部分(低频子带信号),基于神经网络(NN,Neural Network)技术进行处理后,会得到比输入的低频子带信号更低维度的特征向量。其中,神经网络内部采用类似“分块”的操作,可以降低算法复杂度,提高编码效果。针对低频特征向量(即上述低频特征),可以基于同一个低频特征向量,采用不同量化精度的码表进行量化和编码,实现多速率编解码效果。对于高频特征向量(即上述高频特征),采用多级量化和编码,实现多速率编解码效果。

本申请实施例可应用于如图6C所示的语音通信链路,以基于网际互连协议的语音传输(VoIP,Voice over Internet Protocol)会议系统为例,将本申请实施例涉及的语音编解码技术部署在编码和解码部分,以解决语音压缩的基本功能。编码器部署在上行客户端601,解码器部署在下行客户端602,通过上行客户端采集语音,并进行前处理增强、编码等处理,将编码得到的码流通过网络传输至下行客户端602,通过下行客户端602进行解码、增强等处理,以在下行客户端602回放解码出的语音。

考虑前向兼容(即新的编码器与已有的编码器兼容),需要在系统的后台(即服务器)部署转码器,以解决新的编码器与已有的编码器互联互通问题。例如,如果发送端(上行客户端)是新的NN编码器,接收端(下行客户端)是公用电话交换网(PSTN,Public SwitchedTelephone Network)(G.722)。在后台,需要执行NN解码器生成语音信号,然后调用G.722编码器生成特定码流,以实现转码功能,才能让接收端基于特定码流进行正确解码。

下面在具体介绍本申请实施例提供的多模式多速率语音编码方法之前,先介绍QMF滤波器组、空洞卷积网络、频带扩展。

QMF滤波器组是一个包含分析-合成的滤波器对。对于QMF分析滤波器,可以将输入的采样率为Fs的信号分解成两路采样率为Fs/2的信号,分别表示QMF低通信号和QMF高通信号。如图8所示的QMF滤波器的低通部分H_Low(z)和高通部分H_High(z)的频谱响应。基于QMF分析滤波器组的相关理论知识,可以容易地描述上述低通滤波和高通滤波的系数之间的相关性,如公式(1)所示:

h

其中,h

类似地,根据QMF相关理论,可以基于QMF分析滤波器组H_Low(z)和H_High(z),描述QMF合成滤波器组,如公式(2)所示。

G

G

其中,G

解码端恢复出的低通和高通信号,经过QMF合成滤波器组进行合成处理,即可以恢复出输入信号对应的采样率Fs的重建信号(即合成信号)。

参见图9A和图9B,图9A是本申请实施例提供的普通卷积(例如因果卷积)网络的示意图,图9B是本申请实施例提供的空洞卷积网络的示意图。相对普通卷积网络,空洞卷积能够增加感受野的同时保持特征图的尺寸不变,还可以避免因为上采样、下采样引起的误差。虽然图9A和图9B中示出的卷积核大小(Kernel Size)均为3×3;但是,图9A所示的普通卷积的感受野901只有3,而图9B所示的空洞卷积的感受野902达到了5。也就是说,对于尺寸为3×3的卷积核,图9A所示的普通卷积的感受野为3、扩张率(Dilation Rate)(卷积核中的点的间隔数量)为1;而图9B所示的空洞卷积的感受野为5、扩张率为2。

卷积核还可以在类似图9A或者图9B的平面上进行移动,这里是涉及移位率(Stride Rate)(步长)概念。比如,每次卷积核移位1格,则对应的移位率为1。

此外,还有卷积通道数的概念,就是用多少个卷积核对应的参数去进行卷积分析。理论上,通道数越多,对信号的分析更为全面,精度越高;但是,通道越高,复杂度也越高。比如,一个1×320的张量,可以使用24通道卷积运算,输出就是24×320的张量。

需要说明的是,可以根据实际应用需要,自行定义空洞卷积核大小(例如:针对语音信号,卷积核的大小可以设置为1×3)、扩张率、移位率和通道数,本申请实施例对此不作具体限定。

如图10所示的频带扩展(或者频带复制)示意图,先重建宽带信号,然后将宽带信号复制到超宽带信号上,最后基于超宽带包络进行整形,图10示出的频域实现方案具体包括:

1)在低采样率下,实现一个核心层编码;2)选择低频部分的频谱复制到高频;3)根据提前记录的边界信息(描述高频与低频的能量相关性等),对复制的高频频谱进行增益控制。仅需1-2kbps码率,就可以产生采样率翻倍的效果。

下面将结合单声道信号中的高频部分以及低频部分对本申请实施例提供的低复杂度低码率神经网络语音压缩方法进行说明。

下面结合图7说明本申请实施例提供的多模式多速率语音编码方法:

对于编码端执行如下处理:

对第n帧的输入音频信号x(n),使用分析滤波器分解为低频子带信号x

对于低频子带信号x

对于高频子带信号x

对子带信号对应的特征向量(即F

对于解码端执行如下处理:

对解码端接收到码流(包括低频码流以及高频码流)进行解码,分别获得低频特征向量的估计值F′

对于低频部分,基于低频特征向量的估计值F′

对于高频部分,基于高频特征向量的估计值F′

最后,调用QMF合成滤波,生成重建的合成语音信号x′(n)。

下面对本申请实施例提供的多模式多速率语音编码方法进行具体说明。

在一些实施例中,以采样率Fs=32000Hz的语音信号为例(需要说明的是,本申请实施例提供的方法也适用于其他采样率的场景,包括但不限于:8000Hz、32000Hz、48000Hz)。同时,假设帧长设置为20ms,因此,对于Fs=32000Hz,相当于每帧包含640个样本点。

下面参考图7所示的流程图,将编码端和解码端进行详细描述。

关于单声道信号的低频部分以及高频部分的编码端的流程如下:

针对采样率Fs=32000Hz的音频信号(单声道信号),对于第n帧的输入信号包括640个样本点,记为输入信号x(n),即单声道的输入信号。

步骤11、调用QMF分析滤波器进行信号分解。

调用QMF分析滤波器(2通道QMF),进行下采样,可以获得两部分子带信号,即低频子带信号x

步骤12、基于低频子带信号,调用第二NN。

基于低频子带信号x

参见图11所示的第二NN的网络结构图,下面具体说明第二NN进行数据压缩的流程:

首先,调用一个16通道的因果卷积,可以将输入的张量(即向量),扩展为16×320的张量。

然后,对16×320的张量进行预处理。例如,对16×320的张量进行一次卷积运算后,做因子为2的池化(Pooling)操作、且激活函数可以为PReLU,以生成16×160的张量。

接下来,级联4个不同下采样因子(Down_factor)的编码块。其中,每个编码块包含一个残差块、一个卷积层以及一个池化层,其中,每个残差块包括5个基于空洞卷积的残差单元(Residual Unit)(残差单元的输入、输出的特征维度不会产生变化);一个卷积层用于将输入通道数增加一倍,并且激活函数可以为PReLU,从而保证数据量,避免丢失数据;池化层为一个包含Down_factor的池化操作,以完成降采样,实现数据压缩。这里,4个编码块的Down_factor分别设置为2、4、4、5。因此,4个编码块输出通道数分别设置为32、64、128、256。经过4个编码块处理后,输入的16×160张量分别转换成32×80、64×20、128×5和256×1的张量。其中,本申请实施例并不局限编码块的数量,可以是2个、3个、4个、5个等任意正整数。另外,本申请实施例并不局限编码块中残差单元的数量,可以是2个、3个、4个、5个、6个等任意正整数,多个编码块中的残差单元的数量可以相同也可以不同,例如一个编码块中包含4个残差单元,另一个编码块中包含5个残差单元。

这里进一步对残差单元(Residual Unit)进行介绍。残差单元是指一种深度神经网络中的模块,通过在神经网络中引入跨层连接,使得神经网络在训练过程中更易优化,避免梯度消失或梯度爆炸等问题。其核心思想是在模块内部对输入进行残差学习,即通过一条直接的路径将输入信息绕过一部分层,直接传递到输出,使得网络在学习过程中可以更好地利用浅层特征信息。图12A为第三NN中编码块中使用的残差块结构示意图,此残差块包括4个基于空洞卷积的残差单元,每个残差单元包含指定扩张率(Dilation rate)的空洞卷积块,也就是每个空洞卷积块里包含指定扩张率(如Dilation rate=3)的卷积算子。本申请实施例中,使用5种渐进的扩张率的空洞卷积块,相当于使用不同感受野提取输入在不同分辨率下的特征,可以更好地对数据进行相对全面的分析。经过5个指定扩张率的空洞卷积块的残差处理后,与跳连接过来的输入相加,得到残差块的输出结果,并将输出结果输出到与残差块连接的卷积层。

这里,进一步对图12A任意一个残差单元进行描述,如图12B所示。对于任意一个残差单元,内部包含至少一个指定扩张率的空洞卷积(用于扩大感受野),可以用PReLU作为激活函数;此外,还可以级联一个或者多个因果卷积(用于提取局部信息),可以用PReLU作为激活函数。上述指定扩张率的空洞卷积的卷积核大小可以是3、5、7、9等,上述因果卷积的卷积核大小可以是1、3等。本申请本实施例并不限制上述指定扩张率的空洞卷积或者因果卷积的卷积核大小。另外,本申请实施例中的因果卷积或空洞卷积也可以由其他具体相似或等同功能的卷积单元实施。

此外,对于残差单元,为了减少算法复杂度,引入了分组卷积的算法。分组卷积就是将输入通道分成多个组别进行卷积运算,只在每个组内的输入通道和输出通道产生关联。这里,假定输入通道为16、输出通道为32。如果分组数为1,每个输入通道均与32个输出通道产生关联。如果分组数为2,首先将16个输入通道分成0-7和8-15两个组,在两个组内,输入通道与本组内的输出通道产生关联,例如第一组中的输入通道0-7与输出通道的0-15相关联,第二组中的输入通道8-15与输出通道的16-31相关联,比如第0个输出通道,只与第0-7输入通道产生关联,不与第8-15输入通道产生关联,第25个输出通道,只与第8-15输入通道产生关联,不与第0-7输入通道产生关联。这样一比较可以看出,引入分组卷积,可以避免任意输入通道与所有输出通道产生关联,减少连接数,可以降低复杂度。当然,由于分组数越大,输入通道和输出通道的关联度越小,也会影响编码效果,因此并不是分组数越大越好。本申请实施例中,4个编码块中对应的5个残差块包含的空洞卷积,可以使用不同的分组数配置,具体的分组数配置如表1所示。

表1.不同编码块中残差单元使用的分组数配置

最后,对256×1的张量,再经过类似预处理的因果卷积,可以输出一个56维的特征向量F

步骤13、对高频子带信号x

高频分析的目的是提取高频子带信号x

在一些实施例中,可以参考步骤12,引入另一个与第二NN类似的结构,生成低维度的特征向量。相对低频子带信号,高频子带信号对质量的重要程度相对低,因此,针对高频子带信号的NN结构也无需像第二NN那么复杂。针对高频子带信号的NN结构与第二NN的结构类似,但是相比第二NN的结构,高频子带信号的NN结构大幅度减少通道数。

本申请实施例提出另一种方法压缩高频子带信号,即频带扩展(从频带受限的窄带音频信号中恢复宽带音频信号)。下面具体介绍本申请实施例中频带扩展的应用:

对于包括320个点(即样本点)的高频子带信号x

对于任意一子帧,即包括160个点的高频子带信号,调用改进型离散余弦变换(MDCT,Modified Discrete Cosine Transform),生成160个点的MDCT系数。具体地,如果是50%交叠,可以将第n+1帧的第一子帧与第n帧的第二子帧合并(拼接),计算320个点的MDCT,获得第n+1帧的第一子帧的160个点的MDCT系数;将第n+1帧的第二子帧与第n+1帧的第一子帧合并,计算320点MDCT,获得第n+1帧的第二子帧的160个点MDCT系数。

对于上述2个子帧中任意一个子帧的160个点MDCT系数,使用同样的方式进行以下处理:将160个点的MDCT系数分成N个子带,这里的子带就是将相邻的多个MDCT系数组成一组,160个点的MDCT系数可以分成4个子带。例如,可以均匀分配160个点,即每个子带包括的点的数量一致。当然,本申请实施例不可以对160个点进行非均匀划分,比如偏低频的子带包括的MDCT系数更少(频率分辨率更高),偏高频的子带包括的MDCT系数更多(频率分辨率更低)。

根据奈奎斯特(Nyquist)采样定律(要从抽样信号中无失真地恢复原信号,抽样频率应大于2倍原信号最高频率,抽样频率小于2倍频谱最高频率时,信号的频谱有混叠,抽样频率大于2倍频谱最高频率时,信号的频谱无混叠),上述320个点的MDCT系数表示了8-16kHz的频谱。但超宽带语音通信,不一定要求频谱到16kHz,比如,如果设置频谱到14kHz,只需要考虑前240个点的MDCT系数,对应地,子带数可以控制为6。

对于每一个子带,计算当前子带中所有MDCT系数的平均能量作为子带谱包络(频谱包络是经过频谱各主峰值点的平滑曲线),比如,当前子带中包括的MDCT系数为x(n),n=1,2,…,40,则平均能量Y=((x(1)

总之,使用上述两种方法(NN结构和频带扩展)中任意一种方法,均可以将160维的高频子带信号,输出为一个4维的特征向量。因此,对于每20ms帧,最少只需8维数据,即可表示高频信息,编码效率显著提升。

步骤14、量化编码。

对于低频子带信号的特征向量F

这里针对低频特征向量F

另外,为了实现对低频特征向量F

对于上面的实现方式的码表,即每一个维度包含11个元素的码表,命名为低频码表-1,参考码率为9.69kbps。

类似地,对于每一维度,将[-1,1]的区间平均分成9等份,熵为3.17,平均码率为3.17*56*50/1000=8.88kbps。将其命名为低频码表-2,参考码率为8.88kbps。这样,就有至少2种码率方式,不同码率对应不同的质量;实现了多速率编码。

依此类推,对于每一维度,将[-1,1]的区间平均分成7等份,平均码率为7.86kbps,将其命名为低频码表-3;将[-1,1]的区间平均分成5等份,平均码率为6.50kbps,将其命名为低频码表-4。

这样,对于每一帧数据计算获得的原始56维特征向量,通过量化精度的配置,就实现了至少4个码率的低频特征的编码模式。需要说明的是,本申请实施例,并不限制其它多码率构造方式和码表数量。

对于每帧(包含2个子帧)的8维高频子带信号的特征向量F

另外,为了实现对高频特征向量F

1)对于每10ms子帧,将子帧的4个子带,进一步均匀划分为2子集。

例如,4个子带的包络值的集合为{e

2)对于每个子带的每一子集,计算该子集的包络值。

例如,所有子集的包络值的集合为{e

3)将每个子集的包络值,减去对应的高频特征向量量化值,获得第一高频特征向量残差(简称第一个残差值)。

例如,高频特征向量量化值为

4)将上述第一高频特征残差,使用类似的量化和熵编码,得到第一高频特征向量残差量化值(简称第一个残差值的量化值)。

这里,考虑到残差值动态范围较原始值低很多,因此,对每一个残差进行标量量化时,只需分配2bit,这样,需要2*16*50=1.6kbps参考码率(类似地,因为是非均匀分布的熵编码,实际码率一般小于1.6kbps),获得第一高频特征向量残差量化值。

5)将每一子集的包络值,减去对应的高频特征向量量化值与第一高频特征向量残差量化值之和,得到第二高频特征向量残差(简称第二个残差值)。

这里,类似地,可以使用1.6kbps参考码率,完成第二高频特征向量残差的量化和熵编码。

依此类推,随着更多残差被计算,就可以保证在解码端重建的高频特征向量,无限逼近原始高频特征向量。此外,根据有无高频特征向量残差,或者高频特征向量残差的数量,实现了多速率编码效果。本申请实施例可根据码率要求,定义残差编码的类型数(无残差编码、第一高频特征向量残差、第二高频特征向量残差、第三高频特征向量残差等),在此不做限制。

此外,本申请实施例提供一种在编码端额外提取边信息的方案,用于指导解码端更为精细的处理,以提升音频质量。原理上,频带扩展主要功能是将低频的频谱复制到高频,然后进行增益控制。然而,高频频谱相对低频频谱,更为平坦,没有那么多谐波成份。如果直接复制然后增益控制,可能造成人工生成的高频包含过多谐波成份。因此,本申请实施例提出在编码端进行特定边信息估计,并写入码流。解码端基于上述平坦度边信息,确实是否要在解码端做额外处理。需要说明的是,上述平坦度边信息,只会在解码端提示当前帧是否需要做额外处理。一种特殊的情况下,整个语音都不需要做额外处理。

上述边信息估计,在编码端的实现如下:

1)对于每10ms的子帧,将160个点的MDCT系数分成两个块。可以均匀分割,也可以前2个子带的MDCT系数作为第一个块,后2个子带的MDCT系数作为第二个块。

2)对于每个块,计算每个MDCT系数的乘方,即p(i)=c(i)

3)计算当前块所有MDCT系数的算术平均值:

4)计算当前块所有MDCT系数的几何平均值:

5)计算当前块的第一平坦度

6)类似地,计算低频指定频段的MDCT系数的第二平坦度sfp

7)当(sfp

这里,当如果Sfp_FLAG=1,表示解码端需要额外操作,避免高频人为产生过多谐波。按照上述操作,每帧需要额外4个比特,表示2个10ms子帧中两个块的平坦度边信息。本申请实施例不局限于上述提取方式,还可以是其它分析方式,提取上述平坦度边信息,以指导后面解码端进行解码处理。

量化编码后,可以生成码流。根据实验,在5-10kbps范围,可以对16kHz宽带信号实现高质量压缩;在8-15kbps,可以对32kHz超宽带信号实现高质量压缩。

此外,为了实现上述多模式多速率编解码的目标,需要设计好码流结构。如图13A-图13E所示,码流结构的实现形式如下:

对于每帧码流,一般包含8bit帧头。其中,8bit帧头至少包含1bit编码模式位,根据1bit编码模式位可知是使用宽带编码(1bit编码模式位的数值为0)还是超宽带编码(1bit编码模式位的数值为1),即编码模式包括两种(宽带编码以及超宽带编码)。此外,还包含2bit编码速率位,根据2bit编码速率位可知在对应的宽带编码模式或者超宽带编码模式下,使用哪种码率模式。需要说明的是,本申请实施例并不局限1bit编码模式位、2bit编码速率位在帧头中的位置,例如1bit编码模式位可以位于帧头的第一位,2bit编码速率位可以位于帧头的最后两位。

如图13A所示,对于宽带编码模式,帧头后紧跟56维低频特征向量索引。因为是熵编码,编码长度不一。如上所述,根据2bit码率模式位,使用不同低频码表量化编码后的低频码流,保存在56维低频特征向量索引这一部分。

对于宽带编码模式下的2bit编码速率位进行如下解释:

1)00,表示使用低频码表-4,参考平均码率为6.5kbps,这也是宽带编码模式下的最低码率;

2)01,表示使用低频码表-3,参考平均码率为7.86kbps;

3)10,表示使用低频码表-2,参考平均码率为8.88kbps;

4)11,表示使用低频码表-1,参考平均码率为9.69kbps,这也是宽带编码模式下的最高码率。

对于超宽带编码模式,根据是否残差编码的使用模式,定义2bit码率模式位。对于超宽带编码模式下的2bit编码速率位进行如下解释:

1)00(不包含残差编码),表示低频部分使用低频码表-4,码流封装结构包括使用低频码表-4量化编码、超宽带编码4个谱包络、以及4bit平坦度,参考平均码率为6.5+2+0.2=8.7kbps;

2)01(不包含残差编码),表示低频部分使用低频码表-1,码流封装结构包括使用低频码表-1量化编码、超宽带编码4个谱包络、以及4bit平坦度,参考平均码率为9.69+2+0.2=11.9kbps;

3)10(包含第一残差编码),表示低频部分使用低频码表-1,码流封装结构包括使用低频码表-1量化编码、超宽带编码4个谱包络,、8个第一残差以及4bit平坦度,参考平均码率为9.69+2+1.6+0.2=13.5kbps;

4)11(包含第一残差编码和第二残差编码),表示低频部分使用低频码表-1,码流封装结构包括使用低频码表-1量化编码、超宽带编码4个谱包络、8个第一残差、8个第二残差以及4bit平坦度,参考平均码率为9.69+2+1.6+1.6+0.2=15.0kbps

如图13A-图13C,根据2bit码率模式位,将低频特征向量索引和高频特征向量索引的相关码流,紧跟在帧头之后。如图13D-图13E,如果码流封装结构包含4bit平坦度边信息,可以在8维高维特征向量索引后,紧跟4bit边信息即可。

综上,在使用编码器进行音频编码时,用户会向编码器输入待编码的语音数据和正确的配置参数,例如输入的语音数据是宽带时,采样率是16000Hz,输入的语音数据是超宽带时,采样率是32000Hz。为了叙述方便,以基于16000Hz采样的宽带信号和32000Hz采样的超宽带信号为例,但本申请实施例不限制其它组合。

此外,用户需要配置使用的码率模式的配置参数,编码器可以根据配置的码率模式,选择合适的码表。一般地,码率模式越高,编码器会使用更多比特进行编码,对应重建出的语音质量更高。如上所示,本申请实施例为宽带编码模式或者超宽带编码模式均提供4种码率模式,但是本申请实施例并不局限于4种码率模式。

例如,当用户输入基于16000Hz采样的宽带信号,编码器可以使用宽带编码模式进行编码,对输入的宽带信号直接使用第二NN,以提取低频特征,对提取到的低频特征进行量化编码,得到宽带信号的码流;当用户输入基于32000Hz采样的超宽带信号,编码器可以使用超宽带编码模式进行编码,对输入的超宽带信号首先经过分析滤波器,分离出低频子带信号和高频子带信号,低频子带信号直接使用第二NN,以提取低频特征F

关于低频部分以及高频部分的解码端的流程如下:

步骤21、量化解码。

量化解码是量化编码的逆过程。对于收到的码流(包括高频码流以及低频码流),先进行熵解码,并通过查量化表,获得低频码流的特征向量的估计值F′

参考图13E,这里以超宽带编码模式,且码率模式位为10的配置为例,进行如下说明:

先解析码流封装的帧头,当编码模式位为1,则说明编码时采用超宽带编码。当码率模式位为10,则说明编码时宽带部分采用低频码表-1,超宽带部分编码后码流封装包含8维高频特征向量索引和16维第一高频特征向量残差索引。

对于宽带部分,通过熵编解码技术解析低频码流,通过低频码表-1,可获得56维低频特征向量的估计值F′

对于超宽带部分,先基于5bit码表,每帧获得8维高频特征向量估计值;再基于2bit码表,每帧获得16维第一高频特征向量残差估计值。通过对应的8维高频特征向量估计值(即上述高频特征估计值)和16维第一高频特征向量残差估计值(即上述第一个残差特征估计值),可以获得16维高频特征向量最终估计值(即上述高频特征最终估计值)。高频特征向量估计值中的第i个值分别与第一高频特征向量残差估计值中的第2i-1个值以及第2i个值相加,分别得到高频特征向量最终估计值中的第2i-1个值以及第2i个值。例如,高频特征估计值为F′

参考图13D,这里以超宽带编码模式,且码率模式位为01的配置为例,进行如下说明:

先解析码流封装的帧头,当编码模式位为1,则说明编码时采用超宽带编码。当码率模式位为01,则说明编码时宽带部分采用低频码表-1,超宽带部分编码后码流封装包含8维高频特征向量索引。

对于宽带部分,通过熵编解码技术解析低频码流,通过低频码表-4,可获得56维低频特征向量的估计值F′

对于超宽带部分,先基于5bit码表,每帧获得8维高频特征向量估计值,将8维高频特征向量估计值进行复制,得到16维高频特征向量最终估计值(即上述高频特征最终估计值)。例如,高频特征估计值为F′

这里以超宽带编码模式,且码率模式位为11的配置为例,进行如下说明:

先解析码流封装的帧头,当编码模式位为1,则说明编码时采用超宽带编码。当码率模式位为11,则说明编码时宽带部分采用低频码表-1,超宽带部分编码后码流封装包含8维高频特征向量索引、16维第一高频特征向量残差索引以及16维第二高频特征向量残差索引。

对于宽带部分,通过熵编解码技术解析低频码流,通过低频码表-1,可获得56维低频特征向量的估计值F′

对于超宽带部分,先基于5bit码表,每帧获得8维高频特征向量估计值;再基于2bit码表,每帧获得16维第一高频特征向量残差估计值以及16维第二高频特征向量残差估计值。通过对应的8维高频特征向量估计值(即上述高频特征估计值)、16维第一高频特征向量残差估计值(即上述第一个残差特征估计值)以及16维第二高频特征向量残差估计值(即上述第二个残差特征估计值),可以获得16维高频特征向量最终估计值(即上述高频特征最终估计值)。高频特征向量估计值中的第i个值与第一高频特征向量残差估计值中的第2i-1个值以及第二高频特征向量残差估计值中的第2i-1个值相加,得到高频特征向量最终估计值中的第2i-1个值,高频特征向量估计值中的第i个值与第一高频特征向量残差估计值中的第2i个值以及第二高频特征向量残差估计值中的第2i个值相加,得到高频特征向量最终估计值中的第2i个值。例如,高频特征估计值为F′

步骤22、基于低频码流的特征向量的估计值F′

首先,基于低频码流的特征向量的估计值F′

首先,调用一个因果卷积,可以将输入的张量F′

接下来,级联4个不同上采样因子(Up_factor)的解码块。每个解码块包含一个卷积层、一个上采样模块、一个残差块,其中,一个卷积层用于将输入通道数减半;一个上采样模块包含特定Up_factor,用于以完成升采样;一个残差块包括5个基于空洞卷积的残差单元(Residual Unit)。4个解码块的Up_factor分别设置为5、4、4、2。因此,4个解码块输出通道数分别设置为128、64、32、16。经过4解码块处理,256×1张量分别转换成128×5、64×20、32×80和16×160的张量。其中,本申请实施例并不局限解码块的数量,可以是2个、3个、4个、5个等任意正整数。

这里,对于包含特定Up_factor的升采样模块,可以采用复制(Repeat)操作,通过重复填充的方式,完成升采样操作。这样,可以节省复杂度。

这里,解码端的5个基于空洞卷积的残差单元的配置与编码端的残差单元的配置类似,包括但不限于残差单元的内部结构、卷积核大小、扩张率等。解码块中空洞卷积使用的分组数配置如表2所示。这里解码块中,采用更多的分组数为2,是为了关联更多的输入通道和输出通道,提升语音重建的质量。

表2.不同解码块中残差单元使用的分组数配置

然后,对级联解码块输出的16×160的张量进行后处理。例如对对级联解码块输出的16×160的张量做因子为2的Repeat操作,以完成上采样,然后进行卷积运算并使用激活函数可以为PReLU的操作,生成16×320的张量。

最后,调用一个因果卷积,可以将输入的16×320张量,转换为1×320的张量,以重建低频子带信号。

步骤23、对高频子带信号的特征向量的估计值F′

与编码端的高频分析类似,本申请实施例中的高频重建包含两种方案。

高频重建的第一种实现,对应于编码端中高频分析的第一种实现。基于高频子带信号的特征向量的估计值F′

高频重建的第二种实现,对应于编码端高频分析的频带扩展技术。基于高频码流中解码出来的16个MDCT子带谱包络(每个10ms子帧包含8个子带谱包络),即高频特征向量最终估计值进行如下操作:

先将解码端生成的低频子带信号的估计值x′

然后,将由x′

需要说明的是,如果码流封装包含平坦度边信息,还需要额外操作,当Sfp_FLAG==0,不做任何操作,当Sfp_FLAG==1,需要进行额外的平坦化操作。其中,平坦化操作的实现形式如下:

以第i位置MDCT系数c(i)为例,计算c(i)邻域的平均功率谱e

其中,c(i-1)表示第i-1位置MDCT系数,c(i+1)表示第i+1位置MDCT系数。

当e

进行平坦化操作之后,调用前面获得的8个子带谱包络(即通过查询量化表后得到的8个子带谱包络),这8个子带谱包络对应8个高频子带,并将生成的160个点的高频子带信号的MDCT系数的参考值分为8个参考高频子带,基于一个高频子带与对应的参考高频子带,对生成的160点的高频子带信号的MDCT系数的参考值进行增益控制(频域上就是做乘法),例如根据高频子带的平均能量与对应的参考高频子带的平均能量计算增益因子,将该对应的参考高频子带中的每个点对应的MDCT系数乘以增益因子,确保解码虚拟生成的高频MDCT系数的能量,与编码端原始的系数能量接近。

例如,假定参考高频子带(即由生成的高频部分信号的160个点的MDCT系数的参考值所划分得到的子带)的平均能量是Y_L,当前高频子带(即基于码流解码出来的子带谱包络对应的子带)的平均能量是Y_H,则计算一个增益因子a=sqrt(Y_H/Y_L),其中,sqrt()表示平方根计算函数,用于计算(Y_H/Y_L)的平方根。有了增益因子a后,直接将参考高频子带中的每个点的MDCT系数均乘以a。经过增益控制后的MDCT系数(虚拟生成的)的平均能量,就跟编码端原始的非常接近。

最后,调用MDCT反变换,生成高频子带信号的第一子帧的估计值(由第一组160个点的MDCT系数计算得到的子帧估计值)以及高频子带信号的第二子帧的估计值(由第二组160个点的MDCT系数计算得到的子帧估计值),结合第一子帧的估计值以及第二子帧的估计值,得到高频子带信号的估计值x′

步骤24、合成滤波器

在解码端获得了低频子带信号的估计值x′

本申请实施例可以通过采集数据,对编码端和解码端的相关网络进行联合训练,获得最优参数。用户仅需准备好数据和设置相应的网络结构,在后台完成训练后,即可将训练好的模型投入使用。

在语音通信系统中,通信方式包括单声道语音通信以及立体声通信。因此,本申请实施例并不局限于上述单声道语音通信编解码技术,还可以是立体声编解码技术,其中,立体声编解码技术可以实现编码器收到左右两个声道的信号(即左声道的输入信号以及右声道的输入信号),用户佩戴耳机进行通话时,可以有一定的左右空间感。

下面将结合立体声信号对本申请实施例提供的低复杂度低码率神经网络语音压缩方法进行说明。

需要说明的是,本申请实施例的立体声编码方式包括但不限于以下两种方式实现:1)左右声道分别采用上述单声道信号的编解码技术进行编码和解码,在解码端结合解码出的单通道的重建信号恢复出立体声信号;2)使用参数立体声技术进行编解码。

其中,参数立体声编码技术是一种将立体声信号视为单声道信号加上一小部分描述立体声影像信息的参数开销来有效编码的技术。在编码端将左右声道的输入信号(即立体声信号)下混成一路信号,将该一路信号视为上述输入信号x(n),然后使用本申请实施例上述单声道信号的编码方法进行编码。此外,通过参数立体声编码提取左右声道相关性的特征信息(即立体声特征向量,一般是1-2kbps),立体声特征向量用于混合单声道的边信息。在解码端,通过解码获得一路下混信号(即上述重建信号),通过解码出的一路下混信号和描述左右声道的相关性的立体声特征向量,重建出左右声道的立体声信号。

承接上述实施例,对于码流封装中的8比特帧头,可以分配1bit声道位,根据1bit立体声编码位可知是采用单声道编码还是立体声编码。具体实施方式如下:

编码端,如果输入的声道数为1,声道标志(Flag)置为0,对应帧头的声道位写入0,表示针对输入信号进行单声道编码,即复用上述针对输入信号x(n)的编码方式进行编码;如果输入的声道数为2即立体声,声道Flag置为1,对应帧头的声道位写入1,表示针对输入信号进行立体声编码,即复用上述介绍的参数立体声编码方式进行编码。

解码端,解析帧头对应的声道位,如果声道位是0,表示单声道解码,复用上述的解码方式解码出重建信号;如果声道位是1,表示立体声解码,复用上述介绍的参数立体声解码方式进行解码。

如图15A-15E所示的码流封装,在上述图13A-13E所示的码流封装的基础上携带立体声特征向量,在解码端,通过解码出的一路下混信号和描述左右声道的相关性的立体声特征向量,重建出左右声道的立体声信号。

另外,对于码流封装中的8比特帧头,也可以不分配声道位,举例来说,如果没有声道位,默认是采用单声道编码。

请注意,本申请各实施例中的帧头也不限定为8比特,可以为更多或更少比特。在另一个实施例中,也可以分配更多比特给声道位,例如2比特的声道位,来表示更多声道的编解码,例如3.1声道或者4.1声道等等。

综上,本申请实施例提供的多模式多速率编解码方法通过信号分解、信号处理技术与深度神经网络的有机结合,较信号处理方案,在保证复杂度可接受的情况下,显著提升音频质量。

至此已经结合本申请实施例提供的终端设备的示例性应用和实施,说明本申请实施例提供的音频编码方法或音频解码方法。本申请实施例还提供音频编码装置以及音频解码装置,实际应用中,音频编码装置以及音频解码装置中的各功能模块可以由电子设备(如终端设备、服务器或服务器集群)的硬件资源,如处理器等计算资源、通信资源(如用于支持实现光缆、蜂窝等各种方式通信)、存储器协同实现。图3A示出了存储在存储器550中的音频编码装置555以及图3B示出了存储在存储器650中的音频解码装置655,其可以是程序和插件等形式的软件,例如,软件C/C++、Java等编程语言设计的软件模块、C/C++、Java等编程语言设计的应用软件或大型软件系统中的专用软件模块、应用程序接口、插件、云服务等实现方式,下面对不同的实现方式举例说明。

其中,音频编码装置555包括一系列的模块,包括特征提取模块5551、编码模块5552、信号编码模块5553。下面继续说明本申请实施例提供的音频编码装置555中各个模块配合实现音频编码的方案。

第二获取模块5551,用于响应于针对音频信号的编码请求,从多个编码模式中获取针对所述音频信号的目标编码模式,从多个码率模式中获取针对所述音频信号的目标码率模式;提取模块5552,用于通过所述目标编码模式,从所述音频信号中提取出所述音频信号的编码特征;信号编码模块5553,用于通过所述目标码率模式,对所述音频信号的编码特征进行信号编码处理,得到所述音频信号的音频码流;构建模块5554,用于基于所述目标编码模式以及所述目标码率模式,确定帧头;生成模块5555,用于基于所述音频码流以及所述帧头,生成所述音频信号的音频码流封装。

在一些实施例中,当所述目标编码模式为宽带编码模式时,所述提取模块5552还用于基于所述宽带编码模式调用第一神经网络;通过所述第一神经网络,从所述音频信号中提取出所述音频信号的编码特征。

在一些实施例中,所述提取模块5552还用于对所述音频信号进行特征提取处理,得到所述音频信号的音频特征;利用所述第一神经网络包括的至少一个残差单元,对所述音频特征进行残差处理,得到所述音频信号的编码特征。

在一些实施例中,所述第一神经网络包括4个编码块,每个所述编码块包括4个或5个所述残差单元。

在一些实施例中,所述目标码率模式用于指示采用目标码表,对所述音频信号的编码特征进行信号编码;所述信号编码模块5553还用于通过所述目标码表,对所述音频信号的编码特征进行量化处理,得到所述编码特征的量化值;通过所述目标码表对应的目标码率,对所述量化值进行熵编码处理,得到所述音频信号的音频码流。

在一些实施例中,当所述目标编码模式为超宽带编码模式时,所述提取模块5552还用于对所述音频信号进行子带分解处理,得到所述音频信号的低频子带信号以及高频子带信号;通过第二神经网络,从所述低频子带信号提取出所述低频子带信号的低频特征;对所述高频子带信号进行高频分析处理,得到所述高频子带信号的高频特征;将所述低频特征以及所述高频特征,确定为所述音频信号的编码特征。

在一些实施例中,所述提取模块5552还用于对所述高频子带信号进行分帧处理,得到所述高频子带信号的多个子帧;对每个所述子帧进行频带扩展处理,得到每个所述子帧的子带谱包络;将所述多个子帧分别对应的子带谱包络,作为所述高频子带信号的高频特征。

在一些实施例中,所述提取模块5552还用于基于所述子帧包括的多个样本点进行频域变换处理,得到所述多个样本点分别对应的变换系数;将所述多个样本点分别对应的变换系数划分为多个子带;对每个所述子带包括的变换系数进行均值处理,得到每个所述子带对应的平均能量,并将所述平均能量作为每个所述子带对应的子带谱包络。

在一些实施例中,所述目标码率模式包括指示采用第一码表对所述低频特征进行信号编码,采用第二码表对所述高频特征进行信号编码;所述信号编码模块5553还用于通过所述第一码表,对所述低频特征进行量化处理,得到所述低频特征的量化值,并通过所述第一码表对应的码率,对所述低频特征的量化值进行熵编码处理,得到所述低频子带信号的低频码流;通过所述第二码表,对所述高频特征进行量化处理,得到所述高频特征的量化值,并通过所述第二码表对应的码率,对所述高频特征的量化值进行熵编码处理,得到所述高频子带信号的高频码流;基于所述低频码流以及所述高频码流,构建所述音频信号的音频码流。

在一些实施例中,所述目标码率模式还包括指示采用第三码表对所述高频特征的残差特征进行残差编码;所述信号编码模块5553还用于确定所述高频子带信号的子帧对应的子带,并将所述子带划分为多个子集;对每个所述子集包括的变换系数进行均值处理,得到每个所述子集对应的平均能量,并将所述平均能量作为每个所述子集对应的包络值;在所述高频特征的量化值中,确定与所述子集对应的子带的子带谱包络的量化值,并将所述子集对应的包络值与所述子带谱包络的量化值的差值,作为第一个残差值;基于所述第一个残差值,确定所述高频特征的残差特征;通过所述第三码表,对所述高频特征的残差特征进行量化处理,得到所述高频特征的残差特征的量化值,并通过所述第三码表对应的码率,对所述高频特征的残差特征的量化值进行熵编码处理,得到所述残差特征的残差码流;所述构建模块5554还用于将所述低频码流、所述高频码流以及所述残差码流,作为所述音频信号的音频码流。

在一些实施例中,所述残差值的数量为N时,N为大于1的正整数,所述信号编码模块5553还用于确定第n个残差值的量化值,并确定所述第n个残差值的量化值与对应的子带的子带谱包络的量化值的加和;将所述子集对应的包络值与所述加和的差值,作为第n+1个残差值;将N个所述残差值,确定为所述高频特征的残差特征;其中,n为依次递增的正整数,1≤n≤N。

在一些实施例中,所述基于所述音频码流以及所述帧头,生成所述音频信号的音频码流封装之前,所述信号编码模块5553还用于确定所述高频子带信号的平坦度边信息;所述生成模块5555还用于结合所述音频码流、所述帧头以及所述平坦度边信息,得到所述音频信号的音频码流封装。

在一些实施例中,所述信号编码模块5553还用于将所述高频子带信号的子帧包括的变换系数划分为多个块;确定每个所述块的第一平坦度,并确定所述音频信号的低频指定频段的第二平坦度;当所述第一平坦度小于所述第二平坦度,或所述第一平坦度小于平坦度阈值时,将所述平坦度边信息设置为第一值,其中,所述第一值表征音频解码时需要进行平坦化处理;当所述第一平坦度大于或者等于所述第二平坦度,且所述第一平坦度大于或者等于所述平坦度阈值时,将所述平坦度边信息设置为第二值,其中,所述第二值表征音频解码时不需要进行平坦化处理。

在一些实施例中,所述帧头还包括至少1位声道位,所述声道位用于指示采用单声道编码或立体声编码对所述音频信号进行音频编码。

其中,音频解码装置655包括一系列的模块,包括第一获取模块6551、信号解码模块6552、重建模块6553。下面继续说明本申请实施例提供的音频编码装置555中各个模块配合实现音频编码的方案。

第一获取模块6551,用于响应于针对音频码流封装的解码请求,从所述音频码流封装包括的帧头中获取目标编码模式以及目标码率模式;其中,所述音频码流封装包括的音频码流是通过所述目标编码模式以及所述目标码率模式,对音频信号进行音频编码得到的,所述目标编码模式是从多个编码模式中获取的,所述目标码率模式是从多个码率模式中获取的;信号解码模块6552,用于通过所述目标编码模式以及所述目标码率模式,对所述音频码流进行信号解码处理,得到所述音频码流对应的编码特征估计值;重建模块6553,用于通过所述目标编码模式,对所述音频码流对应的编码特征估计值进行重建处理,得到所述音频码流对应的合成音频信号。

在一些实施例中,当所述目标编码模式为宽带编码模式时,所述目标码率模式用于指示采用目标码表,对所述音频信号的编码特征进行信号编码;所述信号解码模块6552还用于通过所述目标码表对应的目标码率,对所述音频码流进行熵解码处理,得到所述音频码流对应的量化值;通过所述目标码表,对所述音频码流对应的量化值进行逆量化处理,得到所述音频码流对应的编码特征估计值。

在一些实施例中,所述目标编码模式为宽带编码模式时,所述重建模块6553还用于基于所述宽带编码模式调用第三神经网络;通过所述第三神经网络,对所述音频码流对应的编码特征估计值进行重建处理,得到所述音频码流对应的合成音频信号。

在一些实施例中,所述重建模块6553还用于利用所述第三神经网络包括的至少一个残差单元,对所述音频码流对应的编码特征估计值进行残差处理,得到所述音频码流对应的音频特征估计值;对所述音频码流对应的音频特征估计值进行特征重建处理,得到所述音频码流对应的合成音频信号。

在一些实施例中,所述第三神经网络包括4个解码块,每个所述解码块包括4个或5个所述残差单元。

在一些实施例中,当所述目标编码模式为超宽带编码模式时,所述目标码率模式包括指示采用第一码表对所述音频信号的低频特征进行信号编码,采用第二码表对所述音频信号的高频特征进行信号编码,所述音频码流包括低频码流以及高频码流;所述信号解码模块6552还用于通过所述目标编码模式,从所述音频码流中获取所述低频码流以及所述高频码流;通过所述第一码表对应的码率,对所述低频码流进行熵解码处理,得到所述低频码流对应的量化值,并通过所述第一码表对所述低频码流对应的量化值进行逆量化处理,得到所述低频码流对应的低频特征估计值;通过所述第二码表对应的码率,对所述高频码流进行熵解码处理,得到所述高频码流对应的量化值,并通过所述第二码表对所述高频码流对应的量化值进行逆量化处理,得到所述高频码流对应的高频特征估计值;基于所述低频特征估计值以及所述高频特征估计值,确定所述音频码流对应的编码特征估计值。

在一些实施例中,所述音频码流还包括残差码流,所述目标码率模式还包括指示采用第三码表对所述音频码流对应的高频特征的残差特征进行残差编码;所述信号解码模块6552还用于通过所述第三码表对应的码率,对所述残差码流进行熵解码处理,得到所述残差码流对应的量化值,并通过所述第三码表对所述残差码流对应的量化值进行逆量化处理,得到所述残差码流对应的残差特征估计值;将所述高频特征估计值与所述残差特征估计值的加和,确定为高频特征最终估计值;将所述低频特征估计值、所述高频特征最终估计值,确定为所述音频码流对应的编码特征估计值。

在一些实施例中,所述重建模块6553还用于当所述目标编码模式为超宽带编码时,通过第四神经网络,对所述编码特征包括的低频特征估计值进行特征重建处理,得到所述音频码流对应的低频子带信号估计值;对所述编码特征包括的高频特征估计值进行高频重建处理,得到所述音频码流对应的高频子带信号估计值;对所述低频子带信号估计值以及所述高频子带信号估计值进行子带合成,得到所述音频码流对应的合成音频信号。

在一些实施例中,所述重建模块6553还用于对所述低频子带信号估计值包括的前半部分的样本点以及后半部分的样本点进行频域变换处理,得到所述前半部分的样本点对应的第一变换系数以及所述后半部分的样本点对应的第二变换系数;基于所述第一变换系数,对所述高频特征估计值进行频带扩展的逆处理,得到第一高频子带信号估计值;基于所述第二变换系数,对所述高频特征估计值进行频带扩展的逆处理,得到第二高频子带信号估计值;结合所述第一高频子带信号估计值以及所述第二高频子带信号估计值,得到所述音频码流对应的高频子带信号估计值。

在一些实施例中,所述重建模块6553还用于对所述第一变换系数中的后半部分的变换系数进行频谱复制处理,得到参考高频子带信号的第一参考变换系数;基于所述高频特征估计值对应的前半部分子带谱包络,对所述第一参考变换系数进行增益处理,得到增益后的第一参考变换系数;对所述增益后的第一参考变换系数进行反频域变换处理,得到第一高频子带信号估计值。

在一些实施例中,所述音频码流封装包括平坦度边信息;所述对所述第一变换系数中的后半部分的变换系数进行频谱复制处理,得到参考高频子带信号的第一参考变换系数之后,所述重建模块6553还用于当所述平坦度边信息表征音频解码时需要进行平坦化处理时,确定第i-1个第一参考变换系数、第i个第一参考变换系数、第i+1个第一参考变换系数;基于所述第i-1个第一参考变换系数、所述第i个第一参考变换系数、所述第i+1个第一参考变换系数,确定平均功率谱;将所述第i个第一参考变换系数与所述平均功率谱的比值,作为新的所述第i个第一参考变换系数;其中,1<i<I,i为正整数,I为所述第一参考变换系数的数量。

在一些实施例中,所述帧头还包括至少1位声道位,所述声道位用于指示采用单声道解码方法或立体声解码方法对所述音频码流进行音频解码。

本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机可执行指令,该计算机可执行指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该电子设备执行本申请实施例上述的音频编码方法或音频解码方法。

本申请实施例提供一种存储有计算机可执行指令的计算机可读存储介质,其中存储有计算机可执行指令,当计算机可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的音频编码方法或音频解码方法,例如,如图4A示出的音频编码方法。

在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种电子设备。

在一些实施例中,计算机可执行指令(简称可执行指令)可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。

作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。

作为示例,可执行指令可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。

可以理解的是,在本申请实施例中,涉及到用户信息等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。

以上,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

相关技术
  • 一种用于工业机器人的基座及工业机器人
  • 一种定位基座及定位装置
  • 一种涡轮叶片定位基座制造方法
  • 一种具有减震功能的骨科定位机器人基座
  • 一种骨科定位机器人基座
技术分类

06120116520363