本文公开的发明总体上涉及音频信号的编码和解码,并且特别地,涉及用于掩盖错误的方法和装置。
背景技术:
修正离散余弦变换(mdct)和对应的逆修正离散变换(imdct)被用于例如音频译码和解码技术,诸如mpeg-2和mpeg-4音频层、高级音频编码、mpeg-4he-aac、mpeg-dusac、杜比数字(plus)以及其他专有格式。
在这种技术的应用中,在分组在解码系统中被接收之前或之后,由于与音频信号的变换相关的分组丢失或分组错误,有时会出现错误。这样的错误例如包括分组丢失或分组失真,并且可能导致解码音频信号的听得见的失真。
因此已经提供了用于在分组中出现错误的情况下掩盖错误的方法。错误掩盖法一般分为估计掩盖法和非估计掩盖法,在估计掩盖法中,错误帧被估计替代,非估计掩盖法例如使用错误帧的静默、帧重复或噪声代替。
估计掩盖法包括在频域中使用估计的方法(诸如美国专利no.8620644中公开的方法)以及在时域中使用估计的方法(诸如国际专利公开no.wo/2014/052746中公开的方法)。
用于错误掩盖的所有技术都面临与掩盖的质量和所需估计的复杂度之间的权衡相关的问题。因此,存在对于错误掩盖的其他方法的需求。
附图说明
现在将参照附图来描述示例性实施例,其中:
图1a和图1b分别以举例的方式描绘mdct和imdct的概括框图,
图2是第一解码系统的概括框图,
图3是第二解码系统的概括框图,以及
图4是第三解码系统的概括框图。
所有图都是示意性的,并且一般仅描绘阐明本公开所必需的部分,而其他部分则可以被省略或仅被建议。除非另有指示,否则相似的附图标记指代不同图中的相同部分。
具体实施方式
鉴于以上,一个目的是提供旨在以不显著的复杂度提供期望的错误掩盖的解码器系统和相关方法。
i.概述——第一方面
根据第一方面,示例性实施例提出了用于解码的解码方法、解码系统以及计算机程序产品。所提出的方法、解码系统以及计算机程序产品一般可以具有相同的特征和优点。
根据示例性实施例,提供了一种用于掩盖在基于mdct的音频解码器中将被解码的数据分组中的错误的方法,该音频解码器被布置为将分组序列解码为解码帧序列。该方法包括:从被布置为对音频信号进行编码的基于mdct的音频编码器接收包括mdct系数集合的分组,该mdct系数集合与包括音频信号的时域样本的帧相关联;并且在接收分组(receivedpacket)包括一个或多个错误时,将接收分组识别为错误分组。该方法还包括产生替代错误分组的mdct系数集合的估计mdct系数,估计mdct系数基于与在分组序列中紧挨在错误分组前面的接收分组相关联的对应mdct系数。该方法还包括:将估计mdct系数中的mdct系数的第一子集的符号指定为等于在分组序列中紧挨在错误分组前面的接收分组的对应mdct系数的对应符号,其中,第一子集包括与分组的音调状谱区间(tonal-likespectralbin)相关联的这些mdct系数;并且随机地指定估计mdct系数中的mdct系数的第二子集的符号,其中第二子集包括与分组的噪声状谱区间(noise-likespectralbin)相关联的这些mdct系数;基于所述分组的选定符号和估计mdct系数来产生掩盖分组;并且用掩盖分组来替代错误分组。
如本文所使用的,“错误分组”表示包括以某种方式相对于音频信号的正确样本的正确mdct的mdct系数不同的mdct系数。这可能意味着,整个分组的一部分在分组序列中丢失,或者整个分组的一部分包括失真。
分组的音调状谱区间和噪声状谱区间的识别可以使用任何合适的方法来执行。音调状谱区间和噪声状谱区间的识别的次序是任意的,并且可以例如取决于所用方法。
要注意,术语“第一子集”和“第二子集”仅用于在文本中将这两个子集相互区分开,而不是用于指示与这两个不同子集相关的处理次序。指定的执行次序是任意的。可以首先对用于第一子集的mdct系数执行指定,最后对用于第二子集的mdct系数执行指定,或者倒过来。此外,在一些示例性实施例中,可以不对mdct系数执行指定,以使得与第一子集相关联的所有mdct系数都被连续地指定,并且与第二子集相关联的所有mdct系数都被连续地指定。在一些示例性实施例中,可以首先对其中一个子集的一个或多个mdct系数进行指定,然后对其他子集的一个或多个mdct系数进行指定。此外,分组不一定具有与噪声状谱区间和音调状谱区间这两者相关联的mdct系数。在一些示例性实施例中,分组可以具有与噪声状谱区间相关联的所有mdct系数或者全都与音调状谱区间相关联,以使得其中一个子集是空的。最后,mdct系数通常被识别为要么属于第一子集、要么属于第二子集。
要注意,使估计基于与在分组序列中紧挨在错误分组前面的接收分组相关联的mdct系数和mdct系数符号不排除估计可以附加地基于与在分组序列中比紧挨在错误分组前面的分组更早的接收分组相关联的mdct系数和mdct系数符号。
如本文所使用的,“产生估计mdct系数”涉及将如下值指定给mdct系数:这些值不一定是在错误分组中尚未存在任何错误时mdct系数将会具有的值的最佳近似(approximation),而是实现期望的错误掩盖性能以使得解码音频信号的不想要的失真被避免或减少。
如本文所使用的,“估计mdct系数”涉及所估计的mdct系数的绝对值。
根据示例性实施例,该方法还包括:对于每个估计mdct系数,基于与错误分组相关联的功率谱的近似的谱峰检测来确定mdct系数是与音调状谱区间相关联、还是与噪声状谱区间相关联,其中,近似的功率谱基于与在分组序列中紧挨在错误分组前面的接收分组相关联的功率谱。
根据一些实施例,该方法还包括:对于每个估计mdct系数,基于与分组相关联的元数据来确定mdct系数是与音调状谱区间相关联、还是与噪声状谱区间相关联,其中,元数据是在包括分组序列和元数据的比特流中接收的。
如本文所使用的,“元数据”涉及用于控制音频解码器处理的比特流参数。
元数据可以在分组序列的分组中以及在包括分组序列和元数据的比特流中的分组的外部被发送。
可以用于确定mdct系数是与音调状谱区间相关联还是与噪声状谱区间相关联的元数据是用于基于音频内容类型来控制某个音频解码器处理的元数据。这种元数据的一个例子是与ac-4中使用的压扩工具相关的元数据。在一些实施例中,对于音调信号可以关掉压扩(compand)工具,因此,如果压扩关闭,则信号被假定为是音调。作为另一个例子,如果最长的mdct被使用,则音频内容最可能是音调信号。
根据一些实施例,估计mdct系数被选为等于在分组序列中紧挨在错误分组前面的接收分组的对应mdct系数。
根据一些实施例,估计mdct系数被选为等于在分组序列中紧挨在错误分组前面的接收分组的以缩放因子带分辨率被用能量缩放因子进行能量调整的对应mdct系数。关于缩放因子带分辨率的详细描述,参照etsits103190v1.1.1“digitalaudiocompression(ac-4)standard”,2014-04,其内容通过引用并入本文。
根据一些实施例,接收分组包括与音频信号的n个加窗时域样本相关联的n/2个mdct系数,进一步包括:通过imdct从掩盖帧产生包括n个加窗时域混叠样本的中间帧;基于中间帧的加窗时域混叠样本之间的对称关系来修改中间帧的加窗时域混叠样本。
如本文所使用的,“n”是偶数。
如本文所使用的,“包括n个加窗时域混叠样本的中间帧”表示由从编码器接收的mdct系数在解码器系统中的imdct得到的样本帧。在一些示例性实施例中,中间帧是在解码系统中执行重叠相加以便生成解码帧序列中的解码帧之前的帧。
根据一些实施例,修改使用包括n个加窗时域混叠样本的中间帧的第一半的第一半和包括n个加窗时域混叠样本的中间帧的第一半的第二半之间的对称关系、以及包括n个加窗时域混叠样本的中间帧的第二半的第一半和包括n个加窗时域混叠样本的中间帧的第二半的第二半之间的对称关系。
如本文所使用的,“中间帧的第一半”表示中间帧的头n/2个样本。如果中间帧的样本被连续地编号为0至n-1,则第一半将是样本0至n/2-1。此外,“中间帧的第二半”表示中间帧的最后n/2个样本。如果中间帧的样本被连续地编号为0至n-1,则第二半将是样本0至n/2至n-1。
如本文所使用的,“中间帧的第一半的第一半”表示包括中间帧的第一半的头n/4个样本的子集,“中间帧的第一半的第二半”表示包括中间帧的第一半的最后n/4个样本的子集,“中间帧的第二半的第一半”表示包括中间帧的第二半的头n/4个样本的子集,“中间帧的第二半的第二半”表示包括中间帧的第二半的最后n/4个样本的子集。
根据一些实施例,接收分组包括与音频信号的n个加窗时域样本相关联的n/2个mdct系数,进一步包括:通过imdct从掩盖帧产生包括n个加窗时域混叠样本的中间帧;基于中间帧的加窗时域混叠样本和音频信号的n个时域样本的加窗时域样本之间的关系来修改中间帧的加窗时域混叠样本。
示例性实施例提供与在分组序列中紧挨在错误分组前面的接收分组相关联的前一个解码帧可以被用作第一子集的加窗时域混叠样本和音频信号的n个加窗时域样本中的加窗时域样本之间的关系的近似。然后可以使用该关系来修改所产生的中间帧以便增强错误掩盖性能。
根据示例性实施例,提供了一种用于掩盖在基于修正离散余弦变换mdct的音频解码器中将被解码的数据分组中的错误的解码系统,所述基于mdct的音频解码器被布置为将分组序列解码为解码帧序列,所述系统包括:接收器部分,被配置为从被布置为对音频信号进行编码的基于mdct的音频编码器接收包括mdct系数集合的分组,所述mdct系数集合与包括所述音频信号的时域样本的帧相关联;错误检测部分,被配置为在所述接收分组包括一个或多个错误时,将所述接收分组识别为错误分组;以及错误掩盖部分,被配置为:产生用于替代所述错误分组的mdct系数集合的估计mdct系数,所述估计mdct系数基于与在所述分组序列中紧挨在所述错误分组前面的接收分组相关联的对应mdct系数;将所述估计mdct系数中的mdct系数的第一子集的符号指定为等于在所述分组序列中紧挨在所述错误分组前面的接收分组的对应mdct系数的对应符号,其中,所述第一子集包括与所述分组的音调状谱区间相关联的mdct系数;随机地指定所述估计mdct系数中的mdct系数的第二子集的符号,其中,所述第二子集包括与所述分组的噪声状谱区间相关联的mdct系数;基于所述分组的估计mdct系数和选定符号来产生掩盖分组;以及用所述掩盖分组来替代所述错误分组。
ii.概述——第二方面
根据第二方面,示例性实施例提出了用于解码的解码方法、解码系统以及计算机程序产品。所提出的方法、解码系统以及计算机程序产品一般可以具有相同的特征和优点。
根据示例性实施例,提供了一种用于掩盖在基于mdct的音频解码器中将被解码的数据分组中的错误的方法,该音频解码器被布置为将分组序列解码为解码帧序列。该方法包括:从被布置为对音频信号进行编码的基于mdct的音频编码器接收包括与音频信号的n个加窗时域样本相关联的n/2个mdct系数的分组;并且在该分组包括一个或多个错误时,将该分组识别为错误分组。该方法还包括:估计第一子集,第一子集包括中间帧的第一半的n/4个加窗时域混叠样本,中间帧包括与错误分组相关联的n个加窗时域混叠样本,该估计基于第一子集的加窗时域混叠样本和音频信号的n个加窗时域样本中的加窗时域样本之间的关系;并且估计第二子集,第二子集包括中间帧的第一半的剩余n/4个加窗时域混叠样本,该估计基于第二子集的加窗时域混叠样本和第一子集的加窗时域混叠样本之间的对称关系。
如本文所使用的,“n”是偶数。
如本文所使用的,“错误分组”表示包括以某种方式相对于音频信号的正确样本的正确mdct的mdct系数不同的mdct系数。这可能意味着,整个分组的一部分在分组序列中丢失,或者整个分组的一部分包括失真。
如本文所使用的,“包括n个加窗时域混叠样本的中间帧”表示由从编码器接收的mdct系数在解码器系统中的逆imdct得到的样本帧。因此,中间帧是在解码系统中执行重叠相加以便生成解码帧序列中的解码帧之前的加窗时域混叠样本的帧。
如本文所使用的,“中间帧的第一半”表示中间帧的头n/2个样本。如果中间帧的样本被连续地编号为0至n-1,则第一半将是样本0至n/2-1。
如本文所使用的,“包括n/4个加窗时域混叠样本的第一子集”表示包括中间帧的第一半的n/4个样本的子集,这n/4个样本无需是中间帧的第一半中的连续样本,但是应被选为使得不生成关于来自第二子集的样本和第一子集的样本之间的对称关系的信息的冗余信息。
如本文所使用的,“估计第一子集”和“估计第二子集”涉及将如下值指定给第一子集和第二子集的加窗时域混叠样本:这些值不一定是在错误分组中尚未存在任何错误时它们将会具有的值的最佳近似,但是实现期望的错误掩盖性能以使得解码音频信号的不想要的失真被避免或减少。
根据示例性实施例,第一子集的估计基于与在分组序列中紧挨在错误分组前面的接收分组相关联的前一个解码帧。
要注意,使估计基于与在分组序列中紧挨在错误分组前面的接收分组相关联的前一个解码帧不排除估计可以附加地基于与在分组序列中比紧挨在错误分组前面的分组更早的接收分组相关联的更早的解码帧。
基于前一个解码帧对第一子集的估计在示例性实施例中可以与包括n/4个加窗时域混叠样本(这n/4个加窗时域混叠样本是中间帧的第一半的第一半)的第一子集相组合,其中,对于n等于0,1,…,n/4-1,第一子集的样本编号n被估计为前一个解码帧的样本编号n的加窗版本减去前一个解码帧的样本编号n/2-1-n的加窗版本。
示例性实施例提供:第一子集的加窗时域混叠样本和音频信号的n个加窗时域样本中的加窗时域样本之间的关系可以通过使用与错误分组相关联的n个加窗时域样本和与在分组序列中紧挨在错误分组前面的接收分组相关联的先前的n个加窗时域样本的重叠性质来重新制定。因此,第一子集的加窗时域混叠样本和音频信号的先前的n个加窗时域样本之间的关系被导出。示例性实施例还提供:音频信号的先前的n个加窗时域样本中的加窗时域样本可以用前一个解码帧的样本的加窗版本来近似。
基于前一个解码帧估计第一子集、产生估计解码帧、估计第三子集以及估计第四子集在示例性实施例中可以与包括n/4个加窗时域混叠样本(这n/4个加窗时域混叠样本是中间帧的第一半的第一半)的第一子集以及包括n/4个加窗时域混叠样本(这n/4个加窗时域混叠样本是中间帧的第二半的第一半)的第三子集相组合,并且其中,对于n等于0,1,…,n/4-1,第一子集的样本编号n被估计为前一个解码帧的样本编号n的加窗版本减去前一个解码帧的样本编号n/2-1-n的加窗版本,并且其中,对于n等于0,1,…,n/4-1,第三子集的样本编号n被估计为估计解码帧的样本编号n的加窗版本加上估计解码帧的样本编号n/2-1-n的加窗版本。
要注意,使估计基于与错误分组相关联的估计解码帧不排除估计可以附加地基于与在分组序列中比错误分组更早的接收分组相关联的更早的解码帧。
示例性实施例提供:音频信号的先前的n个加窗时域样本中的加窗时域样本可以用前一个解码帧和估计解码帧的样本的加窗版本来近似。
在一些示例性实施例中,第一子集的估计基于偏移集合,该偏移集合包括与在分组序列中紧挨在与前一个解码帧相关联的分组前面的接收分组相关联的再前一个解码帧以及与在分组序列中紧挨在错误分组前面的接收分组相关联的前一个解码帧的n/2个样本,该偏移集合包括所述再前一个解码帧的最后k个样本以及所述前一个解码帧的除了最后k个样本之外的所有样本,其中,k<n/2。在本示例性实施例中,k可以基于要用前面的帧估计的帧的自相似性的最大化来设置,并且k可以例如取决于n。
代替仅使用前一个解码帧的n/2个样本,将前一个解码帧的n-k个样本与来自所述再前一个解码帧的k个样本一起使用。更具体地说,使用所述再前一个解码帧的最后k个样本以及所述前一个解码帧的除了最后k个样本之外的所有样本。这要求k<n/2。
基于前一个解码帧估计第一子集、产生估计解码帧、估计第三子集以及估计第四子集在示例性实施例中可以与第一子集的估计相组合,第一子集的估计进一步基于与在分组序列中紧挨在与前一个解码帧相关联的分组前面的接收分组相关联的再前一个解码帧,第一子集包括n/4个加窗时域混叠样本,这n/4个加窗时域混叠样本是中间帧的第一半的第一半,第三子集包括n/4加窗时域混叠样本,这n/4个加窗时域混叠样本是中间帧的第二半的第一半,对于n等于0,1,…,k,第一子集的样本编号n被估计为所述再前一个解码帧的样本编号n/2-1+n-k的加窗版本减去所述前一个解码帧的样本编号n/2-1-n-k的加窗版本,并且对于n等于k+1,…,n/4-1,第一子集的样本编号n被估计为所述前一个解码帧的样本编号n-k-1的加窗版本减去所述前一个解码帧的样本编号n/2-1-n-k的加窗版本,并且n等于0,1,…,k,第三子集的样本编号n被估计为所述前一个解码帧的样本编号n/2-1+n-k的加窗版本减去估计解码帧的样本编号n/2-1-n-k的加窗版本,并且其中,对于n等于k+1,…,n/4-1,第三子集的样本编号n被估计为估计解码帧的样本编号n-k-1的加窗版本加上估计解码帧的样本编号n/2-1-n-k的加窗版本,其中,k≤n/4-1。
在示例性实施例中,提供了一种用于掩盖在基于mdct的音频解码器中将被解码的数据分组中的错误的解码系统,该音频解码器被布置为将分组序列解码为解码帧序列,该系统包括:接收器部分,被配置为从被布置为对音频信号进行编码的基于mdct的音频编码器接收包括与音频信号的n个加窗时域样本相关联的n/2个mdct系数的分组;错误检测部分,被配置为在该分组包括一个或多个错误时,将该分组识别为错误分组;以及错误掩盖部分,被配置为:估计第一子集,第一子集包括中间帧的第一半的n/4个加窗时域混叠样本,中间帧包括与错误分组相关联的n个加窗时域混叠样本,该估计基于第一子集的加窗时域混叠样本和音频信号的n个加窗时域样本中的加窗时域样本之间的关系;并且估计第二子集,第二子集包括中间帧的第一半的剩余n/4个加窗时域混叠样本,该估计基于第二子集的加窗时域混叠样本和第一子集的加窗时域混叠样本之间的对称关系。
iii.概述——第三方面
根据第三方面,示例性实施例提出了用于解码的解码方法、解码系统以及计算机程序产品。所提出的方法、解码系统以及计算机程序产品一般可以具有相同的特征和优点。
在一些示例性实施例中,提供了一种用于掩盖在基于mdct的音频解码器中将被解码的数据分组中的错误的方法,该基于mdct的音频解码器被布置为将分组序列解码为解码帧序列。该方法包括:从被布置为对音频信号进行编码的基于mdct的音频编码器接收包括与音频信号的n个加窗时域样本相关联的n/2个mdct系数的分组;并且在该分组包括一个或多个错误时,将该分组识别为错误分组。该方法还包括将包括与错误分组相关联的n/2个样本的解码帧估计为等于前一个中间帧的第二半,该前一个中间帧包括与在分组序列中紧挨在错误分组前面的接收分组相关联的n个非加窗时域样本。
如本文所使用的,“n”是偶数。
如本文所使用的,“错误分组”表示包括以某种方式相对于音频信号的正确样本的正确mdct的mdct系数不同的mdct系数。这可能意味着,整个分组的一部分在分组序列中缺失,或者整个分组的一部分包括失真。
如本文所使用的,“估计解码帧”涉及将如下值指定给解码帧的样本:这些值不一定是在错误分组中尚未存在任何错误时这些样本将会具有的值的最佳近似,但是实现期望的错误掩盖性能,以使得解码音频信号的不想要的失真被避免或减少。
如本文所使用的,“前一个中间帧的第二半”表示前一个中间帧的最后n/2个样本。如果中间帧的样本被连续地编号为0至n-1,则第二半将是样本n/2至n-1。
在一些示例性实施例中,提供了将包括与在分组序列中紧挨在错误分组后面的接收分组相关联的n/2个样本的后一个解码帧估计为等于后一个中间帧的第一半,该后一个中间帧包括与在分组序列中紧挨在错误分组后面的接收分组相关联的非加窗时域样本。
在一些示例性实施例中,提供了一种用于掩盖在基于mdct的音频解码器中将被解码的数据分组中的错误的解码系统,该基于mdct的音频解码器被布置为将分组序列解码为解码帧序列,该系统包括:接收器部分,被配置为从被布置为对音频信号进行编码的基于mdct的音频编码器接收包括与音频信号的n个加窗时域样本相关联的n/2个mdct系数的分组;错误检测部分,被配置为在该分组包括一个或多个错误时,将该分组识别为错误分组;错误掩盖部分,被配置为:将包括与错误分组相关联的n/2个样本的解码帧估计为等于前一个中间帧的第二半,前一个中间帧包括与在分组序列中紧挨在错误分组前面的接收分组相关联的非加窗时域样本。
在一些示例性实施例中,所述方法还包括:确定可用的复杂度资源,并且基于可用的复杂度资源来确定适用于掩盖错误的方法。
iv.示例性实施例
图1a和图1b以举例的方式描绘示例性实施例可以分别与其一起实现的mdct和逆变换。在音频编码/解码系统中,音频信号通常在编码器端被采样并且被划分为帧101-105的序列,其中,该序列中的每各帧对应于相应的时间间隔t-2、t-1、t、t+1、t+2。帧101-105各自包括n/2个样本,其中,取决于编码器类型和所选择的时间频率分辨率,n可以为2048、1920、1536等。代替将mdct应用于帧101-105,将mdct应用于两个相邻帧的组合。因此,mdct使用重叠,并且是所谓的重叠变换的例子。从帧101-105的序列(每个帧包括音频信号的n/2个时域样本),按连续的次序将帧两个和两个地重叠地组合,以使得例如帧101-105序列的第一帧101和第二帧102被组合为第一组合帧110,第二帧102和第三帧103被组合为第二组合帧111,等等,这意味着第一组合帧110和第二组合帧111具有重叠,因为它们两个都包括第二帧102。为了使顺序帧之间的转变平滑,将窗口函数w[n](n=0,…,n-1)应用于帧序列的两个帧的每个组合以产生n个加窗时域样本的组合帧110-113。如图1a所描绘的,分别对应于时间间隔t-2和t-1的第一帧101和第二帧102被组合,并且加窗函数被应用于该组合以产生包括n个加窗时域样本
mdct然后被应用于组合帧110-113,得到分组120-123的序列,每个分组包括n/2个mdct系数。如图1a所描绘的,mdct被应用于第一组合帧110以产生包括n/2个mdct系数
在解码器端,imdct被应用于分组120-123,每个分组包括n/2个mdct系数,以产生包括n个时域混叠样本的中间帧130-133。如图1b所描绘的,imdct被应用于第一分组120以产生包括n个时域混叠样本
为了产生解码样本的解码帧150-152,在考虑窗口函数w[n]的情况下对中间帧130-133执行重叠相加操作140-142。如图1b所描绘的,在第二中间帧131的第一半和第一中间帧130的第二半之间执行第一重叠相加操作140以产生包括对应于时间间隔t-1的n/2个解码样本的第一解码帧150,在第三中间帧132的第一半和第二中间帧131的第二半之间执行第二重叠相加操作141以产生包括对应于时间间隔t的n/2个解码样本的第二解码帧151,在第四中间帧133的第一半和第三中间帧132的第二半之间执行第三重叠相加操作142以产生包括对应于时间间隔t+1的n/2个解码样本的第三解码帧152。
在包括mdct系数的分组中可能出现错误,或者分组或分组的一部分可能丢失。除非错误被纠正或者丢失的分组被重构,否则这种错误或丢失可能以如下方式影响解码帧:解码音频信号受损,而使得信息丢失或者不想要的伪像出现在解码音频信号中。例如并且参照图1b,如果在解码器端在第三分组122中检测到错误,则第三中间帧132通常将受到错误的第三分组122的影响。在本文件中,包括错误的分组将被称为错误分组,并且与和错误分组相同的时间间隔相对应的中间帧将被称为与错误分组相关联的中间帧或包括与错误分组相关联的n个时域混叠样本的中间帧。此外,当第三中间帧132在重叠相加操作141中被使用以生成第二解码帧151时,第二解码帧151通常将受到错误分组的影响。在本文件中,与和错误分组相同的时间间隔相对应的解码帧将被称为与错误分组相关联的解码帧。此外,当第二中间帧132在重叠相加操作142中也被使用以生成第三解码帧152时,第三解码帧152通常也将受到错误分组的影响。
由于组合帧的重叠性质,可以根据方程1导出组合帧的与时间间隔t相关联的头n/2个样本和组合帧的与时间间隔t-1相关联的后n/2个样本之间的关系:
此外,通过在中间帧的第一半和前一个中间帧的第二半之间使用重叠相加来产生解码帧。因此,根据以下方程产生与时间间隔t相关联的解码帧:
中间帧的加窗时域样本之间的特殊性质可以用于估计受错误分组影响的中间帧。更具体地说,可以证明,每个中间帧拥有第一半和第二半中的加窗时域样本之间的奇对称和偶对称。对于时间间隔t,以下关系可以被证明:
此外,可以证明,加窗时域混叠样本可以根据以下方程(参见v.britanak等人在signalprocessing第89卷第7期(2009年7月)第1379-1394页上的“fastcomputationalstructuresforanefficientimplementationofthecompletetdacanalysis/synthesismdct/mdstfilterbanks”,其内容通过引用并入本文)就音频信号的原始加窗样本显式地导出:
在方程(4)中使用方程(1),推出以下关系:
在另一个近似中,受错误分组影响的解码帧可以根据以下方程使用非加窗时域混叠信号
在方程(6)和(7)中,记号a→b指示变量b被指定值a。
图2以举例的方式描绘了第一解码系统200的概括框图。解码系统200被布置为掩盖在基于mdct的音频解码器中将被解码的数据分组中的错误,该基于mdct的音频解码器被布置为将分组序列解码为解码帧序列。
该系统包括接收器部分201,接收器部分201被配置为接收分组序列,其中,每个分组包括与包括音频信号的时域样本的帧相关联的mdct系数集合。分组序列通常如关于图1a所描述的那样通过将mdct应用于n个加窗时域样本的组合帧而产生。分组序列的每个分组包括n/2个mdct系数。
解码系统200还包括错误检测部分(未示出),错误检测部分被配置为因为接收分组包括一个或多个错误而识别接收分组是否是错误分组。在错误检测部分中检测错误的方式是任意的,并且错误检测部分的位置也是任意的,只要检测到需要错误掩盖的错误分组并且检测到的错误分组可以在解码系统200的错误掩盖中被识别即可。
解码系统200还包括错误掩盖部分202,错误掩盖部分202被配置为估计错误分组的mdct系数、将符号指定给估计mdct系数、产生掩盖分组并且在分组序列中用掩盖分组替代错误分组。掩盖分组被产生为具有错误分组的对应选定符号的估计mdct系数。
解码系统200还包括imdct部分203,imdct部分203用于对分组序列的每个分组应用imdct,该分组序列包括替代分组序列中的错误分组的掩盖分组。imdct部分203的输出是n个加窗时域混叠样本的中间帧的序列。
解码系统200还包括重叠相加部分204,重叠相加部分204用于执行中间帧序列中的连续的中间帧的重叠部分之间的重叠相加操作以便产生n/2个样本的解码帧。
在一个实施例中,估计mdct系数基于与在分组序列中紧挨在错误分组前面的接收分组相关联的对应mdct系数。在其他实施例中,估计mdct系数被选为等于在分组序列中紧挨在错误分组前面的接收分组的对应mdct系数。此外,估计mdct系数中的mdct系数的第一子集的符号被指定为等于在分组序列中紧挨在错误分组前面的接收分组的对应mdct系数的对应符号。第一子集包括与分组的音调状谱区间相关联的那些mdct系数。估计mdct系数中的mdct系数的第二子集的符号是任意指定的。第二子集包括与分组的噪声状谱区间相关联的那些mdct系数。连同每个mdct系数的符号一起,错误掩盖部分202从接收部分201连续地接收分组序列的每个分组的mdct系数。错误掩盖部分202还从接收部分接收错误帧的标识。当错误帧被接收到时,错误掩盖部分202可以提取在分组序列中的错误分组前面接收的前一个分组的mdct系数和对应符号,产生错误分组的估计mdct系数,并且使用来自前一个分组的mdct系数和符号一起来对符号进行指定。当系数和符号已经被估计和指定时,产生基于估计分组的估计mdct系数和选定符号的掩盖分组,在接收部分201中错误掩盖部分用掩盖分组替代错误分组,并且将掩盖分组从接收部分201转发给mdct部分203。
要注意,当关于估计以及将符号指定给每个估计mdct系数而提到估计mdct系数时,这隐含地指的是估计mdct系数的绝对值。即使对于mdct系数的符号指定被公开是首先针对第一子集、第二针对第二子集,符号的指定也可以按相反的次序执行。因此,在示例性实施例中,可以首先对第二子集执行指定,最后对第一子集执行指定。事实上,可以按任何次序对mdct系数执行指定。在示例性实施例中,可能不一定连续地对与音调状谱区间相关联的所有mdct系数以及连续地对与噪声状谱区间相关联的所有mdct系数执行指定。例如,可以首先对与第一子集相关联的mdct系数中的一个或多个进行指定,然后对与第二子集相关联的mdct系数中的一个或多个进行指定,然后对与第一子集相关联的mdct系数中的一个或多个进行指定,等等。此外,分组不一定具有与噪声状谱区间和音调状谱区间这两者相关联的mdct系数。相反,分组可以具有与噪声状谱区间相关联的所有mdct系数或与音调状谱区间相关联的所有mdct系数,以使得第一子集和第二子集中的一个是空的。最后,mdct系数通常被要么识别为属于第一子集、要么属于第二子集。
就错误掩盖性能而言,相比于仅使用随机指定的估计或仅基于分组序列中先前接收的分组的mdct系数的符号的估计,基于内容类型来估计mdct系数的符号可以提供改善的效果。与噪声状谱区间相关的mdct系数如果通过随机指定估计的话,可能是足够精确的,而就错误掩盖性能而言,与音调状谱区间相关的mdct系数可以通过基于在分组序列中紧挨在错误分组前面的接收分组的对应mdct系数的指定来提供改善的结果。此外,当基于与在分组序列中紧挨在错误分组前面的接收分组相关联的对应mdct系数估计mdct系数时,可以仅使用来自先前接收的分组的数据来实现错误掩盖。
在一些现有技术中,包括估计所有mdct系数的符号而不使用随机指定的更复杂的方法已经被使用。在其他现有技术中,附加的元数据已经被提供用于估计符号(这给该方法添加了更多的复杂度),并且需要改变从译码器到解码器的数据流。此外,这种元数据必须在错误分组后面的分组中传送,这使得在解码系统中可执行符号估计的时间延迟。
通过将估计mdct系数选为等于前一个分组的对应mdct系数,可以使复杂度保持低,同时如果这与根据示例性实施例的基于内容类型对mdct系数的符号的估计相组合的话,可以实现提供期望的错误掩盖性能的掩盖分组。
在其他实施例中,在前一个分组的mdct系数被选为错误分组的mdct系数的估计之前,通过能量缩放因子以缩放因子带分辨率对这些mdct系数进行能量调整。
通过将估计mdct系数选为等于前一个分组的通过能量缩放因子以缩放因子带分辨率进行能量调整的对应mdct系数,可以增强通过掩盖分组实现的错误掩盖性能,同时可以仅略微提高复杂度。
存在几种替代方式来确定分组序列中的分组(例如错误分组)的mdct系数是与音调状谱区间相关联、还是与噪声状谱区间相关联。在一个例子中,该确定基于与错误分组相关联的功率谱的近似的谱峰检测,其中,经近似的功率谱基于与在分组序列中紧挨在错误分组前面的接收分组相关联的功率谱。在另一个例子中,使用mdct子带谱平坦度度量。如果mdct子带谱平坦度的值高于某个阈值,则子带谱是平坦的,这暗示它是有噪声的。否则,谱是有峰的,这暗示它是音调的。mdct子带平坦度被估计为mdct系数的幅值的几何平均值和算术平均值之间的比率。它表示信号的功率谱相对于平坦形状的偏差。该度量是逐个带地计算的,其中,术语“带”与mdct系数集合有关,并且这些带的宽度是根据感知相关的缩放因子带分辨率的。关于谱平坦度度量的描述,参照n.jayant和p.noll在englewoodcliffs,nj:prentice-hall(1984)上的“digitalcodingofwaveforms,principlesandapplicationstospeechandvideo”。在其他例子中,确定是基于在分组中或者在包括分组序列和元数据的比特流中接收的元数据的。将被使用的元数据可以例如是用于基于音频内容类型控制某个音频解码器处理的元数据。例如在ac-4中,存在对于音调信号必须被关掉的压扩工具。因此,如果接收到指示压扩被关掉的元数据,则信号可以假定是音调的。此外,如果例如最长mdct被使用,则音频内容非常有可能是音调信号。
在一个实施例中,方程(3)的与错误帧相关联的中间帧的加窗时域混叠样本之间的对称关系被用于修改与错误帧相关联的中间帧的加窗时域混叠样本。当与时间间隔t相关联的错误帧已经被识别出时,在错误掩盖部分202中产生掩盖分组,并且掩盖分组替代错误帧。在imdct部分203中,对掩盖分组应用imdct,这产生与错误分组相关联的中间帧。所产生的与错误分组相关联的中间帧被从imdct部分203转发给错误掩盖部分202。错误掩盖部分202然后修改所产生的中间帧的加窗时域混叠样本,以使得方程(3)的关系被更好地满足。
能在中间帧的加窗时域混叠样本之间得到证明的对称关系可以被用于修改中间帧的加窗时域混叠样本,以便增强错误掩盖性能。于是,可以实现错误掩盖性能的增强,同时可以仅略微提高复杂度。
在其他实施例中,方程(5)的与错误帧相关联的中间帧的加窗时域混叠样本和原始数据样本之间的关系被用于修改与错误帧相关联的中间帧的加窗时域混叠样本。当与时间间隔t相关联的错误帧已经被识别出时,在错误掩盖部分202中产生掩盖分组,并且掩盖分组替代错误帧。在imdct部分203中,对掩盖分组应用imdct,这产生与错误分组相关联的中间帧。所产生的与错误分组相关联的中间帧被从imdct部分203转发给错误掩盖部分202。错误掩盖部分202然后修改所产生的中间帧的加窗时域混叠样本,以使得方程(5)的关系被更好地满足。例如,用在错误估计部分202中从重叠相加部分204接收的与时间间隔t-1相关联的过去的解码帧来近似方程(5)的与和错误分组相关联的中间帧的第一半相关的第一关系的右手边。结果是与错误分组相关联的中间帧的第一半的替代性估计,该替代性估计可以被用于修改通过将imdct应用于在掩盖部分202中产生的掩盖分组而产生的与错误分组相关联的中间帧的第一半。此外,用与时间间隔t相关联的解码帧(即,基于与错误分组相关联的中间帧的经修改的第一半的解码帧)来近似方程(5)的与和错误分组相关联的中间帧的第二半相关的第二关系的右手边。与时间间隔t相关联的解码帧是在错误估计部分202中从重叠相加部分204接收的。结果是与错误分组相关联的中间帧的第二半的替代性估计,该替代性估计可以被用于修改通过将imdct应用于在掩盖部分202中产生的掩盖分组而产生的与错误分组相关联的中间帧的第二半。
图3以举例的方式描绘了第二解码系统300的概括框图。解码系统300被布置为掩盖在基于mdct的音频解码器中将被解码的数据分组中的掩盖,该基于mdct的音频解码器被布置为将分组序列解码为解码帧序列。
该系统包括接收器部分301,接收器部分301被配置为接收分组序列,其中,每个分组包括与包括音频信号的时域样本的帧相关联的mdct系数集合。分组序列通常如关于图1a所描述的那样通过将mdct应用于n个加窗时域样本的组合帧而产生。分组序列的每个分组包括n/2个mdct系数。
解码系统300还包括错误检测部分(未示出),错误检测部分被配置为识别是否由于接收分组包括一个或多个错误从而接收分组是错误分组。错误检测部分中检测错误的方式是任意的,并且错误检测部分的位置也是任意的,只要检测到需要错误掩盖的错误分组并且检测到的错误分组可以在解码系统200的错误掩盖中被识别即可。
解码系统300还包括错误掩盖部分302,错误掩盖部分302被配置为估计包括与错误分组相关联的n个加窗时域混叠样本的中间帧的加窗时域混叠样本。
解码系统300还包括imdct部分303,imdct部分303用于对分组序列的每个分组应用imdct。imdct部分303的输出是n个加窗时域混叠样本的中间帧的序列。
错误掩盖部分302还被配置为用估计中间帧替代包括与错误分组相关联的n个加窗时域混叠样本的中间帧。
解码系统300还包括重叠相加部分304,重叠相加部分304用于执行中间帧序列中的连续的中间帧的重叠部分之间的重叠相加操作以便产生n/2个样本的解码帧。
在实施例中,当在时间间隔t内识别出错误分组时,可以对与错误分组相关联的中间帧进行估计。使用与时间间隔t相关联的中间帧的加窗时域混叠样本和方程(5)的音频信号的原始加窗样本的项之间的关系以及方程(3)的对称关系来执行估计。对包括中间帧的第一半的头n/4个加窗时域混叠样本的第一子集进行估计,该中间帧包括与错误分组相关联(即,与时间间隔t相关联)的n个加窗时域混叠样本。通过方程(5)的第一关系来进行估计,其中,用前一个解码帧的样本来近似右手边的样本,其中,前一个解码帧与时间间隔t-1相关联。在错误估计部分302中从重叠相加部分304接收与时间间隔t-1相关联的解码帧。更具体地说,对于n=0,1,…,n/4-1,第一子集的样本编号n被估计为前一个解码帧的样本编号n的加窗版本减去前一个解码帧的样本编号n/2-1-n的加窗版本。通过方程(3)的对称关系,估计第二子集,第二子集包括中间帧的第一半的剩余(即,最后的)n/4个加窗时域混叠样本。在重叠相加部分304中通过将估计中间帧的第一半与和在分组序列中紧挨在错误分组前面的接收分组相关联(即,与时间间隔t-1相关联)的前一个中间帧的第二半相加来产生与错误分组相关联(即,与时间间隔t相关联)的估计解码帧。
通过使用第二子集的加窗时域混叠样本和第一子集的加窗时域混叠样本之间的对称关系来估计第二子集,可以在保持所实现的错误掩盖性能的同时实现估计的复杂度降低。
通过使用前一个解码帧作为第一子集的加窗时域混叠样本和音频信号的n个加窗时域样本中的加窗时域样本之间的关系的近似以便产生第一子集的估计,可以在实现期望的错误掩盖性能的同时实现估计的低复杂度。
对第三子集进行估计,第三子集包括与错误分组相关联的中间帧的第二半的头n/4个加窗时域混叠样本。通过方程(5)的第二关系来进行估计,其中,用估计解码帧的样本来近似右手边的样本,其中,估计解码帧与错误分组相关联,即,与时间间隔t相关联。与时间间隔t相关联的估计解码帧是在错误估计部分302中从重叠相加部分304接收的。更具体地说,对于n=0,1,…,n/4-1,第三子集的样本编号n被估计为估计解码帧的样本编号n的加窗版本加上估计解码帧的样本编号n/2-1-n的加窗版本。通过方程(3)的对称关系来估计第四子集,第四子集包括中间帧的第二半的剩余(即,最后的)n/4个加窗时域混叠样本。要注意,对于n=0,1,…,n/4-1,第三子集的样本编号n是中间帧的样本编号n/2+n,因为第三子集是中间帧的第二半的第一半。在重叠相加部分304中通过将与时间间隔t相关联的估计中间帧的第二半与后一个估计中间帧的第一半相加来产生与紧跟在错误分组后面的接收分组相关联(即,与时间间隔t+1相关联)的后一个估计解码帧。
在替代性实施例中,第一子集的估计基于如下偏移集合,该偏移集合包括与时间间隔t-2相关联的再前一个解码帧(未示出)以及与时间间隔t-1相关联的前一个解码帧的n/2个样本,并且第三子集的估计基于如下偏移集合,该偏移集合包括与时间间隔t-1相关联的前一个解码帧以及与时间间隔t相关联的估计解码帧的n/2个样本。偏移集合包括所述再前一个解码帧的最后k个样本以及所述前一个解码帧的除了最后k个样本之外的所有样本,其中,k<n/2。更具体地说,对于k≤n/4-1,对于n=0,1,…,k,第一子集的样本编号n被估计为所述再前一个解码帧(未示出)的样本编号n/2-1+n-k的加窗版本减去所述前一个解码帧的样本编号n/2-1+n-k的加窗版本。对于n等于k+1,…,n/4-1,第一子集的样本编号n被估计为所述前一个解码帧的样本编号n-k-1的加窗版本减去所述前一个解码帧的样本编号n/2-1-n-k的加窗版本。对于n等于0,1,…,k,第三子集的样本编号n被估计为所述前一个解码帧的样本编号n/2-1+n-k的加窗版本减去估计解码帧的样本编号n/2-1-n-k的加窗版本。对于n=k+1,…,n/4-1,第三子集的样本编号n被估计为估计解码帧的样本编号n-k-1的加窗版本加上估计解码帧的样本编号n/2-1-n-k的加窗版本。
k的值可以被计算为使将用前面的帧估计的帧的自相似性最大化,或者它可以被预先计算以节省复杂度。此外,k通常取决于n。
关于只有前一个解码帧的样本的加窗版本被用于估计第一子集的加窗时域混叠样本时,错误掩盖性能可以得到改善。更具体地说,增强的错误掩盖性能可以是由在第一子集的加窗时域混叠样本的估计中使用若干样本的偏移或时间的偏移而引起的。
图4以举例的方式描绘了第三解码系统400的概括框图。解码系统400被布置为掩盖在基于mdct的音频解码器中将被解码的数据分组中的错误,该基于mdct的音频解码器被布置为将分组序列解码为解码帧序列。
该系统包括接收器部分401,接收器部分401被配置为接收分组序列,其中,每个分组包括与包括音频信号的时域样本的帧相关联的mdct系数集合。分组序列通常如关于图1a所描述的那样通过将mdct应用于n个加窗时域样本的组合帧而产生。分组序列的每个分组包括n/2个mdct系数。
解码系统400还包括错误检测部分(未示出),错误检测部分被配置为识别是否由于接收分组包括一个或多个错误从而接收分组是错误分组。错误检测部分中检测错误的方式是任意的,并且错误检测部分的位置也是任意的,只要检测到需要错误掩盖的错误分组并且检测到的错误分组可以在解码系统400的错误掩盖中被识别即可。
解码系统400还包括错误掩盖部分402,错误掩盖部分402被配置为估计包括与错误分组相关联的n/2个样本的解码帧以产生估计解码帧。解码帧被估计为等于包括与在分组序列中紧挨在错误分组前面的接收分组相关联的n个非加窗时域样本的前一个中间帧的第二半。
解码系统400还包括imdct部分403,imdct部分403用于对分组序列的每个分组应用imdct。imdct部分403的输出是n个加窗时域混叠样本的中间帧的序列。
解码系统400还包括重叠相加部分404,重叠相加部分404用于执行中间帧序列中的连续的中间帧的重叠部分之间的重叠相加操作以便产生n/2个样本的解码帧。
错误掩盖部分402还被配置为将包括与在分组序列中紧挨在错误分组后面的接收分组相关联的n/2个样本的后一个解码帧估计为等于包括与在分组序列中紧挨在错误分组后面的接收分组相关联的非加窗时域样本的后一个中间帧的第一半。错误掩盖部分402还被配置为用估计解码分组来替代来自重叠相加部分404的与错误分组相关联的解码帧并且用估计解码分组来替代来自重叠相加部分404的与错误分组相关联的后一个解码帧。
解码系统400使用方程(6)和(7)的近似。
用前一个中间帧的非加窗时域样本估计与错误分组相关联的样本的解码帧的样本可以提供用于提供错误掩盖的低复杂度方法。
此外,可以提供确定可用复杂度资源的适应性方法,例如该方法连续地确定对于错误掩盖所允许的复杂度水平。例如,当错误分组被识别到时,确定可用的复杂度资源,并且根据所确定的可用资源来选择用于错误掩盖的方法。
v.等同、扩展、替代及其他
在研究以上描述之后,对于本领域技术人员来说,本公开的其他实施例将变得清楚。即使本描述和附图公开了实施例和例子,本公开也不限于这些具体例子。在不脱离所附权利要求书限定的本公开的范围的情况下,可以做出许多修改和变化。权利要求书中出现的任何引用符号不被解释为限制它们的范围。
另外,通过研究附图、本公开以及所附权利要求书,技术人员在实施本公开时可以理解和实行所公开的实施例的变型。在权利要求书中,词语“包括”不排除任何元件或步骤,并且不定冠词“一个”不排除复数。只有某些措施被记载在相互不同的从属权利要求中的事实并不表明这些措施的组合不能被有利地使用。
以上所公开的装置和方法可以实现为软件、固件、硬件或它们的组合。在硬件实现中,以上描述中提到的功能单元之间的任务划分不一定对应于划分为物理单元的划分;相反,一个物理组件可以具有多个功能,并且一个任务可以由几个物理组件合作执行。某些组件或所有组件可以实现为数字信号处理器或微处理器执行的软件,或者可以实现为硬件或专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。软件可以分布在专门编程的装置上,这些装置在本文中一般可以被称为“模块”。模块的软件组件部分可以用任何计算机语言编写,并且可以是庞大代码库的一部分,或者可以在更多的离散代码部分中开发,诸如通常用面向对象的计算机语言。另外,模块可以分布在多个计算机平台、服务器、终端、移动装置等上。给定模块甚至可以被实现为使得所描述的功能由分开的处理器和/或计算机硬件平台执行。如本各领域技术人员众所周知的,计算机存储介质这一术语包括按照用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光学盘储存器、磁盒、磁带、磁盘储存器或其他磁性存储装置、或可以用于存储期望的信息并且可以被计算机访问的任何其他介质。如本申请中所使用的,术语“部分”是指以下所有方面:(a)仅硬件的电路实现(诸如仅在模拟和/或数字电路中的实现);(b)电路和软件(和/或固件)的组合,诸如(如果适用的话):(i)处理器(一个或多个)的组合或(ii)处理器(一个或多个)/软件的部分(包括一起工作以使设备(诸如移动电话或服务器)执行各种功能的数字信号处理器(一个或多个))、软件和存储器(一个或多个));以及(c)需要用于操作的软件或固件的电路,诸如微处理器(一个或多个)或微处理器(一个或多个)的一部分,即使该软件或固件不是物理存在的。此外,技术人员众所周知的是,通信介质通常包含计算机可读指令、数据结构、程序模块、或模块化数据信号(诸如载波或其他传输介质)中的其他数据,并且包括任何信息递送介质。