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

用于对音频信号进行编码的音频编码器以及方法

文献发布时间:2024-04-18 19:58:53


用于对音频信号进行编码的音频编码器以及方法

本申请是申请日为2017年4月6日、申请号为201780035964.1的中国发明专利申请“用于对音频信号进行编码的音频编码器以及方法”的分案申请。

技术领域

本发明涉及音频编码,并且优选地涉及用于控制EVS编译码器中的基于MDCT的TCX的频谱系数的量化的方法、装置或计算机程序。

背景技术

EVS编译码器的参考文档为:3GPP TS24.445V13.1.0(2016-03),第三代合作伙伴计划;技术规范小组服务及系统方面;用于增强型语音服务(EVS)的编译码器;详细算法描述(第13版)。

然而,本发明额外地适用于例如由除第13版之外的其他版本限定的其他EVS版本,并且附加地,本发明额外地适用于不同于EVS然而依赖于例如在权利要求中所限定的检测器、整形器以及量化器和编码器级的所有其他音频编码器。

额外地,应注意,不仅由独立权利要求限定而且由从属权利要求限定的所有实施例可以彼此分离地使用,或者如由权利要求的相互从属性所概述的或如随后在优选示例下所论述的那样一起使用。

如3GPP中所指定的,EVS编译码器[1]是用于窄带(NB)、宽带(WB)、超宽带(SWB)或全频带(FB)语音及音频内容的现代混合型编译码器,其可以基于信号分类而在若干编码方法之间切换。

图1示出了EVS中的公共处理和不同编码方案。具体地,图1中的编码器的公共处理部分包括信号重新采样块101和信号分析块102。音频输入信号在音频信号输入103处被输入到公共处理部分中,并且具体地,被输入到信号重新采样块101中。信号重新采样块101额外地具有用于接收命令行参数的命令行输入。如图1中可见,公共处理级的输出被输入到不同的元件中。具体地,图1包括基于线性预测的编码块(基于LP的编码)110、频域编码块120,以及非活动信号编码/CNG块130。块110、120、130连接至比特流多路复用器140。此外,提供切换器150用于根据分类器决策来将公共处理级的输出切换到基于LP的编码块110、频域编码块120或非活动信号编码/CNG(舒适噪声生成)块130。此外,比特流多路复用器140接收分类器信息,即,是否使用块110、120、130中的任一者来对在块103处输入并且由公共处理部分处理的输入信号的某一当前部分进行编码。

-诸如CELP编码之类的基于LP(基于线性预测)的编码主要用于语音内容或语音主导内容以及具有高时间波动的一般音频内容。

-频域编码用于所有其他一般音频内容,诸如音乐或背景噪声。

为了为低比特率和中等比特率提供最大质量,基于公共处理模块中的信号分析来执行基于LP的编码与频域编码之间的频繁切换。为了节省复杂度,编译码器被优化以在后续模块中还重新使用信号分析级的元件。例如:信号分析模块以LP分析级为特征。所产生的LP滤波器系数(LPC)及残差信号首先被用于若干信号分析步骤,诸如话音活动检测器(VAD)或语音/音乐分类器。其次,LPC也是基于LP的编码方案和频域编码方案的基本部分。为了节省复杂度,以CELP编码器的内部采样率(SR

CELP编码器在12.8kHz或16kHz内部采样率(SR

基于MDCT的TCX是频域编码的子模式。如对于基于LP的编码方法,基于LP滤波器来执行TCX中的噪声整形。通过将从经加权经量化的LP滤波器系数中计算的增益因子应用于MDCT频谱(译码器侧)来在MDCT域中执行该LPC整形。在编码器侧,在速率循环(rate loop)之前应用逆增益因子。这因此被称作LPC整形增益的应用。TCX在输入采样率(SR

图2在高层次上并且针对基于MDCT的TCX示出了LPC整形增益的应用。具体地,图2示出了在编码器侧上的图1的TCX或频域编码块120中的噪声整形和编码的原理。

具体地,图2示出了编码器的示意性框图。输入信号103被输入到重新采样块201中,以便执行信号的重新采样,以重新采样为CELP采样率SR

此外,在不进行任何重新采样的情况下,输入信号103被输入到示例性地示为MDCT变换的时间频谱转换器207。此外,在块209中,在一些计算之后应用由块203计算的LPC参数。具体地,块209经由线213接收从块203中计算的LPC参数,或者备选地或额外地从块205接收LPC参数,并且随后导出MDCT(或一般地,导出频谱域加权因子),以便应用对应的逆LPC整形增益。然后,在块211中,执行一般的量化器/编码器操作,该操作例如可以是速率循环,其调整全局增益并且额外地优选使用如熟知的EVS编码器规范中所示的算术编码来执行频谱系数的量化/编码以最终获得比特流。

与CELP编码方法(其组合SR

基于MDCT的TCX在低比特率(诸如9.6或13.2kbit/s)SWB下对高至16kHz的音频内容进行编码。因为在这种低比特率下仅可以借助于算术编码器直接对频谱系数的小的子集进行编码,所以所产生的频谱中的间隙(零值区域)用两种机制来掩盖:

-噪声填充,其将随机噪声插入在经译码的频谱中。噪声的能量由增益因子控制,该增益因子在比特流中被传送。

-智能间隙填充(IGF),其插入来自频谱的下频率部分的信号部分。这种被插入的频率部分的特性由参数控制,该参数在比特流中被传送。

噪声填充用于高至最高频率的下频率部分,该最高频率可以由所传送的LPC(f

存在用于确定哪些频谱系数在编码过程中存留或哪些频谱系数将由噪声填充或IGF替换的两种机制:

1)速率循环

在应用逆LPC整形增益之后,应用速率循环。对此,估计全局增益。随后,对频谱系数进行量化,并且利用算术编码器对经量化的频谱系数进行编码。基于算术编码器的真实的或估计的比特需求并且基于量化误差,增大或减小全局增益。这影响量化器的精确度。精确度越低,越多的频谱系数被量化成零。通过在速率循环之前使用经加权的LPC来应用逆LPC整形增益,确保了感知上相关的行以比感知上不相关的内容显著更高的机率存留。

2)IGF音调屏蔽

在高于f

经加权的LPC遵循信号的频谱包络。通过使用经加权的LPC来应用逆LPC整形增益,频谱的感知白化被执行。这在编码循环之前显著地减小MDCT频谱的动态,并且因此也控制编码循环中的MDCT频谱系数之间的比特分布。

如上文所解释,经加权的LPC不可用于高于f

然而,假如存在高于f

图3至图6示出了该问题。图3示出了应用逆LPC整形增益之前的绝对MDCT频谱,图4示出了对应的LPC整形增益。存在可见的高于f

图3示出了应用逆LPC整形增益之前的关键帧的MDCT频谱。

图4示出了所应用的LPC整形增益。在编码器侧上,频谱利用逆增益倍增。最后的增益值被用于高于f

图5示出了应用逆LPC整形增益之后的关键帧的MDCT频谱。高于f

图6示出了量化之后的关键帧的MDCT频谱。所显示的频谱包括全局增益的应用,但不具有LPC整形增益的应用。可以看出,除了高于f

发明内容

本发明的目标是提供一种改进的音频编码概念。

通过本文所述的音频编码器、用于对音频信号进行编码的方法或计算机程序来实现该目标。

本发明基于以下发现:可以通过根据音频编码器中所包括的量化器和编码器级的具体特性对要编码的音频信号进行预处理,来解决这种现有技术问题。为此目的,检测音频信号的上频带中的尖峰频谱区域。接着,使用整形器,该整形器用于使用下频带的整形信息来对该下频带进行整形,并且用于使用下频带的整形信息的至少一部分来对上频带进行整形。具体地,该整形器被额外地配置为对检测到的尖峰频谱区域(即,由检测器在音频信号的上频带中检测到的尖峰频谱区域)中的频谱值进行衰减。接着,对经整形的下频带和经衰减的上频带进行量化和熵编码。

由于已经选择性地(即,在检测到的尖峰频谱区域内)衰减上频带这一事实,该检测到的尖峰频谱区域不再能够完全地主控量化器和编码器级的行为。

替代地,由于已经在音频信号的上频带中形成衰减这一事实,编码操作的结果的整体感知质量得到提高。具体地,在其中极低比特率是量化器和编码器级的主目标的低比特率下,上频带中的高频谱尖峰将消耗该量化器和编码器级所需的所有比特,因为编码器将由该高的上频率部分引导,并且因此在这些部分中使用大部分可用比特。这自动地产生在感知上更重要的下频率范围中不再有任何可用比特的情形。因此,这种过程将产生仅具有经编码的高频部分而较低频率部分完全未被编码或仅被非常粗略地编码的信号。然而,已经发现,这种过程与以下情形相比在感知上不太令人满意:检测这种具有主要高频谱区域的有问题的情况并且在执行包括量化器和熵编码器级在内的编码器过程之前衰减较高频率范围中的尖峰。

优选地,在MDCT频谱的上频带中检测该尖峰频谱区域。然而,也可以使用其他时间频谱转换器,例如滤波器组、QMF滤波器组、DFT、FFT或任何其他时间频率转换。

此外,本发明是有用的,因为对于上频带,不需要计算整形信息。替代地,最初针对下频带计算的整形信息被用于对上频带进行整形。因此,本发明因为低频带整形信息也可用于对高频带进行整形而提供一种在计算上非常有效的编码器,因为可能起因于这种情形(即,上频带中的高频谱值)的问题除了通常基于该低频带信号的频谱包络进行直接整形以外还通过由整形器额外地应用的额外衰减来解决,该低频带信号的频谱包络可以例如通过该低频带信号的LPC参数来表征。但是该频谱包络也可以由可用于在频谱域中执行整形的任何其他对应的度量来表示。

该量化器和编码器级对经整形的信号(即,对经整形的低频带信号并且对经整形的高频带信号)执行量化和编码操作,但是该经整形的高频带信号已经额外地接受了额外衰减。

尽管检测到的尖峰频谱区域中的高频带的衰减是不再能够由译码器恢复的预处理操作,然而相比于未应用额外衰减的情形,该译码器的结果仍然是更令人满意的,因为该衰减产生了以下事实:对于在感知上更重要的下频带,仍剩余有比特。因此,在具有尖峰的高频谱区将主控整个编码结果的有问题的情形下,本发明提供对这种尖峰的额外衰减,从而使得最后编码器“看到”具有经衰减的高频部分的信号,并且因此,经编码的信号仍然具有有用的并且在感知上令人满意的低频信息。关于高频谱带的“牺牲”不会或几乎不会被收听者注意到,因为收听者通常并不清楚了解信号的高频内容,而是更有可能具有关于低频内容的期望。换句话说,具有极低等级的低频率内容但是具有显著高等级频率内容的信号通常是被察觉为不自然的信号。

本发明的优选实施例包括线性预测分析器,其用于导出时间帧的线性预测系数,并且这些线性预测系数表示整形信息,或者从这些线性预测系数中导出整形信息。

在另外的实施例中,为下频带的若干子频带计算若干整形因子,并且对于上频带中的加权,使用针对低频带的最高子频带计算的整形因子。

在另外的实施例中,当一组条件中的至少一个为真时,检测器确定上频带中的尖峰频谱区域,其中该组条件至少包括低频带振幅条件、尖峰距离条件以及尖峰振幅条件。甚至更优选地,仅当两个条件同时为真时检测到尖峰频谱区域,并且甚至更优选地,仅当三个条件都为真时检测到尖峰频谱区域。

在另外的实施例中,检测器在带有或不带有额外衰减的整形操作之前或之后确定用于检查这些条件的若干值。

在实施例中,整形器使用衰减因子来额外地衰减这些频谱值,其中该衰减因子根据下频带中的最大频谱振幅乘以大于或等于1的预定数字并且除以上频带中的最大频谱振幅来导出。

此外,可以以若干种不同的方式来完成关于如何应用额外衰减的具体方式。一种方式是整形器首先使用下频带的整形信息的至少一部分来执行加权信息,以便对检测到的尖峰频谱区域中的频谱值进行整形。接着,使用衰减信息来执行后续的加权操作。

一种备选过程是:首先使用衰减信息来应用加权操作,并且接着使用与下频带的整形信息的至少一部分对应的加权信息来执行后续的加权。另外的备选方案是:使用组合加权信息来应用单个加权操作,该组合加权信息一方面从衰减中导出,另一方面从下频带的整形信息的一部分中导出。

在使用乘法来执行加权的情形中,衰减信息是衰减因子并且整形信息是整形因子,并且实际组合加权信息是加权因子,即,用于单个加权信息的单个加权因子,其中通过使衰减信息与该下频带的整形信息相乘来导出该单个加权因子。因此,清楚的是,可以以许多不同的方式来实现该整形器,但尽管如此,该结果仍是使用下频带的整形信息和额外衰减进行高频带的整形。

在实施例中,量化器和编码器级包括速率循环处理器,该速率循环处理器用于估计量化器特性以使得获得经熵编码的音频信号的预定比特率。在实施例中,该量化器特性是全局增益,即,应用于整个频率范围(即,应用于要量化和编码的所有频谱值)的增益值。当出现所需比特率低于使用某一全局增益获得的比特率时,则增大该全局增益并且确定实际比特率现在是否与要求一致(即,现在小于或等于所需比特率)。当在量化之前以使得频谱值除以全局增益的方式来在编码器中使用该全局增益时,执行该过程。然而,当以不同方式(即,在执行该量化之前使频谱值乘以全局增益)来使用该全局增益时,则在实际比特率过高时减小该全局增益,或者可以在该实际比特率低于可容许比特率时增大该全局增益。

然而,其他编码器级特性也可以在某一速率循环条件中使用。例如,一种方式将是频率选择性增益。另一过程将是根据所需比特率来调整音频信号的带宽。总体上,不同量化器特性可能受到影响,以使得最后获得与所需比特率(通常为低比特率)一致的比特率。

优选地,该过程尤其良好地适用于与智能间隙填充处理(IGF处理)组合。在该过程中,应用音调屏蔽处理器,其用于在上频带中确定待量化和熵编码的第一组频谱值和要由间隙填充过程参数化编码的第二组频谱值。音调屏蔽处理器将第二组频谱值设置为0值,以使得这些值不消耗量化器/编码器级中的许多比特。另一方面,显现的是通常属于要量化和熵编码的第一组频谱值中的值是尖峰频谱区域的值,这些值在某些情形下可以被检测并且在量化器/编码器级的有问题情形的情况下被额外地衰减。因此,智能间隙填充框架内的音调屏蔽处理器与所检测的尖峰频谱区域的额外衰减的组合产生非常有效的编码器过程,该过程额外地后向兼容并且甚至在极低的比特率下仍然产生良好的感知质量。

实施例优于用以处理该问题的可能的解决方案,这些解决方案包括用于扩展LPC的频率范围的方法,或包括用于使应用于高于f

附图说明

接下来,关于附图来说明本发明的优选实施例,在附图中:

图1示出了EVS中的公共处理和不同的编码方案;

图2示出了编码器侧上的TCX中的噪声整形和编码的原理;

图3示出了应用逆LPC整形增益之前的关键帧的MDCT频谱;

图4示出了图3中的情形,但是其中应用了LPC整形增益;

图5示出了应用逆LPC整形增益之后的关键帧的MDCT频谱,其中高于f

图6示出了在量化之后仅具有高通信息并且不具有任何低通信息的关键帧的MDCT频谱;

图7示出了应用逆LPC整形增益和本发明的编码器侧预处理之后的关键帧的MDCT频谱;

图8示出了用于对音频信号进行编码的音频编码器的优选实施例;

图9示出了针对不同的频带计算不同的整形信息以及将下频带整形信息用于较高频带的情形;

图10示出了音频编码器的优选实施例;

图11示出了用于示出检测器的功能的流程图,该检测器用于检测尖峰频谱区域;

图12示出了实现低频带振幅条件的优选实现方式;

图13示出了实现尖峰距离条件的优选实施例;

图14示出了实现尖峰振幅条件的优选实现方式;

图15a示出了量化器和编码器级的优选实现方式;

图15b示出了用于示出量化器和编码器级作为速率循环处理器的操作的流程图;

图16示出了优选实施例中的用于确定衰减因子的确定过程;

图17示出了用于在两个后续步骤中将低频带整形信息应用于上频带并且应用经整形的频谱值的额外衰减的优选实现方式;

图18示出了2元组、2元组的各个频谱值a和b、最高有效位平面m和剩余的最低有效位平面r之间的关系的示例;以及

图19示出了在基于包络的算术编码中使用的与LPC包络组合的谐波包络的示例。

具体实施方式

图8示出了用于对具有下频带和上频带的音频信号403进行编码的音频编码器的优选实施例。音频编码器包括检测器802,该检测器用于检测音频信号103的上频带中的尖峰频谱区域。此外,音频编码器包括整形器804,该整形器用于使用下频带的整形信息来对该下频带进行整形,并且用于使用下频带的整形信息的至少一部分来对上频带进行整形。此外,整形器被配置为额外地衰减上频带中的检测到的尖峰频谱区域中的频谱值。

因此,整形器804使用低频带的整形信息来在低频带中执行一种“单整形”。此外,整形器额外地使用低频带并且通常使用最高频率低频带的整形信息来在高频带中执行一种“单”整形。在一些实施例中,在检测器802没有检测到尖峰频谱区域的高频带中执行该“单”整形。此外,对于高频带内的尖峰频谱区域,执行一种“双”整形,即,将来自低频带的整形信息应用于尖峰频谱区域,并且额外地,将额外衰减应用于尖峰频谱区域。

整形器804的结果是经整形的信号805。经整形的信号是经整形的下频带和经整形的上频带,其中经整形的上频带包含尖峰频谱区域。该经整形的信号805被转发给量化器和编码器级806,该量化器和编码器级806用于量化经整形的下频带和包括尖峰频谱区域的经整形的上频带,并且用于再次对来自经整形的下频带以及来自包含尖峰频谱区域的经整形的上频带的经量化的频谱值进行熵编码,以获得经编码的音频信号814。

优选地,音频编码器包含线性预测编码分析器808,该线性预测编码分析器808用于通过分析音频信号的时间帧中的音频样本的块来导出该时间帧的线性预测系数。优选地,这些音频样本被频带限制到下频带。

另外,整形器804被配置为使用线性预测系数作为整形信息来对下频带进行整形,如在图8中的812处所示。另外,整形器804被配置为使用从被频带限制到下频带的音频样本的块导出的线性预测系数的至少一部分来对音频信号的时间帧中的上频带进行整形。

如图9中所示,下频带优选地被细分成多个子频带,诸如示例性地细分成四个子频带SB1、SB2、SB3和SB4。另外,如示意性地示出的,子频带宽度从较低子频带到较高子频带增大,即,子频带SB4在频率上比子频带SB1更宽。然而,在其他实施例中,也可以使用具有相等带宽的频带。

子频带SB1至SB4延伸直至边界频率,该边界频率例如是f

具体地,图8的LPC分析器808通常针对每个子频带单独地计算整形信息。因此,LPC分析器808优选地针对四个子频带SB1至SB4来计算四个不同种类的子频带信息,以使得每个子频带具有其相关联的整形信息。

此外,整形器804使用正是为每个子频带SB1至SB4所计算的整形信息来为该子频带应用整形,重要的是,还进行较高频带的整形,但是因为计算整形信息的线性预测分析器接收被频带限制到下频带的频带受限信号这一事实,不计算较高频带的整形信息。尽管如此,为了也对较高频带执行整形,子频带SB4的整形信息被用于对较高频带进行整形。因此,整形器804被配置为使用针对下频带的最高子频带所计算的整形因子来对上频带的频谱系数进行加权。与图9中的SB4对应的最高子频带具有下频带的子频带的所有中心频率中的最高中心频率。

图11示出了用于说明检测器802的功能的优选流程图。具体地,检测器802被配置为当一组条件中的至少一个为真时确定上频带中的尖峰频谱区域,其中该组条件包括低频带振幅条件1102、尖峰距离条件1104和尖峰振幅条件1106。

优选地,准确地按照图11中所示的次序来应用不同条件。换句话说,在尖峰距离条件1104之前计算低频带振幅条件1102,并且在尖峰振幅条件1106之前计算尖峰距离条件。在三个条件必须全部为真以便检测尖峰频谱区域的情形下,通过应用图11中的顺序处理来获得计算上有效的检测器,其中,只要某一条件不为真(即,为假),就停止某一时间帧的检测过程,并且确定不需要进行该时间帧中的尖峰频谱区域的衰减。因此,当针对某一时间帧已经确定低频带振幅条件1102未满足(即,为假)时,则将控制继续进行到判定为不需要对该时间帧中的尖峰频谱区域的衰减,并且过程继续进行而无需任何额外衰减。然而,当针对条件1102控制器确定该条件1102为真时,判定第二条件1104。在尖峰振幅1106之前再次判定该尖峰距离条件,以使得当条件1104产生结果“假”时,该控制确定不执行对尖峰频谱区域的衰减。只有当尖峰距离条件1104具有结果“真”时,才判定第三尖峰振幅条件1106。

在其他实施例中,可以判定更多或更少的条件,并且可以执行顺序判定或并行判定,然而如图11中所示例性地示出的顺序判定是优选的,以便节省由电池供电的移动应用中的特别珍贵的计算资源。

图12、图13、图14提供条件1102、1104和1106的优选实施例。

在低频带振幅条件下,如在块1202处所示,确定下频带中的最大频谱振幅。该值是max_low。此外,在块1204中,确定上频带中的最大频谱振幅,其被指示为max_high。

在块1206中,优选地将来自块1232和1234的所确定的值与预定数字c

关于在块1206中所使用的图12的预定数字c

图13示出了尖峰距离条件的优选实施例。在块1302中,确定下频带中的第一最大频谱振幅,其被指示为max_low。

此外,如在块1304处所示,确定第一频谱距离。该第一频谱距离被指示为dist_low。具体地,第一频谱距离是由块1302所确定的第一最大频谱振幅距边界频率的距离,该边界频率在下频带的中心频率与上频带的中心频率之间。优选地,边界频率是f_celp,但是该频率可以具有如先前所概述的任何其他值。

此外,块1306确定上频带中的第二最大频谱振幅,其被称作max_high。此外,确定第二频谱距离1308,并且将其指示为dist_high。同样优选地,在将频谱f_celp作为边界频率的情况下确定第二最大频谱振幅距边界频率的第二频谱距离。

此外,在块1310中,当用第一频谱距离加权并且用大于1的预定数字加权的第一最大频谱振幅大于用第二频谱距离加权的第二最大频谱振幅时,确定尖峰距离条件是否为真。

优选地,在最优选的实施例中,预定数字c

优选地,在用下频带整形信息进行整形之后,即,在图10中的块804a之后但当然在块804b之前,执行块1302和1306中的确定。

图14示出了尖峰振幅条件的优选实施方式。具体地,块1402确定下频带中的第一最大频谱振幅,并且块1404确定上频带中的第二最大频谱振幅,其中块1402的结果被指示为max_low2,并且块1404的结果被指示为max_high。

接着,如在块1406中所示,当第二最大频谱振幅大于用大于或等于1的预定数字c

此外,如图14中所指示,在用低频带整形信息进行整形之后,即,在块804a中所示的处理之后并且在块804b所示的处理之前,或关于图17在块1702之后并且在块1704之前,发生块1402和1404中的确定。

在其他实施例中,尖峰振幅条件1106,具体而言,图14的块1402中的过程,不是根据下频带中的最小值(即,频谱的最低频率值)确定的,而是基于下频带的一部分来确定下频带中的第一最大频谱振幅,其中该一部分从下频带的预定起始频率延伸直到下频带的最大频率,其中该预定起始频率大于下频带的最小频率。在实施例中,预定起始频率比下频带的最小频率高至少下频带的10%,或者在其他实施例中,该预定起始频率位于等于下频带的最大频率的一半的频率处,该预定起始频率的容差范围为该最大频率的一半的正/负百分之10。

此外,优选的是,第三预定数字c

块1202、1204、1402、1404或1302及1306始终确定频谱振幅。可以按照不同方式执行对频谱振幅的确定。确定频谱包络的一种方式是确定实频谱的频谱值的绝对值。备选地,频谱振幅可以是复频谱值的模。在其他实施例中,频谱振幅可以是实频谱的频谱值的任何幂或复频谱的模的任何幂,其中幂大于1。优选地,幂是整数,但是已经额外地证实幂1.5或2.5是有用的。然而优选地,幂2或3是优选的。

总体上,整形器804被配置为基于上频带中的最大频谱振幅和/或基于下频带中的最大频谱振幅来衰减检测到的尖峰频谱区域中的至少一个频谱值。在其他实施例中,整形器被配置为确定下频带的一部分中的最大频谱振幅,该部分从下频带的预定起始频率延伸直到下频带的最大频率。预定起始频率大于下频带的最小频率,并且优选地比下频带的最小频率高至少下频带的10%,或者该预定起始频率优选地位于等于所述下频带的最大频率的一半的频率处,所述预定起始频率的容差为所述最大频率的一半的正/负百分之10。

整形器还被配置为确定衰减因子,该衰减因子确定额外衰减,其中该衰减因子由下频带中的最大频谱振幅乘以大于或等于1的预定数字并且除以上频带中的最大频谱振幅来导出。为此目的,参考块1602,该块示出了下频带中的最大频谱振幅的确定(优选地,在整形之后,即在图10中的块804a之后或在图17中的块1702之后)。

此外,整形器被配置为同样优选地在例如由图10中的块804a或图17中的块1702进行的整形之后确定较高频带中的最大频谱振幅。接着,在块1606中,如所示地计算衰减因子fac,其中预定数字c

图17示出了与图10在块804a和804b处所示的类似的优选实施方式,即,执行将低频带增益信息应用于高于边界频率(诸如f

然而,在其他实施例中,反转图17中的步骤的次序以使得使用衰减信息进行第一加权操作,并且使用下频带的整形信息的至少一部分进行第二后续加权操作。或者备选地,使用单个加权操作来执行整形,该单个加权操作使用组合加权信息,该组合加权信息一方面取决于衰减信息并且从该衰减信息中导出,并且另一方面取决于下频带的整形信息的至少一部分并且从该至少一部分中导出。

如图17中所示,将额外衰减信息应用于检测到的尖峰频谱区域中的所有频谱值。备选地,例如,仅将衰减因子应用于最高频谱值或一组最高频谱值,其中该组中的成员可以在例如2至10的范围内。此外,实施例还将衰减因子应用于上频带中的所有频谱值,该上频带的尖峰频谱区域已由检测器针对音频信号的时间帧而检测到。因此,在该实施例中,当仅单个频谱值被确定为尖峰频谱区域时,可以将相同的衰减因子应用于整个上频带。

对于某一帧,当尚未检测到尖峰频谱区域时,则由整形器对下频带和上频带进行整形而不进行任何额外衰减。因此,执行时间帧到时间帧的切换,其中,根据实现方式,衰减信息的某种平滑化是优选的。

优选地,量化器和编码器级包含如图15a和图15b中所示的速率循环处理器。在实施例中,量化器和编码器级806包含全局增益加权器1502、量化器1504和诸如算术或霍夫曼编码器之类的熵编码器1506。此外,对于时间帧的经量化值的某一集合,熵编码器1506向控制器1508提供所估计或所测量的比特率。

控制器1508被配置为一方面接收循环终止准则和/或另一方面接收预定比特率信息。只要控制器1508确定没有获得预定比特率和/或没有满足终止准则,则控制器就向全局增益加权器1502提供经调整的全局增益。然后,全局增益加权器将经调整的全局增益应用于时间帧的经整形且经衰减的频谱行。将块1502的经全局增益加权的输出提供给量化器1504,并且将经量化的结果提供给熵编码器1506,该熵编码器1506再次确定用经调整的全局增益加权的数据的估计或测量的比特率。假如满足了终止准则和/或满足了预定比特率,则在输出行814处输出经编码的音频信号。然而,当未获得预定比特率或未满足终止准则时,则循环重新开始。这在图15b中更详细地示出。

如块1510中所示,当控制器1508确定比特率过高时,则如块1512中所示,增大全局增益。因此,所有经整形且经衰减的频谱行变得更小,因为它们除以增大的全局增益,并且量化器随后量化该更小的频谱值,以使得熵编码器针对该时间帧产生更小数量的所需比特。因此,如图15b中的块1514中所示,用经调整的全局增益执行加权、量化和编码的过程,并且接下来再次确定比特率是否过高。若比特率仍然过高,则再次执行块1512和1514。然而,当确定比特率没有过高时,控制继续进行到概述是否满足终止准则的步骤1516。当满足终止准则时,停止速率循环并且额外地经由输出接口(例如图10的输出接口1014)将最终全局增益并入到经编码的信号中。

然而,当确定不满足终止准则时,则如块1518中所示减小全局增益,以使得最后使用所允许的最大比特率。这确保以较高精确度(即较少损失)对易于编码的时间帧进行编码。因此,对于这种实例,如块1518中所示减小全局增益,并且用减小的全局增益执行步骤1514,并且执行步骤1510以便查看所产生的比特率是否过高。

自然,可以视需要来设置关于全局增益增大或减小增量的特定实现方式。另外,控制器1508可以被实现为具有块1510、1512和1514或具有块1510、1516、1518和1514。因此,取决于实现方式,并且还取决于全局增益的起始值,过程可以使得该过程从极高的全局增益开始直到找到仍然满足比特率要求的最低全局增益。另一方面,过程可以按照某一方式进行,该方式使得过程从非常低的全局增益开始,并且增大全局增益直到获得可允许的比特率。另外,如图15b中所示,甚至也可以应用两种过程之间的混合。

图10示出了由块802、804a、804b和806构成的本发明的音频编码器在切换时域/频域编码器设置内的嵌入。

具体地,音频编码器包含公共处理器。该公共处理器由ACELP/TCX控制器1004和频带限制器(例如重新采样器1006)及LPC分析器808构成。这通过由1002指示的阴影框来说明。

此外,频带限制器馈入已经关于图8论述的LPC分析器。接着,由LPC分析器808产生的LPC整形信息被转发给CELP编码器1008,并且CELP编码器1008的输出被输入给输出接口1014,该输出接口1014产生最终经编码的信号1020。此外,由编码器1008构成的时域编码分支额外地包括时域带宽扩展编码器1010,该时域带宽扩展编码器1010提供信息并且通常提供参数信息,例如在输入1001处输入的全频带音频信号的至少高频带的频谱包络信息。优选地,由时域带宽扩展编码器1010处理的高频带是以边界频率开始的频带,该边界频率还由频带限制器1006使用。因此,频带限制器执行低通滤波以便获得下频带,并且由低通频带限制器1006滤除的高频带由时域带宽扩展编码器1010处理。

另一方面,频谱域或TCX编码分支包括时间频谱转换器1012,并且示例性地包括如先前所讨论的音调屏蔽以便获得间隙填充编码器处理。

接着,时间频谱转换器1012和额外的可选音调屏蔽处理的结果被输入给频谱整形器804a,并且频谱整形器804a的结果被输入给衰减器804b。衰减器804b由检测器802控制,该检测器802使用时域数据或使用如1022处所示的时间频谱转换器块1012的输出来执行检测。如先前所描述的,块804a和804b一起实现图8的整形器804。块804的结果被输入给量化器和编码器级806,在某一实施例中,该量化器和编码器级806由预定比特率控制。另外,当由检测器应用的预定数字还取决于预定比特率时,则预定比特率也被输入给检测器802(图10中未示出)。

因此,经编码的信号1020接收来自量化器和编码器级的数据、来自控制器1004的控制信息、来自CELP编码器1008的信息,以及来自时域带宽扩展编码器1010的信息。

接下来,更详细地论述本发明的优选实施例。

保持与现有实施方式的互操作性和后向兼容性的一种选项是进行编码器侧预处理。如接下来所说明的,算法对MDCT频谱进行分析。假如存在低于f

该衰减降低了速率循环对高于f

下面的算法描述编码器侧预处理:

1)对低频带内容的检测(例如,1102):

对低频带内容的检测分析是否存在显著的低频带信号部分。为此,在应用逆LPC整形增益之前,在MDCT频谱上搜索低于和高于f

a)max_low_pre:在应用逆LPC整形增益之前在绝对值的频谱上评估的低于f

b)max_high_pre:在应用逆LPC整形增益之前在绝对值的频谱上评估的高于f

为了判定,对下面的条件进行评估:

条件1:c1*max_low_pre>max_high_pre

如果条件1为真,则假定有大量低频带内容,并且继续进行预处理;如果条件1为假,则中止预处理。这确保不会对仅有高频带的信号(例如,高于f

伪代码:

/>

其中

X

L

L

在实例实施方式中,将c

2)对尖峰距离度量的评估(例如,1104):

尖峰距离量度分析高于f

a)max_low:在应用逆LPC整形增益之后在绝对值的频谱上评估的低于f

