CN117854516A - 音频编解码方法、装置和设备 - Google Patents

音频编解码方法、装置和设备 Download PDF

Info

Publication number
CN117854516A
CN117854516A CN202410071426.XA CN202410071426A CN117854516A CN 117854516 A CN117854516 A CN 117854516A CN 202410071426 A CN202410071426 A CN 202410071426A CN 117854516 A CN117854516 A CN 117854516A
Authority
CN
China
Prior art keywords
data
length
vector
audio data
coding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410071426.XA
Other languages
English (en)
Inventor
王海强
潘翔
许晓中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202410071426.XA priority Critical patent/CN117854516A/zh
Publication of CN117854516A publication Critical patent/CN117854516A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

提供了音频编解码方法、装置和设备,涉及音视频编解码领域。该音频解码方法包括:解析待解码码流,得到量化结果;对量化结果进行反量化,得到重建编码向量;根据重建编码向量和填充数据,得到组合重建编码向量;其中,填充数据的长度根据解码网络对应的有效输入长度确定,填充数据包括已解码码流的重建编码向量;将组合重建编码向量中的有效输入长度对应的重建编码向量输入所述解码网络,利用解码网络对输入重建编码向量进行解码操作,输出重建信号;重建信号与待解码码流的重建编码向量相关且与已解码码流的重建编码向量不相关,解码网络不进行非真实数据填充。本申请实施例能够实现提高基于深度学习的音频编解码架构的编解码效率和质量。

Description

音频编解码方法、装置和设备
技术领域
本申请实施例涉及多媒体技术领域,尤其涉及一种音频编解码方法、装置和设备。
背景技术
随着深度学习技术的快速发展,深度学习技术被广泛应用于不同维度的信号,例如音频,图像以及视频等的处理技术中。以音频信号为例,在基于深度学习的端到端的音频编解码方案中,编码器将音频信号经过编码网络映射为编码向量,进一步通过量化技术生成对应的二进制码流文件。解码端通过读取二进制码流文件获取量化结果,并通过反量化技术对量化结果进行反量化得到重建的编码向量,之后再将重建的编码向量作为解码网络的输入,解码得到最终的重建音频信号。如何进一步提高基于深度学习的音频编解码的编码效率和质量亟待解决。
发明内容
本申请提供一种音频编解码方法、装置和设备,能够实现提高基于深度学习的音频编解码架构的编解码效率和质量。
第一方面,本申请实施例提供一种音频解码方法,包括:
解析待解码码流,得到所述待解码码流对应的量化结果;
对所述量化结果进行反量化,得到所述待解码码流的重建编码向量;
根据所述重建编码向量和填充数据,得到组合重建编码向量;其中,所述填充数据的长度根据解码网络对应的有效输入长度确定,所述填充数据包括已解码码流的重建编码向量;
将所述组合重建编码向量中的所述有效输入长度对应的重建编码向量输入所述解码网络,利用所述解码网络对输入重建编码向量进行解码操作,输出重建信号;其中,所述重建信号与所述输入重建编码向量中的待解码码流的重建编码向量相关且与所述输入重建编码向量中的已解码码流的重建编码向量不相关,所述解码网络不对所述输入重建编码向量进行非真实数据填充。
第二方面,本申请实施例提供一种音频编码方法,包括:
获取待编码的第一音频数据;
根据所述第一音频数据和填充数据,得到组合音频数据;其中,所述填充数据的长度根据编码网络对应的有效输入长度确定,所述填充数据包括已编码音频数据;
将所述组合音频数据中的所述有效输入长度对应的第二音频数据输入所述编码网络,利用所述编码网络对所述第二音频数据进行编码操作,输出编码向量;其中,所述编码向量与所述第二音频数据中的待编码音频数据相关且与所述第二音频数据中的已编码音频数据不相关,所述编码网络不对所述第二音频数据进行非真实数据填充;
对所述编码向量进行量化得到量化结果,并根据所述量化结果得到所述第一音频数据的码流。
第三方面,本申请实施例提供了一种音频解码装置,包括:
解析单元,用于解析待解码码流,得到所述待解码码流对应的量化结果;
反量化单元,用于对所述量化结果进行反量化,得到所述待解码码流的重建编码向量;
填充单元,用于根据所述重建编码向量和填充数据,得到组合重建编码向量;其中,所述填充数据的长度根据解码网络对应的有效输入长度确定,所述填充数据包括已解码码流的重建编码向量;
解码单元,用于将所述组合重建编码向量中的所述有效输入长度对应的重建编码向量输入所述解码网络,利用所述解码网络对输入重建编码向量进行解码操作,输出重建信号;其中,所述重建信号与所述输入重建编码向量中的待解码码流的重建编码向量相关且与所述输入重建编码向量中的已解码码流的重建编码向量不相关,所述解码网络不对所述输入重建编码向量进行非真实数据填充。
第四方面,本申请实施例提供了一种音频编码装置,包括:
获取单元,用于获取待编码的第一音频数据;
填充单元,用于根据所述第一音频数据和填充数据,得到组合音频数据;其中,所述填充数据的长度根据编码网络对应的有效输入长度确定,所述填充数据包括已编码音频数据;
编码单元,用于将所述组合音频数据中的所述有效输入长度对应的第二音频数据输入所述编码网络,利用所述编码网络对所述第二音频数据进行编码操作,输出编码向量;其中,所述编码向量与所述第二音频数据中的待编码音频数据相关且与所述第二音频数据中的已编码音频数据不相关,所述编码网络不对所述第二音频数据进行非真实数据填充;
量化单元,用于对所述编码向量进行量化得到量化结果,并根据所述量化结果得到所述第一音频数据的码流。
第五方面,本申请实施例提供一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行如第一方面或第二方面中的方法。
第六方面,本申请实施例提供一种计算机可读存储介质,包括指令,当其在计算机上运行时使得计算机执行如第一方面或第二方面中的方法。
第七方面,本申请实施例提供一种计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行如第一方面或第二方面中的方法。
第八方面,本申请实施例提供一种计算机程序,计算机程序使得计算机执行如第一方面或第二方面中的方法。
上述技术方案,通过根据编解码网络对应的有效输入长度确定填充数据的长度,实现精确控制编解码时所填充的已编码数据数据量,使得编解码网络一次推理的输出只取决于当前待编码数据或待解码数据,有利于避免引入额外的运算,减少对计算资源的浪费,从而提高编解码效率。同时,精确控制编解码时所填充的已编码数据量,能够使得编解码网络不对输入数据进行非真实数据填充,避免编解码过程受到编码网络中非真实数据填充的影响,从而提高编码质量。
附图说明
图1为本申请实施例涉及的一种音频编解码系统的示意性框图;
图2为本申请实施例涉及的基于深度学习的端到端的音频编解码系统示意图;
图3为本申请实施例涉及的基于深度学习网络构建的编解码器的网络结构框图;
图4为本申请实施例提供的一种音频编码方法流程示意图;
图5A至图5C为卷积网络处理过程一些示意图;
图6A至图6C为使用已编码数据进行填充的三种情况示意图;
图7为本申请实施例提供的另一种音频编码方法流程示意图;
图8A至图8D为本申请实施例涉及的编码过程的几个示意图;
图9为本申请实施例提供的一种音频解码方法流程示意图;
图10A至图10C为使用已解码数据进行填充的三种情况示意图;
图11为本申请实施例提供的另一种音频解码方法流程示意图;
图12A至图12C为本申请实施例涉及的解码过程的几个示意图;
图13为根据本申请实施例的一种音频解码装置的示意性框图;
图14为根据本申请实施例的一种音频编码装置的示意性框图;
图15为根据本申请实施例的电子设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
应理解,在本申请实施例中,“与A对应的B”表示B与A相关联。在一种实现方式中,可以根据A确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
在本申请的描述中,除非另有说明,“至少一个”是指一个或多个,“多个”是指两个或多于两个。另外,“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
还应理解,本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。
还应理解,说明书中与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例应用于人工智能技术领域。
下面对本申请实施例涉及的相关概念进行介绍。
人工智能(Artificial Intelligence,AI),是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
本申请实施例主要介绍人工智能技术在音频编解码技术中的应用。
音频编解码:音频编码过程为将音频压缩到更小的数据,解码过程为将更小的数据还原为音频。编码后的更小数据用于网络传输,占用更小的带宽。
音频采样率:音频采样率描述单位时间(1秒)内包含的数据个数。例如8k采样率包含8000个采样点,每个采样点对应一个短型整数。
音频采样时长:指音频数据的持续时间,通常以秒(s)为单位表示。采样时长等于采样点数除以采样率。采样点数是指音频数据中的总样本数。
码本:多个向量的集合,编码器和解码器两边保存一模一样的码本。
量化:将输入向量在码本中找到距离最近的向量,将其返回作为输入向量的替换,并将对应的码本索引位置返回。
量化器:量化器负责量化工作,并负责更新码本内向量。
音频帧:表示网络中单次传输的最小语音时长。
短时傅里叶变换:Short Time Fourier Transform,STFT。将长时间信号分成数个较短的等长信号,然后再分别计算每个较短段的傅里叶变换。通常拿来描绘频域与时域上的变化,为时频分析中的一个重要的工具。
本申请实施例提供的音频编解码方法,可应用于音频编解码领域、硬件音频编解码领域、专用电路视频编解码领域、实时音频编解码领域等。例如,本申请的方案可结合至音视频编码标准(audio video coding standard,简称AVS),例如,H.264/音视频编码(audio video coding,简称AVC)标准。或者,本申请的方案可结合至其它专属或行业标准。应理解,本申请的技术不限于任何特定编解码标准或技术。
本申请实施例提供的音频编解码方法,可以应用于任意基于深度学习的端到端音频编解码方案中。
为了便于理解,首先结合图1对本申请实施例涉及的音频编解码系统进行介绍。
图1为本申请实施例涉及的一种音频编解码系统的示意性框图。需要说明的是,图1只是一种示例,本申请实施例的音频编解码系统包括但不限于图1所示。如图1所示,该音频编解码系统100包含编码设备110和解码设备120。其中编码设备用于对音频数据进行编码(可以理解成压缩)产生码流,并将码流传输给解码设备。解码设备对编码设备编码产生的码流进行解码,得到解码后的音频数据。
本申请实施例的编码设备110可以理解为具有音频编码功能的设备,解码设备120可以理解为具有音频解码功能的设备,即本申请实施例对编码设备110和解码设备120包括更广泛的装置,例如包含智能手机、台式计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、电视、相机、播放装置、数字媒体播放器、音频游戏控制台、车载计算机等。
在一些实施例中,编码设备110可以经由信道130将编码后的音频数据(如码流)传输给解码设备120。信道130可以包括能够将编码后的音频数据从编码设备110传输到解码设备120的一个或多个媒体和/或装置。
在一个实例中,信道130包括使编码设备110能够实时地将编码后的音频数据直接发射到解码设备120的一个或多个通信媒体。在此实例中,编码设备110可根据通信标准来调制编码后的音频数据,且将调制后的音频数据发射到解码设备120。其中通信媒体包含无线通信媒体,例如射频频谱,可选的,通信媒体还可以包含有线通信媒体,例如一根或多根物理传输线。
在另一实例中,信道130包括存储介质,该存储介质可以存储编码设备110编码后的音频数据。存储介质包含多种本地存取式数据存储介质,例如光盘、DVD、快闪存储器等。在该实例中,解码设备120可从该存储介质中获取编码后的音频数据。
在另一实例中,信道130可包含存储服务器,该存储服务器可以存储编码设备110编码后的音频数据。在此实例中,解码设备120可以从该存储服务器中下载存储的编码后的音频数据。可选的,该存储服务器可以存储编码后的音频数据且可以将该编码后的音频数据发射到解码设备120,例如web服务器(例如,用于网站)、文件传送协议(FTP)服务器等。
一些实施例中,编码设备110包含音频编码器112及输出接口113。其中,输出接口113可以包含调制器/解调器(调制解调器)和/或发射器。
在一些实施例中,编码设备110除了包括音频编码器112和输入接口113外,还可以包括音频源111。
音频源111可包含音频采集装置(例如,话筒)、音频存档、音频输入接口、计算机语音系统中的至少一个,其中,音频输入接口用于从音频内容提供者处接收音频数据,计算机语音系统用于产生音频数据。
音频编码器112对来自音频源111的音频数据进行编码,产生码流。码流以比特流的形式包含了音频数据的编码信息。编码信息可以包含编码音频数据及相关联数据。相关联数据可包含量化参数及其它语法结构等。语法结构是指码流中以指定次序排列的零个或多个语法元素的集合。
音频编码器112经由输出接口113将编码后的音频数据直接传输到解码设备120。编码后的音频数据还可存储于存储介质或存储服务器上,以供解码设备120后续读取。
在一些实施例中,解码设备120包含输入接口121和音频解码器122。
在一些实施例中,解码设备120除包括输入接口121和音频解码器122外,还可以包括播放装置123。
其中,输入接口121包含接收器及/或调制解调器。输入接口121可通过信道130接收编码后的音频数据。
音频解码器122用于对编码后的音频数据进行解码,得到解码后的音频数据,并将解码后的音频数据传输至播放装置123。
播放装置123播放解码后的音频数据。播放装置123可与解码设备120整合或在解码设备120外部。播放装置123可包括多种播放装置。
此外,图1仅为实例,本申请实施例的技术方案不限于图1,例如本申请的技术还可以应用于单侧的音频编码或单侧的音频解码。
图2为本申请实施例涉及的基于深度学习的端到端的音频编解码系统示意图。如图2所示,本申请实施例的音频编解码系统包括:编码网络210、量化模块211、反量化模块212和解码网络213。
在编码时,编码端(也称为发送端)会首先将输入的音频数据输入编码网络210中进行非线性变换,得到输入音频数据的编码向量(也称为嵌入序列或隐变量等)。接着,通过量化模块211对音频数据的编码向量进行量化,得到编码向量的量化结果。例如,使用基于残差的矢量量化器,根据目标码率选取对应的量化参数。最后,对量化后的编码向量进行编码,转换成二进制码流。
在解码时,解码端(也称为接收端)首先从码流中恢复出编码向量的量化结果,再进一步通过反量化模块212恢复出编码向量,并输入解码网络213进行非线性变换,以得到重构的音频数据。
图3为本申请一个实施例中基于深度学习网络构建的编解码器的网络结构框图。
如图3所示,编解码器的网络结构包括编码网络310和解码网络320,其中编码网络310可以作为软件实现如图1所示的音视频编码设备110,解码网络320可以作为软件实现如图1所示的音视频解码设备120。在一些实施例中,编码网络310也称为编码器310,解码网络320也称为解码器320。
在数据发送端可以通过编码网络310对音频数据进行编码压缩。在本申请的一个实施例中,编码网络310可以包括一个输入层311、一个或者多个编码模块312以及一个输出层313。
示例性的,输入层311和输出层313可以是基于一维卷积核构建的卷积层,在输入层311和输出层313之间依次连接有多个(例如4个)编码模块(EncoderBlock)312。每一个编码模块312包括多个残差(ResidualUnit)模块,每一个残差模块包含多个卷积层。
举例说明,在编码器的输入阶段,对待编码的原始音频数据进行数据采样,可以得到通道数为c、维度为w的向量;将该向量输入至输入层311,经过卷积处理后可以得到通道数为32c、维度为w的特征向量。在一些可选的实施方式中,为了提高编码效率,编码网络310可以同时对一个批次的音频向量进行编码处理。
在编码器的下采样阶段,第一个编码模块将向量维度降低至1/2,通道数增加2倍,得到通道数为64c、维度为1/2w的特征向量;第二个编码模块将向量维度降低至1/4,通道数增加2倍,得到通道数为128c、维度为1/8w的特征向量;第三个编码模块将向量维度降低至1/5,通道数增加2倍,得到通道数为256c、维度为1/40w的特征向量;第四个编码模块将向量维度降低至1/8,通道数增加2倍,得到通道数为512c、维度为1/320w的特征向量。
在编码器的输出阶段,输出层313对通道数为512c、维度为1/320w的特征向量进行卷积处理后得到通道数为1、维度为K的编码向量。
将编码向量输入至量化器330,可以在码本中查询得到编码向量对应的码本索引,并将码本索引进行编码,得到二进制码流,进而将二进制码流发送给数据接收端。
数据接收端对接收到的二进制码流,进而解码,得到码本索引,并基于码本索引进行反量化,得到重建的编码向量,最后通过解码网络320对重建的编码向量进行解码处理,得到还原后的音频数据。
在本申请的一个实施例中,解码网络320可以包括一个输入层321、一个或者多个解码模块322以及一个输出层323。每一个解码模块322包括多个残差(ResidualUnit)模块,每一个残差模块包含多个卷积层。
数据接收端对码流解码得到码本索引后,首先可以通过量化器320在码本中查询码本索引对应的码本向量,进而基于该码本向量得到音频数据重建的编码向量。例如重建的编码向量可以是通道数为1、维度为K的向量。在一些可选的实施方式中,为了提高解码效率,数据接收端可以同时对一个批次的码本向量进行解码处理。
在解码器的输入阶段,将重建的编码向量输入至输入层321,经过卷积处理后可以得到通道数为512c、维度为1/320w的特征向量。
在解码器的解码阶段,第一个解码模块将向量维度升高至8倍,通道数缩减2倍,得到通道数为256c、维度为1/40w的特征向量;第二个解码模块将向量维度升高至5倍,通道数缩减2倍,得到通道数为128c、维度为1/8w的特征向量;第三个解码模块将向量维度升高至4倍,通道数缩减2倍,得到通道数为64c、维度为1/2w的特征向量;第四个解码模块将向量维度升高至2倍,通道数缩减2倍,得到通道数为32、维度为w的特征向量。
在解码器的输出阶段,输出层323对通道数为32、维度为w的特征向量进行卷积处理后,还原得到通道数为1、维度为w的重建音频数据。
在一些实施例中,为了提高音频编码效果,在对音频数据的编码向量进行量化时,采用基于残差的矢量量化器,即上述图3中的量化器330为基于残差的矢量量化器。
相关技术中,基于深度学习的音频编解码器支持可变长度的输入数据。如果一次推理的数据大于神经网络模型的感受野Nrf,那么该次推理会使用所有的数据进行推理,这样会带来额外的运算,造成计算资源的浪费。如果一次推理的数据小于神经网络模型的感受野Nrf,那么待编码数据所对应的特征会受到卷积网络的非真实数据填充的影响,进而影响编码质量和重建信号质量。因此,如何进一步提高基于深度学习的音频编解码的编解码效率和质量亟待解决。
有鉴于此,本申请实施例提供了音频编解码方法、装置和设备,在编码端通过控制编码时所填充的已编码数据量,在解码端通过控制解码时所填充的已解码数据,实现提高基于深度学习的音频编解码架构的编解码效率和质量。
具体的,在编码端,获取待编码的第一音频数据;根据第一音频数据和填充数据,得到组合音频数据;其中,填充数据的长度根据编码网络对应的有效输入长度确定,该填充数据包括已编码音频数据;将组合音频数据中的有效输入长度对应的第二音频数据输入编码网络,利用编码网络对第二音频数据进行编码操作,输出编码向量;其中,编码向量与第二音频数据中的待编码音频数据相关且与第二音频数据中的已编码音频数据不相关,编码网络不对第二音频数据进行非真实数据填充;对编码向量进行量化得到量化结果,并根据量化结果得到第一音频数据的码流。
因此,本申请实施例通过根据编码网络对应的有效输入长度确定填充数据的长度,实现精确控制编码时所填充的已编码数据数据量,使得编码网络一次推理的输出编码向量只取决于当前待编码数据,有利于避免引入额外的运算,减少对计算资源的浪费,从而提高编码效率。同时,精确控制编码时所填充的已编码数据量,能够使得编码网络不对输入音频数据进行非真实数据填充,避免编码向量受到编码网络中非真实数据填充的影响,从而提高编码质量。
在解码端,解析待解码码流,得到待解码码流对应的量化结果;对量化结果进行反量化,得到待解码码流的重建编码向量;根据重建编码向量和填充数据,得到组合重建编码向量;其中,填充数据的长度根据解码网络对应的有效输入长度确定,填充数据包括已解码码流的重建编码向量;将组合重建编码向量中的有效输入长度对应的编码向量输入解码网络,利用解码网络对输入重建编码向量进行解码操作,输出重建信号;其中,所述重建信号与输入重建编码向量中的待解码码流的重建编码向量相关且与输入重建编码向量中的已解码码流的重建编码向量不相关,解码网络不对输入重建编码向量进行非真实数据填充。
因此,本申请实施例通过根据解码网络对应的有效输入长度确定填充数据的长度,实现精确控制解码时所填充的已解码码流的重建编码向量,使得解码网络一次推理的输出重建信号只取决于当前重建编码向量,有利于避免引入额外的运算,减少对计算资源的浪费,从而提高解码效率。同时,精确控制解码时所填充的已解码码流的重建编码向量,能够使得解码网络不对输入重建编码向量进行非真实数据填充,避免重建信号受到解码网络中非真实数据填充的影响,从而提高重建信号质量。
在一些实施例中,编码网络的输入的第二音频数据中的待编码音频数据的长度小于或等于一帧数据的数据量。这里,第二音频数据即编码网络一次推理输入的音频数据,第二音频数据的长度为上述有效输入长度。这样,编码网络的输出编码向量为帧级别的编码向量,从而实现逐帧码流可分离的效果。
在一些实施例中,解码网络的输入重建编码向量中的待解码重建编码向量的长度等于一帧数据对应的重建编码向量长度。这里,输入重建编码向量即解码网络一次推理输入的编码向量,输入重建编码向量的长度为上述有效输入长度。这样,解码网络的输出重建信号为帧级别的重建信号,从而实现逐帧重建信号可分离的效果。
下面通过一些实施例对本申请实施例的技术方案进行详细说明。下面这几个实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
首先,下面以编码端为例,对本申请实施例提供的音频编码方法进行介绍。
图4为本申请一实施例提供的音频编码方法流程示意图。本申请实施例的执行主体可以为具体音频编码功能的装置,例如音频编码装置。在一些实施例中,该音频编码装置可以为图1中的编码设备。为了便于描述,本申请实施例以执行主体为编码设备为例进行说明。
如图4所示,本申请实施例的音频编码方法包括如下步骤410至440:
410,获取待编码的第一音频数据。
其中,待编码的第一音频数据可以是任意长度的一段音频数据,本申请实施例对此不做限定。
在一些实施例中,待编码的第一音频数据包括M帧数据和一个不完整帧长对应的数据;M为大于或等于1的正整数。其中,M帧数据即一个或多个完整帧长的音频帧,不完整帧长对应的数据,即不完整的音频帧,比如1/2的音频帧,1/4的音频帧,或者其他长度的音频帧,不做限定。
在本申请实施例中,音频帧可以理解为是对原始音频数据进行分帧处理和加窗处理后得到的具有指定时间长度的数据分段。
示例性的,原始音频数据可以是按照预设采样率得到的具有一定采样时长的音频数据。在一些示例中,原始音频数据可以是终端采集到的语音。在一些示例中,原始音频数据可以是网络语音通话或视频通话场景中采集到的声音信号。在一些示例中,原始音频数据可以是直播场景中采集到的声音信号,也可以是在线唱歌场景中采集到的声音信号,也可以是语音广播场景中采集到的声音信号。在一些示例中,原始音频数据可以是存储资源中获取到的音频数据。例如,原始音频数据可以是存储的语音、音乐、视频等。本申请实施例对原始音频数据的具体获取方式不做限制。
在一种可能的实现方式中,本申请实施例在对原始音频数据进行音频帧划分时,可以设定预设时长进行划分,例如,将原始音频数据中每隔10ms的原始音频划分为一个音频帧,或者将原始音频数据中每隔20ms的原始音频划分为一个音频帧,本申请对此不做限定。该预设时长即为帧长。
为了使得音频数据可以存储和远距离传输,需要对获取到的原始音频数据进行音频编码,以减少音频数据的大小,进而可以降低音频数据的存储空间,或者降低远距离传输所消耗的流量带宽。
420,根据第一音频数据和填充数据,得到组合音频数据;其中,填充数据的长度根据编码网络对应的有效输入长度确定,填充数据包括已编码音频数据。
具体而言,基于深度学习的端到端的音频编解码系统中的编码网络使用卷积网络进行数据处理。卷积网络中每个卷积层使用卷积核对输入数据进行编码操作,每个卷积层输出数据长度会小于其输入数据长度。为了确保卷积网络输出所需的长度,需要对输入音频数据进行长度填充。
作为示例,以卷积网络为常规卷积网络为例,批处理中的一个元素(批处理中的每个元素都发生相同的过程)的处理过程如图5A所。可以看到,为了计算输出的一个元素,需要查看输入的长度为核大小(kernel_size)的一系列连续元素。在该示例中,kernel_size为3。为了获取输出,将输入的子序列与相同长度的学习权重的核向量进行点积。为了获得输出的下一个元素,应用相同的过程,但是输入序列的kernel_size大小的窗口向右移动一个元素(对于该模型,步幅设置为1)。应注意,这里同一组核向量的权重用于计算一个卷积层的每个输出。为了确保输出序列与输入序列具有相同的长度,可以对输入序列进行零填充,比如额外的零值被添加到输入向量的开头或结尾,以确保输出具有网络所需的长度。
作为示例,以卷积网络为因果卷积网络为例,对于因果关系的卷积层,对于输入序列{0,...,input_length-1}中的第i个元素,输出序列的第i个元素仅取决于索引为{0,...,i}的输入序列的元素。换句话说,输出序列的一个元素只能依赖于输入序列中该元素之前的元素。为了确保输出向量与输入向量具有相同的长度,需要用于零填充。比如可以在输入向量左侧应用零填充。由于输入序列的右侧没有填充,因此其依赖的最后一个元素是输入的最后一个元素。输出序列的倒数第二个输出元素与最后一个输出元素相比,其内核窗口向左移动了一个,这意味着它在输入序列中最后边的依赖关系是输入序列的倒数第二个元素。通过归纳可知,对于输出序列中的每个元素,其在输入序列中的最新依赖项具有与其自身相同的索引。
图5B显示了输入长度为4,且kernel_size为3的示例。可见,通过2个条目的左侧零填充,可以遵循因果关系规则的同时实现相同的输出长度。维持输入长度所需的零填充条目数始终等于kernel_size-1。同样的,如图5C所示,当卷积网络使用因果卷积时,待处理的数据放在输入数据的最右边,通过在输入数据左边填充已编码的数据或补零来达到网络的有效输入长度的要求。
基于此在该步骤中对音频数据填充一定长度的填充数据,以确保编码网络输出所需的编码向量长度。
本申请实施例中,通过根据编码网络对应的有效输入长度来确定填充数据的长度,能够精确控制编码时对输入音频数据所填充的已编码数据长度,从而能够确保编码网络一次推理的输出编码向量只取决于当前待编码数据。
下面结合附图详细描述不同长度的已编码数据长度对应的编码过程。
以端到端的一维数据的编码过程进行描述。假设端到端编解码网络使用因果卷积网络,每次编码端推理所需要的有效输入长度为Nop。为方便讨论,将一次编码推理对应的输入数据N可以进一步表示为[N2,N1,N0],其中N0表示长度为N0的当前待编码数据,N1表示长度为N1的已编码数据,N2表示长度为N2的其他填充数据(如零填充)。
可选的,N0可以取值为编解码系统帧长度(即一帧数据对应的数据量)。对于一个确定的端到端编解码系统,N0可以假设为确定值。
如果编码网络的输入数据只包含当前待编码数据N0,那么编码网络会在输入数据左边填充(Nop-N0)个非真实数据(比如零)来保证网络能够正常进行运算。但是,这样会导致计算过程引入很多的零参与运算,进而导致解码后得到的重建信号质量很差。
因此,在本申请实施例中,通过将填充数据配置为已编码数据,能够使得在当前待编码数据N0左边填充一定量的已编码数据N1,尽可能地使用真实数据参与运算,确保解码后得到的重建信号的质量。
假设使用N1长度的已编码数据进行填充,此时填充数据对应三种情况。
第一种情况(对应图6A),如果N1+N0<Nop,那么卷积网络将继续对输入数据进行补零操作(补充一定长度的其他填充数据,如情况1中箭头所示)以确保编码推理所需要的有效输入长度。这种情况等效于输入数据为[N2,N1,N0]。这样,编码网络的输出长度包括最右侧至情况1中箭头对应的位置,包括N0对应的码流、N1对应的码流和N2对应的码流。也就是说,一部分待编码数据所对应的特征会受到卷积网络自身对输入数据补零操作的影响,进而影响重建信号的质量。
第二种情况(对应图6B),如果N1+N0>Nop,那么卷积网络将使用已编码数据作为填充数据,同时该次推理将使用所有的数据(N1+N0)进行推理。此时输入数据为[N1,N0]。这样,编码网络的输出长度包括最右侧至情况2中箭头对应的位置,包括N0对应的码流、N1对应的码流。因此,所产生的码流中的部分码流对应到待编码数据N0,部分码流对应到已编码数据N1。但是,这样引入的额外的运算来计算(N1+N0-Nop)部分的数据,造成了计算资源的浪费。
第三种情况(对应图6C),如果N1+N0=Nop,那么卷积网络将使用已编码数据作为填充数据,同时该次推理仍然使用所有的数据(N1+N0)进行推理。此时输入数据为[N1,N0]。但是,由于N1+N0=Nop,因此编码网络的输出长度包括最右侧至情况3中箭头对应的位置,仅包括N0对应的码流。因此,所产生的码流全部对应到待编码数据N0,不会引入额外的运算来计算已编码数据,能达到理论上编码所需要的最低计算量。同时,在该情况下不需要对输入数据进行额外的补零操作,进而能够避免因为补零引起的一系列处理,有利于达到更优的编码质量。
因此,本申请实施例通过对待编码数据填充已编码数据,使得填充后输入数据长度为编码网络在编码端推理所需要的有效输入长度Nop,能够实现精确控制编码时对输入音频数据所填充的已编码数据长度,从而确保编码网络一次推理的输出编码向量只取决于当前待编码数据,同时确保在计算过程不引入非真实数据参与运算。
在一些实施例中,对于上述第三种情况,当N0取值为编解码系统帧长度(即一帧数据对应的数据量)时,情况3中产生的码流对应系统帧长(即一帧数据)的码流,实现编码网络所产生的当前帧的码流只取决于当前待编码数据,实现帧级码流可分离的效果。
需要说明的是,对于给定的编码网络,可以根据编码网络架构计算对应的有效输入长度Nop。在一些实施例中,对于一个编码网络(网络架构可以为已知或未知),可以通过测试的方式确定编码网络的有效输入长度。例如,可以将不同大小的音频数据量输入编码网络,当输入音频数据长度小于有效数据长度Nop时系统报错,当输入音频数据长度大于或等于有效数据长度Nop时系统不报错,从而确定编码网络的有效输入长度。
在一些实施例中,填充数据的长度根据编码网络对应的有效输入长度和第一音频数据的非整数倍帧长的数据余量共同确定。
具体的,第一音频数据的非整数倍帧长的数据余量,指的是第一音频数据中去除整数倍帧长的音频帧后剩余的音频数据。示例性的,第一音频数据的非整数倍帧长的数据余量可以表示为如下公式:
其中,Nr表示音频数据的非整数倍帧长,N0表示第一音频数据,floor()为向下取整数运算,Nf为一帧音频数据(即一个音频帧)的长度。
在一些实施例中,可以记表示第一音频数据中包含的完整音频帧的个数。
示例性的,当第一音频数据包括M帧数据时,第一音频数据的长度为帧长的整数倍,相应的第一音频数据的非整数倍帧长的数据余量为零。
示例性的,当音频数据包括M帧数据和一个不完整帧长对应的数据时,第一音频数据的长度为帧长的非整数倍,相应的第一音频数据的非整数倍帧长的数据余量为该不完整帧长对应的数据量。
示例性的,当音频数据包括一个不完整帧长对应的数据时,第一音频数据的非整数倍帧长的数据余量为该不完整帧长对应的数据量。
在一些实施例中,若第一音频数据的非整数倍帧长的数据余量非零,则所述填充数据的长度为编码网络的有效输入长度与该数据余量之差。
示例性的,当第一音频数据包括M帧数据和一个不完整帧长的数据时,或者当第一音频数据仅包括一个不完整帧长的数据时,填充数据的长度为编码网络的有效输入长度与该不完整帧长对应的数据量的差值。
示例性的,填充数据的长度可以表述为如下公式:
N1=Nop-Nr
其中,N1为填充数据的长度,Nop为编码网络的有效输入长度。
在一些实施例中,若第一音频数据的非整数倍帧长的数据余量为零,则填充数据的长度为编码网络的有效输入长度与一帧数据对应的数据量之差。
示例性的,当第一音频数据仅包括M帧数据时,填充数据的长度为编码网络的有效输入长度与一帧数据对应的数据量的差值。这样,第一音频数据中的一帧数据与填充数据的长度之和为编码网络的有效输入长度。
示例性的,填充数据的长度可以表述为如下公式:
N1=Nop-Nf
其中,N1为填充数据的长度,Nop为编码网络的有效输入长度。
在确定填充数据的长度之后,可以将该填充数据与第一音频数据组合,得到组合音频数据。示例性的,组合音频数据可以表示为N,N=[N1,N0]。
在一些实施例中,当编码网络包括因果卷积网络时,可以将填充数据填充至待编码的第一音频数据之前得到组合音频数据,使得填充数据与待编码的第一音频数据中的最靠前的待编码数据组合作为编码网络的输入。示例性的,填充数据与音频数据的位置可以参考图6A至图6C中已编码数据填充(N1)与待编码数据(N0)的位置关系,将填充数据填充至待编码的第一音频数据左侧。
430,将组合音频数据中的有效输入长度对应的第二音频数据输入编码网络,利用编码网络对第二音频数据进行编码操作,输出编码向量;其中,编码向量与第二音频数据中的待编码音频数据相关且与第二音频数据中的已编码音频数据不相关,编码网络不对第二音频数据进行非真实数据填充。
具体的,编码网络对组合音频数据进行编码操作,输出音频数据的编码向量。其中,每次输入编码网络的第二音频数据的长度为有效输入长度,实现编码网络每次推理输出的编码向量与当前推理所输入的第二音频数据中的待编码音频数据相关,且与当前推理所输入的第二音频数据中的已解码音频数据不相关,且编码网络在每次推理时不对输入的第二音频数据进行非真实数据填充,从而有利于确保编码网络每次推理的输出编码向量只取决于输入的当前待编码数据,以及确保在每次推理计算过程不引入非真实数据参与运算。示例性的,非真实数据为零。
在一些实施例中,编码网络的第二音频数据中的待编码音频数据小于或等于一帧数据的数据量。这里,第二音频数据即编码网络一次推理输入的音频数据,第二音频数据的长度为上述有效输入长度。
具体而言,传统的音频编解码器一般处理特定长度(如帧长)的输入数据,如一帧20ms长度。如果输入数据长度小于20ms,那么需要对输入数据进行补零操作,直至数据长度达到预设的帧长。相反,如果输入数据长度大于20ms,那么会对输入数据进行切片处理,使得除最后一片之外的每一片的长度为预设的帧长,并根据需要对最后一帧进行补零处理。之后,每一帧数据会作为基本的编码单元进行编解码操作,能够做到逐帧码流可分离。
而基于深度学习的音频编解码器支持可变长度的输入数据。如果一次推理的数据大于神经网络模型的感受野Nrf,那么该次推理会使用所有的数据进行推理,从而导致所产生的码流不能一一对应到输入数据。然而,实时通信场景下,待编码的数据是新接收到的数据,假设其长度为Nsr。如果不能精确计算需要填充的数据的数量,Nsr的前一部分会被用于当次编码,而剩余部分又会被用于下次编码,这样就失去了逐帧数据码流可分离的功能,也需要对前后编码的结果引入额外的后处理来对齐输出数据。
而在本申请实施例中,通过配置编码网络的输入音频数据中的待编码音频数据小于或等于一帧数据的数据量,能够使得编码网络每次推理时输出编码向量为帧级别的编码向量。例如,当编码网络的输入音频数据中的待编码音频数据小于一帧数据对应的数据量时,该待编码音频数据对应一个不完整帧长的数据,此时输出的当前帧的编码向量包括该不完整帧长数据对应的编码向量。又例如,当编码网络的输入音频数据中的待编码音频数据等于一帧数据的数据量时,该待编码音频数据对应一个完整的音频帧,此时输出的当前帧的编码向量即为该完整音频帧对应的编码向量。因此,本申请实施例能够实现逐帧码流可分离的效果。
在一些实施例中,参见图7,可以根据如下步骤431获取编码网络的输出编码向量。
431,将组合音频数据中的第一个有效输入长度对应的音频数据输入编码网络,利用编码网络对输入的音频数据进行编码操作,输出第一帧数据对应的第一编码向量。
其中,组合音频数据的长度大于或等于有效输入长度。作为一个示例,当待编码的第一音频数据小于或等于一帧数据的数据量时,组合音频数据的长度等于有效输入长度。此时组合音频数据中第一个有效输入长度对应的音频数据,即为组合音频数据本身。作为另一个示例,当待编码的第一音频数据大于一帧数据的数据量时,组合音频数据的长度大于有效输入长度。此时组合音频数据中的第一个有效输入长度对应的音频数据,即为组合音频数据中的填充数据与音频数据中的非整数倍帧长的数据余量,其中该数据余量为第一音频数据中时域最靠前的数据。
组合音频数据的第一个有效输入长度对应的音频数据,即组合音频数据中第一批次输入编码网络的音频数据。其中,每个批次输入编码网络的数据长度均为有效输入长度。
第一种可能的情况,当组合音频数据的长度等于有效输入长度时,将该组合音频数据整体作为第一个有效输入长度对应的音频数据输入编码网络。如图8A所示,可以将已编码数据填充N1(即填充数据)与待编码数据N0组合,拼接到待编码数据N0左侧一起输入到编码网络,其中已编码数据填充N1与待编码数据N0组合后的长度等于有效输入长度。相应的,编码网络对输入音频数据进行编码操作,输出1帧数据的编码向量。该编码向量包括待编码数据N0对应的编码向量。
可选的,如果待编码数据N0小于一帧数据的数据量,则该帧数据的编码向量还包括部分已编码数据填充N1对应的编码向量。可选的,如果待编码数据N0等于一帧数据的数据量,则该帧数据对应的编码向量仅包含待编码数据N0对应的编码向量。
第二种可能的情况,当组合音频数据的长度大于有效输入长度时,将该组合音频数据中的第一个有效输入长度对应的音频数据输入编码网络。如图8B所示,待编码数据N0大于一帧数据的数据量,此时可以将已编码数据填充N1(即填充数据)与待编码数据N0中的数据余量(Nr)组合,拼接到数据余量Nr左侧一起输入到编码网络,其中已编码数据填充N1与数据余量Nr组合后的长度等于有效输入长度。相应的,编码网络对输入的音频数据(第1个有效输入长度对应的音频数据)进行编码操作,输出第1帧数据的编码向量。该编码向量包括数据余量Nr对应的编码向量,以及部分已编码数据填充N1对应的编码向量。
可选的,在另一些实施例中,当数据余量Nr为零时,可以将已编码数据填充N1与待编码数据N0中的第一个音频帧组合,拼接到该音频帧左侧一起输入到编码网络中,其中已编码数据填充N1与第一个音频帧组合后的长度等于有效输入长度。相应的,编码网络输出的第1帧数据的编码向量包括待编码数据N0中的第一个音频帧的编码向量。
可选的,对于第二种情况,在得到第1帧数据的编码向量之后,还可以执行以下步骤432继续对其他待编码音频数据进行编码。
432,以一帧数据对应的数据量为步进长度,将组合音频数据中的第i个有效输入长度对应的音频数据输入编码网络,利用编码网络对输入音频数据进行编码操作,输出第i帧数据对应的第二编码向量,i为大于1的正整数。
示例性的,对于上述步骤431中的第二种可能的情况,可以根据步骤432对待编码数据N0中的剩余音频数据进行编码。
图8C示出了对音频帧1进行编码的一个示意图。如图8C所示,在对数据余量Nr进行编码获取第1帧数据的编码向量之后,以一帧数据对应的数据量为步长,向右移动有效输入长度窗口得到组合音频数据中的第2个有效输入长度的音频数据,其中包括音频帧1、数据余量Nr和部分已编码填充数据N1。此时,第2个有效输入长度中数据余量Nr为已编码音频数据,音频帧1为待编码音频数据。将第2个有效输入长度的音频数据输入编码网络,编码网络对输入音频数据(第2个有效输入长度对应的音频数据)进行编码操作。在该卷积操作中将数据余量Nr和部分已编码填充数据N1作为音频帧1的填充数据,输出第2帧数据的编码向量。该编码向量包括音频帧1对应的编码向量。
图8D示出了对音频帧2进行编码的一个示意图。如图8D所示,在对音频帧1进行编码获取第2帧数据的编码向量之后,继续以一帧数据对应的数据量为步长,向右移动有效输入长度窗口得到组合音频数据中的第3个有效输入长度的音频数据。其中包括音频帧2、音频帧1、数据余量Nr和部分已编码填充数据N1。此时,第3个有效输入长度中音频帧1、数据余量Nr为已编码音频数据,音频帧2为待编码音频数据。将第3个有效输入长度的音频数据输入编码网络,编码网络对输入音频数据(第3个有效输入长度对应的音频数据)进行编码操作。在该卷积操作中将音频帧1、数据余量Nr和部分已编码填充数据N1作为音频帧2的填充数据,输出第3帧数据的编码向量。该编码向量包括音频帧2对应的编码向量。
可以理解的是,本申请实施例通过在第1个有效输入长度中包含数据余量,能够实现优先对待编码数据中的非整数倍帧长的数据余量进行编码,然后依次对待编码数据中的整数倍帧长的音频帧依次编码,从而使得待编码数据的第1帧数据之后的帧均对应完整音频帧的编码向量。
应理解,图8B至图8D对待编码数据N0的编码过程进行示意性说明,本申请实施例并不限制与此。例如,在另一些实施例中,第3个有效输入长度对应的音频数据中可以不包括已编码数据填充N1。又例如,在另一些实施例中,待编码数据N0还可以包括更多的音频帧,如音频帧3、音频帧4等等。其中,对于音频帧2之后的音频帧的编码过程与音频帧1或音频帧2类似,可以参考上文中的相关描述,这里不再赘述。
在另一些实施例中,对于数据余量Nr为零的情况,对于第i个有效输入长度的音频数据的编码过程与数据余量Nr为非零的情况类似,可以参考图8C和图8D的相关描述,不再赘述。
在一些实施例中,当待编码的第一音频数据包括M帧数据和一个不完整帧长对应的数据时,待编码的音频数据可以按照上述图8B至图8D的方式,分为(M+1)次依次输入编码网络,分别得到(M+1)帧数据对应的编码向量。其中,编码网络输出的最后M帧(即第2帧至第(M+1)帧)数据的编码向量一一对应最后输入的M帧数据,倒数第(M+1)帧(即第1帧)数据的编码向量包含在编码网络输出的倒数(M+1)帧(即第一帧)数据的编码向量中。可选的,编码网络输出的倒数第(M+2)帧数据的编码向量,及其之前的编码向量,均与当前待编码的数据N0没有关系。因此,本申请实施例能够实现编码时逐帧码流可分离。
在另一些实施例中,编码网络的输入第二音频数据中的待编码音频数据的长度还可以大于一帧数据对应的数据量,例如包括2个或者更多音频帧。其中,输入的第二音频数据即编码网络一次推理输入的音频数据,第二音频数据的长度为上述有效输入长度。对应的,编码网络一次推理输出的编码向量大于帧长对应的编码向量,比如为2个或者更多音频帧的编码向量,本申请实施例对此不做限定。
编码端基于上述步骤,得到音频数据的编码向量后,执行如下步骤440。
440,对编码向量进行量化得到量化结果,并根据量化结果得到第一音频数据的码流。
示例性的,可以将编码向量输入至量化器,在码本中查询得到编码向量对应的码本索引,并将码本索引进行编码,得到二进制码流。本申请实施例对编码端对第一音频数据的编码向量进行量化的具体方式不做限定。
因此,本申请实施例通过根据编码网络对应的有效输入长度确定填充数据的长度,实现精确控制编码时所填充的已编码数据数据量,使得编码网络一次推理的输出编码向量只取决于当前待编码数据,有利于避免引入额外的运算,减少对计算资源的浪费,从而提高编码效率。同时,精确控制编码时所填充的已编码数据量,能够使得编码网络不对输入音频数据进行非真实数据填充,避免编码向量受到编码网络中非真实数据填充的影响,从而提高编码质量。
在一些实施例中,码流中还可以包括第一指示信息,用于指示逐帧码流是否对应完整帧长的音频数据。
示例性的,第一指示信息可以包括至少一个第一比特,每个第一比特与一个音频帧的码流对应,用于指示对应音频帧是否是完整帧长的音频数据。作为示例,第一比特可以包括1个比特位,当第一比特的比特值为1时可以指示对应音频帧为完整帧长的音频数据;当第一比特的比特值为0时可以指示对应音频帧为不完整帧长的音频数据。
作为具体的例子,当待编码的第一音频数据包括M帧数据和一个不完整帧长的数据时,对编码网络输出的编码向量进行量化得到音频数据的码流中,最后M帧(即第2帧至第(M+1)帧)数据的码流分别对应M个第一比特,其比特值均为1,指示该M帧数据的码流对应完整帧长的音频数据。码流中倒数第(M+1)帧(即第1帧)数据的码流对应1个第一比特,其比特值为0,指示该帧数据的码流对应不完整帧长的音频数据。
因此,本申请实施例通过在码流中携带第一指示信息,能够实现指示逐帧码流是否对应完整帧长的音频数据,基于此解码端能够根据第一指示信息确定逐帧码流是否对应完整帧长的音频数据,从而有利于解码端实现准确地解码。
在一些实施例中,码流中还可以包括第二指示信息,用于指示不完整帧长对应的音频数据量。
具体而言,当码流中第一指示用于指示对应码流对应不完整帧长的音频数据时,第二指示信息可以进一步该不完整帧长对应的音频数据量。示例性的,第二指示信息可以包括至少一个第二比特,用于指示对应音频帧的数据长度。示例性的,第二比特的数据类型是整形(integer)。
因此,本申请实施例通过在码流中携带第二指示信息,能够进一步对不完整帧长的音频数据量进行指示,基于此解码端能够根据第二指示信息确定该不完整帧长的音频数据量,从而有利于解码端实现准确地解码。
上文对本申请实施例涉及的音频编码方法进行介绍。下面以解码端为例,对本申请实施例提供的音频解码方法进行介绍。
图9为本申请一实施例提供的音频解码方法流程示意图。本申请实施例的执行主体可以为具体音频解码功能的装置,例如音频解码装置。在一些实施例中,该音频解码装置可以为图1中的解码设备。为了便于描述,本申请实施例以执行主体为解码设备为例进行说明。
如图9所示,本申请实施例的音频解码方法包括如下步骤910至940:
910,解析待解码码流,得到待解码码流对应的量化结果。
具体而言,为了使得音频数据可以存储和远距离传输,需要对获取到的原始音频数据进行音频编码,以减少音频数据的大小,进而可以降低音频数据的存储空间,或者降低远距离传输所消耗的流量带宽。编码端在对待编码的音频数据编码得到码流后,可以将该码流发送到解码端。对应的解码端接收到码流后,对码流进行解析,得到音频数据对应的量化结果。
其中,量化结果是对音频数据的编码向量进行量化得到,编码向量是通过编码网络对待编码的音频数据进行编码操作得到。其中,待编码的音频数据可以参考图4中步骤410中的描述,这里不再赘述。
在一些实施例中,待解码码流中还包括第一指示信息,用于指示逐帧码流是否对应完整帧长的音频数据。解码端通过解析码流,还可以获取该第一指示信息。
示例性的,第一指示信息可以包括至少一个第一比特,每个第一比特与一个码流对应,用于指示对应码流是否是对应完整帧长的音频数据。示例性的,若待编码音频数据经过编码(如上文图4所示的编码过程)得到一帧码流,则称该帧码流与该待编码音频数据对应。作为示例,这里该不完整帧长的音频数据量可以为上文中所述的数据余量。
作为示例,第一比特可以包括1个比特位,当第一比特的比特值为1时可以指示码流对应完整帧长的音频数据;当第一比特的比特值为0时可以指示码流对应不完整帧长的音频数据。
作为具体的例子,当待编码的第一音频数据包括M帧数据和一个不完整帧长的数据时,对编码网络输出的编码向量进行量化得到音频数据的码流中,最后M帧(即第2帧至第(M+1)帧)数据的码流分别对应M个第一比特,其比特值均为1,指示该M帧数据的码流对应完整帧长的音频数据。码流中倒数第(M+1)帧(即第1帧)数据的码流对应1个第一比特,其比特值为0,指示该帧数据的码流对应不完整帧长的音频数据。
因此,本申请实施例通过在码流中携带第一指示信息,能够实现指示逐帧码流是否对应完整帧长的音频数据,基于此解码端能够根据第一指示信息确定逐帧码流是否对应完整帧长的音频数据,从而有利于解码端实现准确地解码。
在一些实施例中,码流中还可以包括第二指示信息,用于指示不完整帧长的待编码音频数据对应的待编码音频数据量。解码端通过解析码流,还可以获取该第二指示信息。
具体而言,当码流中第一指示用于指示对应音频帧为不完整音频帧时,解码端可以进一步获取第二指示信息,以确定该不完整帧长对应的音频数据量。示例性的,第二指示信息可以包括至少一个第二比特,用于指示对应音频帧的数据长度。示例性的,第二比特的数据类型是整形(integer)。
920,对量化结果进行反量化,得到待解码码流的重建编码向量。
具体的,解码端对获取到的码流进行解析,得到待解码码流对应的量化结果后,对该量化结果进行反量化,得到待解码码流的重建编码向量。
930,根据所述重建编码向量和填充数据,得到组合重建编码向量;其中,填充数据的长度根据解码网络对应的有效输入长度确定,填充数据包括已解码码流的重建编码向量。
具体而言,基于深度学习的端到端的音频编解码系统中的解码网络使用卷积网络进行数据处理。卷积网络中每个卷积层使用卷积核对输入数据进行解码操作,每个卷积层输出数据长度会小于其输入数据长度。为了确保卷积网络输出所需的长度,需要对输入音频数据进行长度填充。基于此在该步骤中对重建编码向量填充一定长度的填充数据,以确保解码网络输出所需的重建信号长度。
具体的,卷积网络的处理过程可以参考上文中图5A至图5C中的相关描述,这里不再赘述。
本申请实施例中,通过根据解码网络对应的有效输入长度来确定填充数据的长度,能够精确控制解码时对输入重建编码向量所填充的已解码码流的重建编码向量长度,从而能够确保解码网络一次推理的输出的重建信号只取决于当前待解码码流的重建编码向量。
下面结合附图详细描述不同长度的已解码码流的重建编码向量长度对应的解码过程。
以对端到端的一维数据的解码过程进行描述。假设端到端编解码网络使用因果卷积网络,每次解码端推理所需要的有效输入码流长度为Bop。为方便讨论,将一次解码推理对应的输入码流B的重建编码向量可以进一步表示为[B2,B1,B0],其中B0表示长度为B0的当前待解码码流的重建编码向量,B1表示长度为B1的已解码码流的重建编码向量,B2表示长度为B2的其他填充数据(如零填充)。
可选的,B0可以取值为编解码系统帧长度(即一帧数据)对应的的重建编码向量长度。对于一个确定的端到端编解码系统,B0可以假设为确定值。
如果解码网络的输入数据只包含当前待解码码流B0的重建编码向量,那么解码网络会在输入重建编码向量左边填充(Bop-B0)个零(或其他非真实数据)来保证网络能够正常进行运算。但是,这样会导致计算过程引入很多的零参与运算,进而导致解码后得到的重建信号质量变差。
本申请实施例中,可以在当前待解码码流B0的重建编码向量左边填充一定量的已解码码流B1的重建编码向量,尽可能地使用真实数据参与运算,确保解码后得到的重建信号的质量。假设使用B1长度的已解码码流的重建编码向量进行填充。此时填充数据对应三种情况。
第一种情况(对应图10A),如果B1+B0<Bop,那么卷积网络将继续对输入重建编码向量进行补零操作(补充一定长度的其他填充数据,如情况1中箭头所示)以确保解码推理所需要的有效输入长度。这种情况等效于输入的重建编码向量为[B2,B1,B0]。这样,解码网络的输出长度包括最右侧至情况1中箭头对应的位置,包括B0对应的重建信号、B1对应的重建信号和B2对应的重建信号。也就是说,一部分待解码码流所对应的特征会受到卷积网络自身对输入的重建编码向量补零操作的影响,进而影响重建信号的质量。
第二种情况(对应图10B),如果Bi+B0>Bop,那么卷积网络将使用已解码码流的重建编码向量作为填充数据,同时该次推理将使用所有的码流(B1+B0)的重建编码向量进行推理。此时输入的重建编码向量为[B1,B0]。这样,解码网络的输出长度包括最右侧至情况2中箭头对应的位置,包括B0对应的重建信号、B1对应的重建信号。因此,所产生的重建信号中的部分重建信号对应到待解码码流B0,部分重建信号对应到已解码码流B1。但是,这样引入的额外的运算来计算(B1+B0-Bop)部分的数据,造成了计算资源的浪费。
第三种情况(对应图10C),如果B1+B0=Bop,那么卷积网络将使用已解码码流的重建编码向量作为填充数据,同时该次推理仍然使用所有的码流(B1+B0)的重建编码向量进行推理。此时输入的重建编码向量为[B1,B0]。但是,由于B1+B0=Bop,因此解码网络的输出长度包括最右侧至情况3中箭头对应的位置,仅包括B0对应的重建信号。因此,所产生的重建信号全部对应到待解码码流B0,不会引入额外的运算,并且不需要对输入的重建编码向量进行额外的补零操作。
因此,本申请实施例通过对待解码码流的重建编码向量填充已编码码流对应的重建编码向量,使得填充后输入数据长度为解码网络在解码端推理所需要的有效输入长度Bop,能够实现精确控制解码时对输入重建编码向量所填充的已解码码流的重建编码向量的长度,从而确保解码网络一次推理的输出重建信号只取决于当前待解码码流的重建编码向量,同时确保在计算过程不引入非真实数据参与运算。
在一些实施例中,对于上述第三种情况,当B0取值为编解码系统帧长度对应的重建编码向量长度时,情况3中产生的重建信号对应一个完整帧长的音频数据,实现解码网络所产生的当前帧的重建信号只取决于当前待解码码流的重建编码向量,实现帧级重建信号可分离的效果。
需要说明的是,对于给定的解码网络,可以根据解码网络架构计算对应的有效输入长度Bop。在一些实施例中,对于一个解码网络(网络架构可以为已知或未知),可以通过测试的方式确定解码网络的有效输入长度。例如,可以将不同大小的重建编码向量输入解码网络,当输入重建编码向量长度小于有效数据长度Bop时系统报错,当输入重建编码向量长度大于或等于有效数据长度Bop时系统不报错,从而确定解码网络的有效输入长度。
在一些实施例中,填充数据的长度根据解码网络对应的有效输入长度和一帧数据对应的重建编码向量长度确定。
在一些实施例中,可以记表示码流中包含的音频帧的个数。其中,B0表示待解码码流的重建编码向量,Bf为一帧码流对应的重建编码向量的长度。
在一些实施例中,填充数据的长度为有效输入长度与一帧数据对应的重建编码向量长度的差。示例性的,填充数据的长度可以表述为如下公式:
B1=Bop-Bf
其中,B1为填充数据的长度,Bop为解码网络的有效输入长度。
在确定填充数据的长度之后,可以将该长度的填充数据与重建编码向量组合,得到组合重建编码向量。示例性的,组合重建编码向量可以表示为B,B=[B1,B0]。
在一些实施例中,当解码网络包括因果卷积网络时,可以将填充数据填充至待解码码流的重建编码向量之前得到组合重建编码向量,使得填充数据与待解码码流的重建编码向量中的最靠前的重建编码向量组合作为解码网络的输入。示例性的,填充数据与重建编码向量的位置可以参考图10A至图10C中已解码码流的重建编码向量填充(B1)与待解码码流的重建编码向量(B0)的位置关系,将填充数据填充至待解码码流的重建编码向量左侧。
940,将组合重建编码向量中的有效输入长度对应的重建编码向量输入解码网络,利用解码网络对输入重建编码向量进行解码操作,输出重建信号;其中,重建信号与输入重建编码向量中的待解码码流的重建编码向量相关且与输入重建编码向量中的已解码码流的重建编码向量不相关,解码网络不对输入重建编码向量进行非真实数据填充。
具体的,解码网络对组合重建编码向量进行解码操作,输出码流的重建信号。其中,每次输入解码网络的输入重建编码向量的长度为有效输入长度,实现解码网络每次推理输出的重建信号与当前推理所输入的输入重建编码向量中的待解码码流的重建编码向量相关,且与当前推理所输入的输入音频数据中的已解码码流的重建编码向量不相关,且解码网络在每次推理时不对输入重建编码向量进行非真实数据填充,从而有利于确保解码网络每次推理的输出重建信号只取决于输入的当前待解码码流的重建编码向量,以及确保在每次推理计算过程不引入非真实数据参与运算。示例性的,非真实数据为零。
在一些实施例中,解码网络的输入重建编码向量中的待编码码流的重建编码向量的长度等于一帧数据对应的重建编码向量长度。这里,输入重建编码向量即解码网络一次推理输入的特征向量,输入重建编码向量的长度为上述有效输入长度。
具体而言,传统的音频编解码器一般处理特定长度(如帧长)的输入数据,如一帧20ms长度。如果输入数据长度小于20ms,那么需要对输入数据进行补零操作,直至数据长度达到预设的帧长。相反,如果输入数据长度大于20ms,那么会对输入数据进行切片处理,使得除最后一片之外的每一片的长度为预设的帧长,并根据需要对最后一帧进行补零处理。之后,每一帧数据会作为基本的编解码单元进行编解码操作,能够做到逐帧码流可分离。
而基于深度学习的音频解码器支持可变长度的输入数据。如果一次推理的数据大于神经网络模型的感受野,那么该次推理会使用所有的数据进行推理,从而导致所产生的重建信号不能一一对应到输入数据。然而,实时通信场景下,待解码码流是新接收到的数据。如果不能精确计算需要填充的数据的数量,待解码码流的前一部分会被用于当次解码,而剩余部分又会被用于下次解码,这样就失去了逐帧重建信号可分离的功能。
而在本申请实施例中,通过配置解码网络的输入的待解码码流的重建编码向量的长度等于一帧数据对应的重建编码向量的长度,能够使得解码网络每次推理时输出重建信号为帧级别的重建信号。因此,本申请实施例能够实现逐帧码流可分离的效果。
在一些实施例中,参见图11,可以根据如下步骤941获取解码网络的输出重建信号。
941,将组合重建编码向量中的第一个有效输入长度的对应的重建编码向量输入解码网络,利用解码网络对输入重建编码向量进行解码操作,输出第一帧码流的第一重建信号。
其中,组合重建编码向量的长度大于或等于有效输入长度。作为一个示例,当待解码码流包括一帧数据对应的码流(即一帧码流)时,组合重建编码向量的长度等于有效输入长度。此时组合重建编码向量中第一个有效输入长度对应的编码向量,即为组合重建编码向量本身。作为另一个示例,当待解码码流包括多帧数据对应的码流(即多帧码流)时,组合重建编码向量的长度大于有效输入长度。此时组合重建编码向量的第一个有效输入长度对应的编码向量,即为填充数据和待解码码流中第一帧码流的重建编码向量。
组合重建编码向量的第一个有效输入长度对应的编码向量,即组合重建编码向量中第一批次输入解码网络的编码向量。其中,每个批次输入解码网络的数据长度均为有效输入长度。
第一种可能的情况,当组合重建编码向量的长度等于有效输入长度时,将该组合重建编码向量整体作为第一个有效输入长度对应的编码向量输入解码网络。如图12A所示,可以将已解码码流的重建编码向量填充B1(即填充数据)与待解码码流的重建编码向量B0组合,拼接到待解码码流的重建编码向量B0左侧一起输入到解码网络,其中已解码码流的重建编码向量填充B1与待解码码流的重建编码向量B0组合后的长度等于有效输入长度。相应的,解码网络对输入编码向量进行解码操作,输出一帧码流的重建信号。该重建信号包括待解码码流对应的重建信号。
第二种可能的情况,当组合重建编码向量的长度大于有效输入长度时,将该组合重建编码向量中的第一个有效输入长度对应的编码向量输入解码网络。如图12B所示,待解码码流包括多帧码流,此时可以将已解码码流的重建编码向量填充B1(即填充数据)与待解码码流的第1帧码流的重建编码向量组合,拼接到第1帧码流的重建编码向量左侧一起输入到解码网络,其中已解码码流的重建编码向量填充B1与第1帧码流的重建编码向量组合后的长度等于有效输入长度。相应的,解码网络对输入编码向量(第1个有效输入长度对应的重建编码向量)进行解码操作,输出第1帧码流的重建信号。该重建信号包括第一帧码流的重建信号。
可选的,对于第二种情况,在得到第1帧码流的重建信号之后,还可以执行以下步骤432继续对其他待解码码流进行解码。
942,以一帧数据对应的重建编码向量长度为步进长度,将组合重建编码向量中的第i个有效输入长度对应的重建编码向量输入解码网络,利用解码网络对输入重建编码向量进行解码操作,输出第i帧码流对应的第二重建信号,i为大于1的正整数。
示例性的,对于上述步骤941中的第二种可能的情况,可以根据步骤942对待解码码流中的剩余码流进行编码。
图12C示出了对第2帧码流进行编码的一个示意图。如图12C所示,在对第1帧码流进行解码获取第1帧码流的重建信号之后,以一帧数据对应的重建编码向量长度为步长,向右移动有效输入长度窗口得到组合重建编码向量中的第2个有效输入长度的编码向量,其中包括第2帧码流的重建编码向量、第2帧码流的重建编码向量和部分已解码码流的重建编码向量填充B1。此时,第2个有效输入长度中第1帧码流为已解码码流,音频帧1为待编码码流。将第2个有效输入长度的重建编码向量输入解码网络,解码网络对输入重建编码向量(第2个有效输入长度对应的重建编码向量)进行解码操作。在该卷积操作中将第1帧码流的重建编码向量和部分已解码码流的重建编码向量作为第2帧码流的重建编码向量的填充数据,输出第2帧码流的重建信号。该重建信号包括第2帧码流对应的重建信号。
对于第3帧码流的编码过程与第1帧码流或第2帧码流类似,可以参考上文中的相关描述,这里不再赘述。可选的,对于第3帧码流之后的码流的解码过程与第1帧码流或第2帧码流类似。
在一些实施例中,当待解码码流包括(M+1)帧码流时,在获取待解码码流的重建编码向量,并与填充数据组合得到组合重建编码向量后,可以按照上述图12A至图12B的方式,将组合重建编码向量分为(M+1)次依次输入解码网络,分别得到(M+1)帧码流对应的重建信号。其中,解码网络输出的最后(M+1)帧码流的重建信号一一对应输入的(M+1)帧码流。因此,本申请实施例能够实现解码时逐帧重建信号可分离。
可选的,当码流中倒数第(M+1)帧帧数据的码流对应的第一比特为0,指示该帧数据对对应不完整帧长的音频帧时,解码端可以进一步获取码流中的第二比特,并根据该第二比特确定该不完整帧长的音频数据量,从而确定重建信号中有效的数据长度。示例性的,该有效的数据长度与待编码音频数据对应,而与编码时填充的已编码音频数据无关。因此,本申请实施例通过在码流中携带第二指示信息,能够进一步对不完整帧长的音频数据量进行指示,基于此解码端能够根据第二指示信息确定该不完整帧长的音频数据量,从而有利于解码端实现准确地解码。
因此,本申请实施例通过根据解码网络对应的有效输入长度确定填充数据的长度,实现精确控制解码时所填充的已解码码流的重建编码向量,使得解码网络一次推理的输出重建信号只取决于当前重建编码向量,有利于避免引入额外的运算,减少对计算资源的浪费,从而提高解码效率。同时,精确控制解码时所填充的已解码码流的重建编码向量,能够使得解码网络不对输入重建编码向量进行非真实数据填充,避免重建信号受到解码网络中非真实数据填充的影响,从而提高重建信号质量。
以上结合附图详细描述了本申请的具体实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。
还应理解,在本申请的各种方法实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。应理解这些序号在适当情况下可以互换,以便描述的本申请的实施例能够以除了在图示或描述的那些以外的顺序实施。
上文详细描述了本申请的方法实施例,下文结合图13至图15,详细描述本申请的装置实施例。
图13是本申请实施例的音频解码装置10的示意性框图。如图13所示,所述音频解码装置10可包括解析单元11、反量化单元12、填充单元13和解码单元14。
解析单元11,用于解析待解码码流,得到所述待解码码流对应的量化结果;
反量化单元12,用于对所述量化结果进行反量化,得到所述待解码码流的重建编码向量;
填充单元13,用于根据所述重建编码向量和填充数据,得到组合重建编码向量;其中,所述填充数据的长度根据解码网络对应的有效输入长度确定,所述填充数据包括已解码码流的重建编码向量;
解码单元14,用于将所述组合重建编码向量中的所述有效输入长度对应的重建编码向量输入所述解码网络,利用所述解码网络对输入重建编码向量进行解码操作,输出重建信号;其中,所述重建信号与所述输入重建编码向量中的待解码码流的重建编码向量相关且与所述输入重建编码向量中的已解码码流的重建编码向量不相关,所述解码网络不对所述输入重建编码向量进行非真实数据填充。
在一些实施例中,所述输入重建编码向量中的待解码码流的重建编码向量的长度等于一帧数据对应的重建编码向量长度。
在一些实施例中,所述填充数据的长度根据所述有效输入长度和一帧数据对应的重建编码向量长度确定。
在一些实施例中,解码单元14具体用于:
将所述组合重建编码向量中的第一个有效输入长度的对应的重建编码向量输入所述解码网络,利用所述解码网络对输入重建编码向量进行解码操作,输出第一帧码流的第一重建信号。
在一些实施例中,解码单元14具体还用于:
以一帧数据对应的重建编码向量长度为步进长度,将所述组合重建编码向量中第i个有效输入长度对应的重建编码向量输入所述解码网络,利用所述解码网络对输入重建编码向量进行解码操作,输出第i帧码流的第二重建信号,i为大于1的正整数。
在一些实施例中,所述待解码码流还包括第一指示信息,用于指示逐帧码流是否对应完整帧长的音频数据。
在一些实施例中,所述待解码码流还包括第二指示信息,用于指示所述码流中不完整帧长对应的音频数据量。
在一些实施例中,所述解码网络包括因果卷积网络。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图13所示的音频解码装置10可以执行上述方法实施例,并且音频解码装置10中的各个模块的前述和其它操作和/或功能分别为了实现上述方法400中的相应流程,为了简洁,在此不再赘述。
图14是本申请实施例的一音频编码装置20的示意性框图。如图14所示,所述音频编码装置20可包括获取单元21、填充单元22、编码单元23和量化单元24。
获取单元21,用于获取待编码的第一音频数据;
填充单元22,用于根据所述第一音频数据和填充数据,得到组合音频数据;其中,所述填充数据的长度根据编码网络对应的有效输入长度确定,所述填充数据包括已编码音频数据;
编码单元23,用于将所述组合音频数据中的所述有效输入长度对应的第二音频数据输入所述编码网络,利用所述编码网络对所述第二音频数据进行编码操作,输出编码向量;其中,所述编码向量与所述第二音频数据中的待编码音频数据相关且与所述第二音频数据中的已编码音频数据不相关,所述编码网络不对所述第二音频数据进行非真实数据填充;
量化单元24,用于对所述编码向量进行量化得到量化结果,并根据所述量化结果得到所述第一音频数据的码流。
在一些实施例中,所述第二音频数据中的待编码音频数据小于或等于一帧数据的数据量。
在一些实施例中,所述填充数据的长度根据所述有效输入长度和所述第一音频数据的非整数倍帧长的数据余量确定。
在一些实施例中,若所述数据余量非零,则所述填充数据的长度为所述有效输入长度与所述数据余量之差。
在一些实施例中,若所述数据余量为零,则所述填充数据的长度为所述有效输入长度与一帧数据对应的数据量之差。
在一些实施例中,编码单元23具体用于:
将所述组合音频数据中的第一个有效输入长度对应的音频数据输入所述编码网络,利用所述编码网络对输入的音频数据进行编码操作,输出第一帧数据对应的第一编码向量。
在一些实施例中,编码单元23具体还用于:
以一帧数据对应的数据量为步进长度,将所述组合音频数据中的第i个有效输入长度对应的音频数据输入所述编码网络,利用所述编码网络对输入音频数据进行编码操作,输出第i帧数据对应的第二编码向量,i为大于1的正整数。
在一些实施例中,所述码流还包括第一指示信息,用于指示逐帧码流是否对应完整帧长的音频数据。
在一些实施例中,所述码流还包括第二指示信息,用于指示所述码流中不完整帧长对应的音频数据量。
在一些实施例中,所述第一音频数据包括M帧数据和一个不完整帧长对应的数据;M为大于或等于1的正整数。
在一些实施例中,所述编码网络包括因果卷积网络。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图14所示的音频编码装置20可以执行上述方法实施例,并且音频编码装置20中的各个模块的前述和其它操作和/或功能分别为了实现上述方法900中的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图15是本申请实施例提供的电子设备的示意性框图。
如图15所示,该电子设备30可包括:
存储器33和处理器32,该存储器33用于存储计算机程序34,并将该程序代码34传输给该处理器32。换言之,该处理器32可以从存储器33中调用并运行计算机程序34,以实现本申请实施例中的方法。
例如,该处理器32可用于根据该计算机程序34中的指令执行上述方法400或900中的步骤。
在本申请的一些实施例中,该处理器32可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器33包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序34可以被分割成一个或多个单元,该一个或者多个单元被存储在该存储器33中,并由该处理器32执行,以完成本申请提供的方法。该一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序34在该电子设备30中的执行过程。
可选的,如图15所示,该电子设备30还可包括:
收发器33,该收发器33可连接至该处理器32或存储器33。
其中,处理器32可以控制该收发器33与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器33可以包括发射机和接收机。收发器33还可以进一步包括天线,天线的数量可以为一个或多个。应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
本申请还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
可以理解的是,在本申请的具体实施方式中,当本申请以上实施例运用到具体产品或技术中并涉及到用户信息等相关的数据时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。

