音频编码器和音频解码器的制作方法

文档序号:2823166阅读:237来源:国知局
专利名称:音频编码器和音频解码器的制作方法
技术领域
本发明涉及音频编码的领域,特别地,涉及基于上下文的熵编码领域。
背景技术
传统音频编码概念包括用于冗余减少的熵编码方案。一般地,熵编码应用于 针对基于频率域的编码方案的量化的频谱系数、或针对基于时间域的编码方案的量化 的时间域采样。这些熵编码方案一般使用发送码字以及相应的码本索引,其允许解码 器查找特定的码本页,用于对与所述页上的所发送的码字相对应的编码信息字进行解 码。在一些编码概念中,码本索引的发送并非强制性的,例如在通过符号的上下文可确 定码本索引的情况下,例如熵编码,说明于Meine,Edler, “Improved Quantization and Lossless Coding for Subband Audio Coding,,;以及 Meine, "Vektorquantisierung
und kontextabhangigearithmetische Codierung fur MPEG-4 AAC",
Dissertation, Gottfried Wilhelm Leibnitz University Hannover, Hanover 2007。对于基于频率域或基于频谱域的音频编码,上下文可以描述符号或统计属性,例 如位于时间和/或频率之前的量化的频谱系数。在一些常规概念中,这些符号可同时用于 编码器侧和解码器侧,并且基于这些符号,可以同时在编码器侧和解码器侧同步地确定码 本或上下文。图9示出了上下文的示例及其依赖性。图9示出了时间频率平面,其中指示了一 定数量的符号。符号Sn,m表示在时间η和在频率m的符号。图9示出了用于编码特定符号, 其上下文用于确定相关联的码本。例如对于符号Snthmtl,这将是满足以下条件的全部符号η < n0 且任{可叫或 η = n0 且 m < m0。在实际实施中,上下文并非无限的,而是受限的。在图9所示的示例中,符号的 上下文可以例如是S0, 2、S0,1、S—15、S—U、S—U、S—U、S—U、S—2,5、S—2,4、S—2,3、S—2,2、S—2,10对于基于频率的音频编码、时间变体,可以使用信号自适应滤波器组或所谓 的块变换,例如在 Edler, B. , "Codierung von Audiosignalen mit iiberlappender Transformation und adaptiven Fensterfunktionen,,,Frequenz,Ausgabe 43,September 1989中描述过。换言之,在这些音频编码概念中随着时间的经过可能发生频率/时间解析度的改 变。流行的音频编码概念是所谓的AAC(AAC =高级音频编码),其中使用两种块长度,编码 例如1 个或IOM个已变换的系数,分别代表256个或2048个分窗时间域采样的频率组 件。这些概念允许根据特定的信号特性,在不同解析度之间进行切换,例如瞬时 (transient)或音调(tonality)的出现,或该信号是否为音乐类或语音类等等。在不同的 时间/频率解析度之间进行切换的情况下,例如在不同的AAC块类型之间切换的情况下,上下文不一致。常规概念或现有技术实施可以利用该上下文的重置,即基本上切换至其中无 任何上下文可用的状态,其中上下文是从草稿建立的。该方法在例如AAC中可以具有充分 良好的效果,原因在于其保证一列中至少有两个长块或八个短块,此处假设切换不常发生。然而,重置上下文的常规概念在编码效率方面一般并非最优的,原因在于每次重 置上下文时,后续的码本选择基于被设计用作对未知的上下文的备用解决方案的值。然后 一般选择非最优的码本。对于其中切换不常出现的情况,可以忽略编码效率的缺点。然而, 对于更频繁切换的情况,这导致编码效率的显著耗损。另一方面,对于较低数据速率/采样 速率,强烈需要更频繁的切换,原因在于特别需要变换长度对信号特性有最优自适应性。另 一方面,当频繁切换时,编码效率显著降低。

发明内容
本发明的目的是提供在音频编码中的不同变换长度之间进行切换的概念,所述音 频编码提供了增强的编码效率。可由根据权利要求1所述的音频编码器、根据权利要求8所述的音频编码方法、根 据权利要求9所述的音频解码器以及根据权利要求16所述的音频解码方法来达成该目的。本发明基于在时间/频率解析度随着时间而改变的情况下,在基于上下文的编码 诸如基于上下文的熵编码中,其可应用至不同时间/频率解析度时,可使用上下文映射机 制,从而达成增强的编码效率。本发明发现当在不同时间或频率解析度之间进行切换时,可 以从具有旧解析度的系数获取具有新解析度的系数的上下文。本发明发现当在音频编码中 切换时间/频率解析度时,内插、外推、次采样、降采样、升采样等可用于上下文的自适应和 /或获取°本发明的实施例提供一种映射方法,其将具有旧解析度的已存储的上下文的频率 系数或频谱系数映射至当前上下文或当前帧的频率解析度。换言之,之前的上下文信息可 用于码本确定,即用于获取新的上下文信息。实施例允许块长度的更频繁的切换,因此允许 对信号特性的更好的自适应,同时不损耗编码效率。





将使用附图来详细说明本发明的实施例,在附图中 图1示出了音频编码器的实施例; 图2示出了音频解码器的实施例; 图3示出了上下文升采样的实施例; 图4示出了上下文降采样的实施例; 图5示出了音频切换时间和频率解析度; 图6示出了实施例的实施; 图7a示出了编码方法的实施例的流程图; 图7b示出了实施例的一般上下文更新过程; 图7c示出了用于解析度改变的实施例的上下文更新过程; 图8示出了解码方法的实施例的流程图;以及 图9示出了现有技术的时间频率编码方案。
具体实施例方式图1示出了用于对系数段进行编码的音频编码器100的实施例,该系数段代表采 样音频信号的不同的时间或频率解析度。音频编码器100包括处理器110,用于基于之前段 的之前已编码系数来获取当前段的当前已编码系数的编码上下文,该之前已编码系数代表 与当前已编码系数不同的时间或频率解析度。音频编码器的实施例还包括熵编码器120,用 于基于该编码上下文对当前系数进行熵编码,以获得编码音频流。在实施例中,系数可以对应于音频采样、量化音频采样、频谱系数或频率系数、扩 缩系数、变换系数或滤波系数等或其任一种组合。在实施例中,音频编码器100还可以包括用于提供来自音频流的系数段的设备, 该系数形成在各系数间变化的频谱解析度的音频信号的频谱表示。提供段的该装置适于基 于不同时间域窗口长度或不同音频帧来确定段,即具有不同长度或每个带宽不同数量系数 的音频信号,即具有不同频谱或频率解析度。该提供装置适于确定IOM或128时间、频率 或频谱系数的段。在实施例中,处理器110可以适于基于当前及之前的系数或段的频率域或频谱域 表示,来获取编码上下文。换言之,在实施例中,可在不同时间域和/或频率域或频谱域中 表示连续段。处理器110可以适于基于例如之前段和/或当前段的相邻频谱系数,而获取 当前段的每个频带或频谱带的编码上下文。在实施例中,可以初始时在时间域中确定该段, 例如,通过将输入音频流分窗来确定。基于这些时间域段或系数,可以通过变换来确定频率 或频谱域段或系数。可以在频率或频谱域中用每个频带或频谱带的能量、振幅和相位、振幅 和符号等等来表示段,即可在不同频带或频谱带中再分割段。然后在一些实施例中,处理器 110可获取出每个频带或频谱带的编码上下文。处理器110和熵编码器120可以被配置为属于上下文的之前段包括比当前段更 精细的频谱或频率解析度时,基于之前段的频率或频谱系数的降采样进行操作。在实施例 中,处理器110和熵编码器120可以备配置为当属于上下文的之前段包括比当前段更粗糙 的频谱或频率解析度时,基于之前段的频率或频谱系数的升采样进行操作。实施例可以提供一种用于对代表采样音频信号的不同时间或频率解析度的系数 段进行编码的方法。该方法可以包括以下步骤基于从之前段的之前已编码或之前系数, 并且可选地基于当前已编码或当前系数,获取当前段的当前已编码的或当前系数的编码上 下文,其中该之前已编码或之前系数代表与当前已编码或当前系数不同的时间或频率解析 度。该方法还可以包括基于该编码上下文对当前系数进行熵编码来获得编码音频流的步 马聚ο相应地,实施例可以包括音频解码器200,图2示出了其实施例。音频解码器200 适于对编码音频流进行解码,以获得代表采样的音频信号不同的时间或频率解析度的系数 段,该音频解码器200包括处理器210,用以基于之前已解码或之前系数,获取当前已解码 或当前系数的编码上下文,该之前已解码或之前系数表示与当前已解码系数不同的时间或 频率解析度。此外,音频解码器200包括熵解码器220,用于基于该编码上下文及编码音频 流对当前系数进行熵解码。在实施例中,音频解码器200可以包括熵解码器220,其适于基于不同时间域窗口长度或不同音频帧长度来确定已解码系数段。熵解码器220可以适于确定例如IOM或1 个时间域采样或频率或频谱系数的段。相应地,处理器210可以适于基于之前段和/或当 前段的系数的频率域或频谱域表示,获取编码上下文。在实施例中,处理器210可以适于基于例如之前段或选择性地来自当前段的相邻 频谱系数,来获取当前段的每个频带或频谱带的编码上下文。换言之,可在频率域或频谱域 中处理该段,可对每个频带或频谱带进行。相应地,处理器210则可适于获取频带或频谱带 特定上下文。熵解码器220可以适于基于熵或可变长度编码规则来对当前系数进行熵解码。当之前段包括比当前段每个带宽更多系数(即更精细的频谱或频率解析度)时, 处理器210可以适于基于之前段的频率或频谱系数的降采样而获取编码上下文。在其他实 施例中,当之前段包括比当前段每个带宽更少的系数(即更粗糙的频谱或频率解析度)时, 处理器210及熵解码器220可以被配置为基于之前段的频谱系数的升采样来进行操作。因此,实施例可以提供一种用于对编码音频流进行解码以获得代表已解码音频采 样的系数段的方法。该解码方法可以包括以下步骤基于之前段的之前已解码或之前系数, 获取当前段的当前已解码或当前系数的编码上下文,该之前已解码或之前系数代表与当前 已解码系数不同的时间或频率解析度。此外,该方法包括基于编码上下文和编码音频信号 对当前系数进行熵解码的步骤。可选地,该方法可以包括从该编码音频流来确定编码音频 系数段的步骤,该段代表不同数量的音频系数。图3示出了处理器110、210如何基于M。,。ld系数的之前段来获取M。,new系数的当前 段的编码上下文,其中该之前段包括与当前段不同数量的音频系数。在图3所示的实施例 中,段系数的数量M确定该段的频率或频谱解析度。该实施例可以包括一种映射方法,其将 之前段的M。,。ld系数映射至具有与当前段的相同上下文频率或频谱解析度的M。,mw系数。图 3示出了两个段中的两个系数集合,即代表M。,。ld系数的C1AmlAm2等的原始之前段310 ; 及相应地,具有更高解析度,即M。,_大于M。,。ld的所映射的之前段320,其代表M。,_系数Sn,
CCC 坐坐 0、0η,1、°η,2Λ °η, 3 ^t ^t °通常可以根据当前段的上下文的解析度高于或低于之前段的上下文的解析度来 区分两个实施例。图3示出了实施例,其中Mc,。ld系数的之前段解析度低于M。, new系数的当 前段解析度。图3示出了之前段310的系数及所映射的之前段320的符号。由图3可知, M。,mw系数的当前段解析度高于仅具有M。,。ld系数的之前段310的解析度。在一个实施例中, 将之前段310升采样至M。,_系数的段320,以匹配该当前段的频率或频谱解析度。这可以 包括以符号复制及抽取机制的纯粹升采样,例如重复每一个数值M。,mw次,随后通过每M。,。ld 个系数仅保留1个系数来抽取作为结果的已升采样的段。也可使用其它内插或外推机制。在实施例中,对于将在时间η处确定当前段的上下文所需的全部之前段310,可以 执行映射,换言之,可以考虑多个之前段,即在时间η-1、η-2等处的之前段。通常实施例可 以考虑多个时隙或多个之前段,对于不同实施或不同实施例,限定完整上下文所需的时隙 数量可能不同。图4示出了另一个实施例,其中将之前段410的系数降采样至段420,用于计算当 前段的上下文,即其中之前段410的系数Μ。,。ld的数量高于当前段的系数M。, new的数量。图 4使用了类似于图3的说明,在每一个段410及420中示出了多个系数。如图4所示,M。,。ld大于M。, _。因此,将M。,。ld系数次采样来匹配M。, new系数的当前段的频率或频谱解析度,即 在实施例中,可以将具有较高解析度的之前段次采样来匹配具有较低解析度的当前段的解 析度。在实施例中,这可以包括使用系数复制及抽取机制的纯粹降采样,例如重复每一个值 Mc, new次,随后通过每Mc,。ld系数仅保留一个系数来抽取作为结果的升采样的段。在其它实 施例中,可以考虑滤波操作,例如求两个或多个相邻值的平均值。图5示出了另一个实施例,其中进行在不同解析度之间的切换。图5示出了时间 /频率平面,其中示出了三个后续的音频系数段,即510、520和530。每一个段510、520及 530对应于系数的单一集合。在图5所示的实施例中,假设第二段520是第一段510和第 三段530的两倍长。当在时间域中分段时,例如在AAC中进行时,通过使用不同窗口可以达 成。在图5所示的实施例中,假设采样速率保持恒定,换言之,较长的第二段520包含比第 一段510或第三段530两倍的每个带宽的音频系数。图5示出了在该情况下,频率域或频谱域的解析度按照时间域中的段的延伸度来 扩缩。换言之,在时间域中的窗口越短,则在频率域或频谱域中的解析度越低。当评估用于 在频率域或频谱域中对采样进行编码的上下文时,图5示出了当如所考虑的示例一样对第 二段520进行编码时,编码需具有段510的更高解析度的版本,必需获取段510的双倍解析 度。在其它实施例中,特别地当使用其它时间-频率域变换或滤波器组时,可获得时间域解 析度与频率域解析度间的其它关系。根据实施例,在第一段510期间,编码的系数提供用于通过例如中间升采样来确 定第二段520的上下文的基础。换言之,可以通过例如就内插法或外推法进行第一段510 的升采样,来获得来自第一段510的上下文内容,以获取具有较高解析度的第二段520的上 下文。如图5所示,当从第二段520切换至第三段530时,由于现在解析度已经降低,故 上下文组成元素也已经改变。根据实施例,在第二段520期间编码的系数可用于通过中间 降采样来获取第三段的上下文。例如可以通过求平均值进行,或单纯使用每第二个数值或 其它降采样手段来进行。即使当发生解析度或窗口长度改变时,通过考虑由之前段获取的过去上下文,这 些实施例可达成编码效率增加的优点。以升采样或降采样,例如使用内插或外推滤波或求 平均等,上下文组成元素可自适应于新解析度。下面将在频谱无噪声编码方面呈现更具体的实施例。频谱无噪声编码可以用于在 音频编码中进一步减少已量化频谱的冗余。频谱无噪声编码可以基于算术编码以及动态上 下文自适应。无噪声编码可以基于已量化的频谱值,并且可以使用从例如四个之前已解码的相 邻元组获取的上下文依赖累积频率表。图6示出了另一个实施例。图6示出了时间频率平 面,其中沿着时间轴,将三个时隙标为n、n-l和n-2。此外,图6示出了四个频带或频谱带, 标为m-2、m-l、m和m+1。图6示出了在每个时间-频率隙框内部,代表欲编码或欲解码的采 样元组。图6示出了三种不同类型的元组,其中具有虚线或点线边界的框指示欲编码或欲 解码的剩余元组;具有实线边界的白框指示之前已编码或已解码的元组;并且具有实线边 界的灰框指示之前已编/解码元组,他们勇于确定欲编码或欲解码的当前元组的上下文。注意到上述实施例中指代的之前段和当前段可以与本实施例中的元组相对应,换
9言之,可以在频率域或频谱域中逐频带处理段。如图6所示,在当前元组的邻近(即在时间 域及频率域或频谱域中)的元组或段可考虑用于获取上下文。然后由算术编码器使用累积 频率表来生成可变长度二进制码。算术编码器可产生给定符号集合的二进制码及其各自的 概率。通过将该符号集合所在的概率间隔映射至码字,可以生成二进制码。算术编码器可 以与上述实施例中的熵编码器120或熵解码器220相对应。在本实施例中,可以基于4元组(即对四个频谱系数索引)进行基于上下文的算 术编码,也将该4元组标为q(n,m),代表量化后的频谱系数,其与频率域或频谱域相邻,并 且在一个步骤后对其进行熵编码。根据上述描述,可以基于编码上下文进行编码。如图6所 示,除了已经编码的4元组(即当前段)外,考虑四个之前已编码的4元组来获取上下文。 这四个4元组确定上下文,并且在频率域中是之前的和/或在时间域中是之前的。图7a示出了用于频谱系数的编码方案的USAC(USAC =通用语音和音频编码器) 上下文依赖性算术编码器的流程图。编码过程取决于当前4元组加上上下文,此处该上下 文用于选择算术编码器的概率分布,并且用于预测频谱系数的振幅。图7a中框705代表上 下文确定,其基于与 q(n_l,m)、q(n,m_l)、q(n_l,m_l)和 q(n_l,m+1)相对应的 t0、tl、t2 和t3,即图6的具有实线边界的灰框。通常在实施例中,熵编码器可以适于以频谱系数的4元组为单位来对当前段进行 编码,并且用于基于编码上下文预测4元组的振幅范围。在本实施例中,编码方案包括若干阶段。首先,使用算术编码器及特定概率分布对 文字码字进行编码。该码字代表四个相邻的频谱系数(a、b、c、d),但a、b、c、d各自受限于 以下范围-5 < a、b、c、d < 4。通常,在实施例中,熵编码器120可以适于按照需要经常用预确定因子除该4元 组,以将结果结果带入预测范围或预定范围,并且用于当该4元组不在预测范围时,对需要 的除法次数、除法余数、和除法结果进行编码;以及用于以其它方式对除法余数和除法结果 进行编码。下文中,如果项仏、13、(3、(1),即任何系数113、(3、(1超过本实施例的给定范围,则通 常可考虑按照需要经常以一个因子(例如2或4)除(a、b、c、d),以让作为结果的码字匹配 给定范围。以因子2的除法相当于二进制位移至右侧,S卩(a、b、c、d) >>1。该缩小以整 数表示法进行,即可能丢失信息。将向右位移可能丧失的最低有效位加以存储,稍后使用算 术编码器和均勻概率分布对其编码。位移至右侧的过程是对全部四个频谱系数(a、b、c、d) 进行的。在一般实施例中,熵编码器120可以适于使用组索引ng对除法结果或4元组进行 编码,组索引ng指代概率分布基于编码上下文的一个或多个码字的组;在该组包括多于一 个码字的情况下,元素索引ne,该元素索引ne指代该组内部的码字,可假设元素索引为均 勻分布;并且熵编码器120可适于通过一定数量的逃逸符号来对除法数量进行编码,逃逸 符号为特定组索引ng,其仅用于指示除法并且用于使用算术编码规则,基于均勻分布对除 法的余数进行编码。熵编码器120可以适于使用包括该逃逸符号的符号字母表以及与可用 组索引的集合、包括该对应元素符号的符号字母表、以及包括该不同余数值的符号字母表 相对应的组符号,来将符号序列编码成编码音频流。
在图7a的实施例中,可从上下文中获取用于对文字码字进行编码的概率分布以 及对范围缩小步骤的数量的估计。例如,共84 = 4096个全部码字共跨据544个组,包含一 个或多个元素。可以在比特流中将码字表示为组索引ng和组元素ne。可以使用特定概率 分布,来使用算术编码器对这两个值编码。在一个实施例中,可以从上下文获取ng的概率 分布,反之可以假定ne的概率分布是均勻的。ng与ne的组合可清晰地标识码字。也可假 设除法的余数,即位平面位移出,为均勻分布。在图7a中,在步骤710,提供4元组q(n,m),S卩(a、b、c、d)或当前段,并且通过将 其设为0来初始化参数lev。在步骤715中,从上下文来估计(a、b、c、d)的范围。根据该估计,(a、b、c、d)可 减少IevO级别,即被因子除。存储IevO最小有效位平面,以供稍后在步骤750使用。在步骤720,检查(a、b、c、d)是否超过给定范围,若是,则在步骤725,将(a、b、c、 d)的范围以因子4缩小。换言之,在步骤725,(a、b、c、d)向右位移2,并且存储已移除的 位平面,以供稍后在步骤750使用。为了指示该缩小步骤,在步骤730,将ng设为M4,即ng = 544用作为逃逸码字。 然后将该码字在步骤755写至比特流,此处为了在步骤730获取该码字,使用具有从上下文 获取的概率分布的算术编码器。当该缩小步骤是第一次应用时,即若lev == levO,则略微 调整上下文。当该缩小步骤应用多于一次时,则抛弃上下文,进一步使用缺省分布。然后从 步骤720开始继续处理。如果在步骤720检测到范围匹配,更具体地如果(a、b、c、d)匹配范围条件,则将 (a、b、c、d)映射到组ng,并且如果适用,则映射到组元素索引ne。该映射为明确的,即可从 ng及ne获取(a、b、c、d)。然后在步骤735,使用从已调整的/已抛弃的上下文获取的概率 分布,由算术编码器对组索引ng进行编码。然后在步骤755,将组索引ng插入比特流。在 后续步骤740,检查组中的元素数量是否大于1。如果需要,即如果ng指示的该组由多于一 个元素组成,则在步骤745,假设本实施例为均勻概率分布,则由算术编码器对组元素索引 ne进行编码。在步骤745之后,将元素组索引ne在步骤755插入比特流。最后,在步骤750,使 用算术编码器对全部存储的位平面进行编码,假设为均勻概率分布。然后在步骤755将已 编码且已存储的位平面也插入比特流。在实施例中,熵解码器220可以适于基于从编码上下文获取的概率分布,而将来 自编码音频流的组索引ng解码,其中组索引ng代表一个或多个码字的组;以及如果组索引 ng指示组包括多于一个码字,则用于基于均勻概率分布,对来自编码音频流的元素索引ne 进行解码;以及用于基于组索引ng及元素索引ne,获取当前段的频谱系数的4元组,从而 获得以频谱系数的元组来表示的频谱域表示。在实施例中,熵解码器220可以适于基于使用包括与可用的组索引ng集合相对应 的逃逸符号及组符号在内的符号字母表,从编码上下文中所获取的概率分布,对来自编码 音频流的序列符号进行解码;用于基于与该序列符号中的组符号相对应的可用组索引ng, 且基于元素索引ne,获取频谱系数的初步4元组;以及使用取决于该符号序列中的逃逸符 号的数量的因子,乘以该初步4元组,来获得频谱系数的元组。熵解码器220还可以适于基于使用算术编码规则的均勻概率分布来对来自该编码音频流的余数进行解码;以及用于将该余数加至该已相乘的初步4元组,来获得频谱系 数的4元组。熵解码器220可以适于当从编码音频流对逃逸符号解码时,将该4元组乘以预确 定因子,逃逸符号是仅用于指示乘法的特定组索引ng ;以及用于基于使用算术编码规则的 均勻概率分布,对来自编码音频流的余数进行解码;该熵解码器220还可以适于将余数加 至已相乘的4元组来获得当前段。下文将说明USAC上下文依赖性算术编码器解码方案的实施例。与编码方案的上 述实施例相对应,考虑与无噪声编码的已量化频谱系数相对应的4元组。此外,假设从最低 频率系数或频谱系数开始,进行至最高频率系数或频谱系数,来发送4元组。该系数可以与 例如存储在数组中的AAC系数相对应,并且假设无噪声编码码字的发送顺序使得当以在数 组中接收并存储的顺序进行解码时,bin为最快递增索引,而g为最慢递增索引。在码字内 部,解码顺序为a、b、c、d。图7b示出了实施例的一般上下文更新过程。在本实施例中将考虑根据位深度预 测机制的上下文自适应的细节。图7b示出了位平面平面760,其显示4元组(a、b、c、d)的 可能范围。可以通过计算被称作IevO的变量(图7b也示出了),由当前4元组的上下文来 预测位深度,即代表4元组的位平面数量。然后4元组被2lCT°除,即移除并存储lev = IevO 位平面,以供稍后根据上述步骤715来使用。如果4元组在-5 < a、b、c、d < 4的范围中,则正确预测或过度估算所预测的位 深度levO。然后遵照前文说明,由组索引ng、元素索引ne及lev剩余位平面来对该4元组 进行编码。然后完成当前4元组的编码。在图7b中由均勻概率分布762来指示元素索引 ne的编码,其在下文中将经常用于对元素索引进行编码,在图7b中,参数r代表除法后该4 元组的余数,并且P (r)代表相对应的均勻概率密度函数。如果4元组不在-5 < a、b、c、d < 4的范围中,则基于编码上下文764的预测过 低,对逃逸符号(ng = M4)进行编码766,并且根据图7a的步骤730,将该4元组除以4并 且将lev增加2。如下调整上下文。如果lev = = levO+2,则对应于图7b的768,略微调整 上下文。可以在上下文表示中设置旗标t,然后使用新的概率分布模型来对未来符号ng进 行编码。如果lev > levO+2,根据图7b的步骤770对另一个逃逸符号进行编码,完全重置 上下文,参考图7a的772,如图7a的步骤730被抛弃。不再使用上下文调整,原因在于考虑 其与对当前4元组编码无关。如图7b的步骤774和776所示,当不再有上下文可用时,则 所使用的缺省概率模型随后用于未来的ng符号。然后对其它元组重复处理程序。总而言之,上下文调整是为了降低上下文自适应编码中的上下文显著性的机制。 当预测的IevO与实际lev不匹配时,可以触发上下文自适应。通过已编码的逃逸符号数量 (ng = 544)容易检测到,参间图7b的766和770,因此也可以类似方式在解码器处进行。通过触发上下文状态表示的旗标t,可进行上下文自适应。通过使用从当前4元组 的之前和/或当前帧和/或段获取的上下文(在表q[][]中存储),由函数get_State()计 算出值t作为levO。可以用24位来表示上下文的状态。在实施例中,存在1905800个可能 状态。仅可以由21个位来表示这些状态。保留t的第23位及第M位用于将上下文状态 自适应。根据第23位及第对位的值,get_pk()将输出不同概率分布模型。在一个实施例
12中,当在被levO除之后,4元组被4除时,可以将t的第23个位设为一,即lev一一levO+2。
因此,上下文状态t与概率分布模型pki之间的映射对于lev一一levO+2与对lev一一levO不同。通过对训练序列的整体统计进行优化,在训练阶段期间预先定义上下文状态t和模型pki间的映射。当lev>levO+2时,可以将上下文和t设为零。然后Get—pk()输出缺省概率分布模型pki,其与t一0相对应。
下面将描述一个实施例中的上下文映射的细节。在本实施例中的上下文最终重置之后,上下文映射是在上下文自适应编码中进行的第一个操作。其以两个步骤进行。
首先,在编码前,将在之前帧处保存的大小为previous—lg/4的上下文表qs[]映射到与当前帧大小相对应的大小lg/4的上下文表q
中。在arith_map—context函数中进行该映射,以如下伪代码举例说明
/*input variable*/
lg/4/*number。f 4一tuples*/
arith map context 0
{
V—w一0
if(core mode一一1){
q
[V++]一qs[W++];
}
ratio一((float)previous—lg)/((float)lg);
for(J一0;J<lg/4;j++){
k一(int)((float))((J)*ratio);
q
一qs[w+k];
}
if(core mode一一0){
q
一qs[previous—lg/4];
}
q
一qs[previous—lg/4+1];
previous—lg—lg;
}[Oloo] 由伪代码可知,对全部编码策略而言,映射方式可能并非正好相同。在本实施例中,当AAC(高级音频编码)用于(core mode一一0)系数时,映射与使用TCX(基于变换编码)(core mode一一1)时不同。差异之一来自于如何处理表格边界。在AAC中,映射始于索引0(表中的第一个数值);而/CX的映射始于索引l(表中的第二个数值),知道将第一个数值经常性地设为“未知”(用于重置上下文的特定状态)。previous—lg对lg的比将确定在本实施例中进行升采样(比值<1)或降采样(比值>1)的顺序。图7C示出了当由大小1024/4的已保存的上下文表(参考图7C的左手侧780),变换至512/4大小(参考图7C的右手侧782)时/CX的情况。可知尽管对当前上下文表782,使用l的逐阶递增,但对所保存的上下文表780,使用上述比值的逐阶递增。
图7C示出了用于解析度改变的实施例的上下文更新过程。一旦完成映射,则执行上下文自适应编码。在编码结束时,在表qs[]中保存当前帧元素用于下一个帧。可在 arith_update_context()中进行,通过如下伪代码举例说明/*input variables*/a, b, c, d /lvalue of the decoded 4_tuple氺/i/氺the index of the 4-tuple to decode in the vector氺/lg/4/氺number of 4_tuples氺/arith_update_context (){q[l] [1+i]. a = a ;q[l] [1+i].b = b ;q[l] [1+i]. c = c;q[l] [1+i]. d = d ;if((a<-4) Il (a >=4) || (b < _4) || (b > = 4) || (c < -4) || (c>=4) || (d <-4) Il (d>=4)){q[l] [1+i]· ν = 1024 ;}else q[l][1+i]. ν = egroups[4+a][4+b][4+c][4+d];if (i == lg/4 && core_mode = = 1) {qs
= q[l]
;ratio = ((float) lg) / ((float) 1024);for(j = 0 ;j < 256 ;j++) {k = (int) ((float) j*ratio);qs[l+k] = q[l] [1+j];}qs[previous_lg/4+l] = q[l][lg/4+1];previous_lg = 1024 ;}if (i == lg/4 && core_mode = = 0) {for(j = 0 ;j < 258 ;j++) {qs[j] = q[l] [k];}previous_lg = min(1024, lg);}}在本实施例中,根据核心编码器(AAC或TCX)以不同方式进行保存。在TCX中,上
下文经常保存在10M/4个数值的表qs[]中。可进行该附加映射,原因在于AMR-WB+(自适 应多速率宽带编码解码器)的闭合循环判定。在该闭合循环判定中,需要编码器状态的若 干拷贝过程用于测试TCX与ACELP(算术编码激励线性预测)的每一可能的组合。当全部 TCX模式共享相同大小的表qs[]时,状态拷贝更容易实施。然后使用映射来从lg/4系统性变换至10M/4。另一方面,在该阶段期间,AAC仅保存上下文,并且不执行映射。图8示出了解码方案的实施例的流程图。在步骤805,与步骤705相对应,基于t0、 tl、t2和t3获取上下文。在步骤810,从上下文估计第一缩小级别levO,将变量lev设为 levO。在后续步骤815中,从比特流读取组ng,并从上下文获取用于对ng进行解码的概率 分布。然后在步骤815,可从比特流对组ng进行解码。在步骤820,确定ng是否等于讨4,其与逃逸值相对应。如果是,则可以在返回步 骤815之前将变量lev增加2。当第一次使用本分支时,即如果lev = = levO,则可据此自 适应各自上下文的概率分布;如果并非第一次使用该分支,则遵照上述上下文自适应机制, 参见图7b和图7c,可各自抛弃概率分布。在步骤820,在组索引ng不等于M4的情况下, 在后续步骤825,确定组中的元素数量是否大于1 ;如果是,在步骤830,假设均勻概率分布, 从比特流读取并且解码组元素ne。使用算术编码和均勻概率分布,从该比特流获取元素索 弓丨ne。在步骤835,通过表中的查询过程,例如参考dgroups [ng]及acod_ne [ne],从ng 和ne获取文字码字(a, b,c,d)。在步骤840,对于全部lev错失位平面,使用算术编码且假设均勻概率分布,从该 比特流读取平面。然后通过将(a、b、c、d)向左偏移且加上位平面bp :((a、b、c、d) << = 1) =bp,可以将位平面附加到(a、b、c、d)上。可以重复此处理程序lev次。最后,在步骤845,可以提供4元组q(n,m),即(a、b、c、d)。下面提供根据实施例的伪代码和实施细节。将使用以下定义。(a、b、c、d)欲解码的4元组ng 4元组的最高有效逐2位平面的组索引,此处0 <= ng<= M4。最后一个值 544对应于逃逸符号ARITH_ESCAPE。ne组中的元素索引。ne位于0与每个组的基数mm之间。组中的元素的最大数量 为73。lev剩余位平面的级别。其对应于比最高有效逐2位平面更低有效的位平面数量。egroups [a] [b] [c] [d]组索引表。其允许将4元组(a、b、c、d)的最高有效逐2 位平面映射到544个组中。mm组的基数og组的偏移量dgroups []将组索引ng映射至每个组的基数mm (头8个位)以及将组偏移量og 映射到dgvectors □(末8个位)。dgvectors []将组偏移量og和元素索引ne映射到4元组(a、b、c、d)的最高有效 逐2位平面。arith_cf_ng_hash[]将上下文状态映射至累积频率表索引pki的散列表。arith_cf_ng[pki][545]用于组索引符号ng的累积频率模型。arith_cf_ne[]用于元素索引符号ne的累积频率。r比最高有效逐2位平面更低有效的4元组的位平面。arith_cf_r[]最低有效位平面符号r的累积频率。
下面首先考虑解码过程。对4元组的已量化频谱系数进行无噪声编码,从最低频 率或频谱系数开始发送,并且进行至最高频率或频谱系数。将来自AAC的系数存储于数组 x_ac_quant[g] [win] [sfb] [bin]中,无噪声编码码字的发送顺序使得,以在数组中接收和 存储的顺序对这些码字进行解码时,bin为最快递增索引,而g为最慢递增索引。在码字内 部,解码顺序为a、b、c、d。将来自TCX的系数直接存储在数组[切[111叫皿壯[#11] [bin] 中,并且无噪声编码码字的发送顺序使得以在数组中接收和存储的顺序对这些码字解码 时,bin为最快递增索引,而win为最慢递增索引。在码字内部,解码顺序为a、b、c、d。首 先,旗标arith_reSet_flag确定是否必须重置上下文。如果旗标为TRUE,则呼叫下列函数
权利要求
1.一种用于对系数段进行编码的音频编码器(100),所述系数段代表采样音频信号的 不同时间或频率解析度,所述音频编码器(100)包括处理器(110),用于基于之前段的之前编码的系数,获取用于当前段的当前编码的系 数的编码上下文,所述之前编码的系数代表与所述当前编码的系数不同的时间或频率解析 度;以及熵编码器(120),用于基于所述编码上下文,对所述当前系数进行熵编码以获得编码音 频流。
2.根据权利要求1所述的音频编码器(100),还包括用于从音频流中提供系数段的装 置,所述系数形成由所述音频流代表的音频信号的频谱表示,其在所述段中具有变化的频 谱解析度。
3.根据权利要求2所述的音频编码器(100),其中所述熵编码器(120)适于以频谱系 数的元组为单位对所述当前系数进行编码,并且适于基于所述编码上下文来预测所述元组 的范围。
4.根据权利要求3所述的音频编码器(100),其中所述熵编码器(120)适于依照需求 将所述元组除以预定因子,以让除法的结果适合预定范围,并且所述熵编码器(120)适于 当所述元组不在所预测的范围中时,对所需除法的数量、除法余数以及除法的结果进行编 码,并且所述熵编码器(120)适于当所述元组在所预测的范围中时,对除法余数和除法的 结果进行编码。
5.根据权利要求4所述的音频编码器(100),其中所述熵编码器(120)适于使用组索 引对所述除法的结果或所述元组进行编码,所述组索引指代一个或多个码字的组,其概率 分布基于所述编码上下文,并且,所述熵编码器(120)在所述组包括多于一个码字的情况 下,基于均勻概率分布对元素索引进行编码,所述元素索引指代所述组中的码字,并且所述 熵编码器(120)适于通过一定数量的逃逸符号对除法数量进行编码,逃逸符号是仅用于指 示除法的特定组索引,并且所述熵编码器(120)适于使用算术编码规则,基于均勻概率分 布对所述除法的余数进行编码。
6.根据权利要求5所述的音频编码器(100),其中所述熵编码器(120)适于使用包括 所述逃逸符号在内的符号字母表,将符号序列编码为所述编码音频流,并且组符号与可用 的组索引的集合相对应,符号字母表包括相对应的元素索引,并且符号字母表包括所述余 数的不同值。
7.根据权利要求1至6中任一项所述的音频编码器(100),其中所述处理器(110)和 所述熵编码器(120)被配置为当所述之前段比所述当前段显示更精细的频谱解析度时,基 于所述之前段的频谱系数的降采样来进行操作,和/或其中所述处理器(110)和所述熵编 码器(120)被配置为当所述之前段比所述当前段显示更粗糙的频谱解析度时,基于所述之 前段的频谱系数的升采样来进行操作。
8.一种用于对系数段进行编码的方法,所述段代表采样音频信号的不同时间或频率解 析度,所述方法包括以下步骤基于之前段的之前编码的系数,获取用于当前段的当前编码系数的编码上下文,所述 之前编码的系数代表与所述当前编码的系数不同的时间或频率解析度;以及基于所述编码上下文对所述当前系数进行熵编码,以获得编码音频流。
9.一种用于对编码音频流进行解码以获得系数段的音频解码器000),所述系数段代 表采样音频信号的不同时间或频率解析度,所述音频解码器(200)包括处理器010),用于基于之前段的之前解码的系数,获取用于当前段的当前解码的系 数的编码上下文,所述之前解码的系数代表与所述当前解码的系数不同的时间或频率解析 度;以及熵解码器O20),用于基于所述编码上下文和所述编码音频流对所述当前系数进行熵 解码。
10.根据权利要求9所述的音频解码器000),其中所述处理器(210)适于基于所述之 前的系数获取所述编码上下文,所述系数形成由所述音频流代表的音频信号的频谱表示, 其在所述段中具有变化的频谱解析度。
11.根据权利要求9至10中任一项所述的音频解码器000),其中所述处理器适于基 于在所述之前段中或可选的在所述当前段中的之前解码的相邻频谱系数,来获取所述当前 系数的每个频带的编码上下文。
12.根据权利要求11所述的音频解码器000),其中所述熵解码器(220)适于基于从 所述编码上下文中获取的概率分布,从所述编码音频流中对组索引进行解码,其中所述组 索引代表一个或多个码字的组,并且所述熵解码器(220)适于如果所述组索引指示包括多 于一个码字的组,则基于均勻概率分布,从所述编码音频流中对元素索引进行解码,并且所 述熵解码器(220)适于基于所述组索引和所述元素索引来获取所述当前段的频谱系数的 元组,从而获得具有频谱系数的元组形式的频谱域表示。
13.根据权利要求12所述的音频解码器000),其中所述熵解码器(220)适于使用包 括逃逸符号和与可用组索引的集合相对应的组符号在内的符号字母表,基于从所述编码上 下文中获取的概率分布,从所述编码音频流中对符号序列进行解码,所述熵解码器(220) 适于基于与所述符号序列的组符号相对应的可用组索引并且基于所述元素索引,获取频谱 系数的初步元组,并且所述熵解码器(220)适于将所述初步元组与依赖于所述符号序列中 的逃逸符号的数量的因子相乘,以获得频谱系数的元组。
14.根据权利要求13所述的音频解码器000),其中所述熵解码器(220)适于使用算 术编码规则,基于均勻概率分布,从所述编码音频流中对除法余数进行解码,并且所述熵解 码器(220)适于将所述余数与所述相乘后的初步元组相加,以获得频谱系数的元组。
15.根据权利要求9至14中任一项所述的音频解码器000),其中所述处理器(210) 和所述熵编码器(220)被配置为当所述之前段比所述当前段显示更精细的频谱解析度时, 基于所述之前段的频谱系数的降采样来进行操作,和/或其中所述处理器(210)和所述熵 编码器(220)被配置为当所述之前段比所述当前段显示更粗糙的频谱解析度时,基于所述 之前段的频谱系数的升采样来进行操作。
16.一种用于对编码音频流进行解码以获得系数段的方法,所述系数段代表解码音频 采样,所述方法包括以下步骤基于之前段的之前解码的系数,获取用于当前段的当前解码系数的编码上下文,所述 之前解码的系数代表与所述当前解码的系数不同的时间或频率解析度;以及基于所述编码上下文和所述编码音频流,对所述当前系数进行熵解码。
17.一种具有程序代码的计算机程序,当所述程序代码在计算机或处理器上运行时,所述程序代码用于执行权利要求8或16所述的方法之一。
全文摘要
一种用于对系数段进行编码的音频编码器(100),所述系数段代表采样音频信号的不同时间或频率解析度,所述音频编码器(100)包括处理器(110),用于基于之前段的之前编码的系数,获取用于当前段的当前编码的系数的编码上下文,所述之前编码的系数代表与所述当前编码的系数不同的时间或频率解析度。所述音频编码器(100)还包括熵编码器(120),用于基于所述编码上下文,对所述当前系数进行熵编码以获得编码音频流。
文档编号G10L19/02GK102089813SQ200980127207
公开日2011年6月8日 申请日期2009年5月18日 优先权日2008年7月11日
发明者伯恩哈德·格瑞, 尼古拉斯·里特尔博谢, 斯特凡·盖尔斯贝格, 纪尧姆·福克斯, 维尔吉利奥·巴奇加卢波, 马库斯·马特拉斯 申请人:弗劳恩霍夫应用研究促进协会
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1