b)dist_low:max_low与f

c)max_high:在应用逆LPC整形增益之后在绝对值的频谱上评估的高于f

d)dist_high:max_high与f

为了判定,对下面的条件进行评估:

条件2:c2*dist_high*max_high>dist_low*max_low

如果条件2为真,则假定由于极高的频谱尖峰或由于该尖峰的高频率,算术编码器有显著压力。高尖峰将主控速率循环中的编码过程,高频率将对算术编码器不利,因为算术编码器总是从低频率到高频率运行,即,较高频率对编码是低效的。如果条件2为真,则继续进行预处理。如果条件2为假,则中止预处理。

/>

其中

是应用逆LPC增益整形之后的MDCT频谱,

L

L

在示例实现方式中,将c

3)尖峰振幅的比较(例如,1106):

最终,对在心理声学上类似的频谱区域中的尖峰振幅进行比较。因此,在应用逆LPC整形增益之后,在MDCT频谱上搜索低于和高于f

a)max_low2:在应用逆LPC整形增益之后从f

b)max_high:在应用逆LPC整形增益之后在绝对值的频谱上评估的高于f

为了该决策,对下面的条件进行评估:

条件3:max_high>c3*max_low2

如果条件3为真,则假定有高于f

伪代码:

其中

L

X

L

L

在示例实现方式中,将f

4)衰减高于f

如果发现条件1至3为真,则应用高于f

attenuation_factor=c

接下来将衰减因子应用于高于f

5)

伪代码:

其中

X

L

L

编码器侧预处理显著地减小编码循环的压力,同时仍然维持高于f

图7示出了在应用逆LPC整形增益和上述编码器侧预处理之后的关键帧的MDCT频谱。取决于为c1、c2和c3所选的数值,接下来被馈送给速率循环的所产生的频谱可能如上所示。这些频谱显著地减小,但仍然可能在速率循环中存留而不消耗所有可用比特。

虽然已经在装置的上下文中描述了一些方面,但是将清楚的是,这些方面还表示对应方法的描述,其中,块或设备对应于方法步骤或方法步骤的特征。类似地,在方法步骤的上下文中描述的方面也表示对相应装置的相应块或项或者特征的描述。可以由(或使用)硬件装置(诸如,微处理器、可编程计算机或电子电路)来执行一些或全部方法步骤。在一些实施例中,可以由这种装置来执行最重要方法步骤中的一个或多个方法步骤。

本发明的编码音频信号可以存储在数字存储介质上,或者可以在诸如无线传输介质或有线传输介质(例如,互联网)等的传输介质上传输。

取决于某些实现要求,可以在硬件中或在软件中实现本发明的实施例。可以通过使用其上存储有电子可读控制信号的非暂时性存储介质或数字存储介质(例如,软盘、DVD、Blu-Ray、CD、ROM、PROM和EPROM、EEPROM或闪存)来执行实现,该电子可读控制信号与可编程计算机系统合作(或能够与之合作),使得执行各个方法。因此,数字存储介质可以是计算机可读的。

根据本发明的一些实施例包括具有电子可读控制信号的数据载体,该电子可读控制信号能够与可编程计算机系统协作从而执行本文所述的方法之一。

通常,本发明的实施例可以实现为具有程序代码的计算机程序产品,程序代码可操作以在计算机程序产品在计算机上运行时执行方法之一。程序代码可以例如存储在机器可读载体上。

其他实施例包括存储在机器可读载体上的计算机程序,该计算机程序用于执行本文所述的方法之一。

换言之,本发明方法的实施例因此是具有程序代码的计算机程序,该程序代码用于在计算机程序在计算机上运行时执行本文所述的方法之一。

因此,本发明方法的另一实施例是其上记录有计算机程序的数据载体(或者数字存储介质或计算机可读介质),该计算机程序用于执行本文所述的方法之一。数据载体、数字存储介质或记录介质通常是有形的和/或非瞬时性的。

因此,本发明方法的另一实施例是表示计算机程序的数据流或信号序列,所述计算机程序用于执行本文所述的方法之一。数据流或信号序列可以例如被配置为经由数据通信连接(例如,经由互联网)传送。

另一实施例包括处理装置,例如,计算机或可编程逻辑器件,所述处理装置被配置为或适于执行本文所述的方法之一。

另一实施例包括其上安装有计算机程序的计算机,该计算机程序用于执行本文所述的方法之一。

根据本发明的另一实施例包括被配置为向接收机(例如,以电子方式或以光学方式)传输计算机程序的装置或系统,该计算机程序用于执行本文所述的方法之一。接收机可以是例如计算机、移动设备、存储设备等。装置或系统可以例如包括用于向接收机传送计算机程序的文件服务器。

在一些实施例中,可编程逻辑器件(例如,现场可编程门阵列)可以用于执行本文所述的方法的功能中的一些或全部。在一些实施例中,现场可编程门阵列可以与微处理器协作以执行本文所述的方法之一。通常,方法优选地由任意硬件装置来执行。

本文描述的装置可以使用硬件装置、或者使用计算机、或者使用硬件装置和计算机的组合来实现。

本文描述的装置或本文描述的装置的任何组件可以至少部分地在硬件和/或软件中实现。

本文描述的方法可以使用硬件装置、或者使用计算机、或者使用硬件装置和计算机的组合来执行。

本文描述的方法或本文描述的装置的任何组件可以至少部分地由硬件和/或由软件执行。

上述实施例对于本发明的原理仅是说明性的。应当理解的是:本文所述的布置和细节的修改和变形对于本领域其他技术人员将是显而易见的。因此,旨在仅由所附专利权利要求的范围来限制而不是由借助对本文实施例的描述和解释所给出的具体细节来限制。

在上述描述中,可以看出,出于简化本公开的目的,在实施例中将各种特征组合在一起。这种公开方式不应被解释为反映了要求保护的实施例需要比每一个权利要求中明确记载的特征更多特征的意图。相反地,如所附权利要求所反映的那样,发明主题可以在于比所公开的单一实施例的所有特征更少的特征。因此,所附权利要求被并入具体实施方式中,其中每个权利要求可以作为单独的实施例独立存在。虽然每个权利要求可以作为单独的实施例独立存在,但应注意,尽管从属权利要求可以在权利要求中提及与一个或多个其他权利要求的特定组合,但是其他实施例也可以包括从属权利要求与每个其他从属权利要求的主题的组合,或包括每个特征与其他从属或独立权利要求的组合。除非声明特定组合不是所意图的,否则本文提出了这样的组合。此外,即使某一权利要求没有直接从属于独立权利要求,也意图将该权利要求的特征包括到任何其他独立权利要求。

还应注意,说明书或权利要求中公开的方法可以通过具有装置的设备来实现,该装置用于执行这些方法的每个相应步骤。

此外,在一些实施例中,单个步骤可以包括或可以分成多个子步骤。除非明确排除,否则可以包括这些子步骤和该单个步骤的公开内容的一部分。

参考文献

[1]3GPP TS 26.445-用于增强型语音服务的编译码器;详细算法描述

附录

接下来,示出上述标准版本13(3GPP TS 26.445-Codec for Enhanced VoiceService(EVS);Detailed algorithmic description(用于增强型语音服务的编译码器;详细算法描述))的部分内容。第5.3..3.2.3节描述了整形器的优选实施例,第5.3.3.2.7节描述了量化器和编码器级中的量化器的优选实施例,而第5.3.3.2.8节描述了量化器和编码器级中的编码器的优选实施例中的算术编码器,其中在第5.3.2.8.1.2节中描述了用于恒定比特率和全局增益的优选速率循环。在第5.3.3.2.11节中描述了优选实施例的IGF特征,其中具体参考了第5.3.3.2.11.5.1节的IGF音调遮蔽计算。该标准的其他部分内容通过引用合并于此。

5.3.3.2.3 MDCT域中的LPC整形

5.3.3.2.3.1一般原理

通过将根据经加权且经量化的LP滤波器系数计算的增益因子应用于MDCT频谱来在MDCT域中执行LPC整形。MDCT变换所基于的输入采样率sr

5.3.3.2.3.2 LPC整形增益的计算

为了计算64个LPC整形增益,首先使用长度为128的奇数堆叠的DFT将经加权的LP滤波器系数

然后将LPC整形增益g

5.3.3.2.3.3对MDCT频谱应用LPC整形增益

将与CELP频率范围对应的MDCT系数X

/>

将高于CELP频率范围的剩余MDCT系数(如果有的话)乘以最后的LPC整形增益的倒数:

5.3.3.2.4自适应低频加重

5.3.3.2.4.1一般原理

自适应低频加重和去加重(ALFE)处理的目的是改善频域TCX写译码器在低频下的主观性能。为此,在编码器中的量化之前放大低频MDCT频谱行,从而增大它们的量化SNR,并且在内部和外部译码器中的逆MDCT处理之前撤消这种增强以防止放大伪像。

基于算术编码算法和比特率的选择,在编码器和译码器中一致地选择两种不同的ALFE算法。ALFE算法1被用于9.6kbps(基于包络的算术编码器),并且被用于48kbps及以上(基于上下文的算术编码器)。ALFE算法2被用于从13.2直至32kbps(含)。在编码器中,在每次MDCT量化之前(算法1)或之后(算法2),ALFE直接在向量x[]中的频谱行上操作,在基于上下文的算术编码器的情况下,其在速率循环内多次运行(见5.3.3.2.8.1)。

5.3.3.2.4.2自适应加重算法1

ALFE算法1基于LPC频带增益lpcGains[]进行操作。首先,使用在循环内执行的比较操作来在增益索引0到8上找到前九个增益(即低频(LF)增益)中的最小值和最大值。

然后,如果最小值与最大值之间的比率超过阈值1/32,则执行x中的最低的多行的逐渐增强,使得将第一行(DC)放大(32min/max)

5.3.3.2.4.3自适应加重算法2

不同于算法1,ALFE算法2不基于所发送的LPC增益进行操作,而是借助于对经量化的低频(LF)MDCT行的修改被发信号通知。该过程被划分为五个连续的步骤:

·步骤1:首先利用invGain=2/g

·步骤2:然后通过按照描述量化的子条款但是利用invGain而不是g

·步骤3:使用invGain=4/g

·步骤4:重新压缩和量化所有x[i]直至在先前的步骤(如步骤2)中找到的一半高度的i_max

·步骤5:如果在步骤1中找到的初始i_max大于-1,则再次利用invGain=2/g

5.3.3.2.5功率谱中的频谱噪声量度

为了指导TXC编码过程中的量化,基于当前变换的功率谱,针对高于指定频率的每个MDCT频谱行来确定位于0(音调)与1(类噪声)之间的噪声量度。根据同一时域信号区段上的MDCT系数X

对于/>

然后如下计算每个噪声量度noiseFlags(k)。首先,如果变换长度改变(例如,在ACELP帧之后的TCX转变变换之后)或者如果前一帧未使用TCX 20编码(例如,假如在最后的帧中使用更短的变换长度),则直至

表1:噪声量度中的k

对于ACELP到TCX转变,用1.25来缩放k

此外,在上述循环中每次都将值零赋给noiseFlags(k),并且将变量lastTone设置为k。上面的7行被分开处理,因为不能再更新s(k)(但是,如上所述地计算c(k)):

/>

将位于

5.3.3.2.6低通因子检测器

基于低于32.0kbps的所有比特流的功率谱来确定低通因子c

低通因子c

5.3.3.2.7具有自适应死区的均匀量化器

对于ALFE之后或之前(取决于所应用的加重算法,见子条款5.3.3.2.4.1)的MDCT频谱

从索引

其中k=0..k'。最后,将位于和高于

5.3.3.2.8算术编码器

通过熵编码并且更具体地通过算术编码来对经量化的频谱系数进行无噪声编码。

算术编码使用14比特精度概率来计算其代码。可以以不同的方式导出字母概率分布。在低速率下,它从LPC包络中导出,而在高速率下,它从过去的上下文中导出。在这两种情况下,可以添加谐波模型来细化概率模型。

下面的伪代码描述了算术编码例程,其用于对与概率模型相关联的任何符号进行编码。概率模型由累积频率表cum_freq[]表示。在下面的子条款中描述了概率模型的导出。

/>

/>

辅助函数ari_first_symbol()和ari_last_symbol()分别检测所生成的码字的第一个符号和最后一个符号。

5.3.3.2.8.1基于上下文的算术写译码器

5.3.3.2.8.1.1全局增益估计器

在两个迭代步骤中执行TCX帧的全局增益g

首先计算4个系数的每个块的能量:

用0.125dB的最终分辨率来执行二分搜索:

初始化:设置fac=offset=12.8并且target=0.15(target_bits–L/16)

迭代:将下面的操作块进行10次

1-fac=fac/2

2-offset=offset–fac

3-如果(ener>target)则offset=offset+fac

随后,由下式给出增益的第一估计:

g

5.3.3.2.8.1.2恒定比特率和全局增益的速率循环

为了在used_bits≤target_bits的约束内设置最佳增益g

W

g

Lb_found和Ub_found分别表示指示找到g

μ和η是变量,其中μ=max(1,2.3-0.0025*target_bits)并且η=1/μ。

λ和v是常量,被设置为10和0.96。

在通过算术编码对比特消耗进行初始估计之后,当target_bits大于used_bits时将stop设置为0,而当used_bits大于target_bits时将stop设置为used_bits。

如果stop大于0,则意味着used_bits大于target_bits,需要将g

W

当Ub_found被设置时(这意味着used_bits小于target_bits),将g

g

否则,意味着Ub_found为FALSE,当used_bits(=stop)与target_bits的比率较大时,用较大的放大率将增益放大为

g

从而加速达到g

如果stop等于0(这意味着used_bits小于target_bits),则g

W

如果已经设置了Lb_found,则将增益计算为

g

否则,当used_bits和target_bits的比率小时,为了加速到下频带增益g

g

在上述增益校正之后,执行量化并通过算术编码获得used_bits的估计。结果,当target_bits大于used_bits时将stop设置为0,而当used_bits大于target_bits时将stop设置为used_bits。如果循环计数小于4,则根据值stop在下一循环时执行下边界设置处理或上边界设置处理。如果循环计数为4,则获得最终增益g

5.3.3.2.8.1.3概率模型推导和编码

经量化的频谱系数X从最低频率系数开始被无噪声地编码并且前进到最高频率系数。利用两个系数a和b的群组来对它们进行编码,这两个系数a和b聚集在所谓的2元组{a,b}中。

每个2元组{a,b}被分成三个部分,即MSB、LSB和符号。使用均匀概率分布独立于量值来对符号进行编码。将量值本身进一步划分为两部分,即两个最高有效位(MSB)和剩余的最低有效位(LSB,如果适用)。利用MSB编码对两个频谱系数的量值小于或等于3的2元组直接进行编码。否则,首先传送转义符号以用信号通知任何附加的比特平面。

图18示出了2元组、2元组的各个频谱值a和b、最高有效位平面m和剩余的最低有效位平面r之间的关系的示例,其中示出了频谱值a和b的编码对(2元组)及其作为m和r的表示的示例。在该示例中,在实际值m之前首先发送三个转义符号,从而指示三个所传送的最低有效位平面。

概率模型源自于过去的上下文。过去的上下文在12比特的索引上平移,并使用查找表ari_context_lookup[]映射到存储在ari_cf_m[]中的64个可用概率模型之一。

过去的上下文从已经在同一帧内被编码的两个2元组中导出。上下文可以从直接邻近者中导出或者更远地位于过去的频率中。根据谐波模型,针对尖峰区域(属于谐波尖峰的系数)和其他(非尖峰)区域保持单独的上下文。如果不使用谐波模型,则仅使用其他(非尖峰)区域上下文。

不传送位于频谱末端的归零频谱值。这通过传送最后的非归零的2元组的索引来实现。如果使用谐波模型,则频谱的末端被定义为由尖峰区域系数组成的频谱的末端,其他(非尖峰)区域系数在该尖峰区域系数之后,因为该定义倾向于增加尾随的零的数量,并且因此提高编码效率。要被编码的样本数量计算如下:

按以下顺序将以下数据写入比特流中:

1-将lastnz/2-1编码在

2-熵编码的MSB以及转义符号。

3-带有1比特的码字的符号

4-在未完全使用比特预算时的部分中描述的残差量化比特。

5-将LSB从比特流缓冲器的末尾向后写入。

以下伪代码描述了如何导出上下文以及如何计算MSB、符号和LSB的比特流数据。输入自变量是经量化的频谱系数X[]、所考虑的频谱的尺寸L、比特预算target_bits、谐波模型参数(pi,hi),以及最后的非归零符号的索引lastnz。

/>

辅助函数ari_save_states()和ari_restore_states()分别用于保存和恢复算术编码器状态。如果它违背了比特预算,则允许取消最后的符号的编码。此外,在比特预算溢出的情况下,它能够用零来填充剩余的比特直到达到比特预算的末尾或者直到处理频谱中lastnz个样本。

在以下子条款中描述了其他辅助函数。

5.3.3.2.8.1.4得到下一个系数

在ari_context_encode()(以及译码器中的ari_context_decode())开始时将ii[0]和ii[1]计数器初始化为0。

5.3.3.2.8.1.5上下文更新

按照由以下伪代码所描述的来更新上下文。这包括级联两个4比特上下文元素。

/>

5.3.3.2.8.1.6得到上下文

以两种方式来修改最后的上下文:

t=c[p1∨p2]

if min(idx1,idx2)>L/2then

t=t+256

if target_bits>400then

t=t+512

上下文t是从0到1023的索引。

5.3.3.2.8.1.7比特消耗估计

对于量化的速率循环优化,需要基于上下文的算术编码器的比特消耗估计。通过在不调用算术编码器的情况下计算比特需求来完成该估计。可以通过以下代码来精确地估计所生成的比特:

cum_freq=arith_cf_m[pki]+m

proba*=cum_freq[0]-cum_freq[1]

nlz=norm_l(proba)/*得到前导零的数量*/

nbits=nlz

proba>>=14

其中proba是被初始化为16384的整数,并且m是MSB符号。

5.3.3.2.8.1.8谐波模型

对于基于上下文的算术编码和基于包络的算术编码两者,谐波模型被用于对具有谐波含量的帧进行更有效的编码。如果应用以下条件中的任何条件,则禁用该模型:

-比特率不是9.6、13.2、16.4、24.4、32、48kbps之一。

-前一帧由ACELP编码。

-使用基于包络的算术编码,并且编码器类型既不是语音的也不是通用的。

-比特流中的单比特谐波模型标志被设置为零。

当模型被启用时,谐波的频域间隔是关键参数,并且针对两种风格的算术编码器被共同分析和编码。

5.3.3.2.8.1.8.1谐波间隔的编码

当将基音滞后(pitch lag)和增益用于后处理时,滞后参数被用于表示频域中的谐波间隔。否则,应用间隔的正常表示。

5.3.3.2.8.1.8.1.1取决于时域基音滞后的编码间隔

如果时域中的基音滞后的整数部分d

其中d

由于T

Index

表2:取决于Index

表3:取决于Index

表4:按照取决于Index

5.3.3.2.8.1.8.1.2不依赖于时域基音滞后而对间隔进行编码

当不使用时域中的基音滞后和增益或者基音增益小于或等于0.46时,使用间隔的具有不相等分辨率的正常编码。

频谱尖峰的单位间隔T

T

并且用小数分辨率Res将实际间隔T

T

每个参数如表5所示,其中“小尺寸”意味着当帧尺寸小于256或者目标比特率小于或等于150时。

表5:用于对(0<=index<256)进行编码的不相等分辨率

5.3.3.2.8.1.8.2空

5.3.3.2.8.1.8.3搜索谐波间隔

在搜索最佳谐波间隔时,编码器试图找到能够最大化绝对MDCT系数的尖峰部分的加权和E

其中num_peak是

在间隔不依赖于时域中的基音滞后的情况下,使用层次搜索来节省计算成本。如果间隔的索引小于80,则通过粗略步长4来检查周期性。在得到最佳间隔之后,在从-2到+2的最佳间隔中搜索更精细的周期。如果索引等于或大于80,则针对每个索引来搜索周期性。

5.3.3.2.8.1.8.4谐波模型的判定

在初始估计时,获得在没有谐波模型的情况下所使用的比特的数量used_bits和在谐波模型的情况下所使用的比特的数量used_bits

idicator

B

B

其中Index_bits

其中T

if((indicator

该帧被认为是由谐波模型编码的。用增益g

相反,如果该帧的周期性的指示符小于或等于阈值,则假设正常模型执行量化和算术编码以利用消耗比特B

5.3.3.2.8.1.9在基于上下文的算术编码中使用谐波信息

对于基于上下文的算术编码,所有区域被分为两类。一类是尖峰部分并且包括以谐波尖峰τ

其他样本属于正常部分或谷部分。谐波尖峰部分可以由谐波间隔和间隔的整数倍来指定。算术编码针对尖峰区域和谷区域使用不同的上下文。

为了便于描述和实现,谐波模型使用以下索引序列:

ip=(pi,hi),pi和hi的级联(33)

在禁用的谐波模型的情况下,这些序列是pi=( ),并且hi=ip=(0,...,L

5.3.3.2.8.2基于包络的算术编码器

在MDCT域中,利用感知模型W(z)对谱行进行加权,使得可以用相同的精确度来量化每行。各频谱行的方差遵循用感知模型加权的线性预测器A

5.3.3.2.8.2.1包络缩放

我们将假设频谱行x

这种频谱行的熵以及因此比特消耗为bits

这对于b

于是,频谱行的方差是

我们的目标是当我们用算术编码器对频谱的所有行进行编码时,比特消耗匹配预定义的等级B,即

一旦包络形状b

5.3.3.2.8.2.2量化速率循环

假设x

并且对于

因此,在理想情况下,这两种情况的比特消耗是

通过预先计算项

然后可以通过双区段(bi-section)搜索来应用速率循环,其中我们用因子ρ调整频谱行的缩放,并计算频谱的比特消耗ρxk,直到我们足够接近期望的比特率。注意,比特消耗的上述理想情况值不一定与最终的比特消耗完全一致,因为算术写译码器在有限精度近似的情况下工作。因此,该速率循环依赖于比特消耗的近似,但具有在计算上有效的实现的益处。

当确定了最佳缩放σ时,可以用标准算术编码器对频谱进行编码。将被量化为值

并且将

xk≠0的符号将用一个另外的比特来编码。

观察到算术编码器必须以定点实现来操作,使得上述间隔在所有平台上都是比特确切的。因此,到算术编码器的所有输入,包括线性预测模型和加权滤波器,在整个系统中都必须以定点实现。

5.3.3.2.8.2.3概率模型导出和编码

当确定了最佳缩放σ时,可以用标准算术编码器对频谱进行编码。将被量化为值

并且将

xk≠0的符号将用一个另外的比特来编码。

5.3.3.2.8.2.4基于包络的算术编码中的谐波模型

在基于包络的算术编码的情况下,可以使用谐波模型来增强算术编码。使用与基于上下文的算术编码中类似的搜索过程来估计MDCT域中的谐波之间的间隔。然而,如图19所示,谐波模型与LPC包络相结合地使用。根据谐波分析的信息对包络的形状进行渲染。

将频率数据样本中的k处的谐波形状定义为

当τ-4≤k≤τ+4时,(43)

否则Q(k)=1.0,其中τ表示第U个谐波的中心位置。

h和σ是每个谐波的取决于单元间隔的高度和宽度,如下所示,

h=2.8(1.125-exp(-0.07·T

σ=0.5(2.6-exp(-0.05·T

当间隔变得更大时,高度和宽度变得更大。

用k处的谐波形状Q(k)将频谱包络S(k)修改为

S(k)=S(k)·(1+g

其中对于通用模式总是将谐波分量的增益g

5.3.3.2.9全局增益编码

5.3.3.2.9.1优化全局增益

根据经量化和未经量化的MDCT系数计算最佳全局增益g

5.3.3.2.9.2全局增益的量化

为了传输到译码器,最佳全局增益g

根据子条款6.2.2.3.3中的定义获得经去量化的全局增益

5.3.3.2.9.3残差编码

残差量化是细化第一SQ级的细化量化层。它利用最终未使用的比特target_bits-nbbits,其中nbbits是由熵编码器消耗的比特的数量。残差量化采用贪婪策略而不进行熵编码,以便在比特流达到期望大小时停止编码。

残差量化可以通过两种手段来细化第一量化。第一手段是全局增益量化的细化。仅针对处于或高于13.2kbps的速率进行全局增益细化。最多为其分配三个附加比特。从n=0开始顺序地细化经量化的增益

write_bit(0)

else then

write_bit(1)

第二细化手段包括针对每行重新量化经量化的频谱行。首先,用1比特残差量化器来处理非零的经量化行:

write_bit(0)

else then

write_bit(1)

最后,如果比特剩余,则考虑并且在3个等级上量化归零行。在残差量化器设计中考虑具有死区的SQ的取整偏移:

fac_z=(1-0.375)·0.33

write_bit(0)

else then

write_bit(1)

write_bit((1+sgn(X[k]))/2)

5.3.3.2.10噪声填充

在译码器侧上,应用噪声填充来填充MDCT频谱中系数已经被量化为零的间隙。噪声填充将伪随机噪声插入到该间隙中,从频点k

5.3.3.2.10.1噪声填充倾斜

为了补偿LPC倾斜,计算倾斜补偿因子。对于低于13.2kbps的比特率,倾斜补偿从直接形式的经量化的LP系数

5.3.3.2.10.2噪声填充起始频点和停止频点

噪声填充起始频点和停止频点被计算如下:

5.3.3.2.10.3噪声转变宽度

在噪声填充区段的每一侧,将转变淡出应用于所插入的噪声。转变的宽度(频点的数量)被定义为:

其中HM表示谐波模型被用于算数写译码器,并且previous表示前一个写译码器模式。

5.3.3.2.10.4噪声区段的计算

确定噪声填充区段,其是MDCT频谱的k

其中k

5.3.3.2.10.5噪声因子的计算

根据应用了噪声填充的频点的未经量化的MDCT系数来计算噪声因子。

如果噪声转变宽度w

对于每个区段,根据未经量化的MDCT系数计算误差值,从而应用全局增益、倾斜补偿和转变:

基于每个区段的宽度来计算该区段的权重:

然后将噪声因子计算如下:

5.3.3.2.10.6噪声因子的量化

为了传输,量化噪声因子以获得3比特索引:

5.3.3.2.11智能间隙填充

智能间隙填充(IGF)工具是用于填充频谱中的间隙(零值区域)的增强型噪声填充技术。这些间隙可能由于编码处理中的粗略量化而发生,在该编码处理中给定频谱的大部分可能被设置为零以满足比特约束。然而,利用IGF工具,在接收器侧(RX)上利用在发送侧(TX)上所计算的参数化信息来重建这些丢失的信号部分。仅在TCX模式有效的情况下才使用IGF。

所有IGF操作点见下表6:

表6:IGF应用模式

在发送侧上,IGF使用复值或实值TCX频谱来计算比例因子频带上的等级。另外,使用频谱平坦度测量和波峰因子来计算频谱白化指数。算术编码器用于无噪声编码和到接收器(RX)侧的有效传输。

5.3.3.2.11.1 IGF辅助函数

5.3.3.2.11.1.1用转变因子来映射值

如果存在从CELP到TCX编码(isCelpToTCX=true)的转变或者如果TCX 10帧被发信号通知(isTCX10=true),则TCX帧长度可能改变。在帧长度改变的情况下,与帧长度相关的所有值都使用用函数tF来映射:

其中n是自然数,例如比例因子频带偏移,并且f是转变因子,见表11。

5.3.3.2.11.1.2 TCX功率谱

用下式来计算当前TCX帧的功率谱P∈P

P(sb)∶=R(sb)

其中n是实际TCX窗口长度,R∈P

5.3.3.2.11.1.3频谱平坦度测量函数SFM

设P∈P

用下式来定义通过IGF施加的SFM函数:

SFM:P

其中n是实际TCX窗口长度,并且p用下式来定义:

5.3.3.2.11.1.4波峰因子函数CREST

设P∈P

用下式来定义通过IGF施加的CREST函数:

CREST:P

其中n是实际TCX窗口长度,并且E

5.3.3.2.11.1.5映射函数hT

用下式来定义hT映射函数:

hT:P×N→(0,1,2),

其中s是所计算的频谱平坦度值,并且k是范围中的噪声频带。关于阈值ThM

表7:nT、ThM和ThS的白化的阈值

5.3.3.2.11.1.6空

5.3.3.2.11.1.7 IGF比例因子表

IGF比例因子表可用于其中应用IGF的所有模式。

表8:比例因子频带偏移表

上述表8参考TCX 20窗口长度和转变因子1.00。

对于所有窗口长度,应用下面的重新映射:

t(k)∶=tF(t(k),f),k=0,1,2,…,nB(72)

其中tF是在子条款5.3.3.2.11.1.1中所描述的转变因子映射函数。

5.3.3.2.11.1.8映射函数m

表9:IGF最小源子频带minSb

针对每种模式来定义映射函数,以便从IGF范围中的给定目标行访问源行。

表10:每种模式的映射函数

用下式来定义映射函数m1:

m1(x)∶=minSb+2t(0)-t(nB)+(x-t(0)),对于t(0)≤x

用下式来定义映射函数m2a:

用下式来定义映射函数m2b:

用下式来定义映射函数m3a:

/>

用下式来定义映射函数m3b:

用下式来定义映射函数m3c:

用下式来定义映射函数m3d:

用下式来定义映射函数m4:

值f是适当的转变因子(见表11),并且在子条款5.3.3.2.11.1.1中描述了tF。

要注意,如在子条款5.3.3.2.11.1.1中描述的,应该已经用函数tF对所有值t(0),t(1),…,t(nB)进行了映射。在表8中定义了nB的值。

这里所描述的映射函数将在文本中被称为“映射函数m”,从而假定针对当前模式选择了合适的函数。

5.3.3.2.11.2 IGF输入元素(TX)

IGF编码器模块预期将下面的向量和标志作为输入:

R:带有当前TCX频谱的实部X

I:带有当前TCX频谱的虚部X

P:带有TCX功率谱的值X

isTransien t:标志,发信号通知当前帧是否包含瞬变,见子条款5.3.2.4.1.1

isTCX10:标志,发信号通知TCX 10帧

isTCX20:标志,发信号通知TCX 20帧

isCelpToTCX:标志,发信号通知CELP到TCX转变;通过测试最后的帧是否是CELP来生成标志

isIndepFlag:标志,发信号通知当前帧独立于前一帧

IGF允许通过标志isTCX10、isTCX20和isCelpToTCX发信号通知的、表11中所列举的下列组合。

表11:TCX转变、转变因子f、窗口长度n

/>

5.3.3.2.11.3在发送(TX)侧上的IGF函数

所有函数声明都假定输入元素是逐帧提供的。唯一的例外是两个连续的TCX 10帧,其中第二帧依赖于第一帧被进行编码。

5.3.3.2.11.4 IGF比例因子计算

该条款描述如何在发送(TX)侧上计算IGF比例因子g(k),k=0,1,…nB-1。

5.3.3.2.11.4.1复值计算

假如TCX功率谱P可用,则使用P来计算IGF比例因子值g:

并且设m:N→N

其中应该已经用函数tF对t(0),t(1),…,t(nB)进行了映射(见子条款5.3.3.2.11.1.1)并且nB是IGF比例因子频带的数量(见表8)。

用下式来计算g(k):

并且用下式将g(k)限制到范围

g(k)=max(0,g(k)),(85)

在使用子条款5.3.3.2.11.8中描述的算术编码器进行进一步的无损压缩之后,这些值g(k),k=0,1,…,nB-1将被传送给接收器(RX)侧。

5.3.3.2.11.4.2实值计算

如果TCX功率谱不可用,则计算:

其中应该已经用函数tF对t(0),t(1),…,t(nB)进行了映射(见子条款5.3.3.2.11.1.1),并且nB是频带的数量(见表8)。

用下式来计算g(k):

并且用下式将g(k)限制到范围

g(k)=max(0,g(k)),

g(k)=min(91,g(k)).(88)

在使用子条款5.3.3.2.11.8中描述的算术编码器进行进一步的无损压缩之后,这些值g(k),k=0,1,…,nB-1将被传送给接收器(RX)侧。

5.3.3.2.11.5 IGF音调屏蔽

为了确定应该用内核编码器传送哪些频谱分量,计算音调屏蔽。因此,识别所有显著的频谱内容,而非常适合通过IGF进行参数编码的内容被量化为零。

5.3.3.2.11.5.1 IGF音调屏蔽计算

假如TCX功率谱P不可用,则检测高于t(0)的所有频谱内容:

R(tb)∶=0,t(0)≤tb

其中R是应用NTS之后的实值TCX频谱,并且n是当前TCX窗口长度。

假如TCX功率谱P可用,则计算:

其中t(0)是IGF范围中的第一个频谱行。

给定E

初始化last和next:

5.3.3.2.11.6 IGF频谱平坦度计算

表12:拼块的数量nT和拼块宽度wT

对于IGF频谱平坦度计算,需要尺寸均为nT的两个静态阵列prevFIR和prevIIR来随着帧的变化保持过滤器状态。另外,需要静态标志wasTransient来保存来自前一帧的输入标志isTransien t的信息。

5.3.3.2.11.6.1重置滤波器状态

向量prevFIR和prevIIR是IGF模块中的尺寸均为nT的静态阵列,并且用零来初始化这两个阵列:

应该在以下情况下进行这种初始化:

-写译码器启动

-任何比特流切换

-任何写译码器类型切换

-从CELP转变到TCX,例如isCelpToTCX=true

-如果当前帧具有瞬时属性,例如isTransient=true

5.3.3.2.11.6.2重置当前的白化等级

在以下情况下,应该针对所有拼块用零来初始化向量currWLevel,

currWlevel(k)=0,k-0,1,…,nT-1(92)

-写译码器启动

-任何比特流切换

-任何写译码器类型切换

-从CELP转变到TCX,例如isCelpToTCX=true

5.3.3.2.11.6.3频谱平坦度指数的计算

应该连续地执行下面的步骤1)到步骤4):

1)更新先前的等级缓冲器并且初始化当前等级:

假如prevIsTransient或isTransien t为真,则应用

currWLevel(k)=1,k=0,1,…,nT-1(94)

否则,如果功率谱P可用,则计算

其中

其中SFM是在子条款5.3.3.2.11.1.3中描述的频谱平坦度测量函数,并且CREST是在子条款5.3.3.2.11.1.4中描述的波峰因子函数。

计算:

在计算向量s(k)之后,用下式来更新滤波器状态:

prevFIR(k)=tmp(k),k=0,1,…,nT-1

prevIIR(k)=s(k),k=0,1,…,nT-1

prevIsTransient=isTransient(98)

2)将映射函数hT:N×P→N应用于所计算的值,以获得白化等级指标向量currWLevel。在子条款5.3.3.2.11.1.5中对映射函数hT:N×P→N进行了描述。

currWLevel(k)=hT(s(k),k),k=0,1,…,nT-1(99)

3)根据所选择的模式(见表13),应用下面的最终映射:

currWLevel(nT-1):=currWLevel(nT-2)(100)

表13:用于步骤4)映射的模式

在执行步骤4)之后,白化等级指标向量currWLeve l已经准备好传输。

5.3.3.2.11.6.4 IGF白化等级的编码

每拼块使用1或2个比特来传送在向量currWLevel中定义的IGF白化等级。所需的总比特的确切数量取决于包含在currWLevel中的实际值和isIndep标志的值。在以下伪代码中描述了详细处理:

/>

其中,向量prevWLevel包含来自前一帧的白化等级,并且函数encode_whitening_level照管白化等级currWLevel(k)到二进制代码的实际映射。根据以下伪代码来实现该函数:

5.3.3.2.11.7 IGF时间平坦度指示符

IGF的重建信号的时间包络根据所传送的关于时间包络平坦度的信息在接收器(RX)侧被平坦化,该信息是IGF平坦度指示符。

将时间平坦度作为频域中的线性预测增益来测量。首先,执行当前TCX频谱的实部的线性预测,然后计算预测增益ηigf:

其中k

根据预测增益ηigf和子条款5.3.3.2.2.3中描述的预测增益ηtns,将IGF时间平坦度指示符标志isIgfTemFlat定义为

5.3.3.2.11.8 IGF无噪声编码

用算术编码器对IGF比例因子向量g进行无噪声编码,以便将向量的有效表示写入比特流。

该模块使用来自基础设施的通用原始算术编码器函数,这些函数由内核编码器提供。所使用的函数是:ari_encode_14bits_sign(bit),其对值bit进行编码;ari_encode_14bits_ext(value,cumulativeFrequencyTable),其使用累积频率表cumulativeFrequencyTable对来自27个符号(SYMBOLS_IN_TABLE)的字母的值value进行编码;ari_start_encoding_14bits(),其对算术编码器进行初始化;以及ari_finish_encoding_14bits(),其对算术编码器进行最终化。

5.3.3.2.11.8.1 IGF独立标志

假如标志isIndepFlag具有值true,则重置算术编码器的内部状态。可以仅在TCX10窗口(见表11)被用于两个连续的TCX 10帧中的第二帧的模式中将该标志设置为false。

5.3.3.2.11.8.2IGF全零标志

IGF全零标志用信号通知所有的IGF比例因子都为零:

首先将allZero标志写入比特流。如果该标志为true,则编码器状态被重置并且没有另外的数据被写入比特流,否则将经算术编码的比例因子向量g跟随在该比特流中。

5.3.3.2.11.8.3IGF算术编码辅助函数

5.3.3.2.11.8.3.1重置函数

算术编码器状态由t∈{0,1}和prev向量组成,该prev向量表示从前一帧中保留的向量g的值。当对向量g进行编码时,t的值0意味着没有可用的前一帧,因此未定义且不使用prev。t的值1意味着存在可用的前一帧,因此prev具有有效数据并且它被使用,仅在TCX10窗口(参见表11)被用于两个连续的TCX 10帧中的第二帧的模式中是这种情况。为了重置算术编码器状态,设置t=0就足够了。

如果帧具有isIndepFla g设置,则在对比例因子向量g进行编码之前重置编码器状态。注意,t=0且isIndepFlag=false的组合是有效的,并且可以在第一帧具有allZero=1时针对两个连续的TCX 10帧中的第二帧发生。在这种特定情况下,帧不使用来自前一帧的上下文信息(prev向量),因为t=0,并且实际上将它作为独立帧被进行编码。

5.3.3.2.11.8.3.2 arith_encode_bits函数

arith_encode_bits函数通过一次写入一个比特来对长度为nBits个比特的无符号整数x进行编码。

5.3.3.2.11.8.3.2保存和恢复编码器状态函数

使用函数iisIGFSCFEncoderSaveContextState来实现编码器状态的保存,该函数将t和prev向量分别复制到tSave和prevSave向量中。使用互补函数iisIGFSCFEncoderRestoreContextState来恢复编码器状态,该函数将tSave和prevSave向量分别复制回t和prev向量中。

5.3.3.2.11.8.4 IGF算术编码

请注意,算术编码器应该能够仅对比特进行计数,例如,执行算术编码而不将比特写入比特流。如果通过使用被设置为false的参数doRealEncoding用计数请求来调用算术编码器,则算术编码器的内部状态应该在调用顶层函数iisIGFSCFEncoderEncode之前被保存,并且在调用之后由调用者进行恢复。在这种特定情况下,由算术编码器内部生成的比特不被写入比特流。

arith_encode_residual函数使用累积频率表cumulativeFrequencyTable和表偏移tableOffset对整数值预测残差x进行编码。表偏移tableOffset用于在编码之前调整值x,以便最小化使用转义编码来编码极小或极大的值(这是效率稍微更低的)的总概率。使用累积频率表cumulativeFrequencyTable和字母大小SYMBOLS_IN_TABLE=27直接对位于MIN_ENC_SEPARATE=-12与MAX_ENC_SEPARATE=12之间(包括该值)的值进行编码。

对于上述SYMBOLS_IN_TABLE符号的字母,值0和SYMBOLS_IN_TABLE-1被保留作为转义码,以指示值太小或太大而不适合默认间隔。在这些情况下,值extra指示该值的位置在分布的末端之一中。如果值extra在范围{0,…,14}内,则使用4个比特对其进行编码,或者如果值extra在范围{15,…,15+62}内,则使用值为15的4个比特后跟额外的6个比特来对其进行编码,或者如果值extra大于或等于15+63,则使用值为15的4个比特后跟值为63的额外的6个比特后跟额外的7个比特来对其进行编码。这三种情况中的最后一种主要用于避免特意构造的人工信号可能在编码器中产生意外大的残差值条件的少见情况。

/>

函数encode_sef_vector对比例因子向量g进行编码,该比例因子向量g包含nB个整数值。构成编码器状态的值t和prev向量被用作该函数的附加参数。注意,顶层函数iisIGFSCFEncoderEncode在调用函数encode_sef_vector之前必须调用公共算术编码器初始化函数ari_start_encoding_14bits,并且之后还调用算术编码器最终化函数ari_done_encoding_14bits。

函数quant_ctx被用来通过将上下文值ctx限制到{-3,…,3}来量化该上下文值ctx,并且该函数被定义为:

在下面的表14中列出了在来自伪代码的注释中所指示的用于计算上下文值的符号名称的定义:

表14:符号名称的定义

/>

根据t的值并且还根据值在向量g中的位置f,在上述函数中存在五种情况:

-当t=0并且f=0时,通过将独立帧的第一比例因子划分成使用累积频率表cf_se00来编码的最高有效位和直接进行编码的两个最低有效位来对该第一比例因子进行编码。

-当t=0并且f=1时,使用累积频率表cf_se01来对独立帧的第二比例因子进行编码(作为预测残差)。

-当t=0并且f≥2时,使用由经量化的上下文值ctx确定的累积频率表cf_se02[CTX_OFFSET+ctx]对独立帧的第三比例因子及后续的比例因子进行编码(作为预测残差)。

-当t=1并且f=0时,使用累积频率表cf_se10对从属帧的第一比例因子进行编码(作为预测残差)。

-当t=1并且f≥1时,使用由量化的上下文值ctx_t和ctx_f确定的累积频率表cf_se11[CTX_OFFSET+ctx_t][CTX_OFFSET+ctx_f]对从属帧的第二比例因子及后续的比例因子进行编码(作为预测残差)。

请注意,预定义的累积频率表cf_se01、cf_se02以及表偏移cf_off_se01、cf_off_se02取决于当前操作点并隐式地取决于比特率,并且在编码器初始化期间针对每个给定的操作点从可用选项的集合中选择。在从属的TCX 10帧的情况下(当t=1时),累积频率表cf_se00对于所有操作点是公用的,并且累积频率表cf_se10和cf_se11以及对应的表偏移cf_off_se10和cf_off_se11也是公用的,但它们仅用于与大于或等于48kbps的比特率对应的操作点。

5.3.3.2.11.9 IGF比特流写入器

经算术编码的IGF比例因子、IGF白化等级和IGF时间平坦度指示符经由比特流被连续地传输给译码器侧。IGF比例因子的编码在子条款5.3.3.2.11.8.4中进行了描述。IGF白化等级按照子条款5.3.3.2.11.6.4中所呈现的被进行编码。最后,将表示为一个比特的IGF时间平坦度指示符标志写入比特流。

在TCX20帧(即(isTCX20=true))以及没有向比特流写入器发信号通知计数请求的情况下,比特流写入器的输出被直接馈送给比特流。在两个子帧在一个20ms的帧内被依赖性地编码的TCX10帧(isTCX10=true)的情况下,比特流写入器的针对每个子帧的输出被写入临时缓冲器,从而产生包含比特流写入器的针对各个子帧的输出的比特流。最后将该临时缓冲器的内容写入比特流。

可以通过以下实施例进一步实现本发明,这些实施例可以与本文描述和要求保护的任何示例和实施例相组合:

1.一种用于对具有下频带和上频带的音频信号进行编码的音频编码器,包括:

检测器(802),用于检测所述音频信号的所述上频带中的尖峰频谱区域;

整形器(804),用于使用所述下频带的整形信息来对所述下频带进行整形,并且用于使用所述下频带的整形信息的至少一部分来对所述上频带进行整形,其中,所述整形器(804)被配置为额外地衰减所述上频带中的检测到的尖峰频谱区域中的频谱值;以及

量化器和编码器级(806),用于对经整形的下频带和经整形的上频带进行量化,并且用于对来自经整形的下频带和经整形的上频带的经量化的频谱值进行熵编码。

2.根据实施例1所述的音频编码器,还包括:

线性预测分析器(808),用于通过分析所述音频信号的时间帧中的音频样本的块来导出所述时间帧的线性预测系数,所述音频样本被频带限制到所述下频带,

其中,所述整形器(804)被配置为使用所述线性预测系数作为所述整形信息来对所述下频带进行整形,以及

其中,所述整形器(804)被配置为使用从被频带限制到所述下频带的音频样本的块中导出的所述线性预测系数的至少一部分来对所述音频信号的所述时间帧中的所述上频带进行整形。

3.根据实施例1或2所述的音频编码器,其中,所述整形器(804)被配置为使用从所述音频信号的所述下频带中导出的线性预测系数来计算所述下频带的多个子频带的多个整形因子,

其中,所述整形器(804)被配置为使用针对所述下频带的子频带所计算的整形因子来在所述下频带中对对应子频带中的频谱系数进行加权,并且

所述整形器(804)被配置为使用针对所述下频带的子频带中的一个所计算的整形因子来对所述上频带中的频谱系数进行加权。

4.根据实施例3所述的音频编码器,其中,所述整形器(804)被配置为使用针对所述下频带的最高子频带所计算的整形因子来对所述上频带的频谱系数进行加权,所述最高子频带具有所述下频带的子频带的所有中心频率中的最高中心频率。

5.根据前述实施例中任一项所述的音频编码器,

其中,所述检测器(802)被配置为当一组条件中的至少一个为真时确定所述上频带中的尖峰频谱区域,所述一组条件至少包括以下项:

低频带振幅条件(1102)、尖峰距离条件(1104)以及尖峰振幅条件(1106)。

6.根据实施例5所述的音频编码器,其中,所述检测器(802)被配置为针对所述低频带振幅条件确定:

所述下频带中的最大频谱振幅(1202);

所述上频带中的最大频谱振幅(1204),

其中,当用大于零的预定数字加权的、所述下频带中的最大频谱振幅大于所述上频带中的最大频谱振幅(1204)时,所述低频带振幅条件(1102)为真。

7.根据实施例6所述的音频编码器,

其中,所述检测器(802)被配置为在应用由所述整形器(804)应用的整形操作之前检测所述下频带中的最大频谱振幅或所述上频带中的最大频谱振幅,或者其中,所述预定数字在4与30之间。

8.根据实施例5至7中任一项所述的音频编码器,

其中,所述检测器(802)被配置为针对所述尖峰距离条件确定:

所述下频带中的第一最大频谱振幅(1206);

所述第一最大频谱振幅距边界频率的第一频谱距离,所述边界频率在所述下频带的中心频率(1302)与所述上频带的中心频率(1304)之间;

所述上频带中的第二最大频谱振幅(1306);

从所述边界频率到所述第二最大频谱振幅的、所述第二最大频谱振幅的第二频谱距离(1308),

其中,当用所述第一频谱距离加权并且用大于1的预定数字加权的所述第一最大频谱振幅大于用所述第二频谱距离加权的所述第二最大频谱振幅时,所述尖峰距离条件(1104)为真(1310)。

9.根据实施例8所述的音频编码器,

其中,所述检测器(802)被配置为在所述整形器(804)的整形操作之后在不进行额外衰减的情况下确定所述第一最大频谱振幅或所述第二最大频谱振幅,或者

其中,所述边界频率是所述下频带中的最高频率或者是所述上频带中的最低频率,或者

其中,所述预定数字在1.5与8之间。

10.根据实施例5至9中任一项所述的音频编码器,

其中,所述检测器(802)被配置为确定所述下频带的一部分中的第一最大频谱振幅(1402),所述一部分从所述下频带的预定起始频率延伸直到所述下频带的最大频率,所述预定起始频率大于所述下频带的最小频率,并且

所述检测器(802)被配置为确定所述上频带中的第二最大频谱振幅(1404),

其中,当所述第二最大频谱振幅大于用大于或等于1的预定数字加权的所述第一最大频谱振幅时,所述尖峰振幅条件(1106)为真。

11.根据实施例10所述的音频编码器,

其中,所述检测器(802)被配置为在由所述整形器(804)应用的整形操作之后在不进行所述额外衰减的情况下确定所述第一最大频谱振幅或所述第二最大频谱振幅,或者其中,所述预定起始频率比所述下频带的所述最小频率高至少所述下频带的10%,或者其中,所述预定起始频率位于等于所述下频带的最大频率的一半的频率处,所述预定起始频率的容差为所述最大频率的一半的正/负百分之10,或者

其中,所述预定数字取决于要由所述量化器/编码器级提供的比特率,以使得对于较高的比特率,所述预定数字较高,或者

其中,所述预定数字在1.0与5.0之间。

12.根据实施例6至11中任一项所述的音频编码器,

其中,所述检测器(802)被配置为仅在所述三个条件中的至少两个条件为真或所述三个条件为真时确定所述尖峰频谱区域。

13.根据实施例6至12中任一项所述的音频编码器,

其中,所述检测器(802)被配置为将实频谱的频谱值的绝对值、复频谱的模、实频谱的频谱值的任何幂或复频谱的模的任何幂确定为所述频谱振幅,所述幂大于1。

14.根据前述实施例中任一项所述的音频编码器,

其中,所述整形器(804)被配置为基于所述上频带中的最大频谱振幅或基于所述下频带中的最大频谱振幅来衰减检测到的尖峰频谱区域中的至少一个频谱值。

15.根据实施例14所述的音频编码器,

其中,所述整形器(804)被配置为确定所述下频带的一部分中的最大频谱振幅,所述一部分从所述下频带的预定起始频率延伸直到所述下频带的最大频率,所述预定起始频率大于所述下频带的最小频率,其中,所述预定起始频率优选地比所述下频带的最小频率高至少所述下频带的10%,或者其中,所述预定起始频率优选地位于等于所述下频带的最大频率的一半的频率处,所述预定起始频率的容差为所述最大频率的一半的正/负百分之10。

16.根据实施例14或15所述的音频编码器,

其中,所述整形器(804)被配置为使用衰减因子来额外地衰减所述频谱值,所述衰减因子根据所述下频带中的最大频谱振幅(1602)乘以(1606)大于或等于1的预定数字并且除以所述上频带中的最大频谱振幅(1604)来导出。

17.根据前述实施例中任一项所述的音频编码器,

其中,所述整形器(804)被配置为基于以下项来对检测到的尖峰频谱区域中的频谱值进行整形:

使用所述下频带的整形信息的所述至少一部分的第一加权操作(1702、804a),以及使用衰减信息的第二后续加权操作(1704、804b);或者

使用所述衰减信息的第一加权操作,以及使用所述下频带的整形信息的所述至少一部分的第二后续加权信息,或者

使用从所述衰减信息以及从所述下频带的整形信息的所述至少一部分导出的组合加权信息的单个加权操作。

18.根据实施例17所述的音频编码器,

其中,所述下频带的加权信息是整形因子的集合,每个整形因子与所述下频带的一个子频带相关联,

其中,在所述较高频带的整形操作中所使用的所述下频带的加权信息的所述至少一部分是与所述下频带的特定子频带相关联的整形因子,所述特定子频带具有所述下频带中的所有子频带的最高中心频率,或者,

其中,所述衰减信息是应用于以下项的衰减因子:检测到的频谱区域中的至少一个频谱值,或检测到的频谱区域中的所有频谱值,或已由所述检测器(802)针对所述音频信号的时间帧检测到所述尖峰频谱区域的所述上频带中的所有频谱值,或者

其中,所述整形器(804)被配置为:当所述检测器(802)并未检测到所述音频信号的时间帧的所述上频带中的任何尖峰频谱区域时,执行对所述下频带和所述上频带的整形而不进行任何额外衰减。

19.根据前述实施例中任一项所述的音频编码器,

其中,所述量化器和编码器级(806)包括速率循环处理器,所述速率循环处理器用于估计量化器特性以便获得经熵编码的音频信号的预定比特率。

20.根据实施例19所述的音频编码器,其中,所述量化器特性是全局增益,

其中,所述量化器和编码器级(806)包括:

加权器(1502),用于用同一全局增益对所述下频带中的经整形的频谱值和所述上频带中的经整形的频谱值进行加权,

量化器(1504),用于量化用所述全局增益加权的值;以及

熵编码器(1506),用于对经量化的值进行熵编码,其中,所述熵编码器包括算术编码器或霍夫曼编码器。

21.根据前述实施例中任一项所述的音频编码器,还包括:

音调屏蔽处理器(1012),用于在所述上频带中确定要量化和熵编码的第一组频谱值,以及要由间隙填充过程参数化地编码的第二组频谱值,其中,所述音调屏蔽处理器被配置为将所述第二组频谱值设置为零值。

22.根据前述实施例中任一项所述的音频编码器,还包括:

公共处理器(1002);

频域编码器(1012、802、804、806);以及

线性预测编码器(1008),

其中,所述频域编码器包括所述检测器(802)、所述整形器(804)以及所述量化器和编码器级(806),以及

其中,所述公共处理器被配置为计算要由所述频域编码器和所述线性预测编码器使用的数据。

23.根据实施例22所述的音频编码器,

其中,所述公共处理器被配置为针对所述音频信号的时间帧,对所述音频信号进行重新采样(1006),以获得经重新采样的音频信号,所述经重新采样的音频信号被频带限制到所述下频带,以及

其中,所述公共处理器(1002)包括线性预测分析器(808),所述线性预测分析器用于通过分析所述音频信号的时间帧中的音频样本的块来导出所述时间帧的线性预测系数,所述音频样本被频带限制到所述下频带,或者

其中,所述公共处理器(1002)被配置为控制所述音频信号的时间帧由所述线性预测编码器的输出或由所述频域编码器的输出来表示。

24.根据实施例22或23所述的音频编码器,

其中,所述频域编码器包括时间频率转换器(1012),所述时间频率转换器用于将所述音频信号的时间帧转换成包括所述下频带和所述上频带在内的频率表示。

25.一种用于对具有下频带和上频带的音频信号进行编码的方法,包括:

检测(802)所述音频信号的所述上频带中的尖峰频谱区域;

使用所述下频带的整形信息来对所述音频信号的所述下频带进行整形(804),并且使用所述下频带的整形信息的至少一部分来对所述音频信号的所述上频带进行整形(1702),其中,对所述上频带的整形包括对所述上频带中的检测到的尖峰频谱区域中的频谱值进行额外衰减(1704)。

26.一种计算机程序,用于当在计算机或处理器上运行时执行根据实施例25所述的方法。

相关技术
  • 产生频率增强音频信号的译码器和产生编码信号的编码器
  • 用于对音频信号进行编码的音频编码器、用于对音频信号进行编码的方法以及考虑上频带中的检测到的尖峰频谱区域的计算机程序
  • 用于对音频信号中的噪声进行估计的方法、噪声估计器、音频编码器、音频解码器、以及用于传输音频信号的系统
技术分类

06120116509929