处理音频信号的装置和方法

文档序号:2830108阅读:211来源:国知局

专利名称::处理音频信号的装置和方法处理音频信号的装置和方法发明背景本发明涉及一种处理音频信号的方法,尤其涉及一种编码和解码音频信号的方法和装置。过去曾经以不同方法实现了音频信号的存储和重放。例如,音乐和语音业己通过留声技术(例如唱盘播放机)、磁技术(例如卡式磁带)和数字技术(例如光盘)来记录和保存。随着音频存储技术的发展,需要克服许多难题来优化音频信号的质量和可存储性。为了音乐信号的存档和宽带传输,无损重建成为比借助诸如MP3或AAC等在MPEG标准中定义的感性编码高效率压縮更为重要的特征。虽然DVD音频和超级CD音频包括专有无损压縮方案,但是在内容持有者和广播公司当中需要一种开放和综合性的压縮方案。响应于这种需要,一种新的无损编码方案已经成为MPEG-4音频标准的延伸。无损音频编码法由于原始信号的完美重建而实现了没有任何质量损失的数字音频数据压縮。
发明内容本发明涉及处理音频信号的方法。在一个实施方式中,从音频信号获取采样信息和帧长度信息。采样信息指音频信号中的每个声道的音频数据采样的总数,而帧长度信息指每个声道的一个帧中的采样数。判断如果将采样信息除以帧长度信息是否存在余数,且如果存在余数,则将音频信号中的帧数确定为釆样信息除以帧信息的整数值加一。另外,如果判断步骤判定存在余数,则可基于余数设定最末帧的长度。数据采样基于所确定的帧数进行解码。在一个实施方式中,最末帧的长度设定为等于该余数。在另一实施方式中,如果判断步骤判定不存在余数,则音频信号的帧数被确定为采样信息除以帧信息的整数值。本发明还涉及编码音频信号的方法和装置,并涉及解码音频信号的方法和装置。附图简要说明包括于此以提供对本发明的进一步理解、并被结合在本申请中且构成其一部分的附图示出本发明的实施方式,其与说明书一起可用来解释本发明的原理。在附图中图1是根据本发明一个实施方式的编码器的示例图。图2是根据本发明一个实施方式的解码器的示例图。图3是根据本发明一个实施方式的压縮的M-声道文件的比特流结构的示例图。图4是根据本发明一个实施方式的分级块切换方法的概念图的示例图。图5是块切换示例及相应的块切换信息代码的示例图。图6是根据本发明实施方式的多个声道的块切换方法的示例图。具体实施方式下面将详细参考本发明的较佳实施方式,其具体示例图示于附图中。只要有可能,即在所有附图中使用相同的附图标记表示相同或相似的部件。在对本发明进行叙述之前,应当指出的是本发明中揭示的大多数术语对应于本领域内公知的一般术语,但部分术语是由申请人根据需要选择的,并且将在本发明下文的描述中予以揭示。因此,由申请人定义的术语优选基于它们在本发明中的含义来理解。在无损音频编码方法中,由于编码进程必须是可以完美逆转而不会有信息损失的,因此编码器和解码器两者的若干部件必须以确定性的方式来实现。编码解码器结构图1是根据本发明一个的编码器1的示例图。分割部件100将输入的音频数据分割成若干帧。在一个帧之中,每个声道还可进一步被细分成若干个音频采样块以做进一步处理。缓存器110存储由分割部件100分割后的块和/或帧采样。系数估算部件120针对每个块估算最佳的一组系数值。系数的数量,即预测器的阶数也可以适应性地做出选择。系数估算部件120针对数字音频数据块计算一组部分自相关系数(parcor)值。部分自相关系数值指示预测器系数的部分自相关系数表示。量化部件130将该组部分自相关系数值量化。第一熵编码部件140通过从部分自相关系数值减去一个偏移值来计算出部分自相关系数余数,并使用由熵参数所确定的熵代码对部分自相关系数的余数值进行编码,其中偏移值和熵参数选自最佳表。最佳表是基于数字音频数据块的采样速率从多个表中选择的。分别对多个采样速率范围预定义多个表以实现为了传输而进行的数字音频数据的最佳压縮。系数转换部件150将量化了的部分自相关系数转换成线性预测编码(LPC)系数。预测器160使用线性预测编码系数从存储在缓存器110中的之前原始采样估算当前预测值。减法器170使用存储在缓存器110中的数字音频数据的原始值和预测器160中估算的预测值计算数字音频数据块的预测余数。第二熵编码部件180使用不同的熵代码编码预测余数并生成代码索引。所选代码的索引作为辅助信息发送。第二熵代码部件180使用具有不同复杂度的两种可供选择的编码技术对预测余数进行编码。一种编码技术是公知的Golomb-Rice编码法(在下文中简称为Rice码)而另一种是公知的分块Gilbert-Moore代码法(在下文中简称为BGMC)。"Rice码复杂度低但仍然是有效的。BGMC算术编码方案以比Rice码复杂度稍高为代价提供更好的压縮。最后,多路复用部件190将编码预测余数、代码索引、编码部分自相关系数余数值和其它附加信息进行多路复用形成压縮比特流。编码器1还提供循环冗余检验(CRC)检验和,它主要是供解码器校验解码的数据。在编码器方面,CRC可用来确保压縮数据是能够进行无损解码的。其它编码选项包括柔性块切换方案、随机存取和联合声道编码。编码器l可使用这些选项提供若干具有不同复杂度的压縮级别。联合声道编码利用立体声声道或多声道信号之间的相关性。这可通过在能够比原始信道之一更为有效地编码两个声道之间的差异的片段(segments)中编码这种差异来实现。这些编码选项将在对根据本发明的示例性解码器进行说明之后更为详细地予以说明。图2是根据本发明一个实施方式的解码器的示例图。更特别地,图2示出由于不必执行任何调适因而复杂度显著低于编码器的无损音频信号解码器。多路分解部件200接收音频信号并将编码数字音频数据块的预测余数、代码索引、编码部分自相关系数余数值和其它附加信息多路分解。第一熵解码部件210使用由熵参数确定的熵代码对部分自相关系数余数值进行解码并通过将偏移值加至解码部分自相关系数余数值来计算出一组部分自相关系数值;其中的偏移值和熵参数选自一个表,该表是由解码器基于数字音频数据块的采样速率从多个表中选择的。第二熵解码部件220使用代码系数对经多路分解后的编码预测余数进行解码。系数转换部件230将熵解码的自相关系数值转换成LPC系数。预测器240使用LPC系数估算数字音频数据块的预测余数。加法器250将解码预测余数加至估算的预测余数以获得数字音频数据的原始块。组装部件260将解码块数据组装成帧数据。因此,解码器2将编码预测余数和自相关系数余数解码,将自相关系数余数值转换成LPC系数,并应用反向预估滤波器计算无损重建信号。解码器2的计算工作取决于由编码器1选择的预坝〖阶数(predictionorders)。在大多数情形下,实时解码即使在低端系统中也是可能的。图3是根据本发明的包括多个声道的(例如M个声道)压縮音频信号的比特流结构的示例图。比特流由至少一个包括多个声道(例如M个声道)的音频帧构成。比特流配置语法(见下面的表6)中的"声道"字段指示声道数。每个声道利用根据本发明的块切换方案分成多个块,这将在后面详细说明。每个再分块具有不同的大小并包括根据图l编码法的编码数据。例如,一个再分块中的编码数据包含代码索引、预测阶数K、预测器系数和编码余数值。如果在声道对之间使用联合编码法,则这两个声道的块分割是等同的,而且这些块以交织方式存储。比特流配置语法(表6)中的"js一stereo"字段指示联合立体声(声道差)是开启的还是关闭的,而frame一data语法(见下面的表7)中的"js—switch"字段指示是否选择联合立体声(声道差)。否则,每个声道的块分割是独立的。下面将参照附图及其后的语法详细地说明前面提到的块切换、随机存取、预测和熵编码选项。块切换本发明的一个方面涉及在使用实际编码方案之前将每个声道再分成多个块。在下文中,根据本发明的块分割'(或再分)方法被称为"块切换方法"。分级块切换图4是根据本发明的分级块切换方法的概念图的示例图。例如,图4示出将一个声道按分级方式再分成32个块的方法。当在单个帧中提供多个声道时,每个声道被再分(或分割)成高达32个块,并且每个声道的再分块配置成一个帧。因此,根据本发明的块切换方法由图1所示的分割部件100执行。此外,如上所述,预测和熵编码在再分块单元上执行。一般而言,传统的音频无损编码(ALS)包括相对简单的块切换机制。每一个N个采样的声道或者使用一个全长块(NB=N)进行编码,或者使用四个长度NB=N/4的块(例如l:4切换),其中同一块分割法适用于所有声道。在某些情形下,该方案会具有某些局限性。例如,尽管只有l:l或l:4切换是能用的,但其他切换法(例如l:2、1:8及其组合)在某些情形下却更为有效。另外在传统ALS中,对所有声道以等同的方式执行切换,虽然不同声道或许会从不同的切换法受益(如果声道并不相关时则尤为如此)。因此,根据本发明实施方式的块切换方法提供相对柔性的块切换方案,其中一个帧的每个声道按等级被再分成多个块。例如,图4示出能以分等级地再分成高达32个块的声道。只要每个块是通过双倍长度的上级块的再分产生的,则在根据本实施方式的一个声道中,NB=N、N/2、N/4、N/8、N/16和N/32的块的任意组合是可能的。例如,如图4中的例子所示,分割成付/4+N/4+N/2是可能的,而分割成N/4+N/2+N/4是不行的(例如在下面描述的在图5(e)和图5中示出的块切换示例)。换言之,声道被分成这多个块从而使每个块的长度等于N/(nO中的一个值,其中i二l,2,……p,N是声道的长度,m是大于或等于2的一个整数,而p表示在再分分级结构中的级数。因此,在本发明的实施方式中,比特流包括指示块切换等级的信息以及指示块切换结果的信息。这里,与块切换相关的信息被包含在用于解码过程的语法中,这将在下面进行描述。例如,作出设定以使块切换处理后生成的最小块尺寸为NB=N/32。然而,这种设定仅仅是为简化本发明说明的一个示例。因此,根据本发明的设定不限于这一种设定。更具体地,当最小块大小为Na二N/32时,这表示块切换处理已按分级方式进行了5次,故将其称为5级块切换。或者,当最小块大小为NB二N/16时,这表示块切换处理已按分级方式进行了4次,故将其称为4级块切换。类似地,当最小块大小为NB二N/8时,这表示块切换处理已按分级方式进行了3次,故将其称为3级块切换。而当最小块大小为NB二N/4时,这表示块切换处理己按分级方式进行了2次,故将其称为2级块切换。当最小块大小为NB二N/2时,这表示块切换处理已按分级方式进行了l次,故将其称为l级块切换。最后,当最小块大小为NB二N时,这表示未执行块切换处理,故将其称为O级块切换。在本发明的实施方式中,指示块切换等级的信息被称为第一块切换信息。例如,第一块切换信息可由表6的,语法中一个2比特字段"block—switching"表示,这将在后面的过程中予以说明。更具体地,"block—switching=00"表示0级,"block—switching二01"表示1级至3级中的任何一个,"block—switching-10"表示4级,而"block—switching=ll"表示5级。另外,指示根据上述块切换等级对每个等级所执行的块切换结果的信息在这些实施方式中被称为第二块切换信息。在本发明中,第二块切换信息可由"bs一info"字段表示,该字段在表7所示的语法中以8比特、16比特和32比特中的任何一个表示。更具体地,如果"block—switching=01"(表示1级至3级中的任何一级),则"bs—info"由8比特表示。如果"block—switching=10"(表示4级),则"bs—info"由16比特表示。换言之,到达4级的块切换结果可用16比特指示。此外,如果"block—switching=11〃(表示5级),则〃bs—info〃用32比特表示。换言之,到达5级的块切换结果可用32比特指示。最后,如果"block—switching二00"(表示未进行块切换),则不发送"bs—info"。这表示一个声道配置成一个块。分配给第二块切换信息的总位数是基于第一块切换信息的等级值确定的。这可能会当中最终比特率降低。在下面的表1中简要描述了第一块切换信息和第二块切换信息之间的关系。表l:块切换等级<table>tableseeoriginaldocumentpage9</column></row><table>下面将详细描述配置(或映射)第二块切换信息(bs—info)中每个比特的的方法的一个实施方式。bs—info字段根据上述实施方式可包括最多4个字节。关于1级至5级的比特映射可以是[(0)12233334444444455555555555555555]。可保留第一比特以指示是独立块切换还是同步块切换,这将在后面的独立/同步块切换一节中更为详细地描述。图5(a)—5(f)示出可发生3级块切换时一个声道的不同块切换示例。因此,在这些示例中,最小块长度为NB=N/8,且bs—info由一个字节构成。从最大块长度NB二N开始,如果块被进一步再分,则设定bs—info的比特。例如,在图5(a)中,根本不存在再分,因此"bs—info"为(O)OOO0000。在图5(b)中,帧被再分((0)1……)而长度为N/2的第二块被进一步分成((0)101……)两个长度N/4的块;因此bs—info为(0)10100000。在图5(c)中,帧被再分((O)l...),且只有长度为N/2的第一块被进一步再分((0)110...)成为两个长度N/4的块;因此bs—info为(0)11000000。在图5(d)中,帧被再分((O)l……),长度为N/2的第一块和第二块被进一步分割((O)lll……)成长度为N/4的两个块,并且只有长度为N/4的第二块被进一步分割((0)11101……)成长度为N/8的两个块;因此"bs—info"为(0)1110100。如上所述,图5(e)和5(f)中的示例表示不被允许的块切换的情形,这是因为图5(e)中的N/2块和图5(f)中的第一个N/4块没能通过再分前一级的块来获得。独立/同步块切换图6(a)—6(c)是根据本发明实施方式的块切换的示例图。更具体地,图6(a)示出未对块l、2和3执行块切换的示例。图6(b)示出的是其中两个声道(声道i和2)配置成一个声道对、且同步地在声道1和声道2上执行块切换的示例。在本例中还应用了交织处理。图6(c)示出的是其中两个声道(声道1和2)配置成一个声道对、且独立地对声道i和声道2执行块切换的示例。在本发明中,"声道对"指两个任意的音频声道。关于哪些声道组成声道对的决定可由编码器自动做出或由用户人工做出。(例如L和R声道、Ls和Rs声道)。在独立块切换中,尽管在所有声道中每个声道的长度可以是相同的,但可对每个声道独立地执行块切换。即,如图6(c)所示,各声道可以不同方式分成块。如果一个声道对的两个声道彼此相关并且使用差异编码,则该声道对的两个声道被同步地进行块切换。在同步块切换中,各声道以相同方式进行块切换(即分成块)。图6(b)示出这样的一个示例,并进一步示出这些块是可以被交织的。如果声道对的两个声道彼此不相关,则差异编码并无益处,因而不需要对声道同步地进行块切换。相反,独立地切换声道可能更合适。此外,根据本发明的另一实施方式,所描述的独立或同步块切换方法可应用于声道数大于或等于3的多声道组。例如,如果该多声道组的所有声道彼此相关,则可以同步切换多声道组的所有声道。另一方面,如果该多声道组的所有声道彼此不相关,则可以独立地切换多声違组的每个声道。此外,"bs—info"字段被用作指示块切换结果的信息。另外,"bs—info"字段还被用作指示对配置成声道对的每个声道是独立地执行了块切换还是同步地执行了块切换的信息。在这种情况下,如上所述,可使用"bs一info"字段中的特定比特(例如第一比特)。例如,如果声道对的两个声道彼此独立,则"bs—info"字段的第一比特被置为"1"。另一方面,如果声道对的两个声道彼此同步,则"bs-info"字段的第一比特被置为"0"。下面将详细描述图6(a)、6(b)和6(c)。参照图6(a),由于没有一个声道执行了块切换,因此不生成相关的"bs—info"。参照图6(b),声道1和2构成一个声道对,其中两个声道彼此同步且同步执行了块切换。例如,在图6(b)中,声道l和声道2都被分割成长度为N/4的块,都具有相同的bs—info"bs—info=(Q)1010000"。因此,可针对每个声道对发送一个"bs—info",这导致比特率下降。此外,如果声道对是同步的.,则声道对中的每个块会需要彼此交织。这种交织是有益的(或有利的)。例如一个声道对中的一个声道的块(例如图6(b)中的块1.2)对两个声道的之前的块(例如图6(b)中的块1.1和2.1)都有依赖关系,因此这些之前的块应当在当前块之前获得。参照图6(c),声道1和2构成一个声道对。然而,在本例中,块切换是独立执行的。更具体地,声道1被分割成大小(或长度)达N/4的块,bs—info是"bs—info=(i)1010000"。声道2被分割成大小达N/2的块,bs—info是"bs—info=("1000000"。在图6(c)所示例子中,在每个声道间独立地进行块切换,且没有执行块之间的交织处理。换言之,对于独立地进行了块切换的声道,声道数据可单独配置。联合声道编码联合声道编码——也被称为联合立体声——可利用立体声信号的两个声道之间或多声道信号的任何两个声道之间的相关性。尽管独立地处理两个声道x,(n)和X2(n)更为直接,但利用声道之间相关性的简单方法是对差异信号进行编码d(n)=x2(n)—x!(n)而不是xl(n)或x2(n)。可通过对各个信号加以比较,根据哪两个信号能被最有效率地编码,在每个块中的x,(n)、X2(n)和d(n)之间进行切换。这种用切换的差异编码实现的预测在两个声道彼此非常相似的情形中是有利的。在多声道材料的情形中,可由编码器重新配置声道以分配合适的声道对。除了简单的差异编码,无损音频编码解码器还支持更为复杂的利用多声道信号的任意声道之间的声道间冗余的方案。随机存取本发明涉及音频无损编码并能够支持随机存取。随机存取支持对编码音频信号任意部分的快速存取而无需浪费地对之前的各部分进行解码。这对采用压縮数据的查找、编辑或流动的应用是一个重要特征。为了在随机存取单元中实现随机存取,编码器需要插入一个能在无需解码之前各帧的情况下进行解码的帧。插入帧被称为"随机存取帧"。在此类随机存取帧中,不可以将之前各帧的采样用于预测。下面将详细描述根据本发明的随机存取的信息。参照配置语法(图6所示),与随机存取有关的信息作为配置信息发送。例如,"random—access"字段被用作指示是否允许随机存取的信息,它可用8比特表示。此外,如果允许随机存取,则该8比特"random—access"字段指定构成一个随机存取单元的帧数。例如,当"random—access=00000000"时,不支持随机存取。换言之,当"random—access〉0"时,则支持随机存取。更具体地,当"random—access=00000001",这指示构成随机存取单元的帧数为1。这表示在所有的帧单元中均允许随机存取。此外,当"random—access二llll1111",这指示构成随机存取单元的帧数为255。因此,"random—access"信息对应于当前随机存取单元中的随机存取帧与下一随机存取单元中的随机存取帧之间的距离。在本发明中,所述距离用帧数表达。一个32比特的"ra—unit—size"字段被包含在比特流中并且被发送。在本发明中,"ra—unit—size"字段指示以字节为单位从当前随机存取帧到下一随机存取帧的大小。因此,"ra—unit—size"字段或者包含在配置语法(表6)中或者包含在帧数据语法(表7)中。配置语法(表6)还包括指示"ra_unit—size"信息在比特流中的存储位置的信息。该信息被表示为2比特的"ra_flag"字段。更具体地,例如,当"ra—flag=00",这表示"ra—unit_size"信息未存储在比特流中。当"ra—flag二01",这表示"ra_unit—size"信息被存储在比特流的帧数据语法(表7)中。,此外,当"ra—flag二10","ra—unit_size"信息被存储在比特流的配置语法(表6)。如果"ra—unit—size"信息被包含在配置语法中,这表示"ra—unit—size"信息只在比特流上发送一次并且被均等地应用于所有随机存取单元。或者,如果"ra—unit—size"信息包含帧数据语法中,这表示当前随机存取单元中的随机存取帧和下一随机存取单元中的随机存取帧内之间的距离。因此,针对比特流中的每一个随机存取单元发送"ra_unit_size"信息。因此,配置语法(表6)中的"random—access"字段也可被称为第一通用消息。另外,"ra—flag"字段也可被称为第二通用消息。在本发明的这个方面中,音频信号包括配置信息和多个随机存取单元,每个随机存取单元含有一个或多个音频数据帧,所述音频数据帧中的一个是随机存取帧,其中所述配置信息包括指示诸帧中的两相邻随机存取帧之间的距离的第一通用信息、以及指示每个随机存取单元的随机存取单元大小信息被存储在哪里的第二通用信息。随机存取单元大小信息以字节为单位指示两相邻随机存取单元之间的距离。或者,在本发明的这个方面,一种解码音频信号的方法包括接收具有配置信息和多个随机存取单元的音频信号,每个随机存取单元含有一个或多个音频数据帧,所述音频数据帧中的一个是随机存取帧;从配置信息读取第一通用信息,所述第一通用信息指示诸帧中两相邻随机存取帧之间的距离;以及从配置信息读取第二通用信息,所述第二通用信息指示每个随机存取单元的随机存取大小信息被存储在哪里,而随机存取单元大小信息以字节为单位指示两相邻随机存取帧之间的距离。声道配置如图3所示,音频信号包括根据本发明的多声道信息。例如,每个声道可与音频扬声器的位置形成一一对应的映射。配置语法(下面的表6)包括声道配置信息,它被表示为16比特的"chan—config一info"字段和16比特的"channels"字段。"chan—configjnfo"字段包括将声道映射到扬声器位置的信息,而16比特的"charmels"字段包括指示声道总数的信息。例如,当"channels"字段等于"O",这表示声道对应于单声道。当"channels"字段等于"1",这表示这个声道对应于立体声声道中的一个。另外,当"channels"字段等于或大于"2",这表示这个声道对应于多声道中的一个。下面的表2示出构成"chan—config—info"字段的每个比特以及与之对应的每个声道的示例。更具体地,当所发送的比特流中存在相应声道时,"chan—config—info"字段中的相应比特被置为"1"。或者,当所发送的比特流中不存在相应声道时,"chan—config—info"字段中的相应比特被置为"0"。本发明还包括指示"chan—config一info"是否存在于配置语法(表6)中的信息。该信息被表示为1比特的"chan_config"标志。更具体地,"chan—config=0"指示"chan_config—info"字段不存在。而"chan—config=1"指示"chan—config—info"字段存在。因此,当"chan—config二0",这表示"chan—config—info"字段不是在配置语法(表6)中新近定义的。表2:声道配置<table>tableseeoriginaldocumentpage14</column></row><table>如图3所示,根据本发明的音频信号包括多个声道或多声道。因此,当执行编码时,关于构成一个帧的多声道的数目的信息以及关于每个声道的采样数的信息被插入到比特流中并被发送。参照配置语法(表6),32比特的"sa卿les"字段被用作指示构成每个声道的音频数据采样总数的信息。此外,16比特的"frame—length"(帧长度)字段被用作指示相应帧中每个声道的采样数的信息。此外,"frame—length"字'段的16比特的值是由编码器所使用的值确定的,并且被称为用户定义值。换言之,用户定义值不是固定值,而是在编码过程中时任意确定的值。因此,在解码过程中,当通过图2所示的多路分解部件200接收到比特流时,应当首先获取每个声道的帧数。该值是根据下面所示的算法得到的。frames二samples/fr測e」ength;rest二samples%frame_length;if(rest)frames++;frlen—last=rest;}—6lS6frlen—last=frame—length;更具体地,每个声道的总帧数是通过将经由比特流发送的"samples"字段确定的每个声道的釆样总数除以由"frame—length"字段确定的每个声道的一个帧中的采样数来计算得到的。例如,当由"samples"字段确定的采样总数恰好是由"frame—length"字段确定的每个帧中的采样数的倍数时,则该倍数值成为帧总数。然而,如果由"samples"字段确定的采样总数并非恰好是由"frame—length"字段确定的采样数的倍数,而是存在余数(或残数),则总帧数比倍数值增加"l"。此外,最末帧(frlenjast)的采样数被确定为余数(或残数)。这表示仅最末帧的采样数与其之前的帧不同。通过如上所述地在编码器和解码器之间定义一套标准化的规则,编码器可自由地确定并发送每个声道的采样总数("samples"字段)以及每个声道的一个帧中的采样数("frame—length"字段)。此外,解码器可通过在所发送信息上使用上述算法而精确地确定要用于解码的每个声道的帧数。线性预测在本发明中,将线性预测应用于无损音频编码。图1所示的预测器160包括至少一个或多个滤波器系数以从之前的釆样值预测当前的采样值。随后,第二熵编码部件180对对应于预测值和原始值之差的残值执行熵编码。另外,应用于预测器160的每个块的预测器系数值作为最佳值从系数估算部件120选择。此外,预测器系数值由第一熵编码部件140进行熵编码处理。由第一熵编码部件和第二熵编码部件180编码的数据作为比特流的一部分由多路复用部件190插入且随后被发送。下面将详细描述根据本发明的执行线性预测的方法。用FIR滤波器的预测线性预测被用于语音和音频信号处理的许多场合。在下文中基于有限脉冲响应(FIR)滤波器描述预测器160的示例性操作。然而,本例明显不是对本发明范围的限制。.时间离散信号x(n)的当前采样可根据之前的采样x(n—k)大致地预测出。预测通过以下方程式给出。《其中k是预测器的阶数。如果预测的采样接近于原始采样,则如下所示的残数e(")"(")-;(")比x(n)本身的变化更小,因此能更有效地编码e(n)。从输入采样的片段估算预测器系数然后再对该片段进行滤波处理的程序被成为前向自适应。在这种情况下,应当发送系数。另一方面,如果是从之前处理的片段或采样(例如从残数)估算系数,则称为后向自适应。后向自适应程序的优点在于由于估算系数所需的数据也是解码器可得的,因而不需要发送系数。10阶左右的前向自适应预测方法被广泛地用于语音编码,并且可同样适用于无损音频编码。大多数前向自适应无损预测方案的最大阶数仍然相当小,例如k二32。一种例外是超级音频CD的专门的1比特无损编码解码器,它使用高达128的预测阶数。另一方面,具有几百个系数的后向自适应FIR滤波器通用于许多领域,例如声道均衡和回波抵消。这些系统的大多数是基于LMS算法或其变型的,这些算法也被推荐用于无损音频编码。由于并非必须要将预测器系数作为辅助信息发送,因此它们的数目不对数据速率产生影响,这类具有高阶数的基于LMS的编码方案在实践中是可行的。然而,后向自适应的编码解码器的缺点在于必须在编码器和解码器两者中作出适应,这使解码器明显比前向自适应情况下的解码器更为复杂。前向自适应预测作为本发明的示例性实施方式,前向自适应预测将作为一个示例在本文的描述中给出。在前向自适应线性预测中,一般使用自相关方法或协方差方法由系数估算部件120估算每个块的最佳预测器参数hk(根据残数的最小协方差)。使用传统的Levinson-Durbin算法的自相关方法的额外优点是提供一种反复调适预测器阶数的简单方法。此外,该算法本身也计算相应的部分自相关系数。前向自适应预测的另一方面是确定合适的预测阶数。阶数提高使预测误差的方差减少,这导致残数的比特率Re变小。另一方面,预测器系数的比特率Re随着要被发送的系数的数目而提高。因此,任务是找到使总比特率最小的最佳阶数。这可通过使下面的等式最小化来表达其中K是预测阶数。随着预测增益因阶数升高而单调上升,Re随着K值而下降。另一方面,由于要发送的系数数量递增,Rc单调地随着K值而上升。寻找最佳阶数可由系数估算部件120高效率地执行,所述系数估算部件120用递归方式为递增的阶数确定所有预测器。对于每个阶数计算完整的一组预测器系数。另外,可推导出相应残数的方差o/,得到残数预期比特率的估算值。在每次迭代过程中——即针对每个预测阶数——在确定各系数的比特率的同时确定总比特率。最佳阶数可在总比特率不再减少的点找到。尽管从上述方程式可以清楚知道系数比特率对总比特率有直接的影响,但是,Rc缓慢的增长也使得Rt。tai的最小值偏移至较高的阶数(其中Re同样较小),这可产生更好的压縮。因此,预测器系数的高效但准确的量化在实现最大压縮中发挥着重要作用。预测阶数在本发明中,确定预测阶数K,预测阶数K决定用于线性预测的预测器系数的数目。预测阶数K也是由系数估算部件120予以确定。在本发明中,关于所确定的预测阶数的信息被包含在比特流中并随后被发送。配置语法(表6)包括与预测阶数K有关的信息。例如,1比特至10比特的"max—order"字段对应于指示最大阶数值的信息。1比特至10比特的"raax一order"字段的最高值是1(=1023(例如10比特)。作为与预测阶数K有关的另一消息,配置语法(表6)包括l比特的"adapt—order"字段,它指示是否有每个块的最佳阶数存在。例如,当"adapt—order=l"时,应当给每个块提供最佳阶数。在block—data语法(表8)中,最佳阶数作为1比特至10比特的"叩t—order"字段提供。此外,当"adapt—order=0"时,则不对每个块提供单独的最佳阶数。在这种情况下,"max—order"字段即成为应用于所有块的最终阶数。最佳阶数(叩t—order)基于max—order字段值和相应块的大小(NB)确定。更具体地,例如当max—order被确定为1(_=10并且"adapt—order=l"时,则考虑相应块的大小确定每个块的opt—order。在某些情况下,opt—order值有可能会大于max—order(K,=10)。特别地,本发明涉及较高的预测阶数(predictionorders)。根据本发明的实施方式,在没有分级块切换的情形中,在长块长度和短块长度之间可能是4倍的关系(例如4096与1024或8192与2048)。另一方面,在采用了分级块切换的实施方式中,这个因数可以提高(例如高达32),使范围更大(例如从16384至512或甚至在高采样速率时从32768至1024)。在执行了分级块切换的实施方式中,为了更好地使用非常长的块,可采用更高的最大预测阶数。最大阶数可以是1(_=1023。在本实施方式中,K^可由块长度Nb限定,例如K,〈Nb/8(例如当Nb二2048吋,Kmax=255)。因此,使用Kax=1023需要至少为^=8192的块长度。在本实施方式中,配置语法(表6)中的榕ax一order字段可高达10比特而block_data语法(表8)中的叩t—order字段同样可高达10比特。具体块中的实际比特数取决于一个块所允许的最大阶数。如果块是短块,本地预测阶数会小于全局预测阶数。在本发明中,本地预测阶数是通过考虑相应块长度NB确定的,而全局预测阶数是通过配置语法中的"max—order"K證确定的。例如,如果K隨二1023,但NB=2048,由于本地预测阶数为255,"opt—order"字段被确定为8比特(而不是10比特)。方程式确定opt—order:opt_order=min(全局预测阶数,本地预测阶数);另外,全局和本地预测阶数可通过下面的方程式确定全局预测阶数二ceil(log2(最大预测阶数+l))本地预测阶数=11^乂(^611(1082((恥>>3)—1)),1)在本实施方式中,预测了来自一个声道的再分块的数据釆样。使用之前块的最末K个采样预测当前块的第一采样。K值是基于从上述方程式推导出的opt一order确定的。如果当前块是声道的第一个块,则不使用来自之前块的采样。在这种情形中,采用的是渐进阶数(progressiveorder)预测。例如,假设相应块的opt—order值为K二5,则块中的第一采样不执行预测。块的第二采样使用块的第一采样执行预测(如同K^1),块的第三采样使用块的第一采样和第二采样执行预测(如同K=2)等。因此,从第六采样开始以及对于这之后的采样,根据K二5的叩^order执行预测。如上所述,预测阶数从1(=1渐进地增加至1(=5。当用于随机存取帧时,上述渐进阶数型预测是非常有利的。由于随机存取帧对应于随机存取单元的基准帧,随机存取帧不通过使用之前的帧采样执行预测。即,这种渐进预测技术可应用于随机存取帧的开头。预测器系数的量化上述预测器系数在图1的量化部件130中量化。由于非常小的量化误差也会导致大大地偏离最佳预测滤波器要求的频谱特性,因此预测系数hk的直接量化对发送而言不是非常有效的。为此,预测器系数的量化基于通过系数估算部件120计算得到的部分自相关(反射)系数r,。例如,如上所述,系数估算部件120是使用传统Levinson—Durbin算法处理的。头两个部分自相关系数(对应于h和Y2)通过使用下面的函数被量化64(-l+V^n《=而其余系数是使用简单的7比特的统一量化器量化的在所有情况下,所得量化值ak被约束在范围[一64,63]内。熵编码如图1所示,在本发明中应用了两种类型的熵编码。更具体地,第一熵编码部件140被用于编码上述预测器系数。另外,第二熵编码部件180被用来编码上述音频原始采样和音频残余采样。在下文中将详细说明这两种熵编码。预测器系数的第一熵编码相关技术的Rice码被用作根据本发明的第一熵编码方法。例如,量化系数ak的发送是通过生成残余值执行的Sk二a「offsetk,它是通过使用第一熵编码部件140编码的,例如Rice码方法。用于该过程的Rice码的相应偏移和参数可从表3、4和5所示的诸组中的一个以全局方式进行选择。表索引(即2比特的"coef—table")在配置语法中指出(表6)。如果"coef—table=11",这表示未应用熵编码,并且量化的系数分别以7比特发送。在这种情形中,偏移始终是一64以获得局限于的无符号值、=&+64。相反,如果"coeff—table二00",则选择下面的表3,如果"coeff—table=01",则选择下面的表4。最后,如果"coeff—table=10",则选择表5。当接收到图2的解码器中的经量化的系数时,第一熵解码部件220通过使用将余数值5k与偏移结合以生成部分自相关系数ak的量化索引的过程来重建预测器系数ak=Sk+0ffsetk其后,使用下面的方程式执行头两个系数(h和Y2)的重建pari=L」=r");Par2=[f22。J=-r(a2);其中"表示重构的系数的整数表示所需的恒量(Q=20)比例因数,而r(.)是根据经验确定的映射表(未示出,因为映射表会根据实现而变化)。因此,是根据采样频率提供用于第一熵编码的这三种系数表。例如,采样频率可被分成48kHz、96kHz和192kHz。这里,三个表3、4、5中的每一个分别提供给每个采样频率。可对整个文件选择三个不同的表中的一个,而不是使用一个表。一般应当根据采样速率来选择表。对于44.lkHz的材料,本发明的申请人推荐使用48kHz表。然而,一般而言,也可按其它标准来选择表。表3:用于编码量化系数(48kHz)的Rice码参数<table>tableseeoriginaldocumentpage21</column></row><table>表4:用于编码量化系数(96kHz)的Rice码参数<table>tableseeoriginaldocumentpage21</column></row><table><table>tableseeoriginaldocumentpage22</column></row><table><table>tableseeoriginaldocumentpage23</column></row><table>余数的第二熵编码本发明包含应用于图1的第二熵编码部件180的编码方法的两种不同的模式,这将在下面予以详细说明。在简单模式中,使用Rice代码对余数值e(n)进行熵编码。对于每个块,或者使用相同的Rice代码编码所有的值,或者将块进一步分成四个部分,每个部分用不同的Rice代码编码。如图1所示,发送所应用的代码的索引。由于存在不同的方法确定给定的一组数据的最佳Rice代码,因此编码器根据余数的统计结果选择合适的代码。或者,编码器可利用BGMC模式使用更为复杂和高效的编码方案。在BGMC模式中,余数的编码是通过将分布划分成两种类型实现的。这两种类型包括属于分布Ie(n)I〈e,的中心区域的余数,以及属于其尾部的余数。尾部的余数重新中心化(re-centered)(即对于e(n)>e,,则提供et(n)二e(n)—e,)并使用如上所述的Rice代码编码。然而,为了编码处于分布中心的余数,BGMC首先将余数分成LSB和MSB组分,随后BGMC使用块Gilbert—Moore(算术)代码编码MSB。最后,BGMC使用直接固定长度代码发送LSB。可以对参数e,和直接发送的LSB的数目加以选择,使它们仅些微地影响这种方案的编码效率,同时使编码的复杂度明显降低。根据本发明的配置语法(表6)和block一data语法(表8)包括与Rice代码和BGMC代码的编码有关的信息。现在对这种信息进行详细说明。配置语法(表6)首先包括一个1比特的"bgmc—mode"字段。例如,"bgmc—mode"=0表示Rice代码,"bgmc—mode"=1表示BGMC代码。配置语法(表6)还包括一个1比特的"sb—part"字段。"sb—part"字段对应于与将块分割成子块并对分割的子块编码的方法有关的信息。这里,"sb—part"的意义根据"bgmc—mode"字段值而改变。例如,当"bgmc—mode=0"时,即当应用Rice代码时,"sb—part=0"表示块不被分割成子块。或者,"sb—part=1"表示以1:4子块分割比分割块。或者,当"bgmc—mode=1"时,即当采用BGMC代码时,"sb—part二0"表示以1:4子块分割比分割块。或者,"sb—part=l"表示以1:2:4:8子块分割比分割块。与包含在配置语法(表6)中的信息相对应的每个块的Block—data语法(表8)包括0比特至2比特的可变"ec一sub"字段。更具体地,"eC_SUb"字段指示存在于实际相应块中的子块的数目。这里,"ec—sub"字段的意义根据配置语法(表6)中的"bgmc—mode"字段+"sb—part"字段的值而变化。例如,"bgmc—mode+sb—part=0"表示Rice代码不配置子块。这里,"ec—sub"字段是个0比特字段,这表示不包含任何信息。除此之外,"bgrac—mode+sb—part=1"表示Rice代码或BGMC代码被用来以1:4的比例将块分割成子块。这里,只有l比特被分配给"ec一sub"字段。例如,"ec_Sub=0"指示一个子块(即块不分割成多个子块),而"ec—sub=l"指示以配置4个子块。此夕卜,"bgmc—mode+sb—part=2"表示BGMC代码被用来以1:2:4:8的比例将块分割成子块。这里,2比特被分配给"ec_Sub"字段。例如,"ec—sub=0"指示一个子块(即块不分割成多个子块),而"ec—sub=01"指示2个子块。另外,"ec_sub=10"指示4个子块,而"ec_sub=ll"指示8个子块。如上所述定义在每个块中的子块使用不同的编码方法由第二熵编码部件180进行编码。下面描述使用Rice代码的一个示例。对于余数值的每个块,或者使用同样的Rice代码编码所有值,或者,如果在配置语法中设定了"sb—part"字段,则块被分割成四个子块,每个编码的子块具有不同的Rice代码。在后一种情况下,块数子块的参数S[i^0]或者用4比特(分辨率《16比特)或者用5比特(分辨率〉16比特)直接发送,但仅发送下列参数s[i〉0]的差(s[i]—s[i—l])。这些差异还使用适当选择的Rice代码进行编码。在这种情况下,用作差以的Rice代码参数具有值"0"。语法根据本发明的实施方式,包含在音频位流中的各种信息的语法示出于下表中。表6示出音频无损编码的配置语法。这种配置语法可形成周期性地置于比特流中的头部,可形成每个帧的帧头等。表7示出一种帧一数据语法,而表8示出一种块一数据语法。表6:配置语法<table>tableseeoriginaldocumentpage26</column></row><table><table>tableseeoriginaldocumentpage27</column></row><table><table>tableseeoriginaldocumentpage28</column></row><table>if(bgmc—mode=-0){for(k=O'.k<sub—blocks,.k++){s[k];—else{for(k=O,'k<sub一tilocks,'{s[k],sx[k];—sb一length-block—length/sub—blocks/shift—lsbs/if(s5ift一lsbs==1){if(!R3LSIiMS){if(adapt一orde:ropt—oarder^}一for*(p=0/p<opt—order,p++){quant—cof[p]7svaxiss—10s压縮结果下面,将无损音频编解码与两种最流行的无损音频压缩程序——即开放源代码编码解码器FLAC和Money氏音频(MAC3.97)作比较。这里,开放源代码编码解码器FLAC使用前向自适应预测,而Monkey氏音频(MAC3.97)是作为压縮方面的当前技术发展水平的后向自适应编码解码器。这两种编码解码器均涉及提供最大的压縮的选项(即flac—8和mac—c4000)。编码器的结果确定中等压縮水平(其预测阶数限制于K—60)以及最大压縮水平(K_1023),两者均具有500ms的随机存取。测试是在1024MB内存的1.7GHz奔腾-M系统上完成的。测试包括采样率为48、96和192kHz、分辨率为16、24比特的将近1GB立体声波形数据。压縮率下面,压縮率被定义为C=[(压縮的文件大小)/(原始文件大小)]*100%其中较小的值指示较好的压縮。所检测的音频格式的结果示于表9(FLAC编码解码器不支持192kHz的材料)。表9:不同音频格式的平均压縮率比较(kHz/比特)<table>tableseeoriginaldocumentpage29</column></row><table>200680025269.9说明书第27/28页48/1648.645.345.544.748/2468.463.263.362.796/2456.748.146.546.2192/2439.137.737.6累计—.48.948.347.8该结果显示,最高水平的ALS在所有格式上都胜过FLAC和Monkey氏音频,但对于高分辨率材料(例如96kHz/24比特及以上)尤甚。即使在中等水平,ALS也提供最好的总压缩性。复杂度不同编码解码器的复杂度强烈地取决于实际实现,尤其是编码器的实现。如上所述,本发明的音频信号编码器仍在发展之中。因此,我们将我们的分析限于解码器、简单的C语言代码实现而不作进一步的优化。压縮数据由当前最佳的编码器实现生成。图10中示出了用于在不同复杂度水平上编码的各种音频格式实时解码的平均CPU负载。即使是对于最大复杂度,解码器的CPU负载也只在20-25X左右,这表示基于文件的解码比实时解码快至少4一5倍。表10:根据音频格式(kHz/比特)和ALS编码器复杂度的平均CPU负载(在1.7GHz奔腾-M上的百分比)格式ALS低ALS中值ALS最大值48/161.64.918.748/241.85.819.696/243.612,023.8192/246.722.826.7编解码器被设计成可提供大范围的复杂度水平。尽管最大水平以最低编码和解码速度为代价可实现最高压縮,但较快的中等水平仅些微地损害压縮性,解码的复杂度却显著地低于最大水平(即对于48kHz材料将近5。/。的CPU负载)。使用低复杂度水平(即Kj5,Rice编码)相比最大水平仅使压縮性降低1-1.5%,但解码器复杂度进一步降低3倍(即对于48kHz的材料而言小于2。/。的CPU负载)。因而,音频数据甚至可以在计算能力很低的硬件上完成解码。尽管编码器复杂度会因较高30的最大阶数和更精良的块切换算法而增加(根据实施方式),但解码器会受到较高平均预测阶数的影响。前面的实施方式(例如分级块切换)和优点仅为示例性的,不应被解释为是对所附权利要求书的限制。本领域技术人员会明白,上述原理可应用于其它装置和方法。许多选择、修改和变化对本领域内技术人员而言是显而易见的。例如,应当理解,尽管方框图被用来说明本发明的结构性方面,但这些方面也可实现为具有相关联的适当存储器件的可编程计算机处理器。工业应用性本领域内技术人员可以理解,可对本发明作出各种修改和变化而不脱离本发明的精神或范围。例如,本发明的诸方面和实施方式很容易适用到另一种音频信号编码解码器,例如无损音频信号编码解码器。因此,本发明旨在涵盖本发明的所有这些修改和变化。权利要求1.一种处理音频信号的方法,其包括从音频信号获取指示音频信号中每个声道的音频数据采样的总数的采样信息;从音频信号获取指示每个声道的一个帧中的采样数的帧长度信息;确定如果所述采样信息除以所述帧长度信息是否存在余数;如果所述确定步骤确定有余数存在,则将音频信号中的帧数确定为采样信息除以帧信息的整数值加一;如果所述确定步骤确定有余数存在,则基于余数设定音频信号中最末帧的长度;以及基于所确定的帧数解码所述数据采样。2.如权利要求l所述的方法,其特征在于,所述设定步骤将最末帧的长度设定为等于余数。3.如权利要求l所述的方法,还包括如果所述确定步骤确定无余数存在,则将音频信号中的帧数确定为采样信息除以帧信息得到的整数值。4.如权利要求3所述的方法,还包括如果所述确定步骤确定余数不存在,则将最末帧的长度设定为等于帧信息。5.如权利要求1所述的方法,其特征在于,所述获取采样信息的步骤从音频信号的配置信息中的采样字段获取采样信息。6.如权利要求l所述的方法,其特征在于,所述获取帧长度信息的步骤从音频信号的配置信息中的frame—length字段获取帧长度信息。7.—种处理音频信号的方法,其包括将指示音频信号中每个声道的音频信号采样的总数的采样信息加至音频信号;添加指示每个声道的一个帧中的采样数的帧长度信息;以及编码音频信号中的音频数据,从而(i)如果采样信息除以帧长度信息存在余数,则在解码器将音频信号中的帧数确定为采样信息除以帧信息的整数值加一;以及(ii)如果存在余数,则在解码器基于余数设定最末帧的长度。8.—种处理音频信号的装置,所述装置包括解码器,用于从音频信号获取指示音频信号每个声道的音频数据采样的总数的采样信息,并用于获取指示每个声道的一个帧中的采样数的帧长度信息;所述解码器被配置成确定如果所述采样信息除以所述帧长度信息是否存在余数,且如果所述确定步骤确定存在余数则将音频信号中的帧数确定为所述采样信息除以所述帧信息得到的整数加一;如果所述确定步骤确定存在余数,所述解码器用于基于余数设定最末帧的长度;以及所述解码器被配置成基于所确定的帧数解码所述数据采样。9.一种处理音频信号的装置,其包括编码器,用于将指示音频信号中每个声道的音频数据采样总数的采样信息加至音频信号,并用于添加指示每个声道的帧中的采样数的帧长度信息;且所述编码器被配置成对音频信号中的音频数据进行编码,从而(i)如果采样信息除以帧长度信息存在余数,则在解码器将音频信号中的帧数确定为采样信息除以帧信息信息得到的整数值加一;以及(ii)如果存在余数,则基于余数在解码器设定最末帧长度。全文摘要在一个实施方式中,从音频信号获取采样信息和帧长度信息。采样信息指音频信号中的每个声道的音频数据采样的总数,而帧长度信息指每个声道的一个帧中的采样数。判断如果将采样信息除以帧长度信息是否存在余数,且如果存在余数,则将音频信号中的帧数确定为采样信息除以帧信息的整数值加一。另外,如果判断步骤判定存在余数,则可基于余数设定最末帧的长度。数据采样基于所确定的帧数进行解码。文档编号G10L19/00GK101218630SQ200680025269公开日2008年7月9日申请日期2006年7月10日优先权日2005年7月11日发明者T·利伯成申请人:Lg电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1