Claims (20)

1.一种音频解码方法,其特征在于,包括:
解析待解码码流,得到所述待解码码流对应的量化结果;
对所述量化结果进行反量化,得到所述待解码码流的重建编码向量;
根据所述重建编码向量和填充数据,得到组合重建编码向量;其中,所述填充数据的长度根据解码网络对应的有效输入长度确定,所述填充数据包括已解码码流的重建编码向量;
将所述组合重建编码向量中的所述有效输入长度对应的重建编码向量输入所述解码网络,利用所述解码网络对输入重建编码向量进行解码操作,输出重建信号;其中,所述重建信号与所述输入重建编码向量中的待解码码流的重建编码向量相关且与所述输入重建编码向量中的已解码码流的重建编码向量不相关,所述解码网络不对所述输入重建编码向量进行非真实数据填充。
2.根据权利要求1所述的方法,其特征在于,所述输入重建编码向量中的待解码码流的重建编码向量的长度等于一帧数据对应的重建编码向量长度。
3.根据权利要求2所述的方法,其特征在于,所述填充数据的长度根据所述有效输入长度和一帧数据对应的重建编码向量长度确定。
4.根据权利要求2所述的方法,其特征在于,所述将所述组合重建编码向量中的所述有效输入长度对应的编码向量输入所述解码网络,利用所述解码网络对输入重建编码向量进行解码操作,输出重建信号,包括:
将所述组合重建编码向量中的第一个有效输入长度的对应的重建编码向量输入所述解码网络,利用所述解码网络对输入重建编码向量进行解码操作,输出第一帧码流的第一重建信号。
5.根据权利要求4所述的方法,其特征在于,还包括:
以一帧数据对应的重建编码向量长度为步进长度,将所述组合重建编码向量中第i个有效输入长度对应的重建编码向量输入所述解码网络,利用所述解码网络对输入重建编码向量进行解码操作,输出第i帧码流的第二重建信号,i为大于1的正整数。
6.根据权利要求4所述的方法,其特征在于,所述待解码码流包括第一指示信息,用于指示逐帧码流是否对应完整帧长的音频数据。
7.根据权利要求6所述的方法,其特征在于,所述待解码码流还包括第二指示信息,用于指示所述码流中不完整帧长对应的音频数据量。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述解码网络包括因果卷积网络。
9.一种音频编码方法,其特征在于,包括:
获取待编码的第一音频数据;
根据所述第一音频数据和填充数据,得到组合音频数据;其中,所述填充数据的长度根据编码网络对应的有效输入长度确定,所述填充数据包括已编码音频数据;
将所述组合音频数据中的所述有效输入长度对应的第二音频数据输入所述编码网络,利用所述编码网络对所述第二音频数据进行编码操作,输出编码向量;其中,所述编码向量与所述第二音频数据中的待编码音频数据相关且与所述第二音频数据中的已编码音频数据不相关,所述编码网络不对所述第二音频数据进行非真实数据填充;
对所述编码向量进行量化得到量化结果,并根据所述量化结果得到所述第一音频数据的码流。
10.根据权利要求9所述的方法,其特征在于,所述第二音频数据中的待编码音频数据小于或等于一帧数据的数据量。
11.根据权利要求10所述的方法,其特征在于,所述填充数据的长度根据所述有效输入长度和所述第一音频数据的非整数倍帧长的数据余量确定,若所述数据余量非零,则所述填充数据的长度为所述有效输入长度与所述数据余量之差;若所述数据余量为零,则所述填充数据的长度为所述有效输入长度与一帧数据对应的数据量之差。
12.根据权利要求10所述的方法,其特征在于,所述将所述组合音频数据中的所述有效输入长度对应的音频数据输入所述编码网络,利用所述编码网络对输入音频数据进行编码操作,输出编码向量,包括:
将所述组合音频数据中的第一个有效输入长度对应的音频数据输入所述编码网络,利用所述编码网络对输入的音频数据进行编码操作,输出第一帧数据对应的第一编码向量。
13.根据权利要求12所述的方法,其特征在于,还包括:
以一帧数据对应的数据量为步进长度,将所述组合音频数据中的第i个有效输入长度对应的音频数据输入所述编码网络,利用所述编码网络对输入音频数据进行编码操作,输出第i帧数据对应的第二编码向量,i为大于1的正整数。
14.根据权利要求12所述的方法,其特征在于,所述码流包括第一指示信息,用于指示逐帧码流是否对应完整帧长的音频数据。
15.根据权利要求14所述的方法,其特征在于,所述码流还包括第二指示信息,用于指示所述码流中不完整帧长对应的音频数据量。
16.一种音频解码装置,其特征在于,包括:
解析单元,用于解析待解码码流,得到所述待解码码流对应的量化结果;
反量化单元,用于对所述量化结果进行反量化,得到所述待解码码流的重建编码向量;
填充单元,用于根据所述重建编码向量和填充数据,得到组合重建编码向量;其中,所述填充数据的长度根据解码网络对应的有效输入长度确定,所述填充数据包括已解码码流的重建编码向量;
解码单元,用于将所述组合重建编码向量中的所述有效输入长度对应的重建编码向量输入所述解码网络,利用所述解码网络对输入重建编码向量进行解码操作,输出重建信号;其中,所述重建信号与所述输入重建编码向量中的待解码码流的重建编码向量相关且与所述输入重建编码向量中的已解码码流的重建编码向量不相关,所述解码网络不对所述输入重建编码向量进行非真实数据填充。
17.一种音频编码装置,其特征在于,包括:
获取单元,用于获取待编码的第一音频数据;
填充单元,用于根据所述第一音频数据和填充数据,得到组合音频数据;其中,所述填充数据的长度根据编码网络对应的有效输入长度确定,所述填充数据包括已编码音频数据;
编码单元,用于将所述组合音频数据中的所述有效输入长度对应的第二音频数据输入所述编码网络,利用所述编码网络对所述第二音频数据进行编码操作,输出编码向量;其中,所述编码向量与所述第二音频数据中的待编码音频数据相关且与所述第二音频数据中的已编码音频数据不相关,所述编码网络不对所述第二音频数据进行非真实数据填充;
量化单元,用于对所述编码向量进行量化得到量化结果,并根据所述量化结果得到所述第一音频数据的码流。
18.一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有指令,所述处理器执行所述指令时,使得所述处理器执行权利要求1-15任一项所述的方法。
19.一种计算机存储介质,其特征在于,用于存储计算机程序,所述计算机程序包括用于执行权利要求1-15中任一项所述的方法。
20.一种计算机程序产品,其特征在于,包括计算机程序代码,当所述计算机程序代码被电子设备运行时,使得所述电子设备执行权利要求1-15中任一项所述的方法。
CN202410071426.XA 2024-01-17 2024-01-17 音频编解码方法、装置和设备 Pending CN117854516A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410071426.XA CN117854516A (zh) 2024-01-17 2024-01-17 音频编解码方法、装置和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410071426.XA CN117854516A (zh) 2024-01-17 2024-01-17 音频编解码方法、装置和设备

Publications (1)

Publication Number Publication Date
CN117854516A true CN117854516A (zh) 2024-04-09

Family

ID=90538274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410071426.XA Pending CN117854516A (zh) 2024-01-17 2024-01-17 音频编解码方法、装置和设备

Country Status (1)

Country Link
CN (1) CN117854516A (zh)

Similar Documents

Publication Publication Date Title
US7885819B2 (en) Bitstream syntax for multi-process audio decoding
CN112154502B (zh) 支持生成舒适噪声
US20190342552A1 (en) Method and apparatus for pyramid vector quantization indexing and de-indexing of audio/video sample vectors
US10089997B2 (en) Method for predicting high frequency band signal, encoding device, and decoding device
RU2408089C2 (ru) Декодирование кодированных с предсказанием данных с использованием адаптации буфера
US12026925B2 (en) Channel-wise autoregressive entropy models for image compression
KR101590919B1 (ko) 멀티채널 오디오 데이터의 재구성
KR101647576B1 (ko) 스테레오 오디오 신호 인코더
CN102144256A (zh) 用于针对矢量量化器的快速最近邻搜索的方法和设备
TW201728091A (zh) 使用在先譜係數以算術解碼和編碼現時譜係數之方法及裝置
WO2020236976A1 (en) Linear neural reconstruction for deep neural network compression
WO2018044897A1 (en) Quantizer with index coding and bit scheduling
CN111641826A (zh) 对数据进行编码、解码的方法、装置与系统
CN117854516A (zh) 音频编解码方法、装置和设备
WO2022242534A1 (zh) 编解码方法、装置、设备、存储介质及计算机程序
CN113473154B (zh) 视频编码、视频解码方法、装置及存储介质
EP2297855A1 (en) High-quality encoding at low-bit rates
CN116805971B (zh) 图像编解码方法、装置、设备
WO2022258036A1 (zh) 编解码方法、装置、设备、存储介质及计算机程序
WO2023231775A1 (zh) 滤波方法、滤波模型训练方法及相关装置
WO2022252957A1 (zh) 音频数据编解码方法和相关装置及计算机可读存储介质
CN117789701A (zh) 数据传输方法、模型训练方法、装置、芯片及终端
TW202337209A (zh) 編解碼方法、裝置、設備、儲存介質及電腦程式產品
CN118283485A (zh) 虚拟扬声器的确定方法及相关装置
KR20220119643A (ko) 데이터 스트림의 압축

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination