一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

编解码方法、装置、设备、存储介质及计算机程序与流程

2023-02-02 08:03:14 来源:中国专利 TAG:


1.本技术实施例涉及编解码技术领域,特别涉及一种编解码方法、装置、设备、存储介质及计算机程序。


背景技术:

2.编解码技术是媒体通信和媒体广播等媒体应用中不可或缺的环节。因此如何进行编解码成为业界的关注点之一。
3.相关技术提出了一种音频信号的编解码方法,在该方法中,当进行音频信号的编码时,对时域的音频信号进行修正的离散余弦变换(modified discrete cosine transform,mdct)处理,以得到频域的音频信号。通过编码神经网络模型对频域的音频信号进行处理,得到潜在变量,该潜在变量用于指示频域的音频信号的特征。对该潜在变量进行量化处理,得到量化后的潜在变量,对量化后的潜在变量进行熵编码,并将熵编码结果写入码流。当进行音频信号的解码时,基于该码流确定量化后的潜在变量,将量化后的潜在变量进行去量化处理,得到潜在变量。通过解码神经网络模型对该潜在变量进行处理,得到频域的音频信号,对频域的音频信号进行修正的离散余弦逆变换(inverse modified discrete cosine transform,imdct)处理,以得到重构的时域的音频信号。
4.然而,由于熵编码是对不同概率的元素采用不同的比特数来编码,所以对于相邻两帧音频信号来说,这两帧音频信号对应的潜在变量中的元素出现的概率可能不同,导致这两帧音频信号的潜在变量的编码比特数不同,从而无法满足稳定编码速率的需求。


技术实现要素:

5.本技术实施例提供了一种编解码方法、装置、设备、存储介质及计算机程序,可以满足编码器稳定编码速率的需求。所述技术方案如下:
6.第一方面,提供了一种编码方法,该方法可以应用于不包括上下文模型的编解码器中,也可以应用于包括上下文模型的编解码器中。而且,不仅可以对待编码的媒体数据生成的潜在变量通过调整因子进行调整,还可以对上下文模型确定的潜在变量通过调整因子进行调整。因此,接下来将分为多种情况,对该方法进行详细地解释说明。
7.第一种情况,通过第一编码神经网络模型对待编码的媒体数据进行处理,以得到第一潜在变量,第一潜在变量用于指示待编码的媒体数据的特征;基于第一潜在变量确定第一变量调整因子,第一变量调整因子用于使得第二潜在变量的熵编码结果的编码比特数满足预设编码速率条件,第二潜在变量是通过所述第一变量调整因子对所述第一潜在变量调整后得到;获取第二潜在变量的熵编码结果;将第二潜在变量的熵编码结果以及第一变量调整因子的编码结果写入码流。
8.由于第二潜在变量的熵编码结果的编码比特数满足预设编码速率条件,这样可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数均能够满足预设编码速率条件,也即是,可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数基本保
持一致,而不是动态变化的,从而满足了编码器对稳定编码速率的需求。进一步地,在考虑到需要传输边信息(例如窗型,时域噪声整形(tns:temporal noise shaping)参数,频域噪声整形(fdns:frequency-domain noise shaping)参数,和/或带宽扩展(bwe:bandwidth extension)参数等等)时,能够保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数和边信息的编码比特数整体基本保持一致,从而满足编码器对稳定编码速率的需求。
9.其中,待编码的媒体数据为音频信号、视频信号或者图像等。而且,待编码的媒体数据的形式可以为任何一种形式,本技术实施例对此不做限定。
10.通过第一编码神经网络模型对待编码的媒体数据进行处理的实现过程为:将待编码的媒体数据输入第一编码神经网络模型,得到第一编码神经网络模型输出的第一潜在变量。或者,对待编码的媒体数据进行预处理,将预处理后的媒体数据输入第一编码神经网络模型,得到第一编码神经网络模型输出的第一潜在变量。
11.也就是说,可以将待编码的媒体数据作为第一编码神经网络模型的输入来确定第一潜在变量,也可以对待编码的媒体数据进行预处理后,再作为第一编码神经网络模型的输入来确定第一潜在变量。
12.可选地,在使用固定码率对待编码的媒体数据进行编码的情况下,满足预设编码速率条件包括编码比特数小于或等于目标编码比特数;或者,满足预设编码速率条件包括编码比特数小于或等于目标编码比特数,且编码比特数与目标编码比特数的差值小于比特数阈值;或者,满足预设编码速率条件包括编码比特数为小于或等于目标编码比特数的最大编码比特数。
13.可选地,在使用可变码率对待编码的媒体数据进行编码的情况下,满足预设编码速率条件包括编码比特数与目标编码比特数的差值的绝对值小于比特数阈值。也即是,满足预设编码速率条件包括编码比特数小于或等于目标编码比特数,且目标编码比特数与编码比特数的差值小于比特数阈值;或者,满足预设编码速率条件包括编码比特数大于或等于目标编码比特数,且编码比特数与目标编码比特数的差值小于比特数阈值。
14.其中,目标编码比特数可以为事先设置的。当然,目标编码比特数也可以基于编码速率来确定,且不同的编码速率对应不同的目标编码比特数。
15.在本技术实施例中,可以使用固定码率对待编码的媒体数据进行编码,也可以使用可变码率对待编码的媒体数据进行编码。
16.在使用固定码率对待编码的媒体数据进行编码的情况下,可以基于固定码率确定当前帧的待编码的媒体数据的比特数,再减去当前帧的已使用比特数,得到当前帧的目标编码比特数。其中,已使用比特数可以为边信息等进行编码的比特数,而且通常情况下,每帧媒体数据的边信息不同,所以,每帧媒体数据的目标编码比特数通常是不同的。
17.在使用可变码率对待编码的媒体数据进行编码的情况下,通常会指定一个码率,实际码率会在指定的码率的上下波动。此时,可以基于指定的码率确定当前帧的待编码的媒体数据的比特数,再减去当前帧的已使用比特数,得到当前帧的目标编码比特数。其中,已使用比特数可以为边信息等进行编码的比特数,而且在某些情况下,不同帧的媒体数据的边信息可以是不同的,所以,不同帧的媒体数据的目标编码比特数通常是不同的。
18.其中,可以基于第一潜在变量确定初始编码比特数,基于初始编码比特数和目标编码比特数,确定第一变量调整因子。
19.其中,初始编码比特数为第一潜在变量的熵编码结果的编码比特数;或者,初始编码比特数为经过第一初始调整因子调整后的第一潜在变量的熵编码结果的编码比特数。其中,第一初始调整因子可以为第一预设调整因子。
20.其中,基于第一初始调整因子对第一潜在变量进行调整的实现过程为:将第一潜在变量中的各个元素与第一初始调整因子中对应的元素相乘,得到调整后的第一潜在变量。
21.值得注意的是,上述实现过程仅仅为一种示例,实际应用中,还可以采用其他的方法来调整。比如,可以将第一潜在变量中的各个元素除以第一初始调整因子中对应的元素,得到调整后的第一潜在变量。本技术实施例对调整方法不做限定。
22.其中,基于初始编码比特数和目标编码比特数,确定第一变量调整因子的实现方式可以包括多种,接下来对其中的三种进行介绍。
23.第一种实现方式,在初始编码比特数等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数不等于目标编码比特数的情况下,基于初始编码比特数和目标编码比特数,通过第一循环方式确定第一变量调整因子。
24.其中,第一循环方式的第i次循环处理包括如下步骤:确定第i次循环处理的调整因子,i为正整数,基于第i次循环处理的调整因子对第一潜在变量进行调整,得到第i次调整后的第一潜在变量。确定第i次调整后的第一潜在变量的熵编码结果的编码比特数,以得到第i次的编码比特数。在第i次的编码比特数满足继续调整条件的情况下,执行第一循环方式的第i 1次循环处理。在第i次的编码比特数不满足继续调整条件的情况下,终止第一循环方式的执行,基于第i次循环处理的调整因子确定第一变量调整因子。
25.其中,确定第i次循环处理的调整因子的实现过程为:基于第一循环方式的第i-1次循环处理的调整因子、第i-1次的编码比特数和目标编码比特数,确定第i次循环处理的调整因子。其中,在i=1的情况下,第i-1次循环处理的调整因子为第一初始调整因子,第i-1次的编码比特数为初始编码比特数。
26.此时,继续调整条件包括第i-1次的编码比特数和第i次的编码比特数均小于目标编码比特数,或者,继续调整条件包括第i-1次的编码比特数和第i次的编码比特数均大于目标编码比特数。
27.换句话说,继续调整条件包括第i次的编码比特数没有越过目标编码比特数。这里的没有越过的意思是指:前i-1次的编码比特数一直小于目标编码比特数,第i次的编码比特数仍小于目标编码比特数。或者,前i-1次的编码比特数一直大于目标编码比特数,第i次的编码比特数仍大于目标编码比特数。相反地,越过的意思是指:前i-1次的编码比特数一直小于目标编码比特数,第i次的编码比特数大于目标编码比特数。或者,前i-1次的编码比特数一直大于目标编码比特数,第i次的编码比特数小于目标编码比特数。
28.其中,基于第i次循环处理的调整因子确定第一变量调整因子的实现过程包括:在第i次的编码比特数等于目标编码比特数的情况下,将第i次循环处理的调整因子确定为第一变量调整因子。或者,在第i次的编码比特数不等于目标编码比特数的情况下,基于第i次循环处理的调整因子和第一循环方式的第i-1次循环处理的调整因子,确定第一变量调整因子。
29.也即是,第i次循环处理的调整因子为通过上述第一循环方式最后一次得到的调
整因子,第i次的编码比特数为最后一次得到的编码比特数。在最后一次得到的编码比特数等于目标编码比特数的情况下,将最后一次得到的调整因子确定为第一变量调整因子。在最后一次得到的编码比特数不等于目标编码比特数的情况下,基于后两次得到的调整因子确定第一变量调整因子。
30.其中,基于第i次循环处理的调整因子和第一循环方式的第i-1次循环处理的调整因子,确定第一变量调整因子的实现过程包括:确定第i次循环处理的调整因子和第i-1次循环处理的调整因子的平均值,基于该平均值确定第一变量调整因子。
31.其中,可以直接将该平均值确定为第一变量调整因子,也可以将该平均值乘以一个预设的常数,得到第一变量调整因子。可选地,该常数可以小于1。
32.当然,基于第i次循环处理的调整因子和第一循环方式的第i-1次循环处理的调整因子,确定第一变量调整因子的实现过程还可以为:基于第i次循环处理的调整因子和第i-1次循环处理的调整因子,通过第二循环方式确定第一变量调整因子。
33.作为一种示例,第二循环方式的第j次循环处理包括如下步骤:基于第j次循环处理的第一调整因子和第j次循环处理的第二调整因子确定第j次循环处理的第三调整因子,其中,在j等于1的情况下,第j次循环处理的第一调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的一者,第j次循环处理的第二调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的另一者,第j次循环处理的第一调整因子对应第j次的第一编码比特数,第j次循环处理的第二调整因子对应第j次的第二编码比特数,第j次的第一编码比特数是指经过第j次循环处理的第一调整因子调整后的第一潜在变量的熵编码结果的编码比特数,第j次的第二编码比特数是指经过第j次循环处理的第二调整因子调整后的第一潜在变量的熵编码结果的编码比特数,第j次的第一编码比特数小于第j次的第二编码比特数。获取第j次的第三编码比特数,第j次的第三编码比特数是指经过第j次循环处理的第三调整因子调整后的第一潜在变量的熵编码结果的编码比特数。若第j次的第三编码比特数不满足继续循环条件,终止第二循环方式的执行,将第j次循环处理的第三调整因子确定为第一变量调整因子。若第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数大于目标编码比特数且小于第j次的第二编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第二调整因子,将第j次循环处理的第一调整因子作为第j 1次循环处理的第一调整因子,执行第二循环方式的第j 1次循环处理。若第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数小于目标编码比特数且大于第j次的第一编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第一调整因子,将第j次循环处理的第二调整因子作为第j 1次循环处理的第二调整因子,执行第二循环方式的第j 1次循环处理。
34.作为另一种示例,第二循环方式的第j次循环处理包括如下步骤:基于第j次循环处理的第一调整因子和第j次循环处理的第二调整因子确定第j次循环处理的第三调整因子,其中,在j等于1的情况下,第j次循环处理的第一调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的一者,第j次循环处理的第二调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的另一者,第j次循环处理的第一调整因子对应第j次的第一编码比特数,第j次循环处理的第二调整因子对应第j次的第二编码比特数,第j次的第一编码比特数小于第j次的第二编码比特数,j为正整数。获取第j次的第三编
码比特数,第j次的第三编码比特数是指经过第j次循环处理的第三调整因子调整后的第一潜在变量的熵编码结果的编码比特数。若第j次的第三编码比特数不满足继续循环条件,终止第二循环方式的执行,将第j次循环处理的第三调整因子确定为第一变量调整因子。若j达到最大循环次数且第j次的第三编码比特数满足继续循环条件,终止第二循环方式的执行,基于第j次循环处理的第一调整因子确定第一变量调整因子。若j未达到最大循环次数、第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数大于目标编码比特数且小于第j次的第二编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第二调整因子,将第j次循环处理的第一调整因子作为第j 1次循环处理的第一调整因子,执行第二循环方式的第j 1次循环处理。若j未达到最大循环次数、第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数小于目标编码比特数且大于第j次的第一编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第一调整因子,将第j次循环处理的第二调整因子作为第j 1次循环处理的第二调整因子,执行第二循环方式的第j 1次循环处理。
35.其中,基于第j次循环处理的第一调整因子和第j次循环处理的第二调整因子确定第j次循环处理的第三调整因子的实现过程包括:确定第j次循环处理的第一调整因子和第j次循环处理的第二调整因子的平均值,基于该平均值确定第j次循环处理的第三调整因子。作为一种示例,可以直接将该平均值确定为第j次循环处理的第三调整因子,也可以将该平均值乘以一个预设的常数,得到第j次循环处理的第三调整因子。可选地,该常数可以小于1。
36.另外,获取第j次的第三编码比特数的实现过程包括:基于第j次循环处理的第三调整因子对第一潜在变量进行调整,得到调整后的第一潜在变量,对调整后的第一潜在变量进行量化处理,得到量化后的第一潜在变量。对量化后的第一潜在变量进行熵编码,统计该熵编码结果的编码比特数,得到第j次的第三编码比特数。
37.其中,在使用固定码率对待编码的媒体数据进行编码的情况下,基于第j次循环处理的第一调整因子确定第一变量调整因子的实现过程包括:将第j次循环处理的第一调整因子确定为第一变量调整因子。在使用可变码率对待编码的媒体数据进行编码的情况下,基于第j次循环处理的第一调整因子确定第一变量调整因子的实现过程包括:确定目标编码比特数与第j次的第一编码比特数之间的第一差值,以及确定第j次的第二编码比特数与目标编码比特数之间的第二差值。若第一差值小于第二差值,将第j次循环处理的第一调整因子确定为第一变量调整因子。若第二差值小于第一差值,将第j次循环处理的第二调整因子确定为第一变量调整因子。若第一差值等于第二差值,将第j次循环处理的第一调整因子确定为第一变量调整因子,或者将第j次循环处理的第二调整因子确定为第一变量调整因子。
38.其中,在使用固定码率对待编码的媒体数据进行编码的情况下,继续循环条件包括第j次的第三编码比特数大于目标编码比特数,或者,继续循环条件包括第j次的第三编码比特数小于目标编码比特数,且目标编码比特数与第j次的第三编码比特数的差值大于比特数阈值。在使用可变码率对待编码的媒体数据进行编码的情况下,继续循环条件包括目标编码比特数与第j次的第三编码比特数的差值的绝对值大于比特数阈值。也即是,继续循环条件包括第j次的第三编码比特数大于目标编码比特数,且第j次的第三编码比特数与
目标编码比特数的差值大于比特数阈值,或者,继续循环条件包括第j次的第三编码比特数小于目标编码比特数,且目标编码比特数与第j次的第三编码比特数的差值大于比特数阈值。
39.第二种实现方式,在初始编码比特数等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数不等于目标编码比特数的情况下,按照上述第一种实现方式来确定第一变量调整因子。但是,与上述第一种实现方式不同的是,在初始编码比特数小于目标编码比特数的情况下,按照第一步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数小于目标编码比特数。在初始编码比特数大于目标编码比特数的情况下,按照第二步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数大于目标编码比特数。
40.其中,按照第一步长调整第一循环方式的第i-1次循环处理的调整因子可以是指按照第一步长增大第i-1次循环处理的调整因子,按照第二步长调整第一循环方式的第i-1次循环处理的调整因子可以是指按照第二步长减小第i-1次循环处理的调整因子。
41.上述的增大处理和减小处理可以为线性的,也可以为非线性的。示例地,可以将第i-1次循环处理的调整因子与第一步长之和确定为第i次循环处理的调整因子,可以将第i-1次循环处理的调整因子与第二步长之差确定为第i次循环处理的调整因子。
42.需要说明的是,第一步长和第二步长可以为事先设置的,且第一步长和第二步长可以基于不同的需求来调整。另外,第一步长与第二步长可以相等,也可以不相等。
43.第三种实现方式,在初始编码比特数小于或等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数大于目标编码比特数的情况下,可以按照上述第一种实现方式来确定第一变量调整因子。也可以按照上述第二种实现方式中初始编码比特数大于目标编码比特数的情况来确定第一变量调整因子。
44.第二种情况,在第一种情况的基础上还获取第三潜在变量的熵编码结果,第三潜在变量是基于第二潜在变量通过上下文模型确定得到,且第三潜在变量用于指示第二潜在变量的概率分布;将第三潜在变量的熵编码结果写入码流。其中,第二潜在变量的熵编码结果和第三潜在变量的熵编码结果的编码总比特数满足预设编码速率条件。
45.其中,基于第一潜在变量确定第一变量调整因子,包括:基于第一潜在变量确定初始编码比特数;基于初始编码比特数和目标编码比特数,确定第一变量调整因子。
46.其中,基于第一潜在变量确定初始编码比特数的方式可以包括两种,接下来将分别介绍。
47.第一种实现方式,基于第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数,基于初始熵编码模型参数,确定第一潜在变量的熵编码结果的编码比特数,以得到基础初始编码比特数。基于上下文初始编码比特数与基础初始编码比特数确定为初始编码比特数。
48.其中,上下文模型包括上下文编码神经网络模型和上下文解码神经网络模型。基于第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数的实现过程包括:通过上下文编码神经网络模型对第一潜在变量进行处理,得到第五潜在变量,第五潜在变量用于指示第一潜在变量的概率分布。确定第五潜在变量的熵编码结
果,将第五潜在变量的熵编码结果的编码比特数作为上下文初始编码比特数。基于第五潜在变量的熵编码结果重构第五潜在变量,通过上下文解码神经网络模型对重构得到的第五潜在变量进行处理,得到初始熵编码模型参数。
49.第二种实现方式,将第一预设调整因子作为第一初始调整因子,基于第一初始调整因子对第一潜在变量进行调整,基于调整后的第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数,基于初始熵编码模型参数,确定调整后的第一潜在变量的熵编码结果的编码比特数,得到基础初始编码比特数。基于上下文初始编码比特数与基础初始编码比特数确定初始编码比特数。
50.其中,上下文模型包括上下文编码神经网络模型和上下文解码神经网络模型。基于调整后的第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数的实现过程包括:通过上下文编码神经网络模型对调整后的第一潜在变量进行处理,得到第六潜在变量,第六潜在变量用于指示调整后的第一潜在变量的概率分布。确定第六潜在变量的熵编码结果,将第六潜在变量的熵编码结果的编码比特数作为上下文初始编码比特数。基于第六潜在变量的熵编码结果重构第六潜在变量,通过上下文解码神经网络模型对重构得到的第六潜在变量进行处理,得到初始熵编码模型参数。
51.其中,基于初始编码比特数和目标编码比特数,确定第一变量调整因子的实现方式可以包括多种,接下来对其中的三种进行介绍。
52.第一种实现方式,在初始编码比特数等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数不等于目标编码比特数的情况下,基于初始编码比特数和目标编码比特数,通过第一循环方式确定第一变量调整因子。
53.其中,第一循环方式的第i次循环处理包括如下步骤:确定第i次循环处理的调整因子,i为正整数,基于第i次循环处理的调整因子对第一潜在变量进行调整,得到第i次调整后的第一潜在变量。基于第i次调整后的第一潜在变量,通过上下文模型确定对应的第i次的上下文编码比特数和第i次的熵编码模型参数,基于第i次的熵编码模型参数,确定第i次调整后的第一潜在变量的熵编码结果的编码比特数,得到第i次的基础编码比特数,基于第i次的上下文编码比特数与第i次的基础编码比特数确定第i次的编码比特数。在第i次的编码比特数满足继续调整条件的情况下,执行第一循环方式的第i 1次循环处理。在第i次的编码比特数不满足继续调整条件的情况下,终止第一循环方式的执行,基于第i次循环处理的调整因子确定第一变量调整因子。
54.第二种实现方式,在初始编码比特数等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数不等于目标编码比特数的情况下,按照上述第一种实现方式来确定第一变量调整因子。但是,与上述第一种实现方式不同的是,在初始编码比特数小于目标编码比特数的情况下,按照第一步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数小于目标编码比特数。在初始编码比特数大于目标编码比特数的情况下,按照第二步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数大于目标编码比特数。
55.其中,按照第一步长调整第一循环方式的第i-1次循环处理的调整因子可以是指按照第一步长增大第i-1次循环处理的调整因子,按照第二步长调整第一循环方式的第i-1
次循环处理的调整因子可以是指按照第二步长减小第i-1次循环处理的调整因子。
56.上述的增大处理和减小处理可以为线性的,也可以为非线性的。示例地,可以将第i-1次循环处理的调整因子与第一步长之和确定为第i次循环处理的调整因子,可以将第i-1次循环处理的调整因子与第二步长之差确定为第i次循环处理的调整因子。
57.需要说明的是,第一步长和第二步长可以为事先设置的,且第一步长和第二步长可以基于不同的需求来调整。另外,第一步长与第二步长可以相等,也可以不相等。
58.第三种实现方式,在初始编码比特数小于或等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数大于目标编码比特数的情况下,可以按照上述第一种实现方式来确定第一变量调整因子。也可以按照上述第二种实现方式中初始编码比特数大于目标编码比特数的情况来确定第一变量调整因子。
59.第三种情况,在第一种情况的基础上还基于第一潜在变量确定第二变量调整因子;获取第四潜在变量的熵编码结果,第四潜在变量是基于第二变量调整因子对第三潜在变量调整后得到,第三潜在变量是基于第二潜在变量通过上下文模型确定得到,且第三潜在变量用于指示第二潜在变量的概率分布;将第四潜在变量的熵编码结果以及第二变量调整因子的编码结果写入码流;其中,第二潜在变量的熵编码结果和第四潜在变量的熵编码结果的编码总比特数满足预设编码速率条件。
60.其中,基于第一潜在变量确定第一变量调整因子和第二变量调整因子的方式可以包括两种,分别为:
61.第一种实现方式,基于第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数;基于初始熵编码模型参数,确定第一潜在变量的熵编码结果的编码比特数,以得到基础初始编码比特数;基于上下文初始编码比特数、基础初始编码比特数和目标编码比特数,确定第一变量调整因子和第二变量调整因子。
62.第二种实现方式,将第一预设调整因子作为第一初始调整因子,将第二预设调整因子作为第二初始调整因子。基于第一初始调整因子对第一潜在变量进行调整,基于调整后的第一潜在变量和第二初始调整因子,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数,基于初始熵编码模型参数,确定第一潜在变量的熵编码结果的编码比特数,以得到基础初始编码比特数。基于上下文初始编码比特数、基础初始编码比特数和目标编码比特数,确定第一变量调整因子和第二变量调整因子。
63.其中,上下文模型包括上下文编码神经网络模型和上下文解码神经网络模型。基于调整后的第一潜在变量和第二初始调整因子,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数的实现过程包括:通过上下文编码神经网络模型对调整后的第一潜在变量进行处理,得到第六潜在变量,第六潜在变量用于指示调整后的第一潜在变量的概率分布。基于第二初始调整因子对第六潜在变量进行调整,得到第七潜在变量。确定第七潜在变量的熵编码结果,将第七潜在变量的熵编码结果的编码比特数作为上下文初始编码比特数。基于第七潜在变量的熵编码结果重构第七潜在变量,通过上下文解码神经网络模型对重构得到的第七潜在变量进行处理,得到初始熵编码模型参数。
64.其中,基于第二初始调整因子对第六潜在变量进行调整的实现过程为:将第六潜在变量中的各个元素与第二初始调整因子中对应的元素相乘,得到第七潜在变量。
65.值得注意的是,上述实现过程仅仅为一种示例,实际应用中,还可以采用其他的方
法来调整。比如,可以将第六潜在变量中的各个元素除以第二初始调整因子中对应的元素,得到第七潜在变量。本技术实施例对调整方法不做限定。
66.其中,基于上下文初始编码比特数、基础初始编码比特数和目标编码比特数,确定第一变量调整因子和第二变量调整因子的实现过程可以包括两种,接下来分别介绍。
67.第一种实现方式,将第二变量调整因子置为第二初始调整因子,基于基础初始编码比特数和上下文初始编码比特数中的至少一者,以及目标编码比特数,确定基础目标编码比特数。基于第二初始调整因子、基础目标编码比特数和基础初始编码比特数,确定第一变量调整因子和基础实际编码比特数,基础实际编码比特数是指经过第一变量调整因子调整后的第一潜在变量的熵编码结果的编码比特数。基于目标编码比特数和基础实际编码比特数,确定上下文目标编码比特数。基于上下文目标编码比特数和上下文初始编码比特数,确定第二变量调整因子。
68.其中,基于基础初始编码比特数和上下文初始编码比特数中的至少一者,以及目标编码比特数,确定基础目标编码比特数的实现过程包括:将目标编码比特数减去上下文初始编码比特数,得到基础目标编码比特数。或者,确定基础初始编码比特数和上下文初始编码比特数之间的比例,基于该比例和目标编码比特数,确定基础目标编码比特数。或者,基于目标编码比特数与基础初始编码比特数的比值,确定基础目标编码比特数。当然,还可以通过其他实现过程来确定。
69.其中,基于第二初始调整因子、基础目标编码比特数和基础初始编码比特数确定第一变量调整因子的实现方式也包括三种,接下来分别介绍。
70.方式11,在基础初始编码比特数等于基础目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在基础初始编码比特数不等于基础目标编码比特数的情况下,基于基础初始编码比特数和基础目标编码比特数,通过第一循环方式确定第一变量调整因子。
71.其中,第一循环方式的第i次循环处理包括如下步骤:确定第i次循环处理的调整因子,i为正整数,基于第i次循环处理的调整因子对第一潜在变量进行调整,得到第i次调整后的第一潜在变量。基于第i次调整后的第一潜在变量和第二初始调整因子,通过上下文模型确定第i次的上下文编码比特数和第i次的熵编码模型参数,基于第i次的熵编码模型参数,确定第i次调整后的第一潜在变量的熵编码结果的编码比特数,得到第i次的基础编码比特数,基于第i次的上下文编码比特数与第i次的基础编码比特数确定第i次的编码比特数。在第i次的编码比特数满足继续调整条件的情况下,执行第一循环方式的第i 1次循环处理。在第i次的编码比特数不满足继续调整条件的情况下,终止第一循环方式的执行,基于第i次循环处理的调整因子确定第一变量调整因子。
72.方式12,在基础初始编码比特数等于基础目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在基础初始编码比特数不等于基础目标编码比特数的情况下,按照上述方式11来确定第一变量调整因子。但是,与上述方式11不同的是,在基础初始编码比特数小于基础目标编码比特数的情况下,按照第一步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数小于基础目标编码比特数。在基础初始编码比特数大于基础目标编码比特数的情况下,按照第二步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次
循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数大于基础目标编码比特数。
73.方式13,在基础初始编码比特数小于或等于基础目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在基础初始编码比特数大于基础目标编码比特数的情况下,可以按照上述方式11来确定第一变量调整因子。也可以按照上述方式12中基础初始编码比特数大于基础目标编码比特数的情况来确定第一变量调整因子。
74.其中,基于上下文目标编码比特数和上下文初始编码比特数确定第二变量调整因子的实现过程与基于基础初始编码比特数和基础目标编码比特数确定第一变量调整因子的实现过程类似。接下来也分为三种方式分别介绍。
75.方式21,在上下文初始编码比特数等于上下文目标编码比特数的情况下,将第二初始调整因子确定为第二变量调整因子。在上下文初始编码比特数不等于上下文目标编码比特数的情况下,基于第一变量调整因子对第一潜在变量进行调整,得到第二潜在变量。基于上下文初始编码比特数、上下文目标编码比特数和第二潜在变量,通过第一循环方式确定第二变量调整因子。
76.其中,第一循环方式的第i次循环处理包括如下步骤:确定第i次循环处理的调整因子,i为正整数,基于第二潜在变量和第i次循环处理的调整因子,通过上下文模型确定第i次的上下文编码比特数和第i次的熵编码模型参数,基于第i次的熵编码模型参数,确定第二潜在变量的熵编码结果的编码比特数,得到第i次的基础编码比特数,基于第i次的上下文编码比特数与第i次的基础编码比特数确定第i次的编码比特数。在第i次的编码比特数满足继续调整条件的情况下,执行第一循环方式的第i 1次循环处理。在第i次的编码比特数不满足继续调整条件的情况下,终止第一循环方式的执行,基于第i次循环处理的调整因子确定第二变量调整因子。
77.其中,基于第二潜在变量和第i次循环处理的调整因子,通过上下文模型确定第i次的上下文编码比特数和第i次的熵编码模型参数的实现过程包括:通过上下文编码神经网络模型对第二潜在变量进行处理,得到第三潜在变量,第三潜在变量用于指示第二潜在变量的概率分布。基于第i次循环处理的调整因子对第三潜在变量进行调整,得到第i次调整后的第三潜在变量。确定第i次调整后的第三潜在变量的熵编码结果,将第i次调整后的第三潜在变量的熵编码结果的编码比特数作为第i次的上下文编码比特数。基于第i次调整后的第三潜在变量的熵编码结果重构第i次调整后的第三潜在变量。通过第i次循环处理的调整因子,对重构的第i次调整后的第三潜在变量进行调整,得到重构的第三潜在变量。通过上下文解码神经网络模型对重构的第三潜在变量进行处理,得到第i次的熵编码模型参数。
78.方式22,在上下文初始编码比特数等于上下文目标编码比特数的情况下,将第二初始调整因子确定为第二变量调整因子。在上下文初始编码比特数不等于上下文目标编码比特数的情况下,按照上述方式21来确定第二变量调整因子。但是,与上述方式21不同的是,在上下文初始编码比特数小于上下文目标编码比特数的情况下,按照第一步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数小于上下文目标编码比特数。在上下文初始编码比特数大于上下文目标编码比特数的情况下,按照第二步长调整第一循环方式的第i-1次循环处理
的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数大于上下文目标编码比特数。
79.方式23,在上下文初始编码比特数小于或等于上下文目标编码比特数的情况下,将第二初始调整因子确定为第二变量调整因子。在上下文初始编码比特数大于上下文目标编码比特数的情况下,可以按照上述方式21来确定第二变量调整因子。也可以按照上述方式22中上下文初始编码比特数大于上下文目标编码比特数的情况来确定第二变量调整因子。
80.第二种实现方式,将目标编码比特数划分为基础目标编码比特数和上下文目标编码比特数,基于基础目标编码比特数和基础初始编码比特数,确定第一变量调整因子。基于上下文目标编码比特数和上下文初始编码比特数,确定第二变量调整因子。
81.第二方面,提供了一种解码方法,在该方法中,也分为多种情况进行介绍。
82.第一种情况,基于码流确定重构的第二潜在变量和重构的第一变量调整因子;基于重构的第一变量调整因子,对重构的第二潜在变量进行调整,得到重构的第一潜在变量,重构的第一潜在变量用于指示待解码的媒体数据的特征;通过第一解码神经网络模型对重构的第一潜在变量进行处理,以得到重构的媒体数据。
83.第二种情况,基于码流确定重构的第三潜在变量和重构的第一变量调整因子;基于码流和重构的第三潜在变量,确定重构的第二潜在变量。基于重构的第一变量调整因子,对重构的第二潜在变量进行调整,得到重构的第一潜在变量,重构的第一潜在变量用于指示待解码的媒体数据的特征;通过第一解码神经网络模型对重构的第一潜在变量进行处理,以得到重构的媒体数据。
84.其中,基于码流和重构的第三潜在变量,确定重构的第二潜在变量,包括:通过上下文解码神经网络模型对重构的第三潜在变量进行处理,以得到重构的第一熵编码模型参数;基于码流和重构的第一熵编码模型参数,确定重构的第二潜在变量。
85.第三种情况,基于码流确定重构的第四潜在变量、重构的第二变量调整因子和重构的第一变量调整因子;基于码流、重构的第四潜在变量和重构的第二变量调整因子,确定重构的第二潜在变量。基于码流和重构的第三潜在变量,确定重构的第二潜在变量。基于重构的第一变量调整因子,对重构的第二潜在变量进行调整,得到重构的第一潜在变量,重构的第一潜在变量用于指示待解码的媒体数据的特征;通过第一解码神经网络模型对重构的第一潜在变量进行处理,以得到重构的媒体数据。
86.其中,基于码流、重构的第四潜在变量和重构的第二变量调整因子,确定重构的第二潜在变量,包括:基于重构的第二变量调整因子,对重构的第四潜在变量进行调整,得到重构的第三潜在变量;通过上下文解码神经网络模型对重构的第三潜在变量进行处理,以得到重构的第二熵编码模型参数;基于码流和重构的第二熵编码模型参数,确定重构的第二潜在变量。
87.其中,媒体数据为音频信号、视频信号或者图像。
88.第三方面,提供了一种编码装置,所述编码装置具有实现上述第一方面中编码方法行为的功能。所述编码装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的编码方法。
89.第四方面,提供了一种解码装置,所述解码装置具有实现上述第二方面中解码方
法行为的功能。所述解码装置包括至少一个模块,该至少一个模块用于实现上述第二方面所提供的解码方法。
90.第五方面,提供了一种编码端设备,所述编码端设备包括处理器和存储器,所述存储器用于存储执行上述第一方面所提供的编码方法的程序。所述处理器被配置为用于执行所述存储器中存储的程序,以实现上述第一方面提供的编码方法。
91.可选地,所述编码端设备还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
92.第六方面,提供了一种解码端设备,所述解码端设备包括处理器和存储器,所述存储器用于存储执行上述第二方面所提供的解码方法的程序。所述处理器被配置为用于执行所述存储器中存储的程序,以实现上述第二方面提供的解码方法。
93.可选地,所述解码端设备还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
94.第七方面,提供了一种计算机可读存储介质,所述存储介质内存储有指令,当所述指令在计算机上运行时,使得计算机执行上述第一方面所述的编码方法的步骤,或者执行上述第二方面所述的解码方法的步骤。
95.第八方面,提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使得计算机执行上述第一方面所述的编码方法的步骤,或者执行上述第二方面所述的解码方法的步骤。或者说,提供了一种计算机程序,所述计算机程序被执行时实现上述第一方面所述的编码方法的步骤,或者实现上述第二方面所述的解码方法的步骤。
96.第九方面,提供了一种计算机可读存储介质,所述计算机可读存储介质包括上述第一方面所述的编码方法所获得的码流。
97.上述第三方面、第四方面、第五方面、第六方面、第七方面、第八方面和第九方面所得到的技术效果与第一方面或第二方面中对应的技术手段得到的技术效果近似,在这里不再赘述。
98.本技术实施例提供的技术方案至少可以带来以下有益效果:
99.通过第一变量调整因子对第一潜在变量进行调整,得到第二潜在变量,而且第二潜在变量的熵编码结果的编码比特数满足预设编码速率条件,这样可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数均能够满足预设编码速率条件,也即是,可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数基本保持一致,而不是动态变化的,从而满足了编码器对稳定编码速率的需求。进一步地,在考虑到需要传输边信息(例如窗型,时域噪声整形(tns:temporal noise shaping)参数,频域噪声整形(fdns:frequency-domain noise shaping)参数,和/或带宽扩展(bwe:bandwidth extension)参数等等)时,能够保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数和边信息的编码比特数整体基本保持一致,从而满足编码器对稳定编码速率的需求。
附图说明
100.图1是本技术实施例提供的一种实施环境的示意图;
101.图2是本技术实施例提供的一种终端场景的实施环境的示意图;
102.图3是本技术实施例提供的一种无线或核心网设备的转码场景的实施环境的示意
图;
103.图4是本技术实施例提供的一种广播电视场景的实施环境的示意图;
104.图5是本技术实施例提供的一种虚拟现实流场景的实施环境的示意图;
105.图6是本技术实施例提供的第一种编码方法的流程图;
106.图7是本技术实施例提供的第一种潜在变量的形式示意图;
107.图8是本技术实施例提供的第二种潜在变量的形式示意图;
108.图9是本技术实施例提供的第一种解码方法的流程图;
109.图10是本技术实施例提供的第二种编码方法的流程图;
110.图11是本技术实施例提供的第二种解码方法的流程图;
111.图12是本技术实施例提供的一种关于图10所示的编码方法的示例性框图;
112.图13是本技术实施例提供的一种关于图11所示的解码方法的示例性框图;
113.图14是本技术实施例提供的第三种编码方法的流程图;
114.图15是本技术实施例提供的第三种解码方法的流程图;
115.图16是本技术实施例提供的一种关于图14所示的编码方法的示例性框图;
116.图17是本技术实施例提供的一种关于图15所示的解码方法的示例性框图;
117.图18是本技术实施例提供的一种编码装置的结构示意图;
118.图19是本技术实施例提供的一种解码装置的结构示意图;
119.图20是本技术实施例提供的一种编解码装置的示意性框图。
具体实施方式
120.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
121.在对本技术实施例提供的编解码方法进行详细地解释说明之前,先对本技术实施例涉及的术语和实施环境进行介绍。
122.为了便于理解,首先对本技术实施例涉及的术语进行解释。
123.编码:是指将待编码的媒体数据压缩成码流的处理过程。其中,待编码的媒体数据主要包括音频信号、视频信号和图像。音频信号的编码是将待编码的音频信号包括的音频帧序列压缩成码流的处理过程,视频信号的编码是将待编码的视频包括的图像序列压缩成码流的处理过程,图像的编码是将待编码的图像压缩成码流的处理过程。
124.需要说明的是,媒体数据被压缩成码流之后可以称为经编码的媒体数据或者经压缩的媒体数据。比如,对于音频信号来说,音频信号被压缩成码流之后可以称为经编码的音频信号或者经压缩的音频信号,视频信号被压缩成码流之后也可以称为经编码的视频信号或者经压缩的视频信号,图像被压缩成码流之后也可以称为经编码的图像或者经压缩的图像。
125.解码:是指将编码码流按照特定的语法规则和处理方法恢复成重建媒体数据的处理过程。其中,音频码流的解码是指将音频码流恢复成重建音频信号的处理过程,视频码流的解码是指将视频码流恢复成重建视频信号的处理过程,图像码流的解码是指将图像码流恢复成重建图像的处理过程。
126.熵编码:是指编码过程中按熵原理不丢失任何信息的编码。也即是一种无损数据
压缩方法。熵编码是基于元素的出现概率来编码的,即,对于同一元素,当该元素的出现概率不同时,该元素的熵编码结果的编码比特数不同。熵编码通常包括算术编码(arithmetic coding)、区间编码(range coding,rc)、哈夫曼(huffman)编码等等。
127.固定码率(constant bit rate,cbr):是指编码码率是一个固定值,比如该固定值为目标编码码率。
128.可变码率(variable bit rate,vbr):是指编码速率可超过目标编码码率,或者可小于目标编码码率,但是与目标编码码率之间的差值较小。
129.接下来对本技术实施例涉及的实施环境进行介绍。
130.请参考图1,图1是本技术实施例提供的一种实施环境的示意图。该实施环境包括源装置10、目的地装置20、链路30和存储装置40。其中,源装置10可以产生经编码的媒体数据。因此,源装置10也可以被称为媒体数据编码装置。目的地装置20可以对由源装置10所产生的经编码的媒体数据进行解码。因此,目的地装置20也可以被称为媒体数据解码装置。链路30可以接收源装置10所产生的经编码的媒体数据,并可以将该经编码的媒体数据传输给目的地装置20。存储装置40可以接收源装置10所产生的经编码的媒体数据,并可以将该经编码的媒体数据进行存储,这样的条件下,目的地装置20可以直接从存储装置40中获取经编码的媒体数据。或者,存储装置40可以对应于文件服务器或可以保存由源装置10产生的经编码的媒体数据的另一中间存储装置,这样的条件下,目的地装置20可以经由流式传输或下载存储装置40存储的经编码的媒体数据。
131.源装置10和目的地装置20均可以包括一个或多个处理器以及耦合到该一个或多个处理器的存储器,该存储器可以包括随机存取存储器(random access memory,ram)、只读存储器(read-only memory,rom)、带电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、快闪存储器、可用于以可由计算机存取的指令或数据结构的形式存储所要的程序代码的任何其它媒体等。例如,源装置10和目的地装置20均可以包括桌上型计算机、移动计算装置、笔记型(例如,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话等电话手持机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机或其类似者。
132.链路30可以包括能够将经编码的媒体数据从源装置10传输到目的地装置20的一个或多个媒体或装置。在一种可能的实现方式中,链路30可以包括能够使源装置10实时地将经编码的媒体数据直接发送到目的地装置20的一个或多个通信媒体。在本技术实施例中,源装置10可以基于通信标准来调制经编码的媒体数据,该通信标准可以为无线通信协议等,并且可以将经调制的媒体数据发送给目的地装置20。该一个或多个通信媒体可以包括无线和/或有线通信媒体,例如该一个或多个通信媒体可以包括射频(radio frequency,rf)频谱或一个或多个物理传输线。该一个或多个通信媒体可以形成基于分组的网络的一部分,基于分组的网络可以为局域网、广域网或全球网络(例如,因特网)等。该一个或多个通信媒体可以包括路由器、交换器、基站或促进从源装置10到目的地装置20的通信的其它设备等,本技术实施例对此不做具体限定。
133.在一种可能的实现方式中,存储装置40可以将接收到的由源装置10发送的经编码的媒体数据进行存储,目的地装置20可以直接从存储装置40中获取经编码的媒体数据。这样的条件下,存储装置40可以包括多种分布式或本地存取的数据存储媒体中的任一者,例
demux)单元或其它硬件和软件,用于共同数据流或单独数据流中的音频和视频两者的编码。在一些实施例中,如果适用的话,那么mux-demux单元可符合itu h.223多路复用器协议,或例如用户数据报协议(user datagram protocol,udp)等其它协议。
140.编码器100和解码器200各自可为以下各项电路中的任一者:一个或多个微处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)、离散逻辑、硬件或其任何组合。如果部分地以软件来实施本技术实施例的技术,那么装置可将用于软件的指令存储在合适的非易失性计算机可读存储媒体中,且可使用一个或多个处理器在硬件中执行所述指令从而实施本技术实施例的技术。前述内容(包括硬件、软件、硬件与软件的组合等)中的任一者可被视为一个或多个处理器。编码器100和解码器200中的每一者都可以包括在一个或多个编码器或解码器中,所述编码器或所述解码器中的任一者可以集成为相应装置中的组合编码器/解码器(编码解码器)的一部分。
141.本技术实施例可大体上将编码器100称为将某些信息“发信号通知”或“发送”到例如解码器200的另一装置。术语“发信号通知”或“发送”可大体上指代用于对经压缩的媒体数据进行解码的语法元素和/或其它数据的传送。此传送可实时或几乎实时地发生。替代地,此通信可经过一段时间后发生,例如可在编码时在经编码位流中将语法元素存储到计算机可读存储媒体时发生,解码装置接着可在所述语法元素存储到此媒体之后的任何时间检索所述语法元素。
142.本技术实施例提供的编解码方法可以应用于多种场景,接下来以待编码的媒体数据为音频信号为例,对其中的几种场景分别进行介绍。
143.请参考图2,图2是本技术实施例提供的一种编解码方法应用于终端场景的实施环境的示意图。该实施环境包括第一终端101和第二终端201,第一终端101与第二终端201进行通信连接。该通信连接可以为无线连接,也可以为有线连接,本技术实施例对此不做限定。
144.其中,第一终端101可以为发送端设备,也可以为接收端设备,同理,第二终端201可以为接收端设备,也可以为发送端设备。在第一终端101为发送端设备的情况下,第二终端201为接收端设备,在第一终端101为接收端设备的情况下,第二终端201为发送端设备。
145.接下来以第一终端101为发送端设备,第二终端201为接收端设备为例进行介绍。
146.第一终端101可以为上述图1所示的实施环境中的源装置10。第二终端201可以为上述图1所示的实施环境中的目的地装置20。其中,第一终端101和第二终端201均包括音频采集模块、音频回放模块、编码器、解码器、信道编码模块和信道解码模块。
147.第一终端101中的音频采集模块采集音频信号并传输给编码器,编码器利用本技术实施例提供的编码方法对音频信号进行编码,该编码可以称为信源编码。之后,为了实现音频信号在信道中的传输,信道编码模块还需要再进行信道编码,然后将编码得到的码流通过无线或者有线网络通信设备在数字信道中传输。
148.第二终端201通过无线或者有线网络通信设备接收数字信道中传输的码流,信道解码模块对码流进行信道解码,然后解码器利用本技术实施例提供的解码方法解码得到音频信号,再通过音频回放模块进行播放。
149.其中,第一终端101和第二终端201可以是任何一种可与用户通过键盘、触摸板、触
摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互的电子产品,例如个人计算机(personal computer,pc)、手机、智能手机、个人数字助手(personal digital assistant,pda)、可穿戴设备、掌上电脑ppc(pocket pc)、平板电脑、智能车机、智能电视、智能音箱等。
150.本领域技术人员应能理解上述终端仅为举例,其他现有的或今后可能出现的终端如可适用于本技术实施例,也应包含在本技术实施例保护范围以内,并在此以引用方式包含于此。
151.请参考图3,图3是本技术实施例提供的一种编解码方法应用于无线或核心网设备的转码场景的实施环境的示意图。该实施环境包括信道解码模块、音频解码器、音频编码器和信道编码模块。
152.其中,音频解码器可以为利用本技术实施例提供的解码方法的解码器,也可以为利用其他解码方法的解码器。音频编码器可以为利用本技术实施例提供的编码方法的编码器,也可以为利用其他编码方法的编码器。在音频解码器为利用本技术实施例提供的解码方法的解码器的情况下,音频编码器为利用其他编码方法的编码器,在音频解码器为利用其他解码方法的解码器的情况下,音频编码器为利用本技术实施例提供的编码方法的编码器。
153.第一种情况,音频解码器为利用本技术实施例提供的解码方法的解码器,音频编码器为利用其他编码方法的编码器。
154.此时,信道解码模块用于对接收的码流进行信道解码,然后音频解码器用于利用本技术实施例提供的解码方法进行信源解码,再通过音频编码器按照其他编码方法进行编码,实现一种格式到另一种格式的转换,即转码。之后,再通过信道编码后发送。
155.第二种情况,音频解码器为利用其他解码方法的解码器,音频编码器为利用本技术实施例提供的编码方法的编码器。
156.此时,信道解码模块用于对接收的码流进行信道解码,然后音频解码器用于利用其他解码方法进行信源解码,再通过音频编码器利用本技术实施例提供的编码方法进行编码,实现一种格式到另一种格式的转换,即转码。之后,再通过信道编码后发送。
157.其中,无线设备可以为无线接入点、无线路由器、无线连接器等等。核心网设备可以为移动性管理实体、网关等等。
158.本领域技术人员应能理解上述无线设备或者核心网设备仅为举例,其他现有的或今后可能出现的无线或核心网设备如可适用于本技术实施例,也应包含在本技术实施例保护范围以内,并在此以引用方式包含于此。
159.请参考图4,图4是本技术实施例提供的一种编解码方法应用于广播电视场景的实施环境的示意图。广播电视场景分为直播场景和后期制作场景。对于直播场景来说,该实施环境包括直播节目三维声制作模块、三维声编码模块、机顶盒和扬声器组,机顶盒包括三维声解码模块。对于后期制作场景来说,该实施环境包括后期节目三维声制作模块、三维声编码模块、网络接收器、移动终端、耳机等。
160.直播场景下,直播节目三维声制作模块制作出三维声信号,该三维声信号经过应用本技术实施例的编码方法的编码得到码流,该码流经广电网络传输到用户侧,由机顶盒中的三维声解码器利用本技术实施例提供的解码方法进行解码,从而重建三维声信号,由
扬声器组进行回放。或者,该码流经互联网传输到用户侧,由网络接收器中的三维声解码器利用本技术实施例提供的解码方法进行解码,从而重建三维声信号,由扬声器组进行回放。又或者,该码流经互联网传输到用户侧,由移动终端中的三维声解码器利用本技术实施例提供的解码方法进行解码,从而重建三维声信号,由耳机进行回放。
161.后期制作场景下,后期节目三维声制作模块制作出三维声信号,该三维声信号经过应用本技术实施例的编码方法的编码得到码流,该码流经广电网络传输到用户侧,由机顶盒中的三维声解码器利用本技术实施例提供的解码方法进行解码,从而重建三维声信号,由扬声器组进行回放。或者,该码流经互联网传输到用户侧,由网络接收器中的三维声解码器利用本技术实施例提供的解码方法进行解码,从而重建三维声信号,由扬声器组进行回放。又或者,该码流经互联网传输到用户侧,由移动终端中的三维声解码器利用本技术实施例提供的解码方法进行解码,从而重建三维声信号,由耳机进行回放。
162.请参考图5,图5是本技术实施例提供的一种编解码方法应用于虚拟现实流场景的实施环境的示意图。该实施环境包括编码端和解码端,编码端包括采集模块、预处理模块、编码模块、打包模块和发送模块,解码端包括解包模块、解码模块、渲染模块和耳机。
163.采集模块采集音频信号,然后通过预处理模块进行预处理操作,预处理操作包括滤除掉信号中的低频部分,通常是以20hz或者50hz为分界点,提取信号中的方位信息等。之后通过编码模块,利用本技术实施例提供的编码方法进行编码处理,编码之后通过打包模块进行打包,进而通过发送模块发送给解码端。
164.解码端的解包模块首先进行解包,之后通过解码模块,利用本技术实施例提供的解码方法进行解码,然后通过渲染模块对解码信号进行双耳渲染处理,渲染处理后的信号映射到收听者耳机上。该耳机可以为独立的耳机,也可以是基于虚拟现实的眼镜设备上的耳机。
165.接下来对本技术实施例提供的编解码方法进行详细地解释说明。需要说明的是,结合图1所示的实施环境,下文中的任一种编码方法可以是源装置10中的编码器100执行的。下文中的任一种解码方法可以是目的地装置20中的解码器200执行的。
166.需要说明的是,本技术实施例可以应用于不包括上下文模型的编解码器中,也可以应用于包括上下文模型的编解码器中。而且,本技术实施例不仅可以对待编码的媒体数据生成的潜在变量通过调整因子进行调整,还可以对上下文模型确定的潜在变量通过调整因子进行调整。因此,接下来将分为多个实施例,对本技术实施例提供的编解码方法进行详细地解释说明。另外,本技术实施例中涉及的调整因子和变量调整因子可以是量化前的值,也可以是量化后的值,本技术实施例对此不做限定。
167.请参考图6,图6是本技术实施例提供的第一种编码方法的流程图。该方法不包括上下文模型,只对待编码的媒体数据生成的潜在变量通过调整因子进行调整。该编码方法应用于编码端设备,包括如下步骤。
168.步骤601:通过第一编码神经网络模型对待编码的媒体数据进行处理,以得到第一潜在变量,第一潜在变量用于指示待编码的媒体数据的特征。
169.其中,待编码的媒体数据为音频信号、视频信号或者图像等。而且,待编码的媒体数据的形式可以为任何一种形式,本技术实施例对此不做限定。
170.示例地,待编码的媒体数据可以为时域的媒体数据,也可以为时域的媒体数据经
过时频变换后得到的频域的媒体数据,例如,可以是时域的媒体数据经过mdct变换后得到的频域的媒体数据,或者是时域的媒体数据经过快速傅氏变换(fast fourier transformation,fft)后得到的频域的媒体数据。待编码的媒体数据还可以为时域的媒体数据经过正交镜象滤波器(quandrature mirror filter,qmf)滤波后得到的复频域的媒体数据,或者待编码的媒体数据为从时域的媒体数据提取得到的特征信号,例如梅尔倒谱系数,或者待编码的媒体数据还可以是残差信号,例如其他编码的残差信号或者线性预测编码(linear predictive coding,lpc)滤波后的残差信号。
171.通过第一编码神经网络模型对待编码的媒体数据进行处理的实现过程为:将待编码的媒体数据输入第一编码神经网络模型,得到第一编码神经网络模型输出的第一潜在变量。或者,对待编码的媒体数据进行预处理,将预处理后的媒体数据输入第一编码神经网络模型,得到第一编码神经网络模型输出的第一潜在变量。
172.也就是说,可以将待编码的媒体数据作为第一编码神经网络模型的输入来确定第一潜在变量,也可以对待编码的媒体数据进行预处理后,再作为第一编码神经网络模型的输入来确定第一潜在变量。
173.其中,该预处理操作可以为时域噪声整形(temporal noise shaping,tns)处理、频域噪声整形(frequency domain noise shaping,fdns)处理、声道下混处理等等。
174.第一编码神经网络模型是预先训练好的,本技术实施例对第一编码神经网络模型的网络结构和训练方法不做限定。例如,第一编码神经网络模型的网络结构可以为全连接网络或者卷积神经网络(convolutional neural network,cnn)网络。另外,本技术实施例对第一编码神经网络模型的网络结构所包含的层数和每一层的节点数也不做限定。
175.不同网络结构的编码神经网络模型输出的潜在变量的形式可能不同。例如,在第一编码神经网络模型的网络结构是全连接网络的情况下,第一潜在变量为一个矢量,矢量的维数m是潜在变量的大小(latent size),如图7所示。在第一编码神经网络模型的网络结构是cnn网络的情况下,第一潜在变量为一个n*m维矩阵,其中n为cnn网络的通道数(channel),m为cnn网络的每个通道潜在变量的大小(latent size),如图8所示。需要注意的是,图7和图8仅给出了全连接网络的潜在变量和cnn网络的潜在变量的一种示意,通道序号可以从1开始计数也可以从0开始计数,各个通道内潜在变量的元素序号也一样。
176.步骤602:基于第一潜在变量确定第一变量调整因子,第一变量调整因子用于使得第二潜在变量的熵编码结果的编码比特数满足预设编码速率条件,第二潜在变量是通过第一变量调整因子对第一潜在变量调整后得到。
177.在一些实施例中,可以基于第一潜在变量确定初始编码比特数,基于初始编码比特数和目标编码比特数,确定第一变量调整因子。
178.其中,目标编码比特数可以为事先设置的。当然,目标编码比特数也可以基于编码速率来确定,且不同的编码速率对应不同的目标编码比特数。
179.在本技术实施例中,可以使用固定码率对待编码的媒体数据进行编码,也可以使用可变码率对待编码的媒体数据进行编码。
180.在使用固定码率对待编码的媒体数据进行编码的情况下,可以基于固定码率确定当前帧的待编码的媒体数据的比特数,再减去当前帧的已使用比特数,得到当前帧的目标编码比特数。其中,已使用比特数可以为边信息等进行编码的比特数,而且通常情况下,每
帧媒体数据的边信息不同,所以,每帧媒体数据的目标编码比特数通常是不同的。
181.在使用可变码率对待编码的媒体数据进行编码的情况下,通常会指定一个码率,实际码率会在指定的码率的上下波动。此时,可以基于指定的码率确定当前帧的待编码的媒体数据的比特数,再减去当前帧的已使用比特数,得到当前帧的目标编码比特数。其中,已使用比特数可以为边信息等进行编码的比特数,而且在某些情况下,不同帧的媒体数据的边信息可以是不同的,所以,不同帧的媒体数据的目标编码比特数通常是不同的。
182.接下来将分别对初始编码比特数和第一变量调整因子的确定过程进行详细解释说明。
183.确定初始编码比特数
184.其中,基于第一潜在变量确定初始编码比特数的方式可以包括两种,接下来将分别介绍。
185.第一种实现方式,确定第一潜在变量的熵编码结果的编码比特数,以得到初始编码比特数。也即是,初始编码比特数为第一潜在变量的熵编码结果的编码比特数。
186.作为一种示例,对第一潜在变量进行量化处理,得到量化后的第一潜在变量。对量化后的第一潜在变量进行熵编码,得到第一潜在变量的初始编码结果。统计第一潜在变量的初始编码结果的编码比特数,得到初始编码比特数。
187.其中,对第一潜在变量进行量化处理的方式可以包括多种,比如,对第一潜在变量中的每个元素进行标量量化。标量量化的量化步长可以基于不同的编码速率来确定,也即是,事先存储编码速率与量化步长的对应关系,可以基于本技术实施例采用的编码速率从该对应关系中获取对应的量化步长。另外,标量量化还可以存在偏置量,即,通过偏置量对第一潜在变量进行偏置处理后再按照量化步长进行标量量化。
188.对量化后的第一潜在变量进行熵编码时,可以采用基于可调熵编码模型进行熵编码,也可以采用预置概率分布的熵编码模型进行熵编码,本技术实施例对此不做限定。其中,熵编码可以采用算术编码(arithmetic coding)、区间编码(range coding,rc)或者哈夫曼(huffman)编码中的一种,本技术实施例不做限定。
189.需要说明的是,下文的量化处理方式以及熵编码方式与此处的类似,下文的量化处理方式和熵编码方式可以参考此处的方式,本技术实施例在后文不再赘述。
190.第二种实现方式,基于第一初始调整因子对第一潜在变量进行调整,确定调整后的第一潜在变量的熵编码结果的编码比特数,以得到初始编码比特数。也即是,初始编码比特数为经过第一初始调整因子调整后的第一潜在变量的熵编码结果的编码比特数。其中,第一初始调整因子可以为第一预设调整因子。
191.作为一种示例,基于第一初始调整因子对第一潜在变量进行调整,得到调整后的第一潜在变量,对调整后的第一潜在变量进行量化处理,得到量化后的第一潜在变量。对量化后的第一潜在变量进行熵编码,得到第一潜在变量的初始编码结果。统计第一潜在变量的初始编码结果的编码比特数,得到初始编码比特数。
192.其中,基于第一初始调整因子对第一潜在变量进行调整的实现过程为:将第一潜在变量中的各个元素与第一初始调整因子中对应的元素相乘,得到调整后的第一潜在变量。
193.值得注意的是,上述实现过程仅仅为一种示例,实际应用中,还可以采用其他的方
法来调整。比如,可以将第一潜在变量中的各个元素除以第一初始调整因子中对应的元素,得到调整后的第一潜在变量。本技术实施例对调整方法不做限定。
194.需要说明的是,本技术实施例针对第一潜在变量设置有调整因子初值,调整因子初值通常等于1。第一预设调整因子可以大于或等于调整因子初值,也可以小于调整因子初值,比如,第一预设调整因子为1或2等常数。在通过上述第一种实现方式来确定初始编码比特数的情况下,第一初始调整因子为调整因子初值,在通过上述第二种实现方式来确定初始编码比特数的情况下,第一初始调整因子为第一预设调整因子。
195.另外,第一初始调整因子可以是标量也可以是矢量。例如,假设第一编码神经网络模型的网络结构为全连接网络,其输出的第一潜在变量为一个矢量,矢量的维数m是第一潜在变量的大小(latent size)。如果第一初始调整因子是标量,这种情况下,维数m且为矢量的第一潜在变量中的每个元素对应的调整因子值是相同的,即第一初始调整因子包括一个元素。如果第一初始调整因子是矢量,这种情况下,维数m且为矢量的第一潜在变量矢量中的每个元素对应的调整因子值是不完全相同的,可以多个元素共用一个调整因子值,即第一初始调整因子包括多个元素,每个元素对应第一潜在变量中的一个或多个元素。
196.同样的,假设第一编码神经网络模型的网络结构为cnn网络,其输出的第一潜在变量为一个n*m维矩阵,其中n为cnn网络的通道数(channel),m为cnn网络的每个通道潜在变量的大小(latent size)。如果第一初始调整因子是标量,这种情况下,n*m维的第一潜在变量矩阵中的每个元素对应的调整因子值是相同的,即第一初始调整因子包括一个元素。如果第一初始调整因子是矢量,这种情况下,n*m维的第一潜在变量矩阵中的每个元素对应的调整因子值是不完全相同的,可以属于同一通道的潜在变量的元素对应相同的调整因子值,即第一初始调整因子包括n个元素,每个元素对应第一潜在变量中通道序号相同的m个元素。
197.确定第一变量调整因子
198.上述第一变量调整因子为第一潜在变量的调整因子最终值。通过第一变量调整因子对第一潜在变量进行调整后得到第二潜在变量,且第二潜在变量的熵编码结果的编码比特数满足预设编码速率条件。其中,在使用固定码率对待编码的媒体数据进行编码的情况下,满足预设编码速率条件包括编码比特数小于或等于目标编码比特数。或者,满足预设编码速率条件包括编码比特数小于或等于目标编码比特数,且编码比特数与目标编码比特数的差值小于比特数阈值。在使用可变码率对待编码的媒体数据进行编码的情况下,满足预设编码速率条件包括编码比特数与目标编码比特数的差值的绝对值小于比特数阈值。也即是,满足预设编码速率条件包括编码比特数小于或等于目标编码比特数,且目标编码比特数与编码比特数的差值小于比特数阈值。或者,满足预设编码速率条件包括编码比特数大于或等于目标编码比特数,且编码比特数与目标编码比特数的差值小于比特数阈值。
199.需要说明的是,比特数阈值可以事先设置,且比特数阈值可以基于不同的需求进行调整。
200.其中,基于初始编码比特数和目标编码比特数,确定第一变量调整因子的实现方式可以包括多种,接下来对其中的三种进行介绍。
201.第一种实现方式,在初始编码比特数等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数不等于目标编码比特数的情况下,
基于初始编码比特数和目标编码比特数,通过第一循环方式确定第一变量调整因子。
202.其中,第一循环方式的第i次循环处理包括如下步骤:确定第i次循环处理的调整因子,i为正整数,基于第i次循环处理的调整因子对第一潜在变量进行调整,以得到第i次调整后的第一潜在变量。确定第i次调整后的第一潜在变量的熵编码结果的编码比特数,以得到第i次的编码比特数。在第i次的编码比特数满足继续调整条件的情况下,执行第一循环方式的第i 1次循环处理。在第i次的编码比特数不满足继续调整条件的情况下,终止第一循环方式的执行,基于第i次循环处理的调整因子确定第一变量调整因子。
203.其中,确定第i次循环处理的调整因子的实现过程为:基于第一循环方式的第i-1次循环处理的调整因子、第i-1次的编码比特数和目标编码比特数,确定第i次循环处理的调整因子。其中,在i=1的情况下,第i-1次循环处理的调整因子为第一初始调整因子,第i-1次的编码比特数为初始编码比特数。
204.此时,继续调整条件包括第i-1次的编码比特数和第i次的编码比特数均小于目标编码比特数,或者,继续调整条件包括第i-1次的编码比特数和第i次的编码比特数均大于目标编码比特数。
205.换句话说,继续调整条件包括第i次的编码比特数没有越过目标编码比特数。这里的没有越过的意思是指:前i-1次的编码比特数一直小于目标编码比特数,第i次的编码比特数仍小于目标编码比特数。或者,前i-1次的编码比特数一直大于目标编码比特数,第i次的编码比特数仍大于目标编码比特数。相反地,越过的意思是指:前i-1次的编码比特数一直小于目标编码比特数,第i次的编码比特数大于目标编码比特数。或者,前i-1次的编码比特数一直大于目标编码比特数,第i次的编码比特数小于目标编码比特数。
206.作为一种示例,在调整因子为量化后的值的情况下,可以基于第一循环方式的第i-1次循环处理的调整因子、第i-1次的编码比特数和目标编码比特数,按照下述公式(1)确定第i次循环处理的调整因子。
207.scale(i)=q{scale(i-1)*[target/curr(i-1)]}
ꢀꢀꢀ
(1)
[0208]
其中,在上述公式(1)中,scale(i)是指第i次循环处理的调整因子,scale(i-1)是指第i-1次循环处理的调整因子,target是指目标编码比特数,curr(i-1)是指第i-1次的编码比特数。其中,i为大于0的正整数。q{x}是指获取x量化后的值。
[0209]
需要说明的是,在调整因子为量化前的值的情况下,通过上述公式(1)确定第i次循环处理的调整因子时,上述公式(1)的等式右边可以不用通过q{x}来处理。
[0210]
其中,基于第i次循环处理的调整因子确定第一变量调整因子的实现过程包括:在第i次的编码比特数等于目标编码比特数的情况下,将第i次循环处理的调整因子确定为第一变量调整因子。或者,在第i次的编码比特数不等于目标编码比特数的情况下,基于第i次循环处理的调整因子和第i-1次循环处理的调整因子,确定第一变量调整因子。
[0211]
也即是,第i次循环处理的调整因子为通过上述第一循环方式最后一次得到的调整因子,第i次的编码比特数为最后一次得到的编码比特数。在最后一次得到的编码比特数等于目标编码比特数的情况下,将最后一次得到的调整因子确定为第一变量调整因子。在最后一次得到的编码比特数不等于目标编码比特数的情况下,基于后两次得到的调整因子确定第一变量调整因子。
[0212]
在一些实施例中,基于第i次循环处理的调整因子和第i-1次循环处理的调整因
子,确定第一变量调整因子的实现过程包括:确定第i次循环处理的调整因子和第i-1次循环处理的调整因子的平均值,基于该平均值确定第一变量调整因子。
[0213]
作为一种示例,可以直接将该平均值确定为第一变量调整因子,也可以将该平均值乘以一个预设的常数,得到第一变量调整因子。可选地,该常数可以小于1。
[0214]
在另一些实施例中,基于第i次循环处理的调整因子和第i-1次循环处理的调整因子,确定第一变量调整因子的实现过程包括:基于第i次循环处理的调整因子和第i-1次循环处理的调整因子,通过第二循环方式确定第一变量调整因子。
[0215]
作为一种示例,第二循环方式的第j次循环处理包括如下步骤:基于第j次循环处理的第一调整因子和第j次循环处理的第二调整因子确定第j次循环处理的第三调整因子,其中,在j等于1的情况下,第j次循环处理的第一调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的一者,第j次循环处理的第二调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的另一者,第j次循环处理的第一调整因子对应第j次的第一编码比特数,第j次循环处理的第二调整因子对应第j次的第二编码比特数,第j次的第一编码比特数是指经过第j次循环处理的第一调整因子调整后的第一潜在变量的熵编码结果的编码比特数,第j次的第二编码比特数是指经过第j次循环处理的第二调整因子调整后的第一潜在变量的熵编码结果的编码比特数,第j次的第一编码比特数小于第j次的第二编码比特数。获取第j次的第三编码比特数,第j次的第三编码比特数是指经过第j次循环处理的第三调整因子调整后的第一潜在变量的熵编码结果的编码比特数。若第j次的第三编码比特数不满足继续循环条件,终止第二循环方式的执行,将第j次循环处理的第三调整因子确定为第一变量调整因子。若第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数大于目标编码比特数且小于第j次的第二编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第二调整因子,将第j次循环处理的第一调整因子作为第j 1次循环处理的第一调整因子,执行第二循环方式的第j 1次循环处理。若第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数小于目标编码比特数且大于第j次的第一编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第一调整因子,将第j次循环处理的第二调整因子作为第j 1次循环处理的第二调整因子,执行第二循环方式的第j 1次循环处理。
[0216]
作为另一种示例,第二循环方式的第j次循环处理包括如下步骤:基于第j次循环处理的第一调整因子和第j次循环处理的第二调整因子确定第j次循环处理的第三调整因子,其中,在j等于1的情况下,第j次循环处理的第一调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的一者,第j次循环处理的第二调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的另一者,第j次循环处理的第一调整因子对应第j次的第一编码比特数,第j次循环处理的第二调整因子对应第j次的第二编码比特数,第j次的第一编码比特数小于第j次的第二编码比特数,j为正整数。获取第j次的第三编码比特数,第j次的第三编码比特数是指经过第j次循环处理的第三调整因子调整后的第一潜在变量的熵编码结果的编码比特数。若第j次的第三编码比特数不满足继续循环条件,终止第二循环方式的执行,将第j次循环处理的第三调整因子确定为第一变量调整因子。若j达到最大循环次数且第j次的第三编码比特数满足继续循环条件,终止第二循环方式的执行,基于第j次循环处理的第一调整因子确定第一变量调整因子。若j未达到最大循环次数、
第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数大于目标编码比特数且小于第j次的第二编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第二调整因子,将第j次循环处理的第一调整因子作为第j 1次循环处理的第一调整因子,执行第二循环方式的第j 1次循环处理。若j未达到最大循环次数、第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数小于目标编码比特数且大于第j次的第一编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第一调整因子,将第j次循环处理的第二调整因子作为第j 1次循环处理的第二调整因子,执行第二循环方式的第j 1次循环处理。
[0217]
其中,基于第j次循环处理的第一调整因子和第j次循环处理的第二调整因子确定第j次循环处理的第三调整因子的实现过程包括:确定第j次循环处理的第一调整因子和第j次循环处理的第二调整因子的平均值,基于该平均值确定第j次循环处理的第三调整因子。作为一种示例,可以直接将该平均值确定为第j次循环处理的第三调整因子,也可以将该平均值乘以一个预设的常数,得到第j次循环处理的第三调整因子。可选地,该常数可以小于1。
[0218]
另外,获取第j次的第三编码比特数的实现过程包括:基于第j次循环处理的第三调整因子对第一潜在变量进行调整,得到调整后的第一潜在变量,对调整后的第一潜在变量进行量化处理,得到量化后的第一潜在变量。对量化后的第一潜在变量进行熵编码,统计该熵编码结果的编码比特数,得到第j次的第三编码比特数。
[0219]
其中,在使用固定码率对待编码的媒体数据进行编码的情况下,基于第j次循环处理的第一调整因子确定第一变量调整因子的实现过程包括:将第j次循环处理的第一调整因子确定为第一变量调整因子。在使用可变码率对待编码的媒体数据进行编码的情况下,基于第j次循环处理的第一调整因子确定第一变量调整因子的实现过程包括:确定目标编码比特数与第j次的第一编码比特数之间的第一差值,以及确定第j次的第二编码比特数与目标编码比特数之间的第二差值。若第一差值小于第二差值,将第j次循环处理的第一调整因子确定为第一变量调整因子。若第二差值小于第一差值,将第j次循环处理的第二调整因子确定为第一变量调整因子。若第一差值等于第二差值,将第j次循环处理的第一调整因子确定为第一变量调整因子,或者将第j次循环处理的第二调整因子确定为第一变量调整因子。
[0220]
其中,在使用固定码率对待编码的媒体数据进行编码的情况下,继续循环条件包括第j次的第三编码比特数大于目标编码比特数,或者,继续循环条件包括第j次的第三编码比特数小于目标编码比特数,且目标编码比特数与第j次的第三编码比特数的差值大于比特数阈值。在使用可变码率对待编码的媒体数据进行编码的情况下,继续循环条件包括目标编码比特数与第j次的第三编码比特数的差值的绝对值大于比特数阈值。也即是,继续循环条件包括第j次的第三编码比特数大于目标编码比特数,且第j次的第三编码比特数与目标编码比特数的差值大于比特数阈值,或者,继续循环条件包括第j次的第三编码比特数小于目标编码比特数,且目标编码比特数与第j次的第三编码比特数的差值大于比特数阈值。
[0221]
即,在使用固定码率对待编码的媒体数据进行编码的情况下,继续循环条件包括:bits_curr》target||(bits_curr《target&&(target-bits_curr)》th),在使用可变码率对
待编码的媒体数据进行编码的情况下,继续循环条件包括:bits_curr》target&&(bits_curr-target)》th||(bits_curr《target&&(target-bits_curr)》th)。其中,bits_curr是指第j次的第三编码比特数,target是指目标编码比特数,th为比特数阈值。
[0222]
其中,可以将第j次循环处理的第一调整因子记为scale_lower,将第j次的第一编码比特数记为bits_lower,将第j次循环处理的第二调整因子记为scale_upper,将第j次的第二编码比特数记为bits_upper,将第j次循环处理的第三调整因子记为scale_curr,将第j次循环处理的第三调整因子作为第j 1次循环处理的第一调整因子或者第j 1次循环处理的第二调整因子的伪代码如下:
[0223][0224]
第二种实现方式,在初始编码比特数等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数不等于目标编码比特数的情况下,按照上述第一种实现方式来确定第一变量调整因子。但是,与上述第一种实现方式不同的是,在初始编码比特数小于目标编码比特数的情况下,按照第一步长调整第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数小于目标编码比特数。在初始编码比特数大于目标编码比特数的情况下,按照第二步长调整第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数大于目标编码比特数。
[0225]
其中,按照第一步长调整第i-1次循环处理的调整因子可以是指按照第一步长增大第i-1次循环处理的调整因子,按照第二步长调整第i-1次循环处理的调整因子可以是指按照第二步长减小第i-1次循环处理的调整因子。
[0226]
上述的增大处理和减小处理可以为线性的,也可以为非线性的。示例地,可以将第i-1次循环处理的调整因子与第一步长之和确定为第i次循环处理的调整因子,可以将第i-1次循环处理的调整因子与第二步长之差确定为第i次循环处理的调整因子。
[0227]
需要说明的是,第一步长和第二步长可以为事先设置的,且第一步长和第二步长可以基于不同的需求来调整。另外,第一步长与第二步长可以相等,也可以不相等。
[0228]
第三种实现方式,在初始编码比特数小于或等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数大于目标编码比特数的情况下,可以按照上述第一种实现方式来确定第一变量调整因子。也可以按照上述第二种实现方式中初始编码比特数大于目标编码比特数的情况来确定第一变量调整因子。
[0229]
步骤603:获取第二潜在变量的熵编码结果。
[0230]
在步骤602确定第一变量调整因子的过程中,第一变量调整因子可能为第一初始调整因子,可能为第i次循环处理的调整因子,也可能是第j次循环处理的第三调整因子,也可能是基于第j次循环处理的第一调整因子确定得到的。不管是哪种情况,上述循环过程中都有确定对应的熵编码结果,所以,可以直接从上述循环过程中确定得到的熵编码结果中
获取第一变量调整因子对应的熵编码结果,即第二潜在变量的熵编码结果。
[0231]
当然,还可以重新处理一次。即,直接基于第一变量调整因子对第一潜在变量进行调整,得到第二潜在变量。对第二潜在变量进行量化处理,得到量化后的第二潜在变量。对量化后的第二潜在变量进行熵编码,得到第二潜在变量的熵编码结果。
[0232]
基于上述描述,第一初始调整因子可以为标量也可以是矢量,第一变量调整因子是基于第一初始调整因子确定的,所以第一变量调整因子可以为标量也可以是矢量。
[0233]
即,第一变量调整因子包括一个元素或者多个元素,在第一变量调整因子包括多个元素的情况下,第一变量调整因子中的一个元素对应第一潜在变量中的一个或多个元素。
[0234]
步骤604:将第二潜在变量的熵编码结果以及第一变量调整因子的编码结果写入码流。
[0235]
基于上述描述,第一变量调整因子可以为量化前的值,也可以为量化后的值。若第一变量调整因子为量化前的值,此时,确定第一变量调整因子的编码结果的实现过程包括:对第一变量调整因子进行量化及编码处理,得到第一变量调整因子的编码结果。若第一变量调整因子为量化后的值,此时,确定第一变量调整因子的编码结果的实现过程包括:对第一变量调整因子进行编码,得到第一变量调整因子的编码结果。
[0236]
其中,第一变量调整因子可以采用任何一种编码方式进行编码,本技术实施例对此不做限定。
[0237]
另外,对于某些编码器来说,量化过程和编码过程是在一次处理中执行的,也即是,通过一次处理能够得到量化结果和编码结果。所以,对于第一变量调整因子来说,在上述确定第一变量调整因子的过程中可能也会得到第一变量调整因子的编码结果,所以,可以直接获取到第一变量调整因子的编码结果。也即是,第一变量调整因子的编码结果也可以在确定第一变量调整因子的过程中直接得到。
[0238]
可选地,若第一变量调整因子为量化前的值,本技术实施例还可以确定第一变量调整因子的量化步长对应的量化索引,得到第一量化索引。可选地,本技术实施例还可以确定第二潜在变量的量化步长对应的量化索引,得到第二量化索引。将第一量化索引和第二量化索引编入码流。其中,量化索引用于指示对应的量化步长,即,第一量化索引用于指示第一变量调整因子的量化步长,第二量化索引用于指示第二潜在变量的量化步长。
[0239]
在本技术实施例中,通过第一变量调整因子对第一潜在变量进行调整,得到第二潜在变量,而且第二潜在变量的熵编码结果的编码比特数满足预设编码速率条件,这样可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数均能够满足预设编码速率条件,也即是,可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数基本保持一致,而不是动态变化的,从而满足了编码器对稳定编码速率的需求。进一步地,在考虑到需要传输边信息(例如窗型,时域噪声整形(tns:temporal noise shaping)参数,频域噪声整形(fdns:frequency-domain noise shaping)参数,和/或带宽扩展(bwe:bandwidth extension)参数等等)时,能够保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数和边信息的编码比特数整体基本保持一致,从而满足编码器对稳定编码速率的需求。
[0240]
请参考图9,图9是本技术实施例提供的第一种解码方法的流程图,该方法应用于解码端。该方法对应于图6所示的编码方法。该方法包括如下步骤。
[0241]
步骤901:基于码流确定重构的第二潜在变量和重构的第一变量调整因子。
[0242]
在一些实施例中,可以对码流中的第二潜在变量的熵编码结果进行熵解码,以及对码流中的第一变量调整因子的编码结果进行解码,得到经量化的第二潜在变量和经量化的第一变量调整因子。对经量化的第二潜在变量和经量化的第一变量调整因子进行去量化处理,得到重构的第二潜在变量和重构的第一变量调整因子。
[0243]
其中,本步骤的解码方法与编码端的编码方法相对应,本步骤的去量化处理与编码端的量化处理相对应。即,解码方法为编码方法的逆过程,去量化处理为量化处理的逆过程。
[0244]
示例地,可以从码流中解析出第一量化索引和第二量化索引,第一量化索引用于指示第一变量调整因子的量化步长,第二量化索引用于指示第二潜在变量的量化步长。按照第一量化索引所指示的量化步长,对经量化的第一变量调整因子进行去量化处理,得到重构的第一变量调整因子。按照第二量化索引所指示的量化步长,对经量化的第二潜在变量进行去量化处理,得到重构的第二潜在变量。
[0245]
步骤902:基于重构的第一变量调整因子,对重构的第二潜在变量进行调整,得到重构的第一潜在变量,重构的第一潜在变量用于指示待解码的媒体数据的特征。
[0246]
由于第二潜在变量是第一潜在变量经过第一变量调整因子调整后得到的,所以,可以基于重构的第一变量调整因子,对重构的第二潜在变量进行调整,得到重构的第一潜在变量。
[0247]
其中,基于重构的第一变量调整因子对重构的第二潜在变量进行调整的过程为编码侧对第一潜在变量进行调整的逆过程。示例地,在编码侧将第一潜在变量中的各个元素与第一变量调整因子中对应的元素相乘的情况下,此处可以将重构的第二潜在变量中各个元素除以重构的第一变量调整因子中对应的元素,得到重构的第一潜在变量。在编码侧将第一潜在变量中的各个元素除以第一变量调整因子中对应的元素的情况下,此处可以将重构的第二潜在变量中各个元素乘以重构的第一变量调整因子中对应的元素,得到重构的第一潜在变量。
[0248]
基于上述描述,第一初始调整因子可以是标量也可以是矢量,所以最终得到的第一变量调整因子可以是标量也可以是矢量。例如,假设第一编码神经网络模型的网络结构为全连接网络,第二潜在变量为一个矢量,矢量的维数m是第二潜在变量的大小(latent size)。如果第一变量调整因子是标量,这种情况下,维数m且为矢量的第二潜在变量中的每个元素对应的调整因子值是相同的,即第一变量调整因子包括一个元素。如果第一变量调整因子是矢量,这种情况下,维数m且为矢量的第二潜在变量矢量中的每个元素对应的调整因子值是不完全相同的,可以多个元素共用一个调整因子值,即第一变量调整因子包括多个元素,每个元素对应第二潜在变量中的一个或多个元素。
[0249]
同样的,假设第一编码神经网络模型的网络结构为cnn网络,第二潜在变量为一个n*m维矩阵,其中n为cnn网络的通道数(channel),m为cnn网络的每个通道潜在变量的大小(latent size)。如果第一变量调整因子是标量,这种情况下,n*m维的第二潜在变量矩阵中的每个元素对应的调整因子值是相同的,即第一变量调整因子包括一个元素。如果第一变量调整因子是矢量,这种情况下,n*m维的第二潜在变量矩阵中的每个元素对应的调整因子值是不完全相同的,可以属于同一通道的潜在变量的元素对应相同的调整因子值,即第一
变量调整因子包括n个元素,每个元素对应第二潜在变量中通道序号相同的m个元素。
[0250]
步骤903:通过第一解码神经网络模型对重构的第一潜在变量进行处理,以得到重构的媒体数据。
[0251]
在一些实施例中,可以将重构的第一潜在变量输入第一解码神经网络模型,得到第一解码神经网络模型输出的重构的媒体数据。或者,对重构的第一潜在变量进行后处理,将后处理后的第一潜在变量输入第一解码神经网络模型,得到第一解码神经网络模型输出的重构的媒体数据。
[0252]
也就是说,可以将重构的第一潜在变量作为第一解码神经网络模型的输入来确定重构的媒体数据,也可以对重构的第一潜在变量进行后处理后,再作为第一解码神经网络模型的输入来确定重构的媒体数据。
[0253]
其中,第一解码神经网络模型与第一编码神经网络模型对应,均是预先训练好的,本技术实施例对第一解码神经网络模型的网络结构和训练方法不做限定。例如,第一解码神经网络模型的网络结构可以为全连接网络或者cnn网络。另外,本技术实施例对第一解码神经网络模型的网络结构所包含的层数和每一层的节点数也不做限定。
[0254]
在媒体数据为音频信号和视频信号的情况下,第一解码神经网络模型的输出可以是重构的时域的媒体数据,也可以是重构的频域的媒体数据。如果是频域的媒体数据,则需要经过频域到时域的变换后得到时域的媒体数据。第一解码神经网络模型的输出还可以是残差信号,此时,还需要进行其他相应处理才能得到音频信号或者视频信号。
[0255]
在本技术实施例中,由于第二潜在变量的熵编码结果的编码比特数满足预设编码速率条件,这样可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数均能够满足预设编码速率条件,也即是,可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数基本保持一致,而不是动态变化的,从而满足了编码器对稳定编码速率的需求。进一步地,在考虑到需要传输边信息(例如窗型,时域噪声整形(tns:temporal noise shaping)参数,频域噪声整形(fdns:frequency-domain noise shaping)参数,和/或带宽扩展(bwe:bandwidth extension)参数等等)时,能够保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数和边信息的编码比特数整体基本保持一致,从而满足编码器对稳定编码速率的需求。
[0256]
请参考图10,图10是本技术实施例提供的第二种编码方法的流程图,该方法包括上下文模型,但只对待编码的媒体数据生成的潜在变量通过调整因子进行调整。该编码方法应用于编码端设备,包括如下步骤。
[0257]
步骤1001:通过第一编码神经网络模型对待编码的媒体数据进行处理,以得到第一潜在变量,第一潜在变量用于指示待编码的媒体数据的特征。
[0258]
其中,步骤1001的实现过程可以参考上述步骤601的实现过程,此处不再赘述。
[0259]
步骤1002:基于第一潜在变量确定第一变量调整因子。
[0260]
在一些实施例中,可以基于第一潜在变量确定初始编码比特数,基于初始编码比特数和目标编码比特数,确定第一变量调整因子。其中,目标编码比特数的相关描述可以参考步骤602中的内容,此处不再赘述。接下来将分别对初始编码比特数和第一变量调整因子的确定过程进行详细解释说明。
[0261]
确定初始编码比特数
[0262]
其中,基于第一潜在变量确定初始编码比特数的方式可以包括两种,接下来将分别介绍。
[0263]
第一种实现方式,基于第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数,基于初始熵编码模型参数,确定第一潜在变量的熵编码结果的编码比特数,以得到基础初始编码比特数。基于上下文初始编码比特数与基础初始编码比特数确定为初始编码比特数。
[0264]
其中,上下文模型包括上下文编码神经网络模型和上下文解码神经网络模型。基于第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数的实现过程包括:通过上下文编码神经网络模型对第一潜在变量进行处理,得到第五潜在变量,第五潜在变量用于指示第一潜在变量的概率分布。确定第五潜在变量的熵编码结果,将第五潜在变量的熵编码结果的编码比特数作为上下文初始编码比特数。基于第五潜在变量的熵编码结果重构第五潜在变量,通过上下文解码神经网络模型对重构得到的第五潜在变量进行处理,得到初始熵编码模型参数。
[0265]
作为一种示例,通过上下文编码神经网络模型对第一潜在变量进行处理,得到第五潜在变量。对第五潜在变量进行量化处理,得到量化后的第五潜在变量。对量化后的第五潜在变量进行熵编码,并统计该熵编码结果的编码比特数,得到上下文初始编码比特数。之后,对第五潜在变量的熵编码结果进行熵解码,得到经量化的第五潜在变量,对经量化的第五潜在变量进行去量化处理,得到重构的第五潜在变量。将重构的第五潜在变量输入上下文解码神经网络模型,得到上下文解码神经网络模型输出的初始熵编码模型参数。
[0266]
其中,通过上下文编码神经网络模型对第一潜在变量进行处理的实现过程为:将第一潜在变量输入上下文编码神经网络模型,得到上下文编码神经网络模型输出的第五潜在变量。或者,对第一潜在变量中的每个元素取绝对值,然后再输入上下文编码神经网络模型,得到上下文编码神经网络模型输出的第五潜在变量。
[0267]
其中,基于初始熵编码模型参数,确定第一潜在变量的熵编码结果的编码比特数,得到基础初始编码比特数的实现过程为:从编码模型参数可调的熵编码模型中确定与该初始熵编码模型参数对应的熵编码模型。对第一潜在变量进行量化处理,得到量化后的第一潜在变量。基于与该初始熵编码模型参数对应的熵编码模型,对量化后的第一潜在变量进行熵编码,得到第一潜在变量的初始编码结果。统计第一潜在变量的初始编码结果的编码比特数,得到基础初始编码比特数。
[0268]
其中,步骤1002中的量化处理方式和熵编码方式可以参考步骤602中的量化处理方式和熵编码方式,此处不再赘述。
[0269]
其中,基于上下文初始编码比特数与基础初始编码比特数确定为初始编码比特数的实现过程包括:将上下文初始编码比特数与基础初始编码比特数之和确定为初始编码比特数。当然,还可以通过其他的实现方式来确定。
[0270]
第二种实现方式,基于第一初始调整因子对第一潜在变量进行调整,基于调整后的第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数,基于初始熵编码模型参数,确定调整后的第一潜在变量的熵编码结果的编码比特数,得到基础初始编码比特数。基于上下文初始编码比特数与基础初始编码比特数确定初始编码比特数。其中,第一初始调整因子可以为第一预设调整因子。
[0271]
其中,上下文模型包括上下文编码神经网络模型和上下文解码神经网络模型。基于调整后的第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数的实现过程包括:通过上下文编码神经网络模型对调整后的第一潜在变量进行处理,得到第六潜在变量,第六潜在变量用于指示调整后的第一潜在变量的概率分布。确定第六潜在变量的熵编码结果,将第六潜在变量的熵编码结果的编码比特数作为上下文初始编码比特数。基于第六潜在变量的熵编码结果重构第六潜在变量,通过上下文解码神经网络模型对重构得到的第六潜在变量进行处理,得到初始熵编码模型参数。
[0272]
作为一种示例,通过上下文编码神经网络模型对调整后的第一潜在变量进行处理,得到第六潜在变量。对第六潜在变量进行量化处理,得到量化后的第六潜在变量。对量化后的第六潜在变量进行熵编码,并统计该熵编码结果的编码比特数,得到上下文初始编码比特数。之后,对第六潜在变量的熵编码结果进行熵解码,得到经量化的第六潜在变量,对经量化的第六潜在变量进行去量化处理,得到重构的第六潜在变量。将重构的第六潜在变量输入上下文解码神经网络模型,得到上下文解码神经网络模型输出的初始熵编码模型参数。
[0273]
需要说明的是,第二种实现方式中的其他内容可以参考上文对应步骤的描述,此处不再赘述。
[0274]
确定第一变量调整因子
[0275]
上述第一变量调整因子为第一潜在变量的调整因子最终值。通过第一变量调整因子对第一潜在变量进行调整后得到第二潜在变量,第二潜在变量经过上下文编码神经网络模型处理后得到第三潜在变量,且第二潜在变量的熵编码结果和第三潜在变量的熵编码结果的编码总比特数满足预设编码速率条件。其中,在使用固定码率对待编码的媒体数据进行编码的情况下,满足预设编码速率条件包括编码比特数小于或等于目标编码比特数。或者,满足预设编码速率条件包括编码比特数小于或等于目标编码比特数,且编码比特数与目标编码比特数的差值小于比特数阈值。在使用可变码率对待编码的媒体数据进行编码的情况下,满足预设编码速率条件包括编码比特数与目标编码比特数的差值的绝对值小于比特数阈值。也即是,满足预设编码速率条件包括编码比特数小于或等于目标编码比特数,且目标编码比特数与编码比特数的差值小于比特数阈值。或者,满足预设编码速率条件包括编码比特数大于或等于目标编码比特数,且编码比特数与目标编码比特数的差值小于比特数阈值。
[0276]
需要说明的是,比特数阈值可以事先设置,且比特数阈值可以基于不同的需求进行调整。
[0277]
其中,基于初始编码比特数和目标编码比特数,确定第一变量调整因子的实现方式可以包括多种,接下来对其中的三种进行介绍。
[0278]
第一种实现方式,在初始编码比特数等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数不等于目标编码比特数的情况下,基于初始编码比特数和目标编码比特数,通过第一循环方式确定第一变量调整因子。
[0279]
其中,第一循环方式的第i次循环处理包括如下步骤:确定第i次循环处理的调整因子,i为正整数,基于第i次循环处理的调整因子对第一潜在变量进行调整,得到第i次调整后的第一潜在变量。基于第i次调整后的第一潜在变量,通过上下文模型确定对应的第i
次的上下文编码比特数和第i次的熵编码模型参数,基于第i次的熵编码模型参数,确定第i次调整后的第一潜在变量的熵编码结果的编码比特数,得到第i次的基础编码比特数,基于第i次的上下文编码比特数与第i次的基础编码比特数确定第i次的编码比特数。在第i次的编码比特数满足继续调整条件的情况下,执行第一循环方式的第i 1次循环处理。在第i次的编码比特数不满足继续调整条件的情况下,终止第一循环方式的执行,基于第i次循环处理的调整因子确定第一变量调整因子。
[0280]
其中,确定第i次循环处理的调整因子的实现过程可以参考上述步骤602中的相关描述,此处不再赘述。基于第i次调整后的第一潜在变量,通过上下文模型确定第i次的上下文编码比特数和第i次的熵编码模型参数的实现过程可以参考上述确定上下文初始编码比特数和初始熵编码模型参数的过程,此处不再赘述。基于第i次的编码模型参数,确定第i次调整后的第一潜在变量的熵编码结果的编码比特数的实现过程可以参考上述基于初始熵编码模型参数确定基础初始编码比特数的过程,此处不再赘述。
[0281]
其中,基于第i次循环处理的调整因子确定第一变量调整因子的实现过程可以参考上述步骤602中的描述,此处不再赘述。
[0282]
第二种实现方式,在初始编码比特数等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数不等于目标编码比特数的情况下,按照上述第一种实现方式来确定第一变量调整因子。但是,与上述第一种实现方式不同的是,在初始编码比特数小于目标编码比特数的情况下,按照第一步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数小于目标编码比特数。在初始编码比特数大于目标编码比特数的情况下,按照第二步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数大于目标编码比特数。
[0283]
其中,按照第一步长调整第i-1次循环处理的调整因子可以是指按照第一步长增大第i-1次循环处理的调整因子,按照第二步长调整第i-1次循环处理的调整因子可以是指按照第二步长减小第i-1次循环处理的调整因子。
[0284]
上述的增大处理和减小处理可以为线性的,也可以为非线性的。示例地,可以将第i-1次循环处理的调整因子与第一步长之和确定为第i次循环处理的调整因子,可以将第i-1次循环处理的调整因子与第二步长之差确定为第i次循环处理的调整因子。
[0285]
需要说明的是,第一步长和第二步长可以为事先设置的,且第一步长和第二步长可以基于不同的需求来调整。另外,第一步长与第二步长可以相等,也可以不相等。
[0286]
第三种实现方式,在初始编码比特数小于或等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在初始编码比特数大于目标编码比特数的情况下,可以按照上述第一种实现方式来确定第一变量调整因子。也可以按照上述第二种实现方式中初始编码比特数大于目标编码比特数的情况来确定第一变量调整因子。
[0287]
步骤1003:获取第二潜在变量的熵编码结果和第三潜在变量的熵编码结果,第二潜在变量是通过第一变量调整因子对第一潜在变量调整后得到,第三潜在变量用于指示第二潜在变量的概率分布,第二潜在变量的熵编码结果和第三潜在变量的熵编码结果的编码总比特数满足预设编码速率条件。
[0288]
在步骤1002确定第一变量调整因子的过程中,第一变量调整因子可能为第一初始
shaping)参数,频域噪声整形(fdns:frequency-domain noise shaping)参数,和/或带宽扩展(bwe:bandwidth extension)参数等等)时,能够保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数和边信息的编码比特数整体基本保持一致,从而满足编码器对稳定编码速率的需求。
[0296]
请参考图11,图11是本技术实施例提供的第二种解码方法的流程图,该方法应用于解码端,且该方法对应于图10所示的编码方法。该方法包括如下步骤。
[0297]
步骤1101:基于码流确定重构的第三潜在变量和重构的第一变量调整因子。
[0298]
在一些实施例中,可以对码流中的第三潜在变量的熵编码结果进行熵解码,以及对码流中的第一变量调整因子的编码结果进行解码,得到经量化的第三潜在变量和经量化的第一变量调整因子。对经量化的第三潜在变量和经量化的第一变量调整因子进行去量化处理,得到重构的第三潜在变量和重构的第一变量调整因子。
[0299]
其中,本步骤的解码方法与编码端的编码方法相对应,本步骤的去量化处理与编码端的量化处理相对应。即,解码方法为编码方法的逆过程,去量化处理为量化处理的逆过程。
[0300]
示例地,可以从码流中解析出第一量化索引和第三量化索引,第一量化索引用于指示第一变量调整因子的量化步长,第三量化索引用于指示第三潜在变量的量化步长。按照第一量化索引所指示的量化步长,对经量化的第一变量调整因子进行去量化处理,得到重构的第一变量调整因子。按照第三量化索引所指示的量化步长,对经量化的第三潜在变量进行去量化处理,得到重构的第三潜在变量。
[0301]
步骤1102:基于码流和重构的第三潜在变量,确定重构的第二潜在变量。
[0302]
在一些实施例中,通过上下文解码神经网络模型对重构的第三潜在变量进行处理,得到重构的第一熵编码模型参数,基于码流和重构的第一熵编码模型参数,确定重构的第二潜在变量。
[0303]
在一些实施例中,可以确定与重构的第一熵编码模型参数对应的熵解码模型。基于与重构的第一熵编码模型参数对应的熵解码模型,对码流中的第二潜在变量的熵编码结果进行熵解码,得到经量化的第二潜在变量。对经量化的第二潜在变量进行去量化处理,得到重构的第二潜在变量。
[0304]
其中,本步骤的解码方法与编码端的编码方法相对应,本步骤的去量化处理与编码端的量化处理相对应。即,解码方法为编码方法的逆过程,去量化处理为量化处理的逆过程。
[0305]
示例地,可以从码流中解析出第二量化索引,第二量化索引用于指示第二潜在变量的量化步长。按照第二量化索引所指示的量化步长,对经量化的第二潜在变量进行去量化处理,得到重构的第二潜在变量。
[0306]
步骤1103:基于重构的第一变量调整因子,对重构的第二潜在变量进行调整,得到重构的第一潜在变量,重构的第一潜在变量用于指示待解码的媒体数据的特征。
[0307]
其中,步骤1103的实现过程可以参考上述步骤902的实现过程,此处不再赘述。
[0308]
步骤1104:通过第一解码神经网络模型对重构的第一潜在变量进行处理,以得到重构的媒体数据。
[0309]
其中,步骤1104的实现过程可以参考上述步骤903的实现过程,此处不再赘述。
[0310]
在本技术实施例中,由于第二潜在变量的熵编码结果和第三潜在变量的熵编码结果的编码总比特数满足预设编码速率条件,这样可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数均能够满足预设编码速率条件,也即是,可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数基本保持一致,而不是动态变化的,从而满足了编码器对稳定编码速率的需求。进一步地,在考虑到需要传输边信息(例如窗型,时域噪声整形(tns:temporal noise shaping)参数,频域噪声整形(fdns:frequency-domain noise shaping)参数,和/或带宽扩展(bwe:bandwidth extension)参数等等)时,能够保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数和边信息的编码比特数整体基本保持一致,从而满足编码器对稳定编码速率的需求。
[0311]
请参考图12,图12是本技术实施例提供的一种示例性编码方法的框图。图12主要是对图10所示的编码方法进行示例性解释。在图12中,以音频信号为例。可以对音频信号经过加窗处理,得到当前帧音频信号。对当前帧音频信号进行mdct变换处理后,得到当前帧的频域信号。基于当前帧的频域信号,经过第一编码神经网络模型处理,输出第一潜在变量。基于第一潜在变量调整因子对第一潜在变量进行调整,得到第二潜在变量。通过上下文编码神经网络模型对第二潜在变量进行处理,得到第三潜在变量。对第三潜在变量进行量化处理和熵编码,得到第三潜在变量的熵编码结果,将第三潜在变量的熵编码结果写入码流。同时,对第三潜在变量的熵编码结果进行熵解码,得到经量化的第三潜在变量。对经量化的第三潜在变量进行去量化处理,得到重构的第三潜在变量。通过上下文解码神经网络模型对重构的第三潜在变量进行处理,得到第一熵编码模型参数。从参数可调的熵编码模型中选择与第一熵编码模型参数对应的熵编码模型。对第二潜在变量进行量化,基于选择的熵编码模型对量化后的第二潜在变量进行熵编码,得到第二潜在变量的熵编码结果,将第二潜在变量的熵编码结果写入码流。然后,将第一变量调整因子的编码结果写入码流。
[0312]
请参考图13,图13是本技术实施例提供的一种示例性解码方法的框图。图13主要是对图11所示的解码方法进行示例性解释。在图13中,以音频信号为例。通过熵解码模型对码流中的第三潜在变量的熵编码结果进行熵解码,得到经量化的第三潜在变量。对经量化的第三潜在变量进行去量化处理,得到重构的第三潜在变量。通过上下文解码神经网络模型对重构的第三变量进行处理,得到重构的第一熵编码模型参数。基于重构的第一熵编码模型参数,从参数可调的熵解码模型中选择对应的熵解码模型。按照选择的熵解码模型对码流中的第二潜在变量的熵编码结果进行熵解码,得到经量化的第二潜在变量。对经量化的第二潜在变量进行去量化处理,得到重构的第二潜在变量。对码流中第一变量调整因子的编码结果进行解码,得到重构的第一变量调整因子。基于重构的第一变量调整因子对重构的第二潜在变量进行调整,得到重构的第一潜在变量。通过第一解码神经网络模型对重构的第一潜在变量进行处理,得到重构的当前帧的频域信号。对重构的当前帧的频域信号进行imdct变换处理以及去加窗处理,得到重构的音频信号。
[0313]
请参考图14,图14是本技术实施例提供的第三种编码方法的流程图,该方法包括上下文模型,而且不仅对待编码的媒体数据生成的潜在变量通过调整因子进行调整,还对上下文模型确定的潜在变量通过调整因子进行调整。该编码方法应用于编码端设备,包括如下步骤。
[0314]
步骤1401:通过第一编码神经网络模型对待编码的媒体数据进行处理,以得到第
一潜在变量,第一潜在变量用于指示待编码的媒体数据的特征。
[0315]
其中,步骤1401的实现过程可以参考上述步骤601的实现过程,此处不再赘述。
[0316]
步骤1402:基于第一潜在变量确定第一变量调整因子和第二变量调整因子。
[0317]
在一些实施例中,可以基于第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数,基于初始熵编码模型参数,确定第一潜在变量的熵编码结果的编码比特数,以得到基础初始编码比特数,基于上下文初始编码比特数、基础初始编码比特数和目标编码比特数,确定第一变量调整因子和第二变量调整因子。
[0318]
其中,基于第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数的实现过程,以及基于初始熵编码模型参数,确定第一潜在变量的熵编码结果的编码比特数,以得到基础初始编码比特数的实现过程可以参考上述步骤1002中的相关描述,此处不再赘述。
[0319]
在另一些实施例中,可以将第一预设调整因子作为第一初始调整因子,将第二预设调整因子作为第二初始调整因子。基于第一初始调整因子对第一潜在变量进行调整,基于调整后的第一潜在变量和第二初始调整因子,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数,基于初始熵编码模型参数,确定第一潜在变量的熵编码结果的编码比特数,以得到基础初始编码比特数。基于上下文初始编码比特数、基础初始编码比特数和目标编码比特数,确定第一变量调整因子和第二变量调整因子。
[0320]
其中,基于第一初始调整因子对第一潜在变量进行调整的实现过程可以参考上述步骤1002中的相关描述,此处不再赘述。
[0321]
其中,上下文模型包括上下文编码神经网络模型和上下文解码神经网络模型。基于调整后的第一潜在变量和第二初始调整因子,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数的实现过程包括:通过上下文编码神经网络模型对调整后的第一潜在变量进行处理,得到第六潜在变量,第六潜在变量用于指示调整后的第一潜在变量的概率分布。基于第二初始调整因子对第六潜在变量进行调整,得到第七潜在变量。确定第七潜在变量的熵编码结果,将第七潜在变量的熵编码结果的编码比特数作为上下文初始编码比特数。基于第七潜在变量的熵编码结果重构第七潜在变量,通过上下文解码神经网络模型对重构得到的第七潜在变量进行处理,得到初始熵编码模型参数。
[0322]
作为一种示例,通过上下文编码神经网络模型对调整后的第一潜在变量进行处理,得到第六潜在变量。基于第二初始调整因子对第六潜在变量进行调整,得到第七潜在变量。对第七潜在变量进行量化处理,得到量化后的第七潜在变量。对量化后的第七潜在变量进行熵编码,并统计该熵编码结果的编码比特数,得到上下文初始编码比特数。之后,对第七潜在变量的熵编码结果进行熵解码,得到经量化的第七潜在变量,对经量化的第七潜在变量进行去量化处理,得到重构的第七潜在变量。将重构的第七潜在变量输入上下文解码神经网络模型,得到上下文解码神经网络模型输出的初始熵编码模型参数。
[0323]
其中,基于第二初始调整因子对第六潜在变量进行调整的实现过程为:将第六潜在变量中的各个元素与第二初始调整因子中对应的元素相乘,得到第七潜在变量。
[0324]
值得注意的是,上述实现过程仅仅为一种示例,实际应用中,还可以采用其他的方法来调整。比如,可以将第六潜在变量中的各个元素除以第二初始调整因子中对应的元素,得到第七潜在变量。本技术实施例对调整方法不做限定。
[0325]
其中,其余步骤的具体实现过程可以参考前文对应步骤的描述,此处不再赘述。
[0326]
需要说明的是,本技术实施例针对第三潜在变量设置有调整因子初值,调整因子初值通常等于1。第二预设调整因子可以大于或等于调整因子初值,也可以小于调整因子初值,比如,第二预设调整因子为1或2等常数。在通过上述第一种实现方式来确定第一变量调整因子和第二变量调整因子的情况下,第二初始调整因子为调整因子初值,在通过上述第二种实现方式来确定第一变量调整因子和第二变量调整因子的情况下,第二初始调整因子为第二预设调整因子。
[0327]
另外,第二初始调整因子可以是标量也可以是矢量。具体介绍请参考第一初始调整因子的相关介绍。
[0328]
其中,基于上下文初始编码比特数、基础初始编码比特数和目标编码比特数,确定第一变量调整因子和第二变量调整因子的实现过程可以包括两种,接下来分别介绍。
[0329]
第一种实现方式,将第二变量调整因子置为第二初始调整因子,基于基础初始编码比特数和上下文初始编码比特数中的至少一者,以及目标编码比特数,确定基础目标编码比特数。基于第二初始调整因子、基础目标编码比特数和基础初始编码比特数,确定第一变量调整因子和基础实际编码比特数,基础实际编码比特数是指经过第一变量调整因子调整后的第一潜在变量的熵编码结果的编码比特数。基于目标编码比特数和基础实际编码比特数,确定上下文目标编码比特数。基于上下文目标编码比特数和上下文初始编码比特数,确定第二变量调整因子。
[0330]
其中,基于基础初始编码比特数和上下文初始编码比特数中的至少一者,以及目标编码比特数,确定基础目标编码比特数的实现过程包括:将目标编码比特数减去上下文初始编码比特数,得到基础目标编码比特数。或者,确定基础初始编码比特数和上下文初始编码比特数之间的比例,基于该比例和目标编码比特数,确定基础目标编码比特数。或者,基于目标编码比特数与基础初始编码比特数的比值,确定基础目标编码比特数。当然,还可以通过其他实现过程来确定。
[0331]
比如,确定基础初始编码比特数和上下文初始编码比特数之间的比例为5:3,此时,可以将目标编码比特数乘以5/8,得到基础目标编码比特数。
[0332]
又比如,确定目标编码比特数与基础初始编码比特数的比值,如果目标编码比特数与基础初始编码比特数的比值大于第一比例门限,则将基础初始编码比特数与预设的第一比例调整步长之和确定为基础目标编码比特数。如果目标编码比特数与基础初始编码比特数的比值小于第二比例门限,则将基础初始编码比特数与预设的第二比例调整步长之差确定为基础目标编码比特数。其中,第一比例门限大于第二比例门限。如果目标编码比特数与基础初始编码比特数的比值大于或等于第二比例门限且小于或等于第一比例门限,则将基础初始编码比特数确定为基础目标编码比特数。
[0333]
需要说明的是,第一比例调整步长可以大于第二比例调整步长,也可以小于第二比例调整步长,当然,也可以等于第二比例调整步长,本技术实施例对第一比例调整步长与第二比例调整步长的大小关系不做限定。
[0334]
其中,基于第二初始调整因子、基础目标编码比特数和基础初始编码比特数确定第一变量调整因子的实现方式也包括三种,接下来分别介绍。
[0335]
方式11,在基础初始编码比特数等于基础目标编码比特数的情况下,将第一初始
调整因子确定为第一变量调整因子。在基础初始编码比特数不等于基础目标编码比特数的情况下,基于基础初始编码比特数和基础目标编码比特数,通过第一循环方式确定第一变量调整因子。
[0336]
其中,第一循环方式的第i次循环处理包括如下步骤:确定第i次循环处理的调整因子,i为正整数,基于第i次循环处理的调整因子对第一潜在变量进行调整,得到第i次调整后的第一潜在变量。基于第i次调整后的第一潜在变量和第二初始调整因子,通过上下文模型确定第i次的上下文编码比特数和第i次的熵编码模型参数,基于第i次的熵编码模型参数,确定第i次调整后的第一潜在变量的熵编码结果的编码比特数,得到第i次的基础编码比特数,基于第i次的上下文编码比特数与第i次的基础编码比特数确定第i次的编码比特数。在第i次的编码比特数满足继续调整条件的情况下,执行第一循环方式的第i 1次循环处理。在第i次的编码比特数不满足继续调整条件的情况下,终止第一循环方式的执行,基于第i次循环处理的调整因子确定第一变量调整因子。
[0337]
其中,确定第一变量调整因子的方式11中的内容与步骤1002中确定第一变量调整因子的第一种实现方式中的内容类似。不同的地方在于,本步骤是基于第i次调整后的第一潜在变量和第二初始调整因子,通过上下文模型确定第i次的上下文编码比特数和第i次的熵编码模型参数。其中,基于第i次调整后的第一潜在变量和第二初始调整因子,通过上下文模型确定第i次的上下文编码比特数和第i次的熵编码模型参数的实现过程可以参考上文基于调整后的第一潜在变量和第二初始调整因子,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数的实现过程,此处不再赘述。
[0338]
方式12,在基础初始编码比特数等于基础目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在基础初始编码比特数不等于基础目标编码比特数的情况下,按照上述方式11来确定第一变量调整因子。但是,与上述方式11不同的是,在基础初始编码比特数小于基础目标编码比特数的情况下,按照第一步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数小于基础目标编码比特数。在基础初始编码比特数大于基础目标编码比特数的情况下,按照第二步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数大于基础目标编码比特数。
[0339]
其中,方式12中的相关内容可以参考步骤1002中第二种实现方式的内容,此处不再赘述。
[0340]
方式13,在基础初始编码比特数小于或等于基础目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。在基础初始编码比特数大于基础目标编码比特数的情况下,可以按照上述方式11来确定第一变量调整因子。也可以按照上述方式12中基础初始编码比特数大于基础目标编码比特数的情况来确定第一变量调整因子。
[0341]
其中,基于目标编码比特数和基础实际编码比特数,确定上下文目标编码比特数的实现过程包括:将目标编码比特数减去基础实际编码比特数,得到上下文目标编码比特数。
[0342]
其中,基于上下文目标编码比特数和上下文初始编码比特数确定第二变量调整因子的实现过程与基于基础初始编码比特数和基础目标编码比特数确定第一变量调整因子
的实现过程类似。接下来也分为三种方式分别介绍。
[0343]
方式21,在上下文初始编码比特数等于上下文目标编码比特数的情况下,将第二初始调整因子确定为第二变量调整因子。在上下文初始编码比特数不等于上下文目标编码比特数的情况下,基于第一变量调整因子对第一潜在变量进行调整,得到第二潜在变量。基于上下文初始编码比特数、上下文目标编码比特数和第二潜在变量,通过第一循环方式确定第二变量调整因子。
[0344]
其中,第一循环方式的第i次循环处理包括如下步骤:确定第i次循环处理的调整因子,i为正整数,基于第二潜在变量和第i次循环处理的调整因子,通过上下文模型确定第i次的上下文编码比特数和第i次的熵编码模型参数,基于第i次的熵编码模型参数,确定第二潜在变量的熵编码结果的编码比特数,得到第i次的基础编码比特数,基于第i次的上下文编码比特数与第i次的基础编码比特数确定第i次的编码比特数。在第i次的编码比特数满足继续调整条件的情况下,执行第一循环方式的第i 1次循环处理。在第i次的编码比特数不满足继续调整条件的情况下,终止第一循环方式的执行,基于第i次循环处理的调整因子确定第二变量调整因子。
[0345]
其中,基于第二潜在变量和第i次循环处理的调整因子,通过上下文模型确定第i次的上下文编码比特数和第i次的熵编码模型参数的实现过程包括:通过上下文编码神经网络模型对第二潜在变量进行处理,得到第三潜在变量,第三潜在变量用于指示第二潜在变量的概率分布。基于第i次循环处理的调整因子对第三潜在变量进行调整,得到第i次调整后的第三潜在变量。确定第i次调整后的第三潜在变量的熵编码结果,将第i次调整后的第三潜在变量的熵编码结果的编码比特数作为第i次的上下文编码比特数。基于第i次调整后的第三潜在变量的熵编码结果重构第i次调整后的第三潜在变量。通过第i次循环处理的调整因子,对重构的第i次调整后的第三潜在变量进行调整,得到重构的第三潜在变量。通过上下文解码神经网络模型对重构的第三潜在变量进行处理,得到第i次的熵编码模型参数。
[0346]
其余步骤可以参考前文相应内容的描述,此处不再赘述。
[0347]
方式22,在上下文初始编码比特数等于上下文目标编码比特数的情况下,将第二初始调整因子确定为第二变量调整因子。在上下文初始编码比特数不等于上下文目标编码比特数的情况下,按照上述方式21来确定第二变量调整因子。但是,与上述方式21不同的是,在上下文初始编码比特数小于上下文目标编码比特数的情况下,按照第一步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数小于上下文目标编码比特数。在上下文初始编码比特数大于上下文目标编码比特数的情况下,按照第二步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子,此时,继续调整条件包括第i次的编码比特数大于上下文目标编码比特数。
[0348]
方式23,在上下文初始编码比特数小于或等于上下文目标编码比特数的情况下,将第二初始调整因子确定为第二变量调整因子。在上下文初始编码比特数大于上下文目标编码比特数的情况下,可以按照上述方式21来确定第二变量调整因子。也可以按照上述方式22中上下文初始编码比特数大于上下文目标编码比特数的情况来确定第二变量调整因子。
[0349]
第二种实现方式,将目标编码比特数划分为基础目标编码比特数和上下文目标编码比特数,基于基础目标编码比特数和基础初始编码比特数,确定第一变量调整因子。基于上下文目标编码比特数和上下文初始编码比特数,确定第二变量调整因子。
[0350]
其中,在基于基础目标编码比特数和基础初始编码比特数,确定第一变量调整因子时,可以将第二变量调整因子置为第二初始调整因子,基于第二初始调整因子、基础目标编码比特数和基础初始编码比特数,确定第一变量调整因子。具体实现过程可以参考前文描述。
[0351]
另外,在基于上下文目标编码比特数和上下文初始编码比特数,确定第二变量调整因子时,第一变量调整因子已经确定,此时,可以直接基于第一变量调整因子、上下文目标编码比特数和上下文初始编码比特数,确定第二变量调整因子。具体实现过程可以参考前文描述。
[0352]
步骤1403:获取第二潜在变量的熵编码结果和第四潜在变量的熵编码结果,第二潜在变量是通过第一变量调整因子对第一潜在变量调整后得到,第四潜在变量是基于第二变量调整因子对第三潜在变量调整后得到,第三潜在变量是基于第二潜在变量通过上下文模型确定得到,第三潜在变量用于指示第二潜在变量的概率分布,且第二潜在变量的熵编码结果和第四潜在变量的熵编码结果的编码总比特数满足预设编码速率条件。
[0353]
在步骤1402确定第一变量调整因子和第二变量调整因子的过程中,上述循环过程中都有确定每次循环处理的调整因子对应的熵编码结果,所以,可以直接从上述循环过程中确定得到的熵编码结果中获取第二潜在变量的熵编码结果和第四潜在变量的熵编码结果。
[0354]
当然,还可以重新处理一次。即,直接基于第一变量调整因子对第一潜在变量进行调整,得到第二潜在变量。基于第二潜在变量,通过上下文模型确定第四潜在编码的熵编码结果和第二熵编码模型参数。对第二潜在变量进行量化处理,得到量化后的第二潜在变量。基于第二熵编码模型参数,确定量化后的第二潜在变量的熵编码结果,即第二潜在变量的熵编码结果。
[0355]
其中,上下文模型包括上下文编码神经网络模型和上下文解码神经网络模型,基于第二潜在变量,通过上下文模型确定第四潜在编码的熵编码结果和第二熵编码模型参数的实现过程包括:通过上下文编码神经网络模型对第二潜在变量进行处理,得到第三潜在变量。基于第二变量调整因子对第三潜在变量进行调整,得到第四潜在变量。对第四潜在变量进行量化处理,得到量化后的第四潜在变量。对量化后的第四潜在变量进行熵编码,得到第四潜在变量的熵编码结果。对第四潜在变量的熵编码结果进行熵解码,得到经量化的第四潜在变量,对经量化的第四潜在变量进行去量化处理,得到重构的第四潜在变量。基于第二变量调整因子对重构的第四潜在变量进行调整,得到重构的第三潜在变量。通过上下文解码神经网络模型对重构的第三潜在变量进行处理,得到第二熵编码模型参数。
[0356]
其中,基于第二熵编码模型参数,确定量化后的第二潜在变量的熵编码结果的实现过程包括:从编码模型参数可调的熵编码模型中确定与第二熵编码模型参数对应的熵编码模型。基于与第二熵编码模型参数对应的熵编码模型,对量化后的第二潜在变量进行熵编码,得到第二潜在变量的初始编码结果。
[0357]
步骤1404:将第二潜在变量的熵编码结果、第四潜在变量的熵编码结果、第一变量
调整因子的编码结果以及第二变量调整因子的编码结果写入码流。
[0358]
其中,关于第一变量调整因子的编码结果的相关内容可以参考步骤604中的描述,此处不再赘述。
[0359]
基于上述描述,第二变量调整因子可以为量化前的值,也可以为量化后的值。若第二变量调整因子为量化前的值,此时,确定第二变量调整因子的编码结果的实现过程包括:对第二变量调整因子进行量化及编码处理,得到第二变量调整因子的编码结果。若第二变量调整因子为量化后的值,此时,确定第二变量调整因子的编码结果的实现过程包括:对第二变量调整因子进行编码,得到第二变量调整因子的编码结果。其中,第二变量调整因子可以采用任何一种编码方式进行编码,本技术实施例对此不做限定。
[0360]
另外,对于某些编码器来说,量化过程和编码过程是在一次处理中执行的,也即是,通过一次处理能够得到量化结果和编码结果。所以,对于第二变量调整因子来说,在上述确定第二变量调整因子的过程中可能也会得到第二变量调整因子的编码结果,所以,可以直接获取到第二变量调整因子的编码结果。也即是,第二变量调整因子的编码结果也可以在确定第二变量调整因子的过程中直接得到。
[0361]
可选地,若第一变量调整因子和第二变量调整因子为量化前的值,本技术实施例还可以确定第一变量调整因子的量化步长对应的量化索引,得到第一量化索引,以及确定第二变量调整因子的量化步长,得到第五量化索引。可选地,本技术实施例还可以确定第二潜在变量的量化步长对应的量化索引,得到第二量化索引,确定第四潜在变量的量化步长对应的量化索引,得到第四量化索引,将第一量化索引、第二量化索引、第四量化索引和第五量化索引编入码流。其中,量化索引用于指示对应的量化步长,即,第一量化索引用于指示第一变量调整因子的量化步长,第二量化索引用于指示第二潜在变量的量化步长,第四量化索引用于指示第四潜在变量的量化步长,第五量化索引用于指示第二变量调整因子的量化步长。
[0362]
在本技术实施例中,通过第一变量调整因子对第一潜在变量进行调整,得到第二潜在变量,通过上下文编码神经网络模型对第二潜在变量进行处理,得到第三潜在变量。通过第二变量调整因子对第三潜在变量进行调整,得到第四潜在变量。而且第二潜在变量的熵编码结果和第四潜在变量的熵编码结果的编码总比特数满足预设编码速率条件,这样可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数均能够满足预设编码速率条件,也即是,可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数基本保持一致,而不是动态变化的,从而满足了编码器对稳定编码速率的需求。进一步地,在考虑到需要传输边信息(例如窗型,时域噪声整形(tns:temporal noise shaping)参数,频域噪声整形(fdns:frequency-domain noise shaping)参数,和/或带宽扩展(bwe:bandwidth extension)参数等等)时,能够保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数和边信息的编码比特数整体基本保持一致,从而满足编码器对稳定编码速率的需求。
[0363]
请参考图15,图15是本技术实施例提供的第三种解码方法的流程图,该方法应用于解码端。该方法对应于图14所示的编码方法,该方法包括如下步骤。
[0364]
步骤1501:基于码流确定重构的第四潜在变量、重构的第一变量调整因子和重构的第二变量调整因子。
[0365]
在一些实施例中,可以对码流中的第四潜在变量的熵编码结果进行熵解码,以及
对码流中的第一变量调整因子和第二变量调整因子的编码结果进行解码,得到经量化的第四潜在变量、经量化的第一变量调整因子和经量化的第二变量调整因子。对经量化的第四潜在变量、经量化的第一变量调整因子和经量化的第二变量调整因子进行去量化处理,得到重构的第四潜在变量、重构的第一变量调整因子和重构的第二变量调整因子。
[0366]
其中,本步骤的解码方法与编码端的编码方法相对应,本步骤的去量化处理与编码端的量化处理相对应。即,解码方法为编码方法的逆过程,去量化处理为量化处理的逆过程。
[0367]
示例地,可以从码流中解析出第一量化索引、第四量化索引和第五量化索引,第一量化索引用于指示第一变量调整因子的量化步长,第四量化索引用于指示第四潜在变量的量化步长,第五量化索引用于指示第二变量调整因子的量化步长。按照第一量化索引所指示的量化步长,对经量化的第一变量调整因子进行去量化处理,得到重构的第一变量调整因子。按照第四量化索引所指示的量化步长,对经量化的第四潜在变量进行去量化处理,得到重构的第四潜在变量。按照第五量化索引所指示的量化步长,对经量化的第二变量调整因子进行去量化处理,得到重构的第二变量调整因子。
[0368]
步骤1502:基于码流、重构的第四潜在变量和重构的第二变量调整因子,确定重构的第二潜在变量。
[0369]
在一些实施例中,基于重构的第二变量调整因子对重构的第四潜在变量进行调整,得到重构的第三潜在变量。通过上下文解码神经网络模型对重构的第三潜在变量进行处理,得到重构的第二熵编码模型参数,基于码流和重构的第二熵编码模型参数,确定重构的第二潜在变量。
[0370]
在一些实施例中,可以确定与重构的第二熵编码模型参数对应的熵解码模型。基于与第二熵编码模型参数对应的熵解码模型,对码流中的第二潜在变量的熵编码结果进行熵解码,得到经量化的第二潜在变量。对经量化的第二潜在变量进行去量化处理,得到重构的第二潜在变量。
[0371]
其中,本步骤的解码方法与编码端的编码方法相对应,本步骤的去量化处理与编码端的量化处理相对应。即,解码方法为编码方法的逆过程,去量化处理为量化处理的逆过程。
[0372]
示例地,可以从码流中解析出第二量化索引,第二量化索引用于指示第二潜在变量的量化步长。按照第二量化索引所指示的量化步长,对经量化的第二潜在变量进行去量化处理,得到重构的第二潜在变量。
[0373]
步骤1503:基于重构的第一变量调整因子,对重构的第二潜在变量进行调整,得到重构的第一潜在变量。
[0374]
其中,步骤1503的实现过程可以参考上述步骤902的实现过程,此处不再赘述。
[0375]
步骤1504:通过第一解码神经网络模型对重构的第一潜在变量进行处理,以得到重构的媒体数据。
[0376]
其中,步骤1504的实现过程可以参考上述步骤903的实现过程,此处不再赘述。
[0377]
在本技术实施例中,由于第二潜在变量的熵编码结果和第四潜在变量的熵编码结果的编码总比特数满足预设编码速率条件,这样可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数均能够满足预设编码速率条件,也即是,可以保证每帧媒体数据
对应的潜在变量的熵编码结果的编码比特数基本保持一致,而不是动态变化的,从而满足了编码器对稳定编码速率的需求。进一步地,在考虑到需要传输边信息(例如窗型,时域噪声整形(tns:temporal noise shaping)参数,频域噪声整形(fdns:frequency-domain noise shaping)参数,和/或带宽扩展(bwe:bandwidth extension)参数等等)时,能够保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数和边信息的编码比特数整体基本保持一致,从而满足编码器对稳定编码速率的需求。
[0378]
请参考图16,图16是本技术实施例提供的一种示例性编码方法的框图。图16主要是对图14所示的编码方法进行示例性解释。在图16中,以音频信号为例。可以对音频信号经过加窗处理,得到当前帧音频信号。对当前帧音频信号进行mdct变换处理后,得到当前帧的频域信号。基于当前帧的频域信号,经过第一编码神经网络模型处理,输出第一潜在变量。基于第一潜在变量调整因子对第一潜在变量进行调整,得到第二潜在变量。通过上下文编码神经网络模型对第二潜在变量进行处理,得到第三潜在变量。基于第二变量调整因子对第三潜在变量进行调整,得到第四潜在变量。对第四潜在变量进行量化处理和熵编码,得到第四潜在变量的熵编码结果,将第四潜在变量的熵编码结果写入码流。同时,对第四潜在变量的熵编码结果进行熵解码,得到经量化的第四潜在变量。对经量化的第四潜在变量进行去量化处理,得到重构的第四潜在变量。基于第二变量调整因子对重构的第四潜在变量进行调整,得到重构的第三潜在变量。通过上下文解码神经网络模型对重构的第三潜在变量进行处理,得到第二熵编码模型参数。从参数可调的熵编码模型中选择与第二熵编码模型参数对应的熵编码模型。对第二潜在变量进行量化,基于选择的熵编码模型对量化后的第二潜在变量进行熵编码,得到第二潜在变量的熵编码结果,将第二潜在变量的熵编码结果写入码流。然后,将第一变量调整因子的编码结果写入码流。
[0379]
请参考图17,图17是本技术实施例提供的一种示例性解码方法的框图。图17主要是对图15所示的解码方法进行示例性解释。在图17中,以音频信号为例。通过熵解码模型对码流中的第四潜在变量的熵编码结果进行熵解码,得到经量化的第四潜在变量。对经量化的第四潜在变量进行去量化处理,得到重构的第四潜在变量。对码流中第二变量调整因子的编码结果进行解码,得到经量化的第二变量调整因子。对经量化的第二变量调整因子进行去量化处理,得到重构的第二变量调整因子。基于重构的第二变量调整因子对重构的第四潜在变量进行调整,得到重构的第三潜在变量。通过上下文解码神经网络模型对重构的第三变量进行处理,得到重构的第二熵编码模型参数。基于重构的第二熵编码模型参数,从参数可调的熵解码模型中选择对应的熵解码模型。按照选择的熵解码模型对码流中的第二潜在变量的熵编码结果进行熵解码,得到经量化的第二潜在变量。对经量化的第二潜在变量进行去量化处理,得到重构的第二潜在变量。对码流中第一变量调整因子的编码结果进行解码,得到重构的第一变量调整因子。基于重构的第一变量调整因子对重构的第二潜在变量进行调整,得到重构的第一潜在变量。通过第一解码神经网络模型对重构的第一潜在变量进行处理,得到重构的当前帧的频域信号。对重构的当前帧的频域信号进行imdct变换处理以及去加窗处理,得到重构的音频信号。
[0380]
图18是本技术实施例提供的一种编码装置的结构示意图,该编码装置可以由软件、硬件或者两者的结合实现成为编码端设备的部分或者全部,该编码端设备可以为图1所示的源装置。参见图18,该装置包括:数据处理模块1801、调整因子确定模块1802、第一编码
结果获取模块1803和第一编码结果写入模块1804。
[0381]
数据处理模块1801,用于通过第一编码神经网络模型对待编码的媒体数据进行处理,以得到第一潜在变量,第一潜在变量用于指示待编码的媒体数据的特征。详细实现过程参考上述各个实施例中对应的内容,此处不再赘述。
[0382]
调整因子确定模块1802,用于基于第一潜在变量确定第一变量调整因子,第一变量调整因子用于使得第二潜在变量的熵编码结果的编码比特数满足预设编码速率条件,第二潜在变量是通过第一变量调整因子对第一潜在变量调整后得到。详细实现过程参考上述各个实施例中对应的内容,此处不再赘述。
[0383]
第一编码结果获取模块1803,用于获取第二潜在变量的熵编码结果。详细实现过程参考上述各个实施例中对应的内容,此处不再赘述。
[0384]
第一编码结果写入模块1804,用于将第二潜在变量的熵编码结果以及第一变量调整因子的编码结果写入码流。详细实现过程参考上述各个实施例中对应的内容,此处不再赘述。
[0385]
可选地,在使用固定码率对待编码的媒体数据进行编码的情况下,满足预设编码速率条件包括编码比特数小于或等于目标编码比特数;或者,满足预设编码速率条件包括编码比特数小于或等于目标编码比特数,且编码比特数与目标编码比特数的差值小于比特数阈值。
[0386]
可选地,在使用可变码率对待编码的媒体数据进行编码的情况下,满足预设编码速率条件包括编码比特数与目标编码比特数的差值的绝对值小于比特数阈值。
[0387]
可选地,调整因子确定模块1802包括:
[0388]
比特数确定子模块,用于基于第一潜在变量确定初始编码比特数;
[0389]
第一因子确定子模块,用于基于初始编码比特数和目标编码比特数,确定第一变量调整因子。
[0390]
可选地,初始编码比特数为第一潜在变量的熵编码结果的编码比特数;或者
[0391]
初始编码比特数为经过第一初始调整因子调整后的第一潜在变量的熵编码结果的编码比特数。
[0392]
可选地,在初始编码比特数不等于目标编码比特数的情况下,第一因子确定子模块具体用于:
[0393]
基于初始编码比特数和目标编码比特数,通过第一循环方式确定第一变量调整因子;
[0394]
第一循环方式的第i次循环处理包括如下步骤:
[0395]
确定第i次循环处理的调整因子,i为正整数;
[0396]
基于第i次循环处理的调整因子对第一潜在变量进行调整,以得到第i次调整后的第一潜在变量;
[0397]
确定第i次调整后的第一潜在变量的熵编码结果的编码比特数,以得到第i次的编码比特数;
[0398]
若第i次的编码比特数满足继续调整条件,执行第一循环方式的第i 1次循环处理;
[0399]
若第i次的编码比特数不满足继续调整条件,终止第一循环方式的执行,基于第i
次循环处理的调整因子确定第一变量调整因子。
[0400]
可选地,该装置还包括:
[0401]
第二编码结果获取模块,用于获取第三潜在变量的熵编码结果,第三潜在变量是基于第二潜在变量通过上下文模型确定得到;
[0402]
第二编码结果写入模块,用于将第三潜在变量的熵编码结果写入码流;
[0403]
其中,第二潜在变量的熵编码结果和第三潜在变量的熵编码结果的编码总比特数满足预设编码速率条件。
[0404]
可选地,调整因子确定模块1802包括:
[0405]
比特数确定子模块,用于基于第一潜在变量确定初始编码比特数;
[0406]
第一因子确定子模块,用于基于初始编码比特数和目标编码比特数,确定第一变量调整因子。
[0407]
可选地,比特数确定子模块具体用于:
[0408]
基于第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数;
[0409]
基于初始熵编码模型参数,确定第一潜在变量的熵编码结果的编码比特数,以得到基础初始编码比特数;
[0410]
基于上下文初始编码比特数与基础初始编码比特数确定初始编码比特数。
[0411]
可选地,在初始编码比特数不等于目标编码比特数的情况下,第一因子确定子模块具体用于:
[0412]
基于初始编码比特数和目标编码比特数,通过第一循环方式确定第一变量调整因子;
[0413]
第一循环方式的第i次循环处理包括如下步骤:
[0414]
确定第i次循环处理的调整因子,i为正整数;
[0415]
基于第i次循环处理的调整因子对第一潜在变量进行调整,得到第i次调整后的第一潜在变量;
[0416]
基于第i次调整后的第一潜在变量,通过上下文模型确定第i次的上下文编码比特数和第i次的熵编码模型参数;
[0417]
基于第i次的熵编码模型参数,确定第i次调整后的第一潜在变量的熵编码结果的编码比特数,以得到第i次的基础编码比特数;
[0418]
基于第i次的上下文编码比特数与第i次的基础编码比特数确定第i次的编码比特数;
[0419]
若第i次的编码比特数满足继续调整条件,执行第一循环方式的第i 1次循环处理;
[0420]
若第i次的编码比特数不满足继续调整条件,终止第一循环方式的执行,基于第i次循环处理的调整因子确定第一变量调整因子。
[0421]
可选地,第一因子确定子模块具体用于:
[0422]
基于第一循环方式的第i-1次循环处理的调整因子、第i-1次的编码比特数和目标编码比特数,确定第i次循环处理的调整因子;
[0423]
其中,在i=1的情况下,第i-1次循环处理的调整因子为第一初始调整因子,第i-1
次的编码比特数为初始编码比特数;
[0424]
继续调整条件包括第i-1次的编码比特数和第i次的编码比特数均小于目标编码比特数,或者,继续调整条件包括第i-1次的编码比特数和第i次的编码比特数均大于目标编码比特数。
[0425]
可选地,在初始编码比特数小于目标编码比特数的情况下,第一因子确定子模块具体用于:
[0426]
按照第一步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子;
[0427]
其中,在i=1的情况下,第i-1次循环处理的调整因子为第一初始调整因子;
[0428]
继续调整条件包括第i次的编码比特数小于目标编码比特数。
[0429]
可选地,在初始编码比特数大于目标编码比特数的情况下,第一因子确定子模块具体用于:
[0430]
按照第二步长调整第一循环方式的第i-1次循环处理的调整因子,得到第i次循环处理的调整因子;
[0431]
其中,在i=1的情况下,第i-1次循环处理的调整因子为第一初始调整因子;
[0432]
继续调整条件包括第i次的编码比特数大于目标编码比特数。
[0433]
可选地,第一因子确定子模块具体用于:
[0434]
在初始编码比特数小于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。
[0435]
可选地,第一因子确定子模块具体用于:
[0436]
在第i次的编码比特数等于目标编码比特数的情况下,将第i次循环处理的调整因子确定为第一变量调整因子;或者,
[0437]
在第i次的编码比特数不等于目标编码比特数的情况下,基于第i次循环处理的调整因子和第一循环方式的第i-1次循环处理的调整因子,确定第一变量调整因子。
[0438]
可选地,第一因子确定子模块具体用于:
[0439]
确定第i次循环处理的调整因子和第i-1次循环处理的调整因子的平均值;
[0440]
基于该平均值确定第一变量调整因子。
[0441]
可选地,第一因子确定子模块具体用于:
[0442]
基于第i次循环处理的调整因子和第i-1次循环处理的调整因子,通过第二循环方式确定第一变量调整因子;
[0443]
第二循环方式的第j次循环处理包括如下步骤:
[0444]
基于第j次循环处理的第一调整因子和第j次循环处理的第二调整因子确定第j次循环处理的第三调整因子,其中,在j等于1的情况下,第j次循环处理的第一调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的一者,第j次循环处理的第二调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的另一者,第j次循环处理的第一调整因子对应第j次的第一编码比特数,第j次循环处理的第二调整因子对应第j次的第二编码比特数,第j次的第一编码比特数小于第j次的第二编码比特数,j为正整数;
[0445]
获取第j次的第三编码比特数,第j次的第三编码比特数是指经过第j次循环处理
的第三调整因子调整后的第一潜在变量的熵编码结果的编码比特数;
[0446]
若第j次的第三编码比特数不满足继续循环条件,终止第二循环方式的执行,将第j次循环处理的第三调整因子确定为第一变量调整因子;
[0447]
若第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数大于目标编码比特数且小于第j次的第二编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第二调整因子,将第j次循环处理的第一调整因子作为第j 1次循环处理的第一调整因子,执行第二循环方式的第j 1次循环处理;
[0448]
若第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数小于目标编码比特数且大于第j次的第一编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第一调整因子,将第j次循环处理的第二调整因子作为第j 1次循环处理的第二调整因子,执行第二循环方式的第j 1次循环处理。
[0449]
可选地,第一因子确定子模块具体用于:
[0450]
基于第i次循环处理的调整因子和第i-1次循环处理的调整因子,通过第二循环方式确定第一变量调整因子;
[0451]
第二循环方式的第j次循环处理包括如下步骤:
[0452]
基于第j次循环处理的第一调整因子和第j次循环处理的第二调整因子确定第j次循环处理的第三调整因子,其中,在j等于1的情况下,第j次循环处理的第一调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的一者,第j次循环处理的第二调整因子为第i次循环处理的调整因子和第i-1次循环处理的调整因子中的另一者,第j次循环处理的第一调整因子对应第j次的第一编码比特数,第j次循环处理的第二调整因子对应第j次的第二编码比特数,第j次的第一编码比特数小于第j次的第二编码比特数,j为正整数;
[0453]
获取第j次的第三编码比特数,第j次的第三编码比特数是指经过第j次循环处理的第三调整因子调整后的第一潜在变量的熵编码结果的编码比特数;
[0454]
若第j次的第三编码比特数不满足继续循环条件,终止第二循环方式的执行,将第j次循环处理的第三调整因子确定为第一变量调整因子;
[0455]
若j达到最大循环次数且第j次的第三编码比特数满足继续循环条件,终止第二循环方式的执行,基于第j次循环处理的第一调整因子确定第一变量调整因子;
[0456]
若j未达到最大循环次数、第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数大于目标编码比特数且小于第j次的第二编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第二调整因子,将第j次循环处理的第一调整因子作为第j 1次循环处理的第一调整因子,执行第二循环方式的第j 1次循环处理;
[0457]
若j未达到最大循环次数、第j次的第三编码比特数满足继续循环条件、第j次的第三编码比特数小于目标编码比特数且大于第j次的第一编码比特数,将第j次循环处理的第三调整因子作为第j 1次循环处理的第一调整因子,将第j次循环处理的第二调整因子作为第j 1次循环处理的第二调整因子,执行第二循环方式的第j 1次循环处理。
[0458]
可选地,第一因子确定子模块具体用于:
[0459]
在使用固定码率对待编码的媒体数据进行编码的情况下,将第j次循环处理的第一调整因子确定为第一变量调整因子。
[0460]
可选地,第一因子确定子模块具体用于:
[0461]
在使用可变码率对待编码的媒体数据进行编码的情况下,确定目标编码比特数与第j次的第一编码比特数之间的第一差值,以及确定第j次的第二编码比特数与目标编码比特数之间的第二差值;
[0462]
若第一差值小于第二差值,将第j次循环处理的第一调整因子确定为第一变量调整因子;
[0463]
若第二差值小于第一差值,将第j次循环处理的第二调整因子确定为第一变量调整因子;
[0464]
若第一差值等于第二差值,将第j次循环处理的第一调整因子确定为第一变量调整因子,或者,将第j次循环处理的第二调整因子确定为第一变量调整因子。
[0465]
可选地,在使用固定码率对待编码的媒体数据进行编码的情况下,继续循环条件包括第j次的第三编码比特数大于目标编码比特数,或者,继续循环条件包括第j次的第三编码比特数小于目标编码比特数,且目标编码比特数与第j次的第三编码比特数的差值大于比特数阈值。
[0466]
可选地,在使用可变码率对待编码的媒体数据进行编码的情况下,继续循环条件包括目标编码比特数与第j次的第三编码比特数的差值的绝对值大于比特数阈值。
[0467]
可选地,第一因子确定子模块具体用于:
[0468]
在初始编码比特数等于目标编码比特数的情况下,将第一初始调整因子确定为第一变量调整因子。
[0469]
可选地,该装置还包括:
[0470]
调整因子确定模块1802,还用于基于第一潜在变量确定第二变量调整因子;
[0471]
第三编码结果获取模块,用于获取第四潜在变量的熵编码结果,第四潜在变量是基于第二变量调整因子对第三潜在变量调整后得到,第三潜在变量是基于第二潜在变量通过上下文模型确定得到;
[0472]
第三编码结果写入模块,用于将第四潜在变量的熵编码结果以及第二变量调整因子的编码结果写入码流;
[0473]
其中,第二潜在变量的熵编码结果和第四潜在变量的熵编码结果的编码总比特数满足预设编码速率条件。
[0474]
可选地,调整因子确定模块1802包括:
[0475]
第一确定子模块,用于基于第一潜在变量,通过上下文模型确定对应的上下文初始编码比特数和初始熵编码模型参数;
[0476]
第二确定子模块,用于基于初始熵编码模型参数,确定第一潜在变量的熵编码结果的编码比特数,以得到基础初始编码比特数;
[0477]
第二因子确定子模块,用于基于上下文初始编码比特数、基础初始编码比特数和目标编码比特数,确定第一变量调整因子和第二变量调整因子。
[0478]
可选地,第二因子确定子模块具体用于:
[0479]
基于基础初始编码比特数和上下文初始编码比特数中的至少一者,以及目标编码比特数,确定基础目标编码比特数;
[0480]
基于第二初始调整因子、基础目标编码比特数和基础初始编码比特数,确定第一
变量调整因子和基础实际编码比特数,基础实际编码比特数是指经过第一变量调整因子调整后的第一潜在变量的熵编码结果的编码比特数;
[0481]
基于目标编码比特数和基础实际编码比特数,确定上下文目标编码比特数;
[0482]
基于上下文目标编码比特数和上下文初始编码比特数,确定第二变量调整因子。
[0483]
可选地,第二因子确定子模块具体用于:
[0484]
将目标编码比特数划分为基础目标编码比特数和上下文目标编码比特数;
[0485]
基于基础目标编码比特数和基础初始编码比特数,确定第一变量调整因子;
[0486]
基于上下文目标编码比特数和上下文初始编码比特数,确定第二变量调整因子。
[0487]
可选地,媒体数据为音频信号、视频信号或者图像。
[0488]
由于第二潜在变量的熵编码结果的编码比特数满足预设编码速率条件,这样可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数均能够满足预设编码速率条件,也即是,可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数基本保持一致,而不是动态变化的,从而满足了编码器对稳定编码速率的需求。进一步地,在考虑到需要传输边信息(例如窗型,时域噪声整形(tns:temporal noise shaping)参数,频域噪声整形(fdns:frequency-domain noise shaping)参数,和/或带宽扩展(bwe:bandwidth extension)参数等等)时,能够保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数和边信息的编码比特数整体基本保持一致,从而满足编码器对稳定编码速率的需求。
[0489]
需要说明的是:上述实施例提供的编码装置在进行编码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以基于需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的编码装置与编码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0490]
图19是本技术实施例提供的一种解码装置的结构示意图,该解码装置可以由软件、硬件或者两者的结合实现成为解码端设备的部分或者全部,该解码端设备可以为图1所示的目的地装置。参见图19,该装置包括:第一确定模块1901、变量调整模块1902和变量处理模块1903。
[0491]
第一确定模块1901,用于基于码流确定重构的第二潜在变量和重构的第一变量调整因子。详细实现过程参考上述各个实施例中对应的内容,此处不再赘述。
[0492]
变量调整模块1902,用于基于重构的第一变量调整因子,对重构的第二潜在变量进行调整,得到重构的第一潜在变量,重构的第一潜在变量用于指示待解码的媒体数据的特征。详细实现过程参考上述各个实施例中对应的内容,此处不再赘述。
[0493]
变量处理模块1903,用于通过第一解码神经网络模型对重构的第一潜在变量进行处理,以得到重构的媒体数据。详细实现过程参考上述各个实施例中对应的内容,此处不再赘述。
[0494]
可选地,第一确定模块1901包括:
[0495]
第一确定子模块,用于基于码流确定重构的第三潜在变量;
[0496]
第二确定子模块,用于基于码流和重构的第三潜在变量,确定重构的第二潜在变量。
[0497]
可选地,第二确定子模块具体用于:
[0498]
通过上下文解码神经网络模型对重构的第三潜在变量进行处理,以得到重构的第一熵编码模型参数;
[0499]
基于码流和重构的第一熵编码模型参数,确定重构的第二潜在变量。
[0500]
可选地,第一确定模块1901包括:
[0501]
第三确定子模块,用于基于码流确定重构的第四潜在变量和重构的第二变量调整因子;
[0502]
第四确定子模块,用于基于码流、重构的第四潜在变量和重构的第二变量调整因子,确定重构的第二潜在变量。
[0503]
可选地,第四确定子模块具体用于:
[0504]
基于重构的第二变量调整因子,对重构的第四潜在变量进行调整,得到重构的第三潜在变量;
[0505]
通过上下文解码神经网络模型对重构的第三潜在变量进行处理,以得到重构的第二熵编码模型参数;
[0506]
基于码流和重构的第二熵编码模型参数,确定重构的第二潜在变量。
[0507]
可选地,媒体数据为音频信号、视频信号或者图像。
[0508]
在本技术实施例中,由于第二潜在变量的熵编码结果的编码比特数满足预设编码速率条件,这样可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数均能够满足预设编码速率条件,也即是,可以保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数基本保持一致,而不是动态变化的,从而满足了编码器对稳定编码速率的需求。进一步地,在考虑到需要传输边信息(例如窗型,时域噪声整形(tns:temporal noise shaping)参数,频域噪声整形(fdns:frequency-domain noise shaping)参数,和/或带宽扩展(bwe:bandwidth extension)参数等等)时,能够保证每帧媒体数据对应的潜在变量的熵编码结果的编码比特数和边信息的编码比特数整体基本保持一致,从而满足编码器对稳定编码速率的需求。
[0509]
需要说明的是:上述实施例提供的解码装置在进行解码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以基于需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的解码装置与解码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0510]
图20为用于本技术实施例的一种编解码装置2000的示意性框图。其中,编解码装置2000可以包括处理器2001、存储器2002和总线系统2003。其中,处理器2001和存储器2002通过总线系统2003相连,该存储器2002用于存储指令,该处理器2001用于执行该存储器2002存储的指令,以执行本技术实施例描述的各种的编码或解码方法。为避免重复,这里不再详细描述。
[0511]
在本技术实施例中,该处理器2001可以是中央处理单元(central processing unit,cpu),该处理器2001还可以是其他通用处理器、dsp、asic、fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0512]
该存储器2002可以包括rom设备或者ram设备。任何其他适宜类型的存储设备也可
以用作存储器2002。存储器2002可以包括由处理器2001使用总线2003访问的代码和数据20021。存储器2002可以进一步包括操作系统20023和应用程序20022,该应用程序20022包括允许处理器2001执行本技术实施例描述的的编码或解码方法的至少一个程序。例如,应用程序20022可以包括应用1至n,其进一步包括执行在本技术实施例描述的的编码或解码方法的编码或解码应用(简称编解码应用)。
[0513]
该总线系统2003除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统2003。
[0514]
可选地,编解码装置2000还可以包括一个或多个输出设备,诸如显示器2004。在一个示例中,显示器2004可以是触感显示器,其将显示器与可操作地感测触摸输入的触感单元合并。显示器2004可以经由总线2003连接到处理器2001。
[0515]
需要指出的是,编解码装置2000可以执行本技术实施例中的的编码方法,也可执行本技术实施例中的的解码方法。
[0516]
本领域技术人员能够领会,结合本文公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,基于通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本技术中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
[0517]
作为实例而非限制,此类计算机可读存储媒体可包括ram、rom、eeprom、cd-rom或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(dsl)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、dsl或例如红外线、无线电和微波等无线技术包含在媒体的定义中。但是,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(cd)、激光光盘、光学光盘、dvd和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
[0518]
可通过例如一或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的各种说明性逻辑框、模块、和步骤所描述的功能可以提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。在一种示例下,编码器100及解码器200中的各种说明性逻辑框、单元、模块可以理
解为对应的电路器件或逻辑元件。
[0519]
本技术实施例的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(ic)或一组ic(例如,芯片组)。本技术实施例中描述各种组件、模块或单元是为了强调用于执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元(包含如上文所描述的一或多个处理器)来提供。
[0520]
也就是说,在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,dsl))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,dvd))或半导体介质(例如:固态硬盘(solid state disk,ssd))等。值得注意的是,本技术实施例提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
[0521]
应当理解的是,本文提及的“多个”是指两个或两个以上。在本技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,为了便于清楚描述本技术实施例的技术方案,在本技术实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
[0522]
以上所述为本技术提供的实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献