用于在CELP编解码器中高效地分配比特预算的方法和设备与流程

文档序号:20686738发布日期:2020-05-08 18:53阅读:492来源:国知局
本公开涉及从传输或存储以及合成声音信号(例如语音或音频信号)的角度对该声音信号进行数字编码的技术。编码器使用比特预算将声音信号转换成数字比特流。解码器或合成器然后对传输或存储的比特流进行操作,并将其转换回声音信号。编码器和解码器/合成器通常被称为编解码器。更具体地,但不排他地,本公开涉及用于在编解码器中高效分配比特预算的方法和设备。
背景技术
::以低比特率编码声音的最佳技术之一是码激励线性预测(code-excitedlinearprediction,celp)编码。在celp编码中,声音信号被采样,并且采样的声音信号在通常称为帧的l个样本的连续块中被处理,其中l是预定数目,典型地对应于20ms。celp背后的主要原理被称为“合成分析(analysis-by-synthesis)”,其中可能的解码器输出在编码过程中被合成,然后与原始声音信号进行比较。这种搜索使输入声音信号和合成声音信号在感知加权域中的均方误差最小化。在基于celp的编码中,声音信号典型地通过全极点数字滤波器1/a(z)对激励进行滤波来合成,该滤波器通常被称为合成滤波器。滤波器a(z)通过线性预测(linearprediction,lp)来估计,并表示声音信号样本之间的短期相关性。lp滤波器系数通常每帧计算一次。在celp编解码器中,帧被进一步分成几个(通常是两(2)到五(5)个)子帧来编码激励,该激励典型地由顺序搜索的两个部分组成。然后它们各自的增益可以被联合量化。在下面的描述中,子帧的数量被表示为n,并且特定子帧的索引被表示为n,其中n=0,…,n-1。激励的第一部分通常从自适应码本中选择。自适应码本激励部分通过在过去的激励中搜索与当前正在被编码的段最相似的段来利用有声语音信号的准周期性(或长期相关性)。自适应码本激励部分由自适应码本索引(即,对应于基音周期的延迟参数)和适当的自适应码本增益来描述,二者都被发送到解码器或被存储以重构与编码器中相同的激励。激励的第二部分通常是从创新码本(innovationcodebook)中选择的创新信号。创新信号对先前语音段和当前编码段之间的演变(差异)进行建模。激励的第二部分由从创新码本中选择的码矢量的索引和创新码本增益(这也被称为固定码本索引和固定码本增益)来描述。为了提高编码效率,最近的编解码器(诸如,例如参考文献[1]中描述的g.718和参考文献[2]中描述的evs)基于输入声音信号的分类。基于信号特性,基本celp编码被扩展成几种不同的编码模式。因此,分类需要被传输到解码器或作为信令信息存储。另一种通常高效传输的信令信息是,例如,音频带宽信息。因此,在celp编解码器中,所谓的celp“核心模块”部分可以包括:-lp滤波器系数;-自适应码本;-创新(固定)码本;和-自适应和创新码本增益。大多数最新的celp编解码器基于恒定比特率(constantbitrate,cbr)原则。在cbr编解码器中,编码给定的帧的比特预算在编码期间是恒定的,而与声音信号内容或网络特性无关。为了在给定的恒定比特率下获得尽可能好的质量,比特预算被小心地分配在不同的编码部分当中。实际上,给定的比特率下每编码部分的比特预算通常是固定的,并存储在编解码器rom表中。然而,当编解码器支持的比特率的数量增加时,rom表的长度成比例地增加,并且在这些表中的搜索变得不太高效。在分派给celp核心模块的比特预算甚至在编解码器恒定比特率下也可能波动的复杂编解码器中,大的rom表的问题甚至更加显著。例如,在基于例如输入音频通道的数量、网络反馈、音频带宽、输入信号特性等,来在不同的模块之间分派恒定比特率下的比特预算的复杂的多模块编解码器中,编解码器总比特预算在celp核心模块和其他不同的模块之间分配。这种其他不同的模块的示例可以包括但不限于带宽扩展(bandwidthextension,bwe)、立体声模块、帧错误隐藏(frameerrorconcealment,fec)模块等,它们在本说明书中统称为“辅助编解码器模块”。基于信号特性或网络反馈,保持每辅助模块分派的比特预算可变通常是有利的。此外,辅助编解码器模块可以自适应地打开和关闭。这种可变性通常不会给编码辅助模块带来问题,因为这些模块中的参数数量通常很少。然而,分派给辅助编解码器模块的波动的比特预算导致分派给相对复杂的celp核心模块的波动的比特预算。实际上,以给定的比特率分派给celp核心模块的比特预算通常是通过将编解码器总比特预算减少分派给所有活动的辅助编解码器模块的比特预算(其可以包括编解码器信令比特预算)来获得的。因此,分派给celp核心模块的比特预算可以在相对大的最小和最大比特率范围之间波动,其粒度小到1比特(即,在20ms的帧长度下为0.05kbps)。将rom表条目专用于所有可能的celp核心模块比特率显然是低效的。因此,需要基于有限数量的中间比特率,以精细比特率粒度在不同的模块之间更高效和灵活地分配比特预算。技术实现要素:根据第一方面,本公开涉及一种将比特预算分派给(a)编码声音信号的编码器或(b)解码声音信号的解码器的celp核心模块的多个第一部分的方法,该方法包括:存储比特预算分派表,该比特预算分派表为多个中间比特率中的每一个,指派相应比特预算给第一celp核心模块部分;确定celp核心模块比特率;基于所确定的celp核心模块比特率选择中间比特率中的一个;以及向第一celp核心模块部分分派由比特预算分派表为选择的中间比特率指派的相应比特预算。根据第二方面,提供了一种用于将比特预算分派给(a)编码声音信号的编码器或(b)解码声音信号的解码器的celp核心模块的多个第一部分的设备,该设备包括:存储器,用于存储比特预算分派表,该比特预算分派表为多个中间比特率中的每一个,指派相应比特预算给第一celp核心模块部分;celp核心模块比特率计算器;基于celp核心模块比特率选择中间比特率中的一个的选择器;以及向第一celp核心模块部分分派由比特预算分派表为选择的中间比特率指派的相应比特预算的分派器。根据第三方面,提供了一种用于将比特预算分派给(a)编码声音信号的编码器或(b)解码声音信号的解码器的celp核心模块的多个第一部分的设备,该设备包括:至少一个处理器;以及耦合到处理器并包括非暂时性指令的存储器,该指令在被运行时使得处理器:存储比特预算分派表,该比特预算分派表为多个中间比特率的每一个指派相应比特预算给第一celp核心模块部分;确定celp核心模块比特率;基于所确定的celp核心模块比特率选择中间比特率中的一个;以及向第一celp核心模块部分分派由比特预算分派表为选择的中间比特率指派的相应比特预算。另一方面涉及一种用于将比特预算分派给(a)编码声音信号的编码器或(b)解码声音信号的解码器的celp核心模块的多个第一部分的设备,该设备包括:至少一个处理器;以及耦合到处理器并包括非暂时性指令的存储器,该指令在被运行时使得处理器实施:比特预算分派表,该比特预算分派表为多个中间比特率中的每一个指派相应比特预算给第一celp核心模块部分;celp核心模块比特率计算器;基于celp核心模块比特率选择中间比特率中的一个的选择器;以及向第一celp核心模块部分分派由比特预算分派表为选择的中间比特率指派的相应比特预算的分派器。比特预算分派方法和设备的前述和其他目的、优点和特征将在阅读以下对其的说明性实施例的非限制性描述后变得更加明显,这些描述仅通过参考附图的示例给出。附图说明在附图中:图1是立体声处理和通信系统的示意框图,描述了如以下描述中所公开的比特预算分派方法和设备的可能实施环境;图2是同时示出本公开的比特预算分派方法和设备的框图;和图3是形成本公开的比特预算分派方法和设备的硬件组件的示例配置的简化框图。具体实施方式图1是立体声处理和通信系统100的示意框图,描述了如以下描述中所公开的比特预算分派方法和设备的可能实施环境。应当注意,所提出的比特预算分派方法和设备不限于立体声,而是也可以用于多通道编码或单声道编码。图1的立体声处理和通信系统100支持通过通信链路101传输立体声信号。通信链路101可以包括例如电线或光纤链路。可替代地,通信链路101可以至少部分包括射频链路。射频链路通常支持多个需要共享带宽资源的同时通信,诸如可以在蜂窝电话中发现的。虽然未示出,但是通信链路101可以由处理和通信系统100的单个设备实施中的存储设备代替,该存储设备记录并存储编码的立体声信号以供以后回放。仍然参考图1,例如,一对麦克风102和122产生检测到的原始模拟立体声信号的左声道103和右声道123。如前面的描述中所指出的,声音信号可以特别地但不排他地包括语音和/或音频。原始模拟声音信号的左声道103和右声道123被提供给模数(analog-to-digital,a/d)转换器104,用于将它们转换成原始数字立体声信号的左声道105和右声道125。原始数字立体声信号的左声道105和右声道125也可以被记录并从存储设备(未示出)供应。立体声编码器106对数字立体声信号的左声道105和右声道125进行编码,从而产生编码参数集,这些编码参数在传送到可选的纠错编码器108的比特流107的形式下被多路复用。可选的纠错编码器108,当存在时,在通过通信链路101传输得到的比特流111之前,向比特流107中的编码参数的二进制表示添加冗余。在接收机侧,可选的纠错解码器109利用接收的数字比特流111中的上述冗余信息来检测和纠正在通信链路101上传输期间可能发生的错误,产生具有接收的编码参数的比特流112。立体声解码器110转换在比特流112中的接收的编码参数,用于创建数字立体声信号的合成左声道113和右声道133。在立体声解码器110中重建的数字立体声信号的左声道113和右声道133在数模(digital-to-analog,d/a)转换器115中被转换成模拟立体声信号的合成左声道114和右声道134。模拟立体声信号的合成左声道114和右声道134分别在一对扬声器单元116和136中回放(这对扬声器单元116和136显然可以由耳机代替)。可替代地,来自立体声解码器110的数字立体声信号的左声道113和右声道133也可以被供应并记录在存储设备(未示出)中。作为非限制性示例,根据本公开的比特预算分派方法和设备可以在图1的声音编码器106和解码器110中实施。应当注意,图1可以被扩展以覆盖多通道和/或基于场景的音频和/或独立流编码和解码(例如环绕和高阶环境声)的情况。图2是同时示出根据本公开的比特预算分派方法200和设备250的框图。这里,应当注意,除非另有说明,否则比特预算分派方法200和设备250在逐帧的基础上操作,并且以下描述涉及正被编码的声音信号的连续帧中的一帧。在图2中,考虑了celp核心模块编码,其比特预算由于用于编码辅助编解码器模块的波动的比特数而在帧与帧之间波动。此外,比特预算在不同的celp核心模块部分之间的分配在编码器106和解码器110处对称地完成,并且基于分派给celp核心模块的编码的比特预算。以下描述呈现了使用通用编码模式在基于evs的编解码器中实施的非限制性示例。基于evs的编解码器是基于evs标准的编解码器,如参考文献[2]中所述,其中经过修改以允许其他celp核心比特率或编解码器改进。本公开中的基于evs的编解码器在使用诸如元数据、立体声或多通道编码的辅助编码模块的编码框架(这在下文中被称为扩展evs编解码器)内使用。类似于本公开中描述的那些原理的原理可以应用于基于evs的编解码器中的其他编码模式(例如,浊音编码、过渡编码、非活动编码等)。此外,类似的原理可以在不同于evs并且使用不同于celp的编码方案的任何其他编解码器中实施。操作201参考图2,对于声音信号的每个连续帧,总比特预算btotal被分派给编解码器。在cbr的情况下,该编解码器的总比特预算btotal是恒定的。还可以在可变比特率编解码器中使用比特预算分派方法200和设备250,其中编解码器总比特预算btotal可以在帧与帧之间变化(如在扩展evs编解码器的情况下)。操作202在操作202中,计数器252确定(计数)用于编码辅助编解码器模块的比特数(比特预算)bsupplementar和用于向解码器传输编解码器信令的比特数(比特预算)bcodec_signaling(未示出)。辅助编解码器模块可以包括立体声模块、帧擦除隐藏(frame-erasureconcealment,fec)模块、带宽扩展(bandwidthextension,bwe)模块、元数据编码模块等。在以下说明性实施例中,辅助模块包括立体声模块和bwe模块。当然,可以使用不同的或附加的辅助编解码器模块。立体声模块编解码器可以被设计成支持多于一个输入音频通道的编码。在两个音频通道的情况下,单声道(单通道)编解码器可以通过立体声模块扩展以形成立体声编解码器。立体声模块然后形成辅助编解码器模块中的一个。立体声编解码器可以使用几种不同的立体声编码技术来实施。作为非限制性示例,可以在低比特率下高效地使用的两种立体声编码技术的使用将在下文中讨论。显然,可以实施其他立体编码技术。第一种立体声编码技术称为参数立体声。参数立体声使用通用单声道编解码器加上一定量的表示立体声图像的立体声边信息(对应于立体声参数)将两个音频通道编码为单声道信号。两个输入音频通道被下混合成单声道信号,然后立体声参数通常在变换域中计算,例如在离散傅立叶变换(discretefouriertransform,dft)域中,并且与所谓的双耳(binaural)或声道间提示(cue)相关。双耳提示(见参考文献[5])包括耳间强度差(interauralleveldifference,ild)、耳间时间差(interauraltimedifference,itd)和耳间相关度(interauralcorrelation,ic)。取决于信号特性、立体声场景配置等,一些或所有双耳提示被编码并传输到解码器。关于什么提示被编码的信息作为信令信息被发送,信令信息通常是立体声边信息的一部分。也可以使用不同的编码技术来量化特定的双耳提示,这引起使用可变数量的比特。然后,除了量化的双耳提示之外,立体声边信息通常可以以中等和更高的比特率包含由下混合产生的量化的残差信号。可以使用熵编码技术,例如算术编码器,对残留信号进行编码。因此,用于编码残差信号的比特数可能在帧与帧之间显著波动。另一种立体声编码技术是在时域中操作的技术。这种立体声编码技术将两个输入音频通道混合成所谓的主通道和次通道。例如,遵循参考文献[6]中描述的方法,时域混合可以基于混合因子,该混合因子在产生主通道和次通道时确定两个输入音频通道的各自贡献。混合因子从几个度量中推导,例如输入通道相对于单声道信号的归一化相关性或者两个输入通道之间的长期相关性差。主通道可以由通用单声道编解码器编码,而次通道可以由更低比特率编解码器编码。次通道编码可以利用主要通道和次通道之间的一致性,并且可能重用来自主要通道的一些参数。因此,基于通道相似性和各个通道的编码模式,用于编码主通道和次通道的比特数可能在帧与帧之间显著波动。立体声编码技术对于本领域普通技术人员来说是已知的,因此,在本说明书中将不再进一步描述。尽管立体声被描述为辅助编码模块的示例方式,但是所公开的方法可以用于3d音频编码框架,包括环境声(基于场景的音频)、多通道(基于通道的音频)或对象加元数据(基于对象的音频)。辅助模块也可以包括这些技术中的任何。bwe模块在大多数最新的语音编解码器(包括宽带(wideband,wb)或超宽带(superwideband,swb)编解码器)中,输入信号在采用频带-划分(frequencyband-split)处理的同时以块(帧)进行处理。更低频带通常使用celp模型进行编码,并且覆盖截止频率以下的频率。然后通过bwe技术高效地编码或单独估计更高的频带,以便覆盖编码频谱的其余部分。两个频带之间的截止频率是每个编解码器的设计参数。例如,在参考文献[2]中描述的evs编解码器中,截止频率取决于编解码器的操作模式和比特率。特别是,更低的频带在7.2至13.2kbps的比特率处扩展至6.4khz,或在16.4至64kbps的比特率处扩展至8khz。然后,bwe进一步扩展wb(高达8khz)、swb(高达14.4或16khz)或全频带(fullband,fb,高达20khz)编码的音频带宽。bwe背后的想法是利用较低和较高频带之间的内在相关性,并利用与较低频率相比对较高频率中的编码失真的更高感知容限。因此,与较低频带celp编码相比,用于较高频带bwe编码的比特数通常非常低,或者甚至为零。例如,在参考文献[2]中描述的evs编解码器中,没有传输比特预算的bwe(所谓的盲bwe)以7.2-8.0kbps的比特率使用,而具有一些比特预算的bwe(所谓的引导bwe)以9.6-64kbps的比特率使用。引导bwe的准确比特预算取决于实际的编解码器比特率。在下面的描述中,考虑了引导bwe,其形成了辅助编解码器模块中的一个。用于较高频带bwe编码的比特数会在帧与帧之间波动,并且比用于较低频带celp编码的比特数低(典型地为1-3kbps)得多。同样,bwe对于本领域普通技术人员来说是已知的,因此,在本说明书中将不再进一步描述。编解码器信令比特流通常在其开始处包含编解码器信令比特。这些比特(编解码器信令比特预算)通常代表非常高级的编解码器参数,例如编解码器配置或关于被编码的辅助编解码器模块的性质的信息。在多通道编解码器的情况下,这些比特可以表示例如编码的(传输)通道的数量和/或编解码器格式(基于场景或基于对象等)。在立体声编码的情况下,这些比特可以表示例如正在使用的立体声编码技术。可以使用编解码器信令比特发送的编解码器参数的另一个示例是音频信号带宽。同样,编解码器信令对于本领域普通技术人员来说是已知的,因此在本说明书中将不再进一步描述。此外,计数器(未示出)可以用于计数用于编解码器信令的比特数(比特预算)。操作204参考回到图2,在操作204中,减法器254使用以下关系从编解码器总比特预算btotal中减去用于辅助编解码器模块的编码的比特预算bsupplementary和用于传输编解码器信令的比特预算bcodec_signaling,以获得celp核心模块的比特预算bcore:bcore=btotal-bsupplementary-bcodec_signaling(1)如上所述,用于编码辅助编解码器模块的比特数bsupplementary和用于向解码器传输编解码器信令的比特预算bcodec_signaling在帧与帧之间波动,因此,celp核心模块的比特预算bcore也在帧与帧之间波动。操作205在操作205中,计数器255计数用于向解码器传输celp核心模块信令的比特数(比特预算)bsignaling。celp核心模块信令可以包括例如音频带宽、celp编码器类型、锐化标志等。操作206在操作206中,减法器256使用以下关系从celp核心模块比特预算bcore中减去用于传输celp核心模块信令的比特预算bsignaling,以找到用于编码celp核心模块部分的比特预算b2:b2=bcore-bsignaling(2)操作207在操作207中,中间比特率选择器257包括计算器,该计算器通过将比特数b2除以帧的持续时间来将比特预算b2转换成celp核心模块比特率。选择器257基于celp核心模块比特率找到中间比特率。使用少量候选中间比特率。在基于evs的编解码器内实施的示例中,以下十五(15)个比特率可以被认为是候选中间比特率:5.00kbps、6.15kbps、7.20kbps、8.00kbps、9.60kbps、11.60kbps、13.20kbps、14.80kbps、16.40kbps、19.40kbps、22.60kbps、24.40kbps、32.00kbps、48.00kbps和64.00kbps。当然,可以使用不同于十五(15)的候选中间比特率的数量,也可以使用具有不同的值的候选中间比特率。在基于evs的编解码器内实施的同一示例中,找到的中间比特率是最接近celp核心模块比特率的更高候选中间比特率。例如,对于9.00kbps的celp核心模块比特率,当使用上一段中列出的候选中间比特率时,找到的中间比特率将是9.60kbps。在实施方式的另一个示例中,找到的中间比特率是最接近celp核心模块比特率的更低候选中间比特率。使用相同的示例,对于9.00kbps的celp核心模块比特率,当使用上一段中列出的候选中间比特率时,找到的中间比特率将是8.00kbps。操作208在操作208中,对于每个候选中间比特率,rom表258存储用于编码celp核心模块的第一部分的相应的预定比特预算。作为非限制性示例,其比特预算存储在rom表258中的celp核心模块第一部分可以包括lp滤波器系数、自适应码本、自适应码本增益和创新码本增益。在该实施方式中,在rom表258中没有存储用于编码创新码本的比特预算。换句话说,当选择器257选择候选中间比特率中的一个时,存储在rom表258中的相关联的比特预算被分派给上述识别的celp核心模块第一部分(lp滤波器系数、自适应码本、自适应码本增益和创新码本增益)的编码。然而,在所描述的实施方式中,在rom表258中没有存储用于编码创新码本的比特预算。下表1是为每个候选中间比特率存储用于编码lp滤波器系数的相应比特预算(比特数)blpc的rom表258的示例。右列标识候选中间比特率,而左列指示相应比特预算(比特数)blpc。为简单起见,用于对lp滤波器系数进行编码的比特预算是每帧一个值,尽管当在当前帧中进行一个以上的lp分析时(例如中间帧和结束帧lp分析),它可以是几个比特预算值的总和。表1(用伪代码表示)下表2是为每个候选中间比特率存储用于编码自适应码本的相应比特预算(比特数)bacbn的rom表258的示例。右列标识候选中间比特率,而左列指示相应比特预算(比特数)bacbn。当在每个子帧n中搜索自适应码本时,对于每个候选中间比特率,获得n个比特预算bacbn(每子帧一个),n表示一帧中的子帧的数量。应当注意,比特预算bacbn在不同的子帧中可以不同。具体地,表2是存储在使用上述定义的十五(15)个候选中间比特率的基于evs的编解码器中的比特预算bacbn的rom表258的示例。表2(用伪代码表示)应当注意,在使用基于evs的编解码器的示例中,每中间比特率的四(4)个比特预算bacbn以较低比特率存储,其中20ms的帧由四(4)个子帧(n=4)组成,并且每中间比特率的五(5)个比特预算bacbn以较高比特率存储,其中20ms的帧由五(5)个子帧(n=5)组成。参考表2,对于对应于9.60kbps的中间比特率的9.00kbps的celp核心模块比特率,各个子帧中的比特预算bacbn分别是9、6、9和6比特。下表3是为每个候选中间比特率存储用于编码自适应码本增益和创新码本增益的相应比特预算(比特数)bgn的rom表258的示例。在下面的示例中,自适应码本增益和创新码本增益使用矢量量化器被量化,并且因此仅被表示为一个量化索引。右列标识候选中间比特率,而左列指示相应比特预算(比特数)bgn。从表3可以看出,一帧的每子帧n有一个比特预算bgn。因此,为每个候选中间比特率存储了n个比特预算bgn,n代表一帧中的子帧的数量。应当注意,取决于增益量化器和所使用的量化表的大小,比特预算bgn在不同的子帧中可以不同。表3(用伪代码表示)以相同的方式,对于每个候选中间比特率,用于量化其他celp核心模块第一部分(如果它们存在的话)的比特预算可以存储在rom表258中。一个示例可以是自适应码本低通滤波的标志(每子帧一比特)。因此,对于每个候选中间比特率,与除了创新码本之外的所有celp核心模块部分(第一部分)相关联的比特预算都可以存储在rom表258中,同时某个比特预算b4仍然可用。操作209在操作209中,比特预算分派器259为编码上述celp核心模块第一部分(lp滤波器系数、自适应码本、自适应和创新码本增益等)分派存储在rom表258中并与选择器257选择的中间比特率相关联的比特预算。操作210在操作210中,减法器260从比特预算b2中减去(a)与选择器257选择的候选中间比特率相关联的用于编码lp滤波器系数的比特预算blpc、(b)与选择的候选中间比特率相关联的n个子帧的比特预算bacbn的总和、(c)与选择的候选中间比特率相关联的用于量化n个子帧的自适应和创新码本增益的比特预算bgn的总和、和(d)与选择的中间比特率相关联的用于编码其他celp核心模块第一部分(如果它们存在的话)的比特预算,以找到仍然可用于编码创新码本(第二celp核心模块部分)的剩余的比特预算(比特数)b4。为此,减法器260可以使用以下关系:操作211在操作211中,fcb比特分派器261在当前帧的n个子帧之间分配用于编码创新码本(固定码本(fixedcodebook,fcb);第二celp核心模块部分)的剩余的比特预算b4。具体地,比特预算b4被分成分派给各个子帧n的比特预算bfcbn。例如,这可以通过迭代过程来完成,该迭代过程在n个子帧之间尽可能平均地划分比特预算b4。在其他非限制性实施方式中,fcb比特分派器261可以通过假设以下要求中的至少一个来设计:i.在比特预算b4不能在所有子帧之间平均地分配的情况下,最高可能的(即更大的)比特预算被分派给第一个子帧。例如,如果b4=106比特,则每4个子帧的fcb比特预算被分派为28-26-26-26比特。ii.如果有更多的比特可用于潜在地增加其他子帧的fcb码本,则在第一个子帧(或第一个子帧之后的至少一个子帧)之后分派给至少一个下一子帧的fcb比特预算(比特数)增加。例如,如果b4=108比特,则每4个子帧的fcb比特预算被分派为28-28-26-26比特。在另一示例中,如果b4=110比特,则每4个子帧的fcb比特预算被分派为28-28-28-26比特。iii.比特预算b4不一定在所有子帧之间尽可能平均地分配,而是尽可能多地使用比特预算b4。作为示例,如果b4=87比特,则每4个子帧的fcb比特预算被分派为26-20-20-20比特,而不是例如在不考虑要求iii时的24-20-20-20比特或20-20-24比特。在另一个示例中,如果b4=91比特,则每4个子帧的fcb比特预算被分派为26-24-20-20比特,而如果不考虑要求iii,则例如将分派20-24-24-20比特。因此,在这两个示例中,当考虑要求三时,只有1比特保持未使用,否则3比特保持未使用。要求iii使得fcb比特分派器261能够从fcb配置表(例如本文下面的表4)中选择两个非连续的行。作为非限制性示例,考虑b4=87比特。对于要用于配置fcb搜索的所有子帧,fcb比特分派器261首先从表4中选择行6(这引起20-20-20-20的比特预算分派)。然后要求i改变分派,使得行6和行7(24-20-20-20比特)被使用,并且要求iii通过使用来自fcb配置表(表4)中的行6和行8(26-20-20-20)来选择分派。下面是作为fcb配置表的示例的表4(从evs(参考文献[2])复制):表4(用伪代码表示)其中第一列对应于fcb码本比特数,第四列对应于每子帧的fcb脉冲数。应当注意,在上述b4=87比特的示例中,不存在22比特的码本,因此fcb分派器从fcb配置表中选择两个非连续的行,引起26-20-20-20fcb比特预算分派。iv.在使用过渡编码(transitioncoding,tc)模式(参见参考[2)编码时,比特预算不能在所有子帧之间平均地分配的情况下,则使用声门脉冲形状码本将最大可能(更大)的比特预算分派给子帧。作为一个示例,如果b4=122比特,并且在第三子帧中使用声门脉冲形状码本,则每4子帧的fcb比特预算被分派为30-30-32-30比特。v.如果在应用要求iv之后,有更多的比特可用于潜在地增加tc模式帧中的另一个fcb码本,则分派给最后一个子帧的fcb比特预算(比特数)增加。作为一个示例,如果b4=116比特,并且在第二子帧中使用声门脉冲形状码本,则每4个子帧的fcb比特预算被分派为28-30-28-30比特。这一要求背后的思想是更好地建立开始/过渡事件之后的激励部分,其在感知上比在它之前的激励部分更重要。声门脉冲形状码本可由位于特定位置的截断的声门脉冲的量化归一化形状组成,如参考文献[2]的章节5.2.3.2.1(声门脉冲码本搜索)所述。然后,码本搜索包括选择最佳形状和最佳位置。例如,声门脉冲形状可以由仅包含一个对应于候选脉冲位置的非零元素的码向量来表示。一旦被选择,位置码向量与成形滤波器的脉冲响应进行卷积。使用上述要求,fcb比特分派器261可以被设计如下(用c代码表示):其中函数swap()交换/互换两个输入值。然后,函数fcb_table()选择fcb(固定或创新码本)配置表的相应行(如上定义),并返回编码选择的fcb(固定或创新码本)所需的比特数。操作212计数器262确定分派给用于编码创新码本(固定码本(fcb);第二celp核心模块部分)的n个不同的子帧的比特预算(比特数)bfcbn的总和。操作213在操作213中,减法器263使用以下关系确定在编码创新码本之后剩余的比特数b5:理想地,在编码创新码本之后,剩余的比特b5的数量等于零。然而,可能无法实施这一结果,因为创新码本索引的粒度大于1(通常为2-3比特)。因此,在编码创新码本之后,少量比特通常保持未使用。操作214在操作214中,比特分派器264指派未使用的比特预算(比特数)b5,以增加除了创新码本之外的celp核心模块部分(celp核心模块第一部分)中的一个的比特预算。例如,使用以下关系,未使用的比特预算b5可以用于增加从rom表258获得的比特预算blpc:b′lpc=blpc+b5.(6)未使用的比特预算b5也可以用于增加其他celp核心模块第一部分的比特预算,例如比特预算bacbn或bgn.。此外,未使用的比特预算b5,当大于1比特时,可以在两个或甚至更多个celp核心模块第一部分之间重新分配。可替代地,未使用的比特预算b5可以用于传输fec信息(如果在辅助编解码器模块中还没有被考虑),例如信号类别(参见参考文献[2])。高比特率celp当以高比特率使用传统celp时,传统celp在可伸缩性和复杂性方面存在局限性。为了克服这些局限性,celp模型可以通过特殊的变换域码本来扩展,如参考文献[3]和[4]中所述。与其中激励仅由自适应激励和创新激励贡献组成的传统celp相比,扩展模型引入了激励的第三部分,即变换域激励贡献。附加的变换域码本通常包括预加重滤波器、时域到频域的变换、矢量量化器和变换域增益。在扩展模型中,在每个子帧中,大量(至少几十个)比特被指派给矢量量化器。在高比特率celp中,使用如上所述的过程将比特预算分派给celp核心模块部分。在这个过程之后,用于在n个子帧中编码创新码本的比特预算bfcbn的总和应该等于或接近比特预算b4。在高比特率celp中,比特预算bfcbn通常是适中的,并且未使用的比特数b5相对较高,并且用于编码变换域码本参数。首先,使用以下关系,从未使用的比特预算b5中减去用于编码n个子帧中的变换域增益的比特预算btdgn和最终除了用于矢量量化器的比特预算之外的其他变换域码本参数的比特预算之和:然后,剩余的比特预算(比特数)b7被分派给变换域码本内的矢量量化器,并在所有子帧当中分配。矢量量化器的按子帧的比特预算(比特数)表示为bvqn。取决于所使用的矢量量化器(例如,evs中使用的avq量化器),量化器不会消耗所有分派的比特预算bvqn,从而在每个子帧中留下少量可变数量的可用比特。这些比特是在同一帧内的后续子帧中使用的浮动比特。为了变换域码本的更好的有效性,向第一个子帧中的矢量量化器分派稍高(更大)的比特预算(比特数)。下面的伪代码给出了一个实施方式的示例:其中表示小于或等于x的最大整数,n是一帧中的子帧的数量。比特预算(比特数)b7在所有子帧之间平均地分配,而第一个子帧的比特预算最终略微增加多达n-1比特。因此,在高比特率celp中,在该操作之后没有剩余的比特。与扩展evs编解码器相关的其他方面在许多情况下,对给定的celp核心模块部分进行编码有多于一种选择。在像evs这样的复杂编解码器中,几种不同的技术可用于编码给定的celp核心模块部分,并且通常基于celp核心模块比特率(核心模块比特率对应于celp核心模块的比特预算bcore乘以每秒帧数)来选择一种技术。一个示例是增益量化,其中在evs编解码器中有三(3)种不同的技术可用,如参考文献[2]中所述,通用编码(genericcoding,gc)模式:-基于子帧预测的矢量量化器(gq1;以等于或低于8.0kbps的核心比特率使用);-自适应和创新增益的无记忆矢量量化器(gq2;以高于8kbps且低于或等于32kbps的核心比特率使用);和-两个标量量化器(gq3;以高于32kbps的核心比特率使用)。此外,在恒定编解码器总比特率btotal下,取决于celp核心模块比特率,可以逐帧地切换用于编码和量化给定的celp核心模块部分的不同的技术。一个示例是48kbps的参数立体声编码模式,其中在不同的帧中使用不同的增益量化器(参见参考[2]),如下表5所示:表5还值得注意的是,对于给定的celp核心模块比特率,可能会有不同的比特预算分派,这具体取决于编解码器配置。例如,基于evs的td立体声编码模式中的主通道的编码,在第一种场景下,以16.4kbps的总编解码器比特率工作,而在第二种场景下,以24.4kbps的总编解码器比特率工作。在这两种场景下均可能发生即使总编解码器比特率不同,celp核心模块比特率也相同。但是不同的编解码器配置会引起不同的比特预算分配。在基于evs的立体声框架中,16.4kbps和24.4kbps之间的不同的编解码器配置与不同的celp核心内部采样速率相关,该速率在16.4kbps和24.4kbps时分别为12.8khz和16khz。因此,采用了分别具有四(4)、五(5)个子帧的celp核心模块编码,并使用了相应比特预算分配。下面显示了两个提到的总编解码器比特率之间的这些差异(每表单元一个值对应于每帧一个参数,而更多的值对应于每子帧的参数)。表6因此,上表显示,在不同的编解码器总比特率下,对于相同的核心比特率可以有不同的比特预算分配。编码器流程当辅助编解码器模块包括立体声模块和bwe模块时,编码器过程的流程可以如下:-编码立体声边(或次通道)信息,并且分派给它的比特预算被从编解码器总比特预算中减去。编解码器信令比特也被从总比特预算中减去。-然后基于编解码器总比特预算减去立体声模块和编解码器信令比特预算来设置用于编码bwe辅助模块的比特预算。-从编解码器总比特预算减“立体声辅助模块”和“编解码器信令”比特预算中减去bwe比特预算。-执行上述分派核心模块比特预算的过程。-编码celp核心模块。-编码bwe辅助模块。解码器celp核心模块比特率不在比特流中直接用信令通知,而是在解码器处基于辅助编解码器模块的比特预算来计算。在包括立体声和bwe辅助模块的实施方式的示例中,可以遵循以下过程:-编解码器信令被写入比特流/从比特流读取。-立体声边(或次通道)信息被写入比特流/从比特流中读取。用于编码立体声边信息的比特预算波动,并且取决于立体声边信令和用于编码的技术。基本上(a)在参数立体声中,算术编码器和立体声边信令确定何时停止立体声边信息的写入/读取,而(b)在时域立体声编码中,混合因子和编码模式确定立体声边信息的比特预算。-编解码器信令的比特预算和立体声边信息被从编解码器总比特预算中减去。-然后,还从编解码器总比特预算中减去bwe辅助模块的比特预算。bwe比特预算粒度通常较小:a)每音频带宽(wb/swb/fb)只有一个比特率,并且带宽信息作为比特流中编解码器信令的一部分来传输,或者b)特定带宽的比特预算可以具有某一粒度,并且bwe比特预算是从编解码器总比特预算减立体声模块比特预算来确定的。在说明性实施例中,例如,取决于编解码器总比特率减立体声模块比特率,swb时域bwe可以具有0.95kbps、1.6kbps或2.8kbps的比特率。剩下的是celp核心比特预算bcore,它是前面描述中描述的比特预算分派过程的输入参数。在celp编码器(就在预处理之后)和celp解码器(在celp帧解码开始时)处调用相同的分派。下面是从扩展的基于evs的编解码器中摘录的用于通用编码比特预算分派的c代码,仅作为示例给出。图3是形成比特预算分派设备并实施比特预算分派方法的硬件组件的示例配置的简化框图。比特预算分派设备可以实施为移动终端的一部分、便携式媒体播放器的一部分或实施在任何类似的设备中。比特预算分派设备(在图3中标识为300)包括输入302、输出304、处理器306和存储器308。输入302被配置为接收例如编解码器总比特预算btotal(图2)。输出304被配置为提供各种分派的比特预算。输入302和输出304可以在公共模块中实施,例如串行输入/输出设备。处理器306可操作地连接到输入302、输出304和存储器308。处理器306被实现为一个或多个处理器,用于运行支持图2的比特预算分派设备的各种模块的功能的代码指令。存储器308可以包括用于存储可由处理器306运行的代码指令的非瞬态存储器,具体地为,包括非暂时性指令的处理器可读存储器,该指令在被运行时使得处理器实施图2的比特预算分派方法和设备的操作和模块。存储器308还可以包括随机存取存储器或(多个)缓冲器,以存储来自处理器306执行的各种功能的中间处理数据。本领域普通技术人员将认识到,对比特预算分派方法和设备的描述仅是说明性的,并不旨在以任何方式进行限制。受益于本公开的本领域普通技术人员将容易想到其他实施例。此外,所公开的比特预算分派方法和设备可以被定制,以便为与比特预算的分派或分配相关的现有需求和问题提供有价值的解决方案。为了清楚起见,没有示出和描述比特预算分派方法和设备的实施方式的所有常规特征。当然,应当理解,在比特预算分派方法和设备的任何这种实际实施方式的开发中,为了实现开发者的特定目标,诸如符合应用、系统、网络和商业相关的约束,可能需要做出许多实施方式特定的决定,并且这些特定的目标将随着实施方式的不同以及开发者的不同而变化。此外,应当理解,开发工作可能是复杂和耗时的,但是对于受益于本公开的声音处理领域的普通技术人员来说,这仍然是一项常规的工程任务。根据本公开,本文描述的模块、处理操作和/或数据结构可以使用各种类型的操作系统、计算平台、网络设备、计算机程序和/或通用机器来实施。此外,本领域普通技术人员将认识到,也可以使用不太通用的设备,诸如硬连线设备、现场可编程门阵列(fieldprogrammablegatearray,fpga)、专用集成电路(applicationspecificintegratedcircuit,asic)等。在包括一系列操作和子操作的方法由处理器、计算机或机器实施,并且那些操作和子操作可以被存储为处理器、计算机或机器可读的一系列非暂时性代码指令的情况下,它们可以被存储在有形的和/或非瞬态的介质上。本文描述的比特预算分派方法和设备的模块可以包括软件、固件、硬件或者适合于本文描述的目的软件、固件或硬件的任何(多个)组合。在本文描述的比特预算分派方法中,各种操作和子操作可以以各种顺序执行,并且操作和子操作中的一些可以是可选的。尽管通过非限制性的说明性实施例进行了本发明的前述公开,但是可以在所附权利要求的范围内任意修改这些实施例,而不脱离本公开的精神和本质。参考文献以下参考文献在本说明书中引用,并且其全部内容通过引用并入本文。[1]itu-trecommendationg.718:"frameerrorrobustnarrowbandandwidebandembeddedvariablebit-ratecodingofspeechandaudiofrom8-32kbps,"2008.[2]3gppspec.ts26.445:"codecforenhancedvoiceservices(evs).detailedalgorithmicdescription,"v.12.0.0,2014年9月.[3]b.bessette,"flexibleandscalablecombinedinnovationcodebookforuseincelpcoderanddecoder,"us专利9,053,705,2015年6月.[4]v.eksler,"transform-domaincodebookinacelpcoderanddecoder,"us专利公开2012/0290295,2012年11月,以及us专利8,825,475,2014年9月.[5]f.baumgarte,c.faller,"binauralcuecoding-parti:psychoacousticfundamentalsanddesignprinciples,"ieeetrans.speechaudioprocessing,vol.11,pp.509-519,2003年11月.[6]tommyvaillancourt,“methodandsystemusingalong-termcorrelationdifferencebetweenleftandrightchannelsfortimedomaindownmixingastereosoundsignalintoprimaryandsecondarychannels,”pct申请wo2017/049397a1.当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1