CN105431901B - 椎体矢量量化器形状搜索 - Google Patents

椎体矢量量化器形状搜索 Download PDF

Info

Publication number
CN105431901B
CN105431901B CN201580001475.5A CN201580001475A CN105431901B CN 105431901 B CN105431901 B CN 105431901B CN 201580001475 A CN201580001475 A CN 201580001475A CN 105431901 B CN105431901 B CN 105431901B
Authority
CN
China
Prior art keywords
loop
vector
bit word
enloop
word length
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201580001475.5A
Other languages
English (en)
Other versions
CN105431901A (zh
Inventor
乔纳斯·斯韦德贝里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Priority to CN201910135157.8A priority Critical patent/CN109979470B/zh
Publication of CN105431901A publication Critical patent/CN105431901A/zh
Application granted granted Critical
Publication of CN105431901B publication Critical patent/CN105431901B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/032Quantisation or dequantisation of spectral components
    • G10L19/038Vector quantisation, e.g. TwinVQ audio
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/0017Lossless audio signal coding; Perfect reconstruction of coded audio signal by transmission of coding error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3082Vector coding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/002Dynamic bit allocation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/032Quantisation or dequantisation of spectral components
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/10Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a multipulse excitation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/167Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0013Codebook search algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Analogue/Digital Conversion (AREA)
  • Transmission And Conversion Of Sensor Element Output (AREA)

Abstract

一种用于椎体矢量量化器PVQ形状搜索的编码器及其方法,所述PVQ采用目标矢量x作为输入,并通过在内部维度搜索循环中迭代地添加单位脉冲来获得矢量y。所述方法包括:在进入用于单位脉冲添加的下一个内部维度搜索循环之前:基于当前矢量y的最大脉冲幅度maxampy,确定是否需要多于当前比特字长来在即将到来的内部维度循环中以无损方式表示变量enloopy。变量enloopy与y的累加能量相关。该方法的执行使编码器能够将搜索的复杂度保持在合理水平。例如,其通过分析即将到来的内循环中的“最坏情况场景”是否需要比当前使用的精度更高精度的内循环,而使编码器能够仅在需要的时候应用精度增加的循环。

Description

椎体矢量量化器形状搜索
技术领域
本公开总体涉及由编码器执行的矢量量化(VQ)。
背景技术
已知非约束矢量量化是用于特定长度的群组样本(即,矢量)的最优量化方法。然而,非约束矢量量化的实施需要对于复杂度和存储器容量的高要求。对于还能够在具有存储器和搜索复杂度限制的情况下实施矢量量化的期望已经使得开发出所谓的结构矢量量化器。不同结构给出在搜索复杂度和存储器要求方面的不同权衡。这样的一种方法是所谓的增益-形状矢量量化,其中,使用形状矢量x和增益值G来表示目标矢量t:
(等式0)
增益-形状矢量量化的概念在于量化对{x,G},而不是直接量化目标矢量t。使用针对归一化的形状输入的形状量化器以及处理信号的动态变化的增益量化器对增益(G)和形状(x)分量进行编码。经常在音频编码中使用该增益-形状结构,因为到动态变化和形状的划分(还被称为精细结构)良好地适应听觉模型。增益-形状概念还可以应用于离散余弦变换系数或在视频编码中使用的其它系数。
许多语音和音频编解码器(诸如ITU-T G.718和IETF Opus(RFC6716))使用基于结构化PVQ的增益-形状VQ,以对目标语音/音频信号的频谱系数进行编码。
PVQ编码概念由R.Fischer在1983年至1986年间引入,并从那以后随着更高效的数字信号处理器(DSP)的出现而发展为实际使用。PVQ编码概念涉及利用K个单位脉冲的整数L1-范数对N维超椎体上的点进行搜索、定位并且随后编码。所谓的L1-范数是矢量的绝对值的和,即,带符号整数PVQ矢量的绝对和被限制为精确的K,其中,单位脉冲由整数值“1”表示。相对于只能表示非负整数的无符号整数而言,带符号整数能够表示负整数。
与许多其它结构化VQ相比,结构化PVQ-编码方法的一个优势在于在维度N方面不存在固有限制,从而为PVQ-编码开发的搜索方法应该可以应用于任意维度N和任意K值。
与结构化PVQ-形状量化相关的一个问题在于使用合理程度的复杂度来找到可能的最好的量化矢量。对于较高速率的语音和音频编码而言,当可允许的单位脉冲的数目K变得非常高并且维度N也变得非常高时,更加需要一种有效的PVQ-搜索并同时保持重构语音/音频的质量(例如信噪比(SNR))。
此外,PVQ概念的使用不限于语音和音频编码领域。当前,所谓的互联网工程任务部(IETF)正在寻求使用基于PVQ的算法对离散余弦变换(DCT)系数进行编码的视频编解码开发。视频编码与音频编码相比更需要高效的搜索处理,因为对于大显示器而言系数的数目可能变得非常大。
发明内容
对于结构化PVQ,期望实现计算上更高效的形状搜索并仍然保持高的信噪比。尤其针对涉及固定精度DSP的实施。本文提供的方案通过提供改进的PVQ精细搜索来实现计算高效的PVQ形状搜索。
根据第一方案,提供了一种用于由编码器执行的PVQ形状搜索的方法。假设所述PVQ涉及采用目标矢量x作为输入,通过在内部维度搜索循环中迭代地添加单位脉冲来获得矢量y。提供的方法包括:在进入用于单位脉冲添加的下一个内部维度搜索循环之前:基于当前矢量y的最大脉冲幅度maxampy,确定是否需要多于当前比特字长来以无损方式表示变量enloopy。在即将到来的内部维度循环中,变量enloopy与y的累加能量相关。
根据第二方案,提供了一种用于PVQ形状搜索的编码器。假设所述PVQ涉及采用目标矢量x作为输入,通过在内部维度搜索循环中迭代地添加单位脉冲来获得矢量y。提供的编码器包括:在进入用于单位脉冲添加的下一个内部维度搜索循环之前:基于当前矢量y的最大脉冲幅度maxampy,确定是否需要多于当前比特字长来以无损方式表示变量enloopy。在即将到来的内部维度循环中,变量enloopy与y的累加能量相关。
所述方法可以包括并且所述编码器可以被配置为:在进入用于单位脉冲添加的下一个内部维度循环之前:基于输入矢量x的最大绝对值xabsmax,确定比特字中的x和矢量y之间的下一个循环累加循环内相关值corrxy的可能上移。
所述方法可以包括并且所述编码器可以被配置为:当需要多于当前比特字长来表示enloopy时,使用更长比特字长执行内循环计算以表示enloopy
所述方法可以包括并且所述编码器可以被配置为:当需要多于当前比特字长来表示enloopy时,使用更长比特字长执行内循环计算以表示内循环中的x和矢量y之间的平方累加循环内相关值corrxy 2
所述方法还可以包括并且所述编码器可以被配置为:当不需要多于当前比特字长来表示enloopy时,通过采用使用第一比特字长表示enloopy的第一单位脉冲添加循环来执行内循环计算,以及,当需要多于当前比特字长来表示enloopy时:通过采用使用比第一单位脉冲添加循环更长的比特字长表示enloopy的第二单位脉冲添加循环来执行内循环计算。
基于maxampy确定是否需要多于当前比特字长来表示enloopy可以包括:确定在即将到来的内部搜索循环中,单位脉冲被添加到与maxampy相关联的y中的位置的情况的特性。
所述方法还可以包括并且所述编码器可以被配置为:在用于单位脉冲添加的内部维度搜索循环中:通过将针对y中的每个位置n的当前n的相关性和能量值的交叉相乘以及根据n的先前值保存的平方相关性BestCorrSq和能量值bestEn评估为下式,来确定用于添加单位脉冲的y中的位置nbest
corrxy 2*bestEn>BestCorrSq*enloopy
其中,当corrxy 2*bestEn>BestCorrSq*enloopy时,
所述方法还可以包括并且所述编码器可以被配置为:当与目标矢量x相关联的最终值K超过阈值时,跟踪maxampy。这里,所述方法可以包括并且所述编码器可以被配置为仅在K的当前值超过可以作为在以上句子中提到的阈值的阈值时才计算能量余量en_margin。
根据第三方案,提供一种包括根据第二方案所述的编码器的通信设备。
根据第四方案,提供一种包括指令的计算机程序,其中,当所述指令被至少一个处理器执行时,使所述至少一个处理器执行根据第一方案所述的方法。
根据第五方案,提供一种包含根据第四方案所述的计算机程序的载体,其中,所述载体是电子信号、光信号、无线电信号或计算机可读存储介质中的一个。
根据第六方案,提供一种被配置用于PVQ形状搜索的编码器,所述PVQ采用目标矢量x作为输入,并通过在内部维度搜索循环中迭代地添加单位脉冲来获得矢量y。提供的编码器包括第一确定单元,用于:在进入用于单位脉冲添加的下一个内部维度搜索循环之前,基于当前矢量y的最大脉冲幅度maxampy,确定是否需要多于当前比特字长来在即将到来的内部维度循环中以无损方式表示与y的累加能量相关的变量enloopy
根据第六方案所述的编码器还可以包括第二确定单元,用于:在进入用于单位脉冲添加的下一个内部维度循环之前:基于输入矢量x的最大绝对值xabsmax,确定比特字中的x和矢量y之间的下一个循环累加循环内相关值corrxy的可能上移。
根据第六方案所述的编码器可以包括精细搜索单元,用于:当需要多于当前比特字长来表示enloopy时,使用更长比特字长表示enloopy来执行内循环计算。
根据第六方案所述的编码器可以包括精细搜索单元,用于:当不需要多于当前比特字长来表示enloopy时,通过采用使用第一比特字长的第一单位脉冲添加循环来执行内循环计算,以及,当需要多于当前比特字长来表示enloopy时,通过采用使用比第一单位脉冲添加循环更长的比特字长的第二单位脉冲添加循环来执行内循环计算。
根据第六方案所述的编码器可以包括精细搜索单元,用于:当不需要多于当前比特字长来表示enloopy时,通过采用具有特定精度的第一单位脉冲添加循环来执行内循环计算;以及,当需要多于当前比特字长来表示enloopy时,通过采用具有比第一单位脉冲添加循环更高的精度的第二单位脉冲添加循环来执行内循环计算。
根据第六方案所述的编码器可以被配置为执行:通过确定在即将到来的内部搜索循环中单位脉冲被添加到与maxampy相关联的y中的位置的情况的特性,来基于maxampy确定是否需要多于当前比特字长来表示enloopy
根据第六方案所述的编码器可以包括精细搜索单元,用于:在用于单位脉冲添加的内部维度搜索循环中:通过将针对y中的每个位置n的当前n的相关性和能量值的交叉相乘以及根据n的先前值保存的相关性BestCorrSq和能量值bestEn评估为下式,来确定用于添加单位脉冲的y中的位置nbest
corrxy 2*bestEn>BestCorrSq*enloopy
其中,当corrxy 2*bestEn>BestCorrSq*enloopy
根据第六方案所述的编码器可以包括存储单元,用于:当与目标矢量x相关联的最终值K超过阈值时,跟踪maxampy
根据第七方案,提供了一种包括根据第六方案所述的编码器的通信设备。
附图说明
从以下在附图中示出的实施例的更具体地描述中,本文公开的技术的以上和其它目的、特征和优点将是清楚的。附图不需要按比例绘制,而是可以突出附图以示出本文公开的技术的原理。
图1至图4示出根据不同示例实施例的用于PVQ形状搜索(精细搜索)的方法。
图5示出根据示例实施例的PVQ形状搜索(精细搜索)的实施例的步骤。
图6更详细地示出根据示例实施例的图5的PVQ形状搜索(精细搜索)的步骤。
图7示出PVQ形状搜索的实施例。
图8示出配备有EVS编码器的通信设备的实施例。
图9示出通信设备的实施例,以及
图10也示出通信设备的实施例。
图11a至图11c示出根据示例实施例的编码器。
图12示出PVQ音频编码系统的示例,其中,系统的至少一部分包括在编码器和/或编解码器中,所述编码器和/或编解码器转而包括在通信设备(诸如移动电话)中。
具体实施方式
在浮点算法中,不存在与建立内循环PVQ形状搜索迭代参数的动态变化相关的主要问题,然而,在具有例如16/32比特限制的累加器(存储有中间算法和/或逻辑结果的寄存器)和变量的固定精度的DSP中,采用高效搜索方法是很重要的,在该方法中,DSP变量的有限动态范围被最大化并且精度被最大化,同时也能够使用尽可能多的可用快速有限动态范围的DSP运算。
以上术语“精度”指的是能够表示尽可能少的数目,即,在针对特定字长的小数点后的位的数目。换句话说,精度对应于表示的精确度,其同样也由十进制数或二进制数的数目定义。在下文描述的实施例中可以将精度阐述为与小数点之后的位的数目相关而不必须与其自身的字长相关的原因在于,在定点算法中,对于相同字长可能存在不同的精度。例如,数据格式1Q15和2Q14的字长均为16,但是前者在小数点之后具有15位,而后者具有14位。它们可以表示的最小数字将分别是2-15和2-14
在Valin等人的“A full-bandwidth audio codec with low complexity andvery low delay”,EUSIPCO,2009中的章节3.2中公开了执行形状的椎体矢量量化的一种方式。在该文档中,提出了一种MDCT编解码器,其中,使用球形码本来对每个带中的细节(即,形状)进行代数量化,并且从编码器和解码器之间共享的信息推导出位分配。本申请的公开的多个方案和实施例至少粗略地涉及如何通过受限于例如16/32位算法的定点的高效方式而非Valin等人的浮点值来进行根据Valin等人的等式4-7的搜索。
在下文公开的一些方案和实施例中,给出特定维度N的目标矢量x(n)(等式0中的t),并给出单位脉冲的特定数目K,分析形状并且确定合适的重构矢量xq(n)=func(y(n)),其最小化形状量化误差,并从而最大化例如在音频编码的情况下的感知质量。所述方案和实施例中的至少一些被实施为目的在于在需要依附于L1范数的矢量y(n)中找到K个单位脉冲的最优星群,并同时使复杂度在控制之中,即,在实践中尽可能低。
作为使用现有技术的开放环路方法来确定内循环动态范围和累加器精度的替代,所述方案和实施例的一些被设计为在开始最内侧搜索循环中的PVQ-形状失真商的高成本评估之前,使用低成本(在需要的DSP周期方面以及在需要的附加程序只读存储器(ROM)方面)对最差情况分子和/或最差情况分母进行“接近最优”预分析。“接近最优”预分析的目的不在于将值缩放至精确的最优最大动态范围,相反,预分析确定接近最优的以2为幂的标度因子,因为以2为幂的标度可以被实施为二进制数的移位并且这种移位在DSP周期和DSPROM中具有低成本。
感知地激发分母精度选择,因为与较平坦的区域相比,将更精确地分配频谱峰值区域。
虽然在本公开中描述的主要概念覆盖各种修改和备选结构,但是在附图和示例性代码中示出多方面的实施例,并且将在下文进行详细描述。
PVQ-搜索总体优化介绍
一种L1-范数结构化的PVQ-量化器允许若干搜索优化,其中,首要优化在于将目标移动至N维空间中的所有的正“象限”(还可以被表示为四分之一圆或超八分之一圆),并且第二优化在于使用L1-范数投影作为针对y(n)的起始近似。针对PVQ(N,K)的K的L1-范数表示PVQ矢量y(n)中的所有元素的绝对和必须为K,如同目标形状矢量x(n)中的所有元素的绝对和。
第三优化在于,针对为了达到L1-范数K(其将用于后续的索引化步骤中)而针对矢量y(n)的每个候选改变,迭代地更新QPVQ商项corrxy 2和energyy,而不是在整个矢量空间N上重复计算(下文的)等式4。
以上三个主要优化步骤是可以普遍存在于之前的PVQ-实施(诸如CELT和IETF-Opus)中,并且部分地存在于G.718中的优化,然而为了完整地描述本方案和实施例,在下文简要地概括这些步骤。
高效PVQ矢量形状搜索
可以在图12中看出应用本文提出的PVQ形状搜索的实施例的音频编码和解码系统的概视图。可以在例如图5中看出遵循精细(形状)搜索流程的椎体投影的总体形状搜索。在图6中示出了形状搜索的精细搜索部分的另一实施例。PVQ形状搜索可以包括椎体投影和精细搜索。当不应用椎体投影时,形状搜索仅包括精细搜索。因此,“精细搜索”和“形状搜索”有时可以在本文中互换使用,因为精细搜索是形状搜索的一部分,并且当不存在初始粗略搜索时,通过椎体投影执行形状搜索与执行精细搜索是等同的。换言之,精细搜索有时可以是或者构成形状搜索,并且当应用椎体投影时,精细搜索是形状搜索的一部分。
PVQ-搜索介绍
PVQ(N,K)搜索处理的目标在于找到最佳标度和归一化的输出矢量xq(n)。xq(n)被定义为:
(等式1)
其中,y=yN,K是在N维超椎体的表面上的点,并且yN,K的L1范数是K。换言之,yN,K是根据下式选择的大小为N(还被表示为维度N)的整数形状代码矢量:
(等式2)
也就是说,矢量xq是单位能量归一化整数子矢量yN,K。最佳的y矢量是最小化目标矢量x(n)和标度归一化的量化输出矢量xq之间的均方形状误差的矢量。这可以通过最小化下面的搜索失真来实现:
(等式3)
或者等同地,通过对分子和分母进行平方来最大化商QPVQ
(等式4)
其中,corrxy是x和y之间的相关性。在利用L1-范数K搜索最优PVQ矢量形状y(n)时,根据下式在N维空间中的所有正“象限”中进行QPVQ变量的迭代更新:
corrxy(k,n)=corrxy(k-1)+1·x(n) (等式5)
energyy(k,n)=energyy(k-1)+2·12·y(k-1,n)+12 (等式6)
其中,corrxy(k-1)表示至今为止通过布置先前k-1个单位脉冲而达到的相关性,energyy(k-1)表示至今为止通过布置先前k-1个单位脉冲而达到的累加的能量,并且y(k-1,n)表示来自k-1个单位脉冲的先前布置的y在位置n处的幅度。为了进一步加速循环内迭代处理,能量项energyy(k)的标度下降2,从而移除内循环中的一次乘法。
(等式7)
其中,enloopy(k,n)是优选使用的能量变量,并且在最内侧的单位脉冲搜索循环内累加,因为其迭代更新要求比energyy(k,n)少一次的乘法。
(等式8)
通过使n从0到N-1递增来迭代地更新针对第k个单位脉冲的最佳位置nbest
nbest=n,if QPVQ(k,n)>QPVQ(k,nbest) (等式9)
为了避免高成本的划分(对于定点算法而言尤其重要),使用至今为止保存的最佳均方相关性分子bestCorrSq和保存的最佳能量分母bestEn的交叉相乘来执行QPVQ最大化更新决定,其可以表达为:
(等式10)
QPVQ(k,n)的迭代最大化可以基于到第K个椎体表面之下的点的整数投影,利用目标L1范数K中的单位脉冲的保障下冲,而从布置的单位脉冲的零数目或者从自适应降低成本的单位脉冲的预先布置数目开始。
PVQ搜索准备分析
由于PVQ整数矢量yN,K的结构化性质(其中,所有可能的带符号组合被允许并且可以对所有带符号组合进行编码),只要产生的矢量依附于K个单位脉冲的L1范数,那么就在所有的正第一“象限”中执行搜索(在“象限”上加引号的原因在于仅在N=2时才存在真象限,而N在这里可以大于2)。此外,发明人认识到,为了达到针对有限精度实施的尽可能高的精确度,输入信号x(n)的最大绝对值xabsmax可以被预分析以在未来用于内循环相关性累加处理的设置。
xabs(n)=|x(n)|,for n=0,...,N-1 (等式11)
xabsmax=max(xabs0,...,xabsN-1) (等式12)
对极低能量目标和极低能量子矢量的处理
在输入目标矢量(等式3中的x或等式0中的t)是全零矢量和/或矢量增益(例如,等式0中的G)极低的情况下,可以绕过PVQ搜索,并且可以通过将K个单位脉冲的一半分配给第一位置并将剩余的单位脉冲分配给最后位置(y[N-1]=y[N-1]+(K-y[0])),来确定性地创建有效PVQ矢量y。
在一个实施例中,术语“极低能量目标”和“极低矢量增益”低至零,如在下文公开的示例性ANSI C-代码中所示,其中,相应的代码为:
IF(L_xsum==0||neg_gain==0)
{/*zero input or zero gain case*/
然而,还可能小于或等于epsilon或EPS,其中,EPS是高于零的最低值并被视为值得以选择的精度来表示。例如,在带符号的16比特字中的精度Q15中,子矢量增益变得小于或等于EPS 1/215=1/32768(例如,矢量增益小于或等于0.000030517578125),并且在针对目标矢量x(n)的带符号的16比特字中的精度Q12的情况下,“极低”值变为EPS=(1/212),例如小于或等于0.000244140625的sum(abs(x(n)))。在具有16比特字的定点DSP架构的一个实施例中,无符号整数格式可以采用从0到65546的任意整数,而带符号整数可以采用-32768到+32767的值。使用无符号分数格式,565536个等级在0和+1中均匀分布,而在带符号分数格式实施例中,所述等级将等间隔地布置在-1和+1之间。
通过应用与零矢量和低增益值相关的该可选步骤,PVQ搜索复杂度降低,并且索引化复杂度在编码器索引化和解码器解索引化之间分布/共享,即,不会为了搜索零目标矢量或极低目标矢量(其无论如何都会降低到零)而“浪费”处理。
可选PVQ预搜索投影
如果脉冲密度比K/N针对每个系数(例如修改的离散余弦变换系数)大于0.5单位脉冲,则进行到K-1子椎体的低成本投影,并将其用作针对y的开始点。另一方面,如果脉冲密度比针对每个系数小于0.5单位脉冲,则迭代PVQ搜索将从0预布置的单位脉冲开始。与将单位脉冲内循环搜索重复K-1次相比,在DSP周期中到“K-1”的低成本投影通常消耗的计算量较小。然而,低成本投影的缺点在于其将产生由于N维地板函数应用而导致的非精确结果。使用地板函数产生的低成本投影的L1-范数通常可以是“K-1”到大概“K-5”之间的任意值,即,在投影之后的结果需要被精细搜索以达到K的目标范数。
低成本投影被执行为:
(等式13)
对于n=0,..,N-1 (等式14)
如果没有进行投影,则开始点是全零y(n)矢量。DSP周期中的投影的DSP成本在N(绝对和)+25(划分)+2N(乘法和地板)周期附近。
在准备用于达到第K个椎体表面的精细搜索中,针对开始点的单位脉冲的累加数目pulsetot、累加相关性corrxy(pulsetot)和累加能量energyy(pulsetot)被计算为:
(等式15)
(等式16)
(等式17)
enloopy(pulsetot)=energyy(pulsetot)/2 (等式18)
PVQ精细搜索
本文中公开的方案涉及PVQ精细搜索(如上所述,其构成或者是PVQ形状搜索的一部分)。在以上章节中描述的内容主要是现有技术的PVQ,除了最前面的确定xabsmax以外,将在下文对其进行进一步的描述。维度N的最终的整数形状矢量y(n)必须依附于K脉冲的L1范数。假设精细搜索被配置为从椎体中的较低点(即,在第K个椎体之下)开始,并且迭代地到达N维第K个超椎体的表面。精细搜索中的K值的范围通常可以从1到512个单位脉冲。
为了将搜索和PVQ索引化的复杂度保持在合理的水平,发明人已经实现了:可以将搜索分割为两个主要分支,其中,当已知在下一个内搜索循环迭代期间内循环能量代表将保持在带符号或无符号的16比特字中时使用一个分支,并且当在下一个内搜索循环迭代期间内循环能量可能超过16比特字的动态范围时使用另一个分支。
针对少量的单位脉冲的固定精度精细搜索
当最终的K低于或等于阈值tp=127个单位脉冲时,energyy(K)的动态变化将始终保持在14比特内,并且enloopy(K)的上移一位的动态变化将始终保持在15比特内。这允许使用带符号16比特字来表示k=K的所有精细脉冲搜索内循环迭代内的每个enloopy(K)。换言之,当K<127时,将不需要超过16比特的字比特长度来表示任意精细脉冲搜索内循环迭代中的energyy(K)或enloopy(K)。
在高效DSP乘法可用的情况下,对于无符号的16比特变量的MultiplyAdd(乘加)和MultiplySubtract(乘减)运算符,阈值可以增加到tp=255,随后enloopy(K)将始终保持在无符号的16比特字内。这里,在一个实施例中,MultiplyAdd是用于将表示音频或视频信号的数据值乘以滤波器或变换值并将乘积累加以得到结果的乘加指令或等同运算。MultiplySubtract运算与MultiplyAdd运算相同,只是加法被减法替代。
在准备下一个单位脉冲添加时,使用如下的先前计算的最大绝对输入值xabsmax
(等式19)
来预分析带符号的32比特字中的下一个循环的累加循环内相关值corrxy的接近最优最大可能的上移。
在等式19中计算的上移表示“最坏的情况”,并且覆盖可以在下一个内循环中进行的最大可能的上移,并且从而确保即使在最坏的情况场景中,在内循环迭代期间与相关性相关的最重要的信息不被丢失或者外移。
可以使用MultiplyAdd和范数指令(归一化)来在大多数DSP架构中将最坏情况的预内循环动态分析执行2-3个周期,并且与维度N无关,分析始终是相同的。在ITU-T G.191虚拟16/32比特DSP中,等式19的运算变为:“corr_upshift=norm_l(L_mac(*L_corrxy,1,xabs_max));”其具有2周期的成本.
应注意的是,这里的norm_l(x)对应于“31-ceil(log2(x))”,并且可以被迭代地表示为31-ceil(log2(x)),其中,ceil(x)是所谓的天花板函数,将实数映射到最小的后续整数。更精确地说,是不小于x的最小整数。对于corrupshift,在括号里的具有上横线的项始终是正数。备选地,可以使用地板函数来计算corrupshift
其中,是不大于x的最大整数。
本文建议的用于接近最优形状搜索相关标度的方法的另一个优点在于,提出的方法不需要预归一化的目标矢量x,这将节省在开始形状搜索之前的一些附加复杂度。
为了使迭代等式10更新尽可能高效,通过以下方法,即使当corrxy(k,n)2包括比适合16比特字的更多的信息时,corrxy(k,n)2分子也可以用16比特带符号的字来表示。
(等式20)
(等式21)
其中,函数“Round16”通过凑整提取带符号的32比特变量中的前16个比特。当使用DSP优化乘法(MultiplyAdd、MultiplySubtract函数)时,该接近最优上移(等式10)和平方相关性的16比特表示bestCorrSq16的使用通过仅利用用于执行等式21测试的9周期和三个变量更新来实现极快的内循环搜索。
现在在采用等式等式20、等式6和等式21的同时,通过在矢量y中的n=0,...,N-1个可能位置上进行迭代来确定矢量y中的下一个单位脉冲的位置。
当确定了针对(目前为止在矢量y中获得的)单位脉冲的最佳位置nbest时,更新累加相关性corrxy(k)、累加循环内能量enloopy(k)和累加单位脉冲的数目pulsetot。如果存在需要添加的其它单位脉冲,即,当pulsetot<K时,利用用于添加下一个单位脉冲的新的接近最优corrupshift分析(等式19)来开始新的内循环。
总体上,该建议的方法针对添加到y(n)的每个单位脉冲的最坏情况复杂度,即,针对每个量化系数大概为5/N+15个周期。换言之,用于添加单位脉冲的尺寸N的矢量上的的循环具有大约N*(5/N+15)个周期(即,5+15*N个周期)的最坏情况复杂度。
针对大量单位脉冲的固定精度精细搜索
当K大于阈值tp时,在该示例实施例中,假设16/32比特有限DSP是tp=127个单位脉冲,则参数energyy(K)的动态变化可以超过14比特,并且1比特上移enloopy(K)的动态变化可以超过15比特。因此,当K大于tp时,为了不非必要地使用高精度,精细搜索被配置为在对{corrxy(k,n)2,enloopy(k,n)}的16比特表示和32比特表示之间进行自适应选择。当预先知道针对矢量y(n)的K将在高于127的最终值结束时,精细搜索将跟踪在目前为止达到的y中的最大脉冲幅度maxampy。这还可以被称为确定maxampy。该最大脉冲幅度信息被用于在进入优化内维度循环之前的预分析步骤。预分析包括确定应该使用什么精度用于即将到来的单位脉冲添加内循环。如图12中所示,通过将N、K输入到PVQ形状搜索,在启动PVQ搜索之前就知道/确定比特分配。该比特分配可以使用公式或存储的表来获得、确定和/或计算将输入到PVQ形状搜索的K,即,针对具有维度N的特定带和特定数量的比特(带),K=function(bits(band),N)。
例如,以上示出的存储的表可以用于确定或者选择K的值。如果维度N是8,并且可用于带bits(band)的比特是14.0,则K将被选为5,因为PVQ(N=8,K=6)需要高于可用比特14.0的数目的14.7211比特。
如果预分析指示在不丢失任何能量信息的情况下需要多于带符号的16比特字来表示内循环能量,则采用更高精度且消耗更多密集高精度单位比特的添加循环,其中,保存的最佳平方相关项和保存的最佳累加能量项两者通过32比特字来表示。
(等式22)
highprecisionactive=FALSE,if(enmarg in≥16)
highprecisionactive=TRUE,if(enmarg in<16) (等式23)
可以在大多数DSP的5-6次附加周期中执行最坏情况预内循环动态分析,并且分析成本针对所有维度都是相同的。在ITU-T G.191STL2009虚拟16/32比特DSP中,等式22和等式23中的运算变为:
其中成本为最大6个周期。
以下ANSI-C代码示例中的相应代码为:
备选地,等式(22)中的能量余量en_margin可以与使用以下地板函数计算的G.191STL函数norm_l()的运算相一致:
在本示例中,如果highprecisionactive为假,即=0,则采用等式20、等式6和等式21中的较低精度内搜索循环,另一方面,当highprecisionactive为真,即=1时,通过采用较高精度内循环、用32比特字来表示enloopy和corrxy 2,来执行下一单位脉冲的定位。也就是说,当highprecisionactive为真时,通过使用等式等式24、等式6和等式25在n=0,...,N-1个可能位置上进行迭代来确定y(n)中的下一个单位脉冲的位置。
(等式24)
(等式25)
换言之,en_margin指示使用多少个上移对下一个循环中的能量进行归一化。如果可以使用16或更多个上移,则能量保持在较低的字长(假设16/32比特字长),并且不需要高精度(32比特表示)循环,所以highprecisionactive被设置为假。以此方式执行(允许能量信息保持在L_energy 32比特字的低部)的一个实施原因在于其计算成本更低:其仅花费1个周期来计算extract_l(L_energy),而备选的round_fx(L_shl(L_energy,en_margin))需要两个周期。
当确定了单位脉冲的最佳位置nbest时,更新累加相关性corrxy(k)、累加循环内能量enloopy(k)和累加单位脉冲的数目pulsetot。此外,在目前为止的最佳整数矢量y中的最大幅度maxampy被保持为最新,即针对下一个单位脉冲添加循环被确定。
maxampy=max(maxampy,y[nbest]) (等式26)
如果存在要添加的其它单位脉冲,即,当pulsetot<K时,通过新的接近最优corrupshift分析等式19和新的能量精度分析等式22和等式23来开始新的内循环,并且随后通过等式等式24、等式6和等式26开始下一个单位脉冲循环。
对于添加到y(n)的每个单位脉冲的高精度方法(在该示例中是32比特字)的最坏情况复杂度大概为针对每个量化系数7/N+31个周期。
基于循环内累加能量的内循环精度选择的效果在于具有高峰值或者具有极精细的粒度(即,最终K是高的)的目标子矢量将更经常地使用较高精度循环和更多的周期,而非峰值或低脉冲粒度的子矢量将更经常地使用较低精度循环和更少的周期。
应注意的是,还可以在K<tp时执行在以上章节中描述的分析。然而,可以通过引入用于应用以上分析的阈值tp来使实施例更高效。
PVQ矢量结束和归一化
在形状搜索之后,每个非零PVQ矢量元素被分配以其适合的符号,并且矢量被L2归一化(也叫做欧几里得范数)为单位能量。此外,如果带被分割,则其通过子矢量增益被进一步缩放。
(等式27)
(等式28)
xq(n)=normgain·y(n),for n=0,...,N-1 (等式29)
以上,提出并规定了两种精度方法:
以上章节中定义的“En16x CorrSq16”(等式19至21)和“En32x CorrSq32”(等式22至26)。在下文中描述两种其他中间复杂度方法,其中,分子相关性平方项和能量项的精度改变。
“En16x CorrSq32”和“En32x CorrSq16”方法
“En16x CorrSq32”方法类似于“En32x CorrSq32”,但是其区别在于内循环发现的最佳单位脉冲更新和比较根据下式使用目前为止的最佳能量的16比特表示bestEn16
(等式30)
“En16x CorrSq32”方法针对每个单位脉冲的近似成本为5/N+21个周期。
“En32x CorrSq16”方法类似于“En32x CorrSq32”,但是其区别在于内循环发现的最佳单位脉冲更新和比较根据下式使用目前为止的最佳平均相关性的16比特表示bestCorrSq16
(等式31)
“En32x CorrSq16”方法针对每个单位脉冲添加的近似成本为每个系数6/N+20个周期。
方面和示例实施例
以下,将参照图1至图4描述本文公开的方案的一些示例实施例。
图1是示出关于PVQ形状搜索的精细搜索的方法的流程图。方法意图被编码器(诸如用于音频和/或视频信号的媒体编码器)执行。PVQ采用目标形状矢量x作为输入,并通过在内部维度搜索循环中迭代地添加单位脉冲来获得矢量y。方法涉及在进入内循环之前执行的预分析。然后将基于矢量y获得输出矢量xq,如前所述。然而,xq的形成不是本文描述的方案的重点,并且这里将不对其进行进一步的描述。
在图1示出的方法中,可以假设编码器跟踪当前矢量y的值maxampy。这里的“当前矢量y”表示目前为止(即,对于k<K)组成的、发现的或构件的矢量y。如前所述,矢量y的开始点可以是到第K个椎体之下的表面的投影,或者是空的全零矢量。图1中示出的方法包括:在进入针对单位脉冲添加的下一个内部维度搜索循环之前,基于当前矢量y的最大脉冲幅度maxampy确定101是否需要多于当前比特字长来在即将到来的内部维度循环中以无损方式表示enloopy。变量enloopy与矢量y的累加能量相关。该方法的执行使得编码器能够将搜索的复杂度保持在合理水平。例如,其通过分析在即将到来的内循环中“最坏情况场景”是否需要比当前所使用的精度更高精度的内循环,使得编码器能够仅在需要时应用精度增加(意味着更高的复杂度)的循环。
在每次进入102内循环之前(即,在每次将单位脉冲添加到矢量y之前),都执行以上描述的预分析。在仅两个不同比特表示(即,诸如16和32比特的比特字长)可用的示例实施例中,将使用enloopy的16比特表示来执行内循环,直到确定需要更长的比特字来表示enloopy,之后,更高的比特字长(即,32比特表示)将应用于内循环计算。使用16比特表示的循环可以被称为“低精度循环”,而使用32比特表示的循环可以被称为“高精度循环”。
是否需要多于初始或当前比特字长的确定102可以替代地被表达为:确定至少两个不同、可选比特字长中的哪个比特字长将用于表示下一个内循环期间的“最坏情况”(最大可能增加)enloopy。至少两个不同比特字长可以包括例如至少16比特字长和32比特字长。
换言之,当确定102需要多于当前比特字长来表示下一个内循环中的enloopy,则用比初始或当前比特字长更长的比特字长表示内循环中的enloopy来执行103内循环计算。另一方面,当确定不需要多于当前比特字长来表示enloopy,则可以通过采用使用当前比特字长表示enloopy的第一单位脉冲添加循环来执行内循环计算,即,可以继续使用当前比特字长。这也在例如示出两个不同循环的使用的图4中示出。图4示出一个低精度内循环,其在确定403用当前(较低)比特字长足够时运行405;以及一个高精度内循环,其在确定403需要更高的比特字长来代表内循环中的能量时运行,以不丢失信息。
该方法基于以下实现:在下一个内循环中的能量变量(诸如enloopy)的最大可能增加将在单位脉冲添加到与当前maxampy相关联的y中的位置时发生。当实现了以上条件时,在进入内循环之前可以确定在下一个内循环期间是否存在超出当前使用的比特字长(例如16比特)的表示容量的风险。换言之,确定是否需要多于当前比特字长来表示enloopy的操作包括:在即将到来的内部搜索循环中确定单位脉冲添加到与maxampy相关联的y中的位置时的情况的特性。例如,可以确定表示在即将到来的内循环中的enloopy所需要的比特的数目,或者备选地,在表示即将到来的内循环中的enloopy的比特字长中的剩余余量。
对于与低K相关联的目标形状矢量,可以预先确定将不需要比初始和当前使用的比特字长更长的比特字长。因此,可以应用阈值Tk,使得仅针对与超出阈值Tk的K相关联的目标形状矢量执行特定运算。对于这种目标矢量,编码器将通过在每次脉冲添加之后更新maxampy来跟踪该值。对于与比阈值更低的K相关联的目标矢量,不需要跟踪maxampy。如前所述,以16和32比特字作为示例,可能的Tk将会是127。换言之,仅在与输入目标形状矢量相关联的K的最终值超过阈值Tk时,才执行跟踪maxampy以及确定是否需要多于当前比特字长。
在图2中示出的实施例包括:跟踪或确定201maxampy,并确定202xabsmax。当在内循环中添加新的单位脉冲时可以改变maxampy的值,并且从而需要更新maxampy,以使其在每次循环之后保持最新。例如,动作201可以包括跟踪maxampy,直到k的值达到用于表示enloopy的初始或当前比特字长不再足够的阈值,并且例如开始由动作204表示的分析。在图2中作为动作206示出在接着例如动作204的分析的内循环之后的maxampy的更新。然而,应注意的是,在该处理中不改变xabsmax,并且因此其仅需要被确定202一次。如图2中所示,方法的实施例还可以包括:在进入205用于单位脉冲添加的下一个内部维度循环之前,基于输入形状矢量x的最大绝对值xabsmax,确定203下一个循环的x和矢量y之间的累加循环内相关值corrxy在比特字中的可能上移。上移还可以被表示为倍增(upscaling)。以上的等式19示出最大可能上移的确定。通过执行该等式,可以确保在内循环评估(尤其是最高有效位的内循环评估)期间维持尽可能多的相关性信息比特。应注意的是,形式为corrxy 2的相关值corrxy不需要以无损方式来表示。可以在“更长”比特字中执行最大上移的确定,而不考虑在内循环中使用的当前比特字长。也就是说,即使将在内循环中使用16比特字,也可以针对32比特字确定最大可能上移。当要在内循环中使用更短的比特字长时,确定的上移将随后被“四舍五入”到更短的比特字,如等式20所示。注意,在针对相关值应用的DSP精度中,相关值corrxy始终小于或等于1(1.0),即corrxy≤1.0,因此,针对corrxy确定的最大上移对于corrxy 2也是有效的。
当确定需要多于当前比特字长来表示enloopy时,可以使用更长的比特字长(比当前比特字长更长,例如32而非16比特)表示enloopy来执行内循环计算。
在一个实施例中,当确定需要多于当前比特字长来表示enloopy时,可以利用更长的比特字长(比当前比特字长更长)来执行内循环计算,从而还表示内循环中的累加循环内相关值corrxy 2。这例如在图3的动作305中示出。也就是说,针对能量值enloopy确定的比特字长还可以应用于corrxy 2
如前所述,优选在用于单位脉冲添加的内部维度搜索循环中避免执行等式8的除法。因此,可以执行如等式10中所示的交叉相乘。也就是说,可以通过将针对y中的每个位置n的当前n的相关性和能量值的交叉相乘以及根据n的先前值保存的“目前为止最佳”的相关性BestCorrSq和“目前为止最佳”的能量值bestEn评估为下式,来确定针对添加单位脉冲的y中的位置nbest
corrxy 2*bestEn>BestCorrSq*enloopy
其中,当corrxy 2*bestEn>BestCorrSq*enloopy时,
位置nbest可以指用于添加单位脉冲的y中的“最佳”位置。应注意的是,可以使用“≥”来替代以上表达式中的“>”。然而,当试图将计算成本保持为尽可能低时优选使用“>”,即,“大于”。
根据上述任意实施例的方法的执行使得该交叉相乘能够以高效方式(例如,不使用比实际需要的更高的精度)来执行。
实施方式
以上描述的方法和技术可以被实施在编码器或编解码器中,所述编码器或编解码器可以包括在例如通信设备中。
编码器,图11a至图11c
在图11a中以概述方式示出编码器的示例实施例。编码器可以是媒体编码器,被配置为对音频和/或视频信号进行编码。编码器1100被配置为执行以上参照图1至图5中的任意一个描述的方法实施例的至少一个。编码器1100与前述方法实施例的相同技术特征、目的和优点相关联。在一些实施中,编码器与存储器和/或复杂度方面的约束相关联,诸如当编码器被配置为具有固定精度的DSP时。将简要地描述编码器以避免不必要的重复。
编码器可以被实施为和/或描述为如下:
编码器1100被配置用于椎体矢量量化,包括所谓的精细搜索或精细形状搜索,其中,椎体矢量量化器(PVQ)被配置为采用目标矢量x作为输入,并通过在内部维度搜索循环中迭代地添加单位脉冲来获得矢量y。输入矢量x具有维度N和L1-范数K。编码器1100包括处理电路,或处理装置1101和通信接口1102。处理电路1101被配置为使得编码器1100在进入用于单位脉冲添加的下一个内部维度搜索循环之前:基于当前矢量y的最大脉冲幅度maxampy,确定是否需要多于当前比特字长来在即将到来的内部维度循环中以无损方式表示与y的累加能量相关的变量enloopy。还可以表示为例如输入/输出(I/O)接口的通信接口1102包括用于将数据发送到其它实体或模块或者从其它实体或模块接收数据的接口。
如图11b中所示,处理电路1101可以包括诸如处理器1103(例如CPU)的处理装置以及用于存储或贮存指令的存储器1104。存储器随后将包括计算机程序1105形式的指令,当该指令被处理装置1103执行时使编码器1100执行上述动作。
在图11c中示出处理电路1101的备选实施。这里,处理电路包括确定单元1106,被配置为使得编码器1100在进入用于单位脉冲添加的下一个内部维度搜索循环之前:基于当前矢量y的最大脉冲幅度maxampy,确定是否需要比当前比特字长所允许的更高精度来在即将到来的内部维度循环中以无损方式表示与y的累加能量相关的变量enloopy。处理电路1101可以包括更多单元,诸如精细搜索单元1107,被配置为使得编码器运行具有特定比特字长和/或特定精度的内部维度循环。
上述编码器可以被配置为用于本文描述的不同方法实施例,诸如用于当确定需要多于当前比特字长来表示enloopy时,使用表示enloopy可能的corrxy 2的和更长比特字来执行内循环计算。这里,“更长”表示比当前或初始比特字长更长。
编码器1100可以被假设为包括用于执行普通编码器功能的其它功能。
上述编码器可以包括在诸如通信设备的设备中。通信设备可以是移动电话、视频相机、录音机、平板、台式电脑、膝上型电脑、TV机顶盒或家庭服务器/家庭网关/家庭接入点/家庭路由器形式的用户设备(UE)。在一些实施例中,通信设备可以适于编码和/或转码的通信网络设备。这种通信网络设备的示例是诸如媒体服务器、应用服务器、路由器、网关和无线电基站的服务器。通信设备还可以适于布置在(即嵌入在)诸如船只的船舶、无人飞机、飞机和诸如汽车、巴士或卡车的路面车辆中。这种嵌入式设备通常属于车辆通信单元或车辆信息娱乐系统。
可以使用任何传统技术(诸如离散电路或集成电路技术,包括通用电子电路和专用电路两者)将本文描述的步骤、功能、处理、模块、单元和/或块实施为硬件。
特定示例包括一个或多个适当配置的数字信号处理器和其它已知电子电路,例如,相互连接以执行专用功能的离散逻辑门或者专用集成电路(ASIC)。
备选地,上述步骤、功能、处理、模块、单元和/或块中的至少一些可以实施为诸如计算机程序的软件,用于被包括一个或多个处理单元的合适处理电路执行。在通信设备中使用计算机程序之前和/或期间,软件可以由诸如电子信号、光信号、无线电信号或计算机可读存储介质的载体承载。
当被一个或多个处理器执行时,本文提出的流程图可以被视为计算机流程图。相应的装置可以被一组功能模块定义,其中,由处理器执行的每个步骤对应于功能模块。在此情况下,功能模块被实施为在处理器上运行的计算机程序。将理解的是,功能模块不需要对应于实际的软件模块。
处理电路的示例包括但不限于一个或多个微处理器、一个或多个数字信号处理器(DSP)、一个或多个中央处理单元(CPU)和/或诸如一个或多个现场可编程门阵列(FPGA)或一个或多个可编程逻辑控制器(PLC)的任何合适可编程逻辑电路。也就是说,上述不同设备中的布置中的单元或模块可以被实施为模拟和数字电路的组合、和/或配置有例如存储在存储器中的软件和/或固件的一个或多个处理器。这些处理器中的一个或多个以及其它数字硬件可以包括在单个专用集成电路(ASIC)中,或者若干处理器和各种数字硬件可以分布在若干单独组件中,不论是独立封装还是组装到片上系统(SoC)中。
应理解,可以再利用实施有提出的技术的任何传统设备或单元的一般处理能力。可以通过将现有软件再编程或者通过添加新的软件组件来再利用现有软件。
其他示例实施例
以稍微不同的方式进行说明,本文的公开涉及例如以下方案和实施例。
方案之一是编码器/编解码器,其中,编码器/编解码器被配置为执行例如在图5至图6中示出的一个、多于一个或者甚至以下所有步骤:
-例如根据以上等式11和12(如一个实施例中的图5中的步骤S1所示)确定、计算或获得输入目标矢量(x(n))的最大绝对值(xabsmax),
-例如通过根据以下等式19(如一个实施例中的图5中的步骤S2所示)计算带符号的32比特字中的下一个循环的累加循环内相关值的可能上移,至少基于最大绝对值(xabsmax)来确定、计算或获得相关值的可能上移,
-如果最终的单位脉冲的数目(K)将以高于阈值(tp)(阈值可以例如是127个单位脉冲)结束,则确定(例如跟踪/存储)根据以上的矢量(y(n))的等式26计算的最大脉冲幅度(maxampy)值/信息,其中,矢量(y(n))可以根据以上的等式13和14来定义,并且
○例如通过根据以下的等式22和23的计算(如图6中的步骤S3所示),基于存储的最大脉冲幅度确定/计算/决定/选择是否需要或者应该使用多于特定字长(例如,多于带符号的16比特字或多于带符号的32比特字)来无损地或者不明显丢失任何能量信息地表示内循环能量,
○如果需要多于特定字长,则通过多于特定字长(例如,32比特字或64比特字)来表示最佳平方相关项/参数/值和最佳累加能量项/参数/值,
○如果需要少于特定字长,则运行第一循环,
○如果需要多于特定字长,则运行第二备选循环,其具有通过多于特定字长字表示的“目前为止最佳”(接近最优)的累加能量项和最佳平方相关项。
与较低精度(即,相对于第二循环)的第一循环相比,第二循环可以是较高精度并且在计算上更密集的高精度单位脉冲的循环。对内循环精度的基于循环内累加能量的选择具有以下效果:具有高峰值或者具有极精细粒度(最终K是高的)的目标子矢量将或者可以更频繁地使用较高精度循环和更多的周期,而非峰值或低脉冲粒度子矢量将或者可以更频繁地使用较低精度循环和更少的周期。
一个方案涉及如图9中所示的通信设备1,其包括用于视频或音频编码的编码器或编解码器2(例如EVS编码器)。
编码器或编解码器可以全部或者部分地实施为位于通信设备中的DSP。在一个第一实施例中,编码器/编解码器被配置为基于目标子矢量(x(n))、有限单位脉冲的数目(K)、目标子矢量的子矢量维度值(N)以及可选的还有一个或多个增益值(gsub),来进行PVQ形状搜索。编码器或编解码器还可以被配置为进行PVQ带分割,并且在此情况下,PVQ形状搜索还将基于带(NS)的子矢量的数目/值以及增益矢量G的最大增益(gmax=max(G)=max(go...g(Ns-1))。编码器或编解码器还被配置为从PVQ形状搜索输出将被编码器用于PVQ索引化的整数矢量(y)和/或形状子矢量(xq(n))。整数矢量(y)包括元素值并且具有与子矢量维度值(N)相同的长度,并且所有元素值的绝对和等于单位脉冲的数目(K)。
编码器/编解码器/通信设备被配置为执行PVQ形状搜索,其中,编码器/编解码器/通信设备被配置为:
-例如根据以上等式11和12确定、计算或获得(S1、S23)输入(目标)矢量(x(n))的最大绝对值(xabsmax),
-例如通过根据以上等式19计算带符号的32比特字中的下一个循环的累加循环内相关值的可能上移,至少基于最大绝对值(xabsmax)来确定、计算或获得(S2、S28)相关值的可能上移,
-如果最终的单位脉冲的数目(K)将以高于阈值(tp)结束,则跟踪/存储(S30)根据例如以上矢量(y(n))的等式26计算的最大脉冲幅度(maxampy)值/信息,其中,矢量(y(n))可以根据以上等式13和14来定义,并且
○例如通过根据以上等式22和23的计算,基于存储的最大脉冲幅度确定/计算/决定/选择(S3、S32)是否需要或者应该使用多于特定字长(例如,多于带符号的16比特字或多于带符号的32比特字)来表示内循环能量,
○如果需要多于特定字长,则通过多于特定字长(例如,32比特字或64比特字)来表示(S34)最佳平方相关项/参数/值和最佳累加能量项/参数/值,
○如果确定少于特定字长,则运行(S33)第一循环,
○如果确定多于特定字长,则运行(S35)第二备选循环,其具有通过多于特定字长字表示的最佳累加能量项和最佳平方相关项。
以上PVQ形状搜索可以是有限精度PVQ形状搜索,在一个实施例中,所述PVQ形状搜索由矢量量化器执行,所述矢量量化器是编码器/编解码器的一部分,并且可以至少部分地但是也可以全部实施为位于或适于位于通信设备中的DSP单元。因此,编码器/编解码器可以全部或部分地实施为硬件单元,例如,DSP或可编程现场门阵列(FPGA)。然而,在备选实施例中,可以利用通用处理器或编解码器计算机程序来实施编码器/编解码器,其中,当所述计算机程序在通用处理器上运行时使通信设备执行以上段落中提到的一个或多个步骤。处理器还可以是精简指令集计算(RISC)处理器。
如以上段落中提到的,本文公开的另一方案是在图10中示出的计算机程序6,并且其中一个实施例通过在下文的附录1中的ANSI-C代码示例(诸如包括计算机可读代码的编码器计算机程序或编解码器计算机程序)完全公开,当所述计算机程序在通信设备1的处理器/处理器单元4上运行时,使通信设备执行结合以下段落中的方法提到的一个或多个步骤或者结合图7提到的任何步骤。
另一个方案是由通信设备/编码器/编解码器执行的PVQ形状搜索方法,其中,所述方法包括以下步骤中的一个或多个:
-例如根据以上等式11和12确定、计算或获得(S1)输入(目标)矢量(x(n))的最大绝对值(xabsmax),
-例如通过根据以上等式19计算带符号的32比特字中的下一个循环的累加循环内相关值的可能上移,至少基于最大绝对值(xabsmax)来确定、计算或获得(S2、S28)相关值的可能上移,
-如果最终的单位脉冲的数目(K)将以高于阈值(tp)结束,则跟踪/存储根据以上矢量(y(n))的等式26计算的最大脉冲幅度(maxampy)值/信息,其中,矢量(y(n))可以根据以上等式13和14来定义,并且
○例如通过根据以上等式22和23的计算,基于存储的最大脉冲幅度确定/计算/决定/选择(S3)是否需要或者应该使用多于特定字长(例如,多于带符号的16比特字或多于带符号的32比特字)来表示循环内能量,
○如果需要多于特定字长,则通过多于特定字长(例如,32比特字或64比特字)来表示最佳平方相关项/参数/值和最佳累加能量项/参数/值,
○如果确定少于特定字长,则运行第一循环,
○如果确定多于特定字长,则运行第二备选循环,其具有通过多于特定字长字表示的最佳累加能量项和最佳平方相关项。
如上所述,通信设备可以是采取移动电话、视频相机、录音机、平板、台式电脑、膝上型电脑、TV机顶盒或家庭服务器/家庭网关/家庭接入点/家庭路由器等形式的用户设备(UE)。
另一方案是存储有计算机程序的任意以上实施例的计算机可读存储介质5(见图10)。计算机可读存储介质可以采取易失或非易失存储器(例如EEPROM(电可擦PROM)、FPGA、闪存(包括固态驱动器)和硬盘驱动器)的形式。
在图9中示出通信设备1的实施例。通信设备包括用于执行PVQ形状搜索的一个、多于一个或以下所有单元:
-第一确定单元(U1),用于例如根据以上等式11和12确定、计算或获得输入(目标)矢量(x(n))的最大绝对值(xabsmax),
-第二确定单元(U2),用于例如通过根据以上等式19计算带符号的32比特字中的下一个循环的累加循环内相关值的可能上移,至少基于最大绝对值(xabsmax)来确定、计算或获得相关值的可能上移,
-存储单元(U3),如果最终的单位脉冲的数目(K)将以高于阈值(tp)结束,则跟踪/存储根据以上矢量(y(n))的等式26计算的最大脉冲幅度(maxampy)值/信息,其中,矢量(y(n))可以根据以上等式13和14来定义,
-选择单元(U4),例如通过根据以上等式22和23的计算,基于存储的最大脉冲幅度确定/计算/决定/选择是否需要或者应该使用多于特定字长(例如,多于带符号的16比特字或多于带符号的32比特字)来表示内循环能量,
-表示单元(U5),如果通过选择单元选择了多于特定字长,则利用多于特定字长的字长(例如,32比特字或64比特字)来产生最佳平方相关项/参数/值和最佳累加能量项/参数/值,以及
-内循环处理单元(U6),用于:
○如果通过选择单元选择了少于特定字长,则运行第一循环,
○如果通过选择单元选择了多于特定字长,则运行第二备选循环,其具有通过多于特定字长字表示的最佳累加能量项和最佳平方相关项。
在以上段落中提到的单元可以以通信单元中的DSP的形式包括在编解码器/编码器2中,并还可以包括在DSP的硬件矢量量化器中。在备选实施例中,以上段落中的所有单元作为软件实现在通信设备中。
如图9中进一步所示,通信设备1还可以包括与编码器/编解码器相关的单元,尤其包括与矢量量化和PVQ形状搜索相关的单元。这种单元被配置为实现根据在本申请中包括的描述和附图的形状搜索。图9中示出的示例性单元为:
-PVQ带分割单元U7,用于执行结合图7所述的可选步骤S21,
-比较单元U8,用于执行结合以下图7所述的步骤S24,
-PVQ矢量产生单元U9,用于执行以下描述的步骤S25,
-开始点产生单元U10,用于执行以下描述的步骤S26,
-参数计算单元U11,用于执行以下描述的步骤S27,
-比特分配单元U12,用于例如将K和N应用于形状搜索,
-PVQ索引化单元U13,可以被视为接收来自本文公开的PVQ形状搜索的输出的接收器,
-归一化单元U14,用于执行以下描述的步骤S36,
-输出单元U15,用于执行以下描述的步骤S37。
在通信设备中的软件实施的情况下,通信设备1的实施例可以被定义为包括处理器4和存储器形式的计算机程序存储产品5的通信设备,所述存储器包含可以由所述处理器执行的指令,由此,所述通信设备可以操作为执行一个、多于一个或者所有以下步骤:
-例如根据以上等式11和12确定、计算或获得输入(目标)矢量(x(n))的最大绝对值(xabsmax),
-例如通过根据以上等式19计算带符号的32比特字中的下一个循环的累加循环内相关值的可能上移,至少基于最大绝对值(xabsmax)来确定、计算或获得相关值的可能上移,
-如果最终的单位脉冲的数目(K)将以高于阈值(tp)结束,则跟踪/存储根据以上矢量(y(n))的等式26计算的最大脉冲幅度(maxampy)值/信息,其中,矢量(y(n))可以根据以上等式13和14来定义,以及
○例如通过根据以上等式22和23的计算,基于存储的最大脉冲幅度确定/计算/决定/选择是否需要或者应该使用多于特定字长(例如,多于带符号的16比特字或多于带符号的32比特字)来表示内循环能量,
○如果需要多于特定字长,则通过多于特定字长(例如,32比特字或64比特字)来表示最佳平方相关项/参数/值和最佳累加能量项/参数/值,
○如果确定少于特定字长,则运行第一循环,
○如果确定多于特定字长,则运行第二附加循环,其具有通过多于特定字长字表示的最佳累加能量项和最佳平方相关项。
为了进一步示出方案和实施例,以下将结合图7至图8描述它们中的一些。
图8提供新兴的3GPP EVS的发送侧(包括EVS编码器3)的概视图,这里,EVS编码器3包括在通信设备1中。
图7以描述与在图5至图6中示出的实施例相关的一些实施例的备选方式示出一些方法步骤。即使参照图7描述的一些步骤可以视为结合PVQ形状搜索做出,但是应该清楚,一些步骤还可以视为在PVQ形状搜索之前执行。在可选的第一步骤S21中,执行PVQ带分割。
在第二步骤S22接收可选地来自步骤S21的形状目标子矢量,其中根据实施例,还可以接收gsub、gmax和Ns
在第三步骤S23(对应于图5的步骤S1)中,例如通过首先计算目标矢量的子矢量x(n)的绝对值并随后选择子矢量的最大绝对值,来确定目标矢量的最大绝对值。
在可选的第四步骤S24中,确定目标矢量的值是否等于或小于第一阈值。阈值被设置为“滤出”被视为具有极低能量值的目标矢量。如上文的解释,在一个实施例中,阈值可以被设置为等于零。在第四步骤中还可以决定子矢量增益是否等于或小于第二阈值。在一个实施例中,将第二阈值设置为零,但是在其它实施例中可以根据用于处理字的精度将第二阈值设置为机器精度(Machine Epsilon)。
如果在第四步骤S24中确定目标矢量等于或小于第一阈值和/或子矢量增益小于或等于第二阈值,则在可选的第五步骤S25创建PVQ矢量。在一个实施例中,通过将K个单位脉冲的一半分配给第一位置并且将剩余的单位脉冲分配给最后位置(y[N-1]=y[N-1]+(K-y[0])),来确定性地进行创建。该步骤与第四步骤S24结合可以被视为绕过整个实际PVQ形状搜索,但是还可以被视为在一般PVQ形状搜索处理的情境下的子例程。
在可选的第六步骤S26,针对接下来的PVQ形状搜索设置y的初始值(开始点)y_start,其中,初始值取决于K和N之间的比例。如果比例大于第三阈值(可以是每个系数0.5个单位脉冲),则使用到K-1个子椎体的第一投影作为接下来的步骤中的初始矢量y_start。可以根据以上等式13和14计算第一投影。如果比第三阈值低,则确定初始矢量y_start从0个预布置的单位脉冲开始。
在准备后续PVQ形状搜索步骤时,在第七步骤S27中将所有初始矢量值y_start设置为零。在该步骤中,例如根据等式15至17分别计算针对开始点的第一参数(这里称为单位脉冲的累加数目pulsetot)、第二参数(这里称为累加的相关性corrxy(pulsetot))和第三参数(这里称为累加的能量energyy(pulsetot))。在该步骤中还可以根据以上等式18计算第四参数(这里称为enloopy(pulsetot))。
在第八步骤S28中,开始PVQ形状搜索,或者如果以不同角度来看,利用先前获得、确定或计算的K、N、x_abs、max_xabs和y以及在一些实施例中还有gsub、gmax和NS,针对K个剩余单位脉冲开始PVQ形状搜索的第二、精细搜索部分。通过例如图6全面地示出该精细搜索的一些实施例的具体步骤,但是在一些实施例中将强调精细搜索包括:针对完成了精细搜索或内循环的单位脉冲的至少一些(在一些实施例中是全部)确定计算第五参数/值(这里称为相关值的上移corrupshift)。在一些实施例中,基于以上等式19计算带符号的32比特字中的下一个循环的累加循环内相关值的可能上移,并且随后将corrupshift用作到等式20的计算相关值corrxy的输入。
在第九步骤S29(其可以被视为精细PVQ形状搜索的一部分)中,针对最终单位脉冲的数目确定最终单位脉冲的数目K是否将高于第三阈值tp。如果是的话,则在第十步骤S30,存储最大脉冲幅度maxampy
在第十一步骤S31中,根据例如等式22计算第六参数enmargin
在第十二步骤S32中,将第六参数与对应于特定字长的第四阈值进行比较。
如果结果为是(图7的S32)或假(附录1中的ANSI代码示例)(即,示例性等式/决定23中的enmargin等于或大于第四阈值“16”),则在步骤S33,运行第一、更快且“更粗糙”的循环,而不是运行精细搜索的第二循环。例如在图6中示出第一循环的实施例。
如果结果为“否”(图7的S32)或帧(附录1中的ANSI代码示例)(即,示例性等式/决定23中的enmargin小于“16”),则在第十四步骤S34中将第七参数(最佳平方相关项/参数/值)、第八参数(最佳累加能量项/参数/值)产生/变换为多于预定字长,随后在第十五步骤S35中被用于精细搜索的第二、更详细的内循环中。例如在图6中更详细地示出第二循环的实施例。
在第十六步骤S36中,为至少每个非零PVQ子矢量元素分配合适符号,并且将矢量L2归一化为单位能量。在一些实施例中,如果带被分割,则用子矢量增益gsub对其进行缩放。
还可以基于等式28确定归一化的xq。以上更全面地描述了用于该步骤的示例性处理。
在第十七步骤S37中,从PVQ形状搜索处理输出归一化的xq和y,并且它们被转发到包括在例如编解码器中的PVQ索引化处理。
实施例和方案的一些优点
以下是由以上公开的方案和实施例的至少一些实现的相比于现有技术的一些优点。
提出的使用当前累加最大相关性的预分析的相关标度方法/算法提高了有限精度的PVQ形状量化搜索实施的最坏情况(最小)SNR性能。用于前述相关性余量分析的自适应准则需要很大的附加复杂度。此外,不需要高成本地将目标矢量x预归一化为例如单位能量。
针对例如软16/32比特精度内循环决定的对初始结果中的最大脉冲幅度进行跟踪并随后对最坏情况累加能量进行预分析的自适应准则需要极小的附加计算复杂度,并提供良好的平衡,其中,复杂度可以被维持在低水平而同时仍然使用高精度相关性和高精度能量度量用于相关输入信号,并且还将更高的精度分配给更加重要的峰值信号。换言之,实施例和方案中的至少一些提高了计算机/处理器本身的功能。
在下面的附录2的表2/3中,可以发现使用自适应精度逻辑的基于PVQ的示例系统的成本将是6.843WMOPS,在所有(任何K)内部搜索循环中使用32比特能量和平方相关精度的情况下,成本将提高到10.474WMOPS。
总结注释
以上描述的实施例仅仅给出为示例,并且应理解,提出的技术不限于此。本领域技术人员将理解,可以在不脱离本范围的情况下进行各种修改、组合和改变。具体地,在技术上可能的其它配置中,可以组合不同实施例中的不同部分方案。
当使用词语“包括”或“包含”时,其将被解释为非限制性的,即,意味着“包括……的至少一个”。
应注意的是,在一些备选实施中,在块中标注的功能/动作可以以不同于在流程图中标出的顺序发生。例如,取决于涉及的功能/动作,连续示出的两个块实际上可以基本上同时执行,或者所述块有时可以以相反顺序执行。此外,流程图和/或框图给出的块的功能可以分离为多个块和/或流程图和/或框图的两个或更多个块的功能可以至少部分地整合。最后,在不脱离发明构思的范围的情况下,可以在示出的块之间添加/插入其它块,和/或可以省略块/操作。
将理解,在本公开内的交互单元的选择以及单元的命名仅仅用于示例目的,并且适于执行上述任意方法的节点可以以多种替代方式来配置,以能够执行建议的处理动作。
应注意的是,在本公开中描述的单元应被视为逻辑实体,而不必须视为单独的物理实体。
对元件的单数形式的引用不意图表示“有且仅有一个”(除非如此明确阐述),而是表示“一个或多个”。针对上述实施例的元件的所有的结构和功能等同物通过引用明确地合并于此并且意图包含在本公开内。此外,设备或方法不必须解决应该被本文公开的技术所要解决的每个和每一个问题,而应被视为包含在本公开中。
在本文的一些实例中,省略对公知设备、电路和方法的详细描述,从而不以不必要的细节模糊公开的技术的描述。本文记载公开技术的原理、方案和实施例的所有阐述及其具体示例意在包含其结构和功能等同物两者。此外,这种等同物应该包括当前已知的等同物以及未来开发的等同物,例如,开发的执行相同功能的任意元件,而不论结构如何。
缩写词
N 矢量维度
Ns 子矢量维度
x 目标矢量
xq 量化形状矢量
yfinal 依附于L1-范数的整数矢量
K 最终单位脉冲的数目
k 累加单位脉冲索引的数目
n 系数或样本索引
I 子矢量索引
MDCT 修改的离散余弦变换
PVQ 椎体矢量量化器(量化)
WC 最坏情况
WMOPS 每秒的加权百万操作
AccEn 累加能量
ROM 只读存储器
PROM 程序ROM
SNR 信噪比
EVS 增强语音服务
3GPP 第三代合作伙伴计划
DSP 数字信号处理器
CELT 约束能量重叠变换
IETF 互联网工程任务部
MAC 乘加
ACELP 代数码激励线性预测
EPS 机器精度
附录1:采取ANSI-C代码的实施例的示例性实现
以下是采用使用STL 2009G.191虚拟16/32比特(DSP的仿真)的ANSI C-代码的示例实施例的实现的示例。
本领域技术人员应该容易读懂以上代码,因此在此不对其进行更详细的解释。然而,对于非本领域技术人员,因注意,关系运算符“==”是如下示例的操作符:
当值A和B相等时,“A==B”返回被设置为逻辑1(真)的逻辑值;否则返回逻辑0(假)。L_mac是乘加,意味着L_mac(L_v3,v1,v2)=L_v3+v1*v2。
附录2:表格化的仿真结果
仿真背景
已经对本文公开的实施例进行了仿真。对于进行的所有PVQ形状搜索而言,使用的比特率为64000bps,并且编解码器操作在MDCT模式,其初始MDCT系数子带尺寸为[8,12,16,24,32]系数。这些带可以很好地划分为更小的带区间,每个带区间通过PVQ带分割算法由子矢量表示。例如,在被分配足够比特的情况下,尺寸8的带可以被分割为更小的子区间,例如,“4,4”或“3,3,2”。通常,以如下方式分割每个带:最大的32比特可以被用于每个最终子矢量的形状编码。
在该PVQ索引化实施中,尺寸8的带可以具有多达36个单位脉冲,尺寸7的子区间可以具有多达53个单位脉冲,并且尺寸6的区间可以具有多达95个单位脉冲,尺寸5的区间可以具有多达238个单位脉冲,尺寸4、3、2、1的区间可以具有多达512个单位脉冲。由于通过带分割动态地创建具有大数目的脉冲的更短区间,它们与更长的子矢量尺寸相比更不频繁。在下面的结果表中的WMOPS项包括:(PVQ预搜索、PVQ精细搜索、PVQ归一化和PVQ索引化)。在下面的结果表中的“%相同”项是与非约束浮点PVQ形状搜索相比,在评估的有限精度形状搜索算法中发现的相同矢量的数目。
结果表
表1针对最终K<=127的结果
表2针对K>127的结果。

Claims (18)

1.一种用于由编码器执行的椎体矢量量化器PVQ形状搜索的方法,所述PVQ采用目标矢量x作为输入,并通过在内部维度搜索循环中迭代地添加单位脉冲来获得矢量y,所述方法的特征在于:
在进入用于单位脉冲添加的下一个内部维度搜索循环之前:
基于当前矢量y的最大脉冲幅度maxampy,确定(102、204)是否需要多于当前比特字长来在即将到来的内部维度循环(103)中以无损方式表示与y的累加能量相关的变量enloopy
2.根据权利要求1所述的方法,其中,所述方法还包括:
在进入用于单位脉冲添加的下一个内部维度循环之前:
基于输入矢量x的最大绝对值xabsmax,确定(203)比特字中的x和矢量y之间的下一个循环累加循环内相关值corrxy的可能上移。
3.根据权利要求1或2所述的方法,还包括:
当需要(102、204、304、403)多于当前比特字长来表示enloopy时:
使用更长比特字长表示enloopy来执行(103、205、305、404)内循环计算。
4.根据权利要求1或2所述的方法,还包括:
当需要多于当前比特字长来表示enloopy时:
使用更长比特字长执行(305)内循环计算以表示内循环中的x和矢量y之间的平方累加循环内相关值corrxy 2
5.根据权利要求1或2所述的方法,还包括:
当不需要多于当前比特字长来表示enloopy时:
通过采用使用第一比特字长表示enloopy的第一单位脉冲添加循环来执行(405)内循环计算,以及,
当需要多于当前比特字长来表示enloopy时:
通过采用使用比第一单位脉冲添加循环更长的比特字长表示enloopy的第二单位脉冲添加循环来执行(404)内循环计算。
6.根据权利要求1或2所述的方法,还包括:
当不需要多于当前比特字长来表示enloopy时:
通过采用具有特定精度的第一单位脉冲添加循环来执行(405)内循环计算,以及,
当需要多于当前比特字长来表示enloopy时:
通过采用具有比第一单位脉冲添加循环更高的精度的第二单位脉冲添加循环来执行(404)内循环计算。
7.根据权利要求1或2所述的方法,其中,基于maxampy确定是否需要多于当前比特字长来表示enloopy包括:确定在即将到来的内部搜索循环中单位脉冲被添加到与maxampy相关联的y中的位置的情况的特性。
8.根据权利要求1或2所述的方法,还包括:
在用于单位脉冲添加的内部维度搜索循环中:
通过将针对y中的每个位置n的当前n的相关性和能量值的交叉相乘以及根据n的先前值保存的平方相关性BestCorrSq和能量值bestEn评估为下式,来确定用于添加单位脉冲的y中的位置nbest
corrxy 2*bestEn>BestCorrSq*enloopy
其中,
当corrxy 2*bestEn>BestCorrSq*enloopy时,
9.根据权利要求1或2所述的方法,还包括:
当与目标矢量x相关联的最终值K超过阈值时,跟踪maxampy
10.一种被配置用于进行椎体矢量量化PVQ形状搜索的编码器,所述PVQ采用目标矢量x作为输入,并通过在内部维度搜索循环中迭代地添加单位脉冲来获得矢量y,所述编码器的特征在于被配置为:
在进入用于单位脉冲添加的下一个内部维度搜索循环之前:
基于当前矢量y的最大脉冲幅度maxampy,确定是否需要多于当前比特字长来在即将到来的内部维度循环中以无损方式表示与y的累加能量相关的变量enloopy
11.根据权利要求10所述的编码器,还被配置为:
在进入用于单位脉冲添加的下一个内部维度循环之前:
基于输入矢量x的最大绝对值xabsmax,确定比特字中的x和矢量y之间的下一个循环累加循环内相关值corrxy的可能上移。
12.根据权利要求10或11所述的编码器,还被配置为:
当需要多于当前比特字长来表示enloopy时,使用更长比特字长表示enloopy来执行内循环计算。
13.根据权利要求10或11所述的编码器,还被配置为:
当不需要多于当前比特字长来表示enloopy时,通过采用使用第一比特字长的第一单位脉冲添加循环来执行内循环计算,以及,
当需要多于当前比特字长来表示enloopy时,通过采用使用比第一单位脉冲添加循环更长的比特字长的第二单位脉冲添加循环来执行内循环计算。
14.根据权利要求10或11所述的编码器,还被配置为:
当不需要多于当前比特字长来表示enloopy时,通过采用具有特定精度的第一单位脉冲添加循环来执行内循环计算;以及,
当需要多于当前比特字长来表示enloopy时,通过采用具有比第一单位脉冲添加循环更高的精度的第二单位脉冲添加循环来执行内循环计算。
15.根据权利要求10或11所述的编码器,其中,基于maxampy确定是否需要多于当前比特字长来表示enloopy被配置为包括:确定在即将到来的内部搜索循环中,单位脉冲被添加到与maxampy相关联的y中的位置的情况的特性。
16.根据权利要求10或11所述的编码器,还被配置为:
在用于单位脉冲添加的内部维度搜索循环中:
通过将针对y中的每个位置n的当前n的相关性和能量值的交叉相乘以及根据n的先前值保存的相关性BestCorrSq和能量值bestEn评估为下式,来确定用于添加单位脉冲的y中的位置nbest
corrxy 2*bestEn>BestCorrSq*enloopy
其中,
当当corrxy 2*bestEn>BestCorrSq*enloopy时,
17.根据权利要求10或11所述的编码器,还被配置为:
当与目标矢量x相关联的最终单位脉冲的数目K超过阈值时,跟踪maxampy
18.一种通信设备,包括根据权利要求10至17中的任意一项所述的编码器。
CN201580001475.5A 2014-07-28 2015-06-25 椎体矢量量化器形状搜索 Active CN105431901B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910135157.8A CN109979470B (zh) 2014-07-28 2015-06-25 椎体矢量量化器形状搜索

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462029586P 2014-07-28 2014-07-28
US62/029,586 2014-07-28
PCT/SE2015/050743 WO2016018185A1 (en) 2014-07-28 2015-06-25 Pyramid vector quantizer shape search

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201910135157.8A Division CN109979470B (zh) 2014-07-28 2015-06-25 椎体矢量量化器形状搜索

Publications (2)

Publication Number Publication Date
CN105431901A CN105431901A (zh) 2016-03-23
CN105431901B true CN105431901B (zh) 2019-03-19

Family

ID=53502817

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201580001475.5A Active CN105431901B (zh) 2014-07-28 2015-06-25 椎体矢量量化器形状搜索
CN201910135157.8A Active CN109979470B (zh) 2014-07-28 2015-06-25 椎体矢量量化器形状搜索

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201910135157.8A Active CN109979470B (zh) 2014-07-28 2015-06-25 椎体矢量量化器形状搜索

Country Status (22)

Country Link
US (3) US9792922B2 (zh)
EP (4) EP3065135B1 (zh)
JP (4) JP6170575B2 (zh)
KR (3) KR102034419B1 (zh)
CN (2) CN105431901B (zh)
AR (1) AR101332A1 (zh)
AU (3) AU2015297066B2 (zh)
CA (1) CA2955765C (zh)
DK (2) DK2992529T3 (zh)
ES (4) ES2718049T3 (zh)
HU (2) HUE042095T2 (zh)
IL (1) IL249104A (zh)
MX (3) MX2018006677A (zh)
MY (1) MY177842A (zh)
NZ (1) NZ726879A (zh)
PL (3) PL3633675T3 (zh)
PT (2) PT2992529T (zh)
RU (2) RU2665898C2 (zh)
SG (3) SG10202000575WA (zh)
TR (1) TR201901612T4 (zh)
WO (1) WO2016018185A1 (zh)
ZA (2) ZA201802791B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6170575B2 (ja) * 2014-07-28 2017-07-26 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ピラミッドベクトル量子化器形状サーチ
US10366698B2 (en) * 2016-08-30 2019-07-30 Dts, Inc. Variable length coding of indices and bit scheduling in a pyramid vector quantizer
WO2019028602A1 (zh) 2017-08-07 2019-02-14 深圳市汇顶科技股份有限公司 应用于超取样转换器的向量量化数模转换电路
US10586546B2 (en) 2018-04-26 2020-03-10 Qualcomm Incorporated Inversely enumerated pyramid vector quantizers for efficient rate adaptation in audio coding
US10573331B2 (en) * 2018-05-01 2020-02-25 Qualcomm Incorporated Cooperative pyramid vector quantizers for scalable audio coding
US10734006B2 (en) 2018-06-01 2020-08-04 Qualcomm Incorporated Audio coding based on audio pattern recognition
AU2022400064A1 (en) * 2021-12-01 2024-06-06 Panasonic Intellectual Property Corporation Of America Encoding device, decoding device, encoding method, and decoding method

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1152776A (zh) * 1995-10-26 1997-06-25 索尼公司 复制语言信号、解码语音、合成语音的方法和装置
CN1451155A (zh) * 1999-09-22 2003-10-22 科恩格森特系统股份有限公司 多模式语音编码器
CN101145787A (zh) * 2006-09-13 2008-03-19 华为技术有限公司 一种矢量量化方法及矢量量化器
CN101345530A (zh) * 2007-07-11 2009-01-14 华为技术有限公司 一种矢量量化方法及矢量量化器
CN102144256A (zh) * 2008-07-17 2011-08-03 诺基亚公司 用于针对矢量量化器的快速最近邻搜索的方法和设备

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4720861A (en) * 1985-12-24 1988-01-19 Itt Defense Communications A Division Of Itt Corporation Digital speech coding circuit
US6128415A (en) * 1996-09-06 2000-10-03 Polaroid Corporation Device profiles for use in a digital image processing system
JP3707153B2 (ja) * 1996-09-24 2005-10-19 ソニー株式会社 ベクトル量子化方法、音声符号化方法及び装置
US6006179A (en) * 1997-10-28 1999-12-21 America Online, Inc. Audio codec using adaptive sparse vector quantization with subband vector classification
US6360204B1 (en) 1998-04-24 2002-03-19 Sarnoff Corporation Method and apparatus for implementing rounding in decoding an audio signal
US6236960B1 (en) * 1999-08-06 2001-05-22 Motorola, Inc. Factorial packing method and apparatus for information coding
JP3960932B2 (ja) * 2002-03-08 2007-08-15 日本電信電話株式会社 ディジタル信号符号化方法、復号化方法、符号化装置、復号化装置及びディジタル信号符号化プログラム、復号化プログラム
JP3731575B2 (ja) 2002-10-21 2006-01-05 ソニー株式会社 符号化装置及び復号装置
KR100487719B1 (ko) * 2003-03-05 2005-05-04 한국전자통신연구원 광대역 음성 부호화를 위한 엘에스에프 계수 벡터 양자화기
WO2004090864A2 (en) * 2003-03-12 2004-10-21 The Indian Institute Of Technology, Bombay Method and apparatus for the encoding and decoding of speech
CN1240050C (zh) * 2003-12-03 2006-02-01 北京首信股份有限公司 一种用于语音编码的固定码本快速搜索方法
US7961890B2 (en) * 2005-04-15 2011-06-14 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Multi-channel hierarchical audio coding with compact side information
US8255207B2 (en) * 2005-12-28 2012-08-28 Voiceage Corporation Method and device for efficient frame erasure concealment in speech codecs
US7461106B2 (en) * 2006-09-12 2008-12-02 Motorola, Inc. Apparatus and method for low complexity combinatorial coding of signals
TWI388218B (zh) * 2007-10-30 2013-03-01 Nippon Telegraph & Telephone 影像編碼方法與解碼方法、其程式及記錄有程式的記錄媒體
US8762141B2 (en) * 2008-02-15 2014-06-24 Nokia Corporation Reduced-complexity vector indexing and de-indexing
CN102081926B (zh) 2009-11-27 2013-06-05 中兴通讯股份有限公司 格型矢量量化音频编解码方法和系统
CN102222505B (zh) * 2010-04-13 2012-12-19 中兴通讯股份有限公司 可分层音频编解码方法系统及瞬态信号可分层编解码方法
CN101986630B (zh) * 2010-10-18 2012-11-21 武汉大学 球面矢量量化编解码方法
US9009036B2 (en) * 2011-03-07 2015-04-14 Xiph.org Foundation Methods and systems for bit allocation and partitioning in gain-shape vector quantization for audio coding
US8838442B2 (en) * 2011-03-07 2014-09-16 Xiph.org Foundation Method and system for two-step spreading for tonal artifact avoidance in audio coding
TR201911121T4 (tr) * 2012-03-29 2019-08-21 Ericsson Telefon Ab L M Vektör niceleyici.
US8749408B1 (en) * 2012-12-27 2014-06-10 Mediatek Singapore Pte. Ltd. Methods for simplified MMI VQ based HARQ buffer reduction for LTE
US9560386B2 (en) * 2013-02-21 2017-01-31 Mozilla Corporation Pyramid vector quantization for video coding
US9425820B2 (en) * 2013-06-03 2016-08-23 Mozilla Corporation Vector quantization with non-uniform distributions
WO2015069177A1 (en) 2013-11-07 2015-05-14 Telefonaktiebolaget L M Ericsson (Publ) Methods and devices for vector segmentation for coding
EP3624347B1 (en) 2013-11-12 2021-07-21 Telefonaktiebolaget LM Ericsson (publ) Split gain shape vector coding
PT3111560T (pt) 2014-02-27 2021-07-08 Ericsson Telefon Ab L M Método e aparelho para indexação e desindexação de quantificação vetorial em pirâmide de vetores de amostra de áudio/vídeo
JP6170575B2 (ja) * 2014-07-28 2017-07-26 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ピラミッドベクトル量子化器形状サーチ

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1152776A (zh) * 1995-10-26 1997-06-25 索尼公司 复制语言信号、解码语音、合成语音的方法和装置
CN1451155A (zh) * 1999-09-22 2003-10-22 科恩格森特系统股份有限公司 多模式语音编码器
CN101145787A (zh) * 2006-09-13 2008-03-19 华为技术有限公司 一种矢量量化方法及矢量量化器
CN101345530A (zh) * 2007-07-11 2009-01-14 华为技术有限公司 一种矢量量化方法及矢量量化器
CN102144256A (zh) * 2008-07-17 2011-08-03 诺基亚公司 用于针对矢量量化器的快速最近邻搜索的方法和设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"A FULL-BANDWIDTH AUDIO CODEC WITH LOW COMPLEXITY AND VERY LOW DELAY";Jean-Marc Valin ET AL;《17th European Signal Processing conference》;20090828;全文

Also Published As

Publication number Publication date
CA2955765C (en) 2018-02-13
RU2665898C2 (ru) 2018-09-04
JP2018156099A (ja) 2018-10-04
CN109979470A (zh) 2019-07-05
CN109979470B (zh) 2023-06-20
RU2762329C2 (ru) 2021-12-17
JP6644939B2 (ja) 2020-02-12
PT3633675T (pt) 2021-06-01
US11942102B2 (en) 2024-03-26
MX2018006677A (es) 2021-06-29
SG10202000575WA (en) 2020-03-30
HUE042095T2 (hu) 2019-06-28
US20170301359A1 (en) 2017-10-19
AU2019204328B2 (en) 2020-05-28
RU2018128976A3 (zh) 2021-10-20
HUE028802T2 (en) 2017-01-30
EP3633675B1 (en) 2021-04-28
AU2017265085B2 (en) 2019-07-11
EP2992529B1 (en) 2016-05-25
SG10201704724TA (en) 2017-07-28
KR20190027959A (ko) 2019-03-15
MX2016016095A (es) 2017-03-10
JP2017216696A (ja) 2017-12-07
JP2016527527A (ja) 2016-09-08
PL3633675T3 (pl) 2021-11-15
AU2019204328A1 (en) 2019-07-11
EP3467825A1 (en) 2019-04-10
KR102034419B1 (ko) 2019-10-18
EP2992529A1 (en) 2016-03-09
KR101777994B1 (ko) 2017-09-13
EP3065135A1 (en) 2016-09-07
IL249104A (en) 2017-11-30
EP3065135B1 (en) 2018-12-26
NZ726879A (en) 2017-10-27
ES2874511T3 (es) 2021-11-05
DK3065135T3 (en) 2019-03-25
JP6574287B2 (ja) 2019-09-11
ZA201902319B (en) 2020-08-26
ES2718049T3 (es) 2019-06-27
JP2020010353A (ja) 2020-01-16
WO2016018185A1 (en) 2016-02-04
AU2017265085A1 (en) 2017-12-14
US20230086320A1 (en) 2023-03-23
IL249104A0 (en) 2016-12-29
ZA201802791B (en) 2019-07-31
PT2992529T (pt) 2016-08-18
MX2021007880A (es) 2022-12-06
KR20170020540A (ko) 2017-02-22
PL2992529T3 (pl) 2017-03-31
KR101959156B1 (ko) 2019-03-15
SG11201609926YA (en) 2016-12-29
US20160027449A1 (en) 2016-01-28
PL3467825T3 (pl) 2020-08-10
CN105431901A (zh) 2016-03-23
RU2017106160A (ru) 2018-08-28
MY177842A (en) 2020-09-23
MX357398B (es) 2018-07-06
DK2992529T3 (en) 2016-08-29
TR201901612T4 (tr) 2019-02-21
ES2586712T3 (es) 2016-10-18
EP3633675A1 (en) 2020-04-08
US9792922B2 (en) 2017-10-17
RU2018128976A (ru) 2019-03-14
AU2015297066A1 (en) 2016-12-15
ES2785041T3 (es) 2020-10-05
RU2017106160A3 (zh) 2018-08-28
KR20170102047A (ko) 2017-09-06
EP3467825B1 (en) 2020-01-22
JP6347872B2 (ja) 2018-06-27
CA2955765A1 (en) 2016-02-04
AU2015297066B2 (en) 2017-09-07
AR101332A1 (es) 2016-12-14
JP6170575B2 (ja) 2017-07-26

Similar Documents

Publication Publication Date Title
CN105431901B (zh) 椎体矢量量化器形状搜索
OA18156A (en) Pyramid vector quantizer shape search
BR112016030902B1 (pt) Método para pesquisa de formato por quantizador vetorial em pirâmide, codificador, e, dispositivo de comunicação

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant