一种音频编解码器的实现方法

文档序号:2820221阅读:387来源:国知局
专利名称:一种音频编解码器的实现方法
技术领域
本发明涉及一种应用于手持设备、SoC(片上系统)或ASIC(专用集成电路)产品和嵌入式系统的音频压缩编码技术,尤其涉及一种低复杂度高质量宽带音频编解码器的实现方法。
背景技术
目前在音频压缩编码技术中,大部分宽带音频压缩都采用基于频率子带划分,并利用人类声学听觉心理模型进行压缩的方法。采用人类声学听觉心理模型对频谱进行分析的过程中,根据人类听觉掩蔽效会对所谓的“冗余”信息最大限度地去除,从而在实际音频信号中某些频带的信号将因为认为人耳“感觉不到”而去除。这样做的好处就是能将更多的比特用于表示那些“更重要”频率成分。然而这样做的缺点是明显的,主要表现在,首先,采用基于人类声学听觉的频带分析模型,在编解码过程中将明显增加计算量;其次,采用人耳听觉分析模型,将不可避免地在相应的编解码器中需要额外保存用以表示模型的常数。而通常采用的听觉模型需要保存的模型常数的个数是非常可观的(比如在MPEG层3(MP3)的心理学模型需要用到的常数个数超过4700个),从而明显增加编解码器的固定数据存储量需求;另外,由于认为去除了“冗余”的频带信息,尤其是在较低码率情况下,解码后的音频将出现“发沙”的现象。而一旦出现音频“发沙”现象,解码音频质量将会明显降低。还有,某些音频编码器(如WMA)使用noise shaping(噪音整型)技术把量化噪声扩散到相应的频谱系数中,有可能使音频的保真度降低,从而影响解码音频的品质。

发明内容
本发明解决的技术问题是提供了一种音频编解码器的实现方法,它的计算复杂度低,存储量少同时又可以保证高音频压缩质量。
为了解决以上技术问题,本发明提供了一种音频编解码器的实现方法,在它的编码器端第一步,将音频信号做时-频变换,将信号变换到频域,得到非量化频谱数据,第二步,对所述的非量化频谱数据进行频谱量化,它包括根据所述的非量化频谱数据及目标允许码量,通过迭代方法获得相应最佳的量化因子信息、频带组信息、编码码表索引信息以及量化后的频谱信息,第三步,计算得出并格式化码流,第四步,输出格式化码流;在它的解码器端第五步,通过对码流格式化解析,对每帧频谱进行解码、逆量化,经过频→时变换并重构出时域音频数据,并最终重构出各通道的时域信号。
其中第二步还包括首先,根据当前量化后的频谱数据,计算得出总使用的编码数据量,然后,将其与期望数据量进行比较,如果不符合期望要求,则调整量化因子,改变量化因子信息,进而改变各量化频谱数据、调整频带组信息及相应的编码码表,并重新计算编码数据量。如此重复迭代,直到满足期望数据量,最后计算得出格式化码流。
另外,所述的频谱量化是基于Bark频带(临界频带)进行,同一个Bark频带内所有频率子带采用相同的量化因子,且量化步长为()-Scale_factor。
另外,所述的每个频带组由相邻的A类频带和B类频带组成。
另外,在对所述A类频带进行编码中,采用总共4个A类码表中的1个进行编码,并且同一个频带采用同一个码表。
另外,在对所述B类频带进行编码中,采用总共22个B类码表中的1个进行编码,并且同一个频带采用同一个码表。
本发明与MPEG层3(MP3)、AC-3以及WMA等传统的宽带音频压缩理论相比,本发明不依赖于人耳听觉模型,不人为删除在截止频率以下的任何频率成分,不人为加入噪声,时→频/频→时变换在编/解码器端各仅进行一次。因此很容易看出本发明的计算复杂度得到了极大的降低,总计算量在传统宽带编解码器的1/5以下。因为本发明不人为删除在截止频率以下的任何频率成分,也没有人为噪声的引入,同时采用更加高效的基于频带组的编码策略,从而最大限度地保证了频谱成分的完整性,进而最大程度地减少了因压缩带来的音质损失。本发明具有充分的动态范围和听觉定位,让人耳能轻易分辨出音源并进行定位,能分辩出高频率之间的细微差别,从而保证很高的解码音频质量。此外,由于采用了极为有限个数的码表,使得本编解码器本身需要存储的常量数据得到极大的减少(总码表入口个数小于256),而与之对应的MPEG层3(MP3)码表的总入口数为1410,以及超过4700个的心理学模型常数。


下面结合附图和具体实施方式
,对本发明做进一步阐述。
图1是本发明的编码器流程图;图2是本发明的解码器流程图;图3是各Bark频带带宽分布;图4是频带组划分;图5是A类频带频谱编码所用码表对应的二叉树示意图;图6是B类频带频谱编码所用码表对应的二叉树示意图;图7是频带组划分结果示例图。
具体实施例方式
图1是本发明的编码器流程图。它的编码流程如下首先是将音频信号加窗取帧并做时-频变换,将信号变换到频域。通道编码方式判断模块100是根据输入音频本身的是否为立体声标识或者左右声道的相关性判断采用立体声编码方式还是采用双声道独立编码方式,如果是单声道信号则不需要这个模块进行处理。然后选择编码方式后,进入编码音频数据生成模块101,该模块首先计算当前帧期望码流量,然后导入一帧音频数据(每个通道512个采样点),并与同一通道相邻前一帧合并共同组成一个处理帧(1024个采样点)并乘正弦窗函数,最后将上述经加窗后的1024点音频数据经时→频变换模块102做时→频变换,得到非量化频谱数据。
第二步,对非量化频谱数据进行频谱量化,它包括根据非量化频谱数据及目标允许码量,通过迭代方法获得相应最佳的量化因子信息201、频带组信息202、编码码表索引信息203以及量化后的频谱信息204,经计算得出总使用的编码数据量。
然后,将上述计算得出的总使用的编码数据量与期望数据量进行比较205,如果不符合期望要求,则调整量化因子206,改变量化因子信息,重复第二步,直到满足期望数据量。
最后,当满足期望数据量时,对码流进行格式化并输出码流207。
上述中的量化因子信息201模块根据设定的各Bark频带对应的量化因子,对频谱进行量化。最初的各量化因子的设定可以是任意的。量化因子的选择,是对频谱数据进行量化的关键,它直接影响到编码质量和码流大小。频谱量化采用基于Bark频带划分策略,不同Bark频带采用不同的量化因子进行量化,一个Bark频带范围内所有频率子带的量化因子完全相同。Bark频带的划分与音频信号采样率有关,图3给出的是采样率分别为32kHz,44.1kHz以及48kHz情况下各Bark频带的带宽分布(以Bark数为单位)。频谱量化采用量化步长为()-Scale_factor的量化方法,其中Scale_factor即为需要编码的量化因子,取值范围为[-31,31]的整数。量化因子的编码采用偏移量和差分编码的方式编入码流。可以看出,本发明不需要存储量化码表,这对减少编解码器需要的存储空间也是非常有利的。
上述的频带组信息202模块根据量化后的频谱对整个截止频率以下的频带进行频带组划分。频带组的划分在量化后的频谱基础上进行,这一策略也是本发明完全不同于其他所有宽带编解码器的重要区别之一,也是能进一步提高编码效率的根本。图4给出了频带组的划分示意图,频带组的划分一般应当遵循以下标准1、最多允许划分出4个频带组,也可以少于四个,但至少有一个频带组;2、每个频带组由相邻的A类和B类两类频带组成;3、A类频带中,所有频率子带的最大量化绝对值为1,即A类频带中每个频率子带的量化值只能为{+1,0,-1}中的一个;4、B类频带中,所有频率子带量化绝对值的最大值大于1,但可以含有绝对值小于或等于1的频率子带;5、某些特殊情况下(如所有量化频率子带的最大绝对值为1),为了获得最小码流,B类频带中频率子带量化绝对值的最大值也可以是1。
6、某些特殊情况下,一个频带组中A类或者B类频带可以空缺,如果某个频带组中某类频带空缺,相应的,对应频谱的编/解码跳过。
频带组划分的不同会影响到最终编码码流的大小,总的原则就是使编码码流越小的划分方式就越好。最终的频带组划分信息(各A、B类频带的边界信息)也将进入编码码流。
本发明采用两种完全不同的编码方式对A类频带和B类频带分别进行编码,编码仅对非符号部分进行,符号位单独以0/1方式编码。
其中A类频带采用总共4个A类码表中的一个进行编码,且同一个频带采用同一个码表。图5给出了所有4个A类码表对应的二叉树示意图。TA_0码表对应的是0/1编码方式。TA_1,TA_2和TA_3分别对应以2,3和4个频率子带为一组进行编码的码表。以TA_2码表为例,码字“110”对应的值为4,将4以低位在前高位在后的顺序用3位表示为二进制有“001”。那么值“001”就代表了相邻3个频率子带对应频谱值的绝对值。统计结果(包含各类音乐,中、高、低音人声等音频材料)显示,为获得更小的码流,平均有50%左右的情况下编码系统不会选择采用0/1的编码方式,而采用TA_1,TA_2或者TA_3进行编码。因此采用本发明的A类频带的编码方式可以明显节省码流,进而提高了编码效率。不完全统计结果显示节约码流可在15%以上(A类频带编码)。
其中B类频带采用了总共22个B类码表中的一个进行编码,且同一个频带采用同一个码表。图6给出了TB_8、TB_21相应码表的信息。表1给出了各码表对应的能表示的最大值,其中符号TB_Idx代表码表编号,依次为TB_0、TB_1、TB_2、……、TB_20、TB_21,符号MaxLv1表示对应码表能表示的最大值。频带中最大值的大小用来决定采用哪个码表。比如某个频带的最大频谱绝对量化值为7,那么就在TB_12和TB_13选择一个可以使得编码码流较小的码表用以编码。如果最大频谱绝对量化值为10,那么就在TB_18和TB_19中选择。如果最大频谱绝对量化值为12,就直接采用TB_20编码。如果最大频谱绝对量化值为14,那么就采用TB_21。另外,如果最大频谱绝对量化值大于15,则一律采用TB_21码表。在对最大频谱值大于15的频带编码时,频谱值小于15的频谱点,直接采用该表编码。对于频谱值大于等于15的频谱点则先编15,然后对该频谱点频谱值与15的差采用固定长度编码。固定码的长度为能够完整表示该频段最大谱值与15之差所需要的位数。
表1

图7给出了一个具体的频带组分割结果的示意图。
上述中的编码码表索引信息203模块是根据频带组划分的结果(频带组信息)以及相应的量化后的频谱值,计算得出能够获得最小编码码量所对应的编码码表的索引号,并将该索引号(每个A类和B类频带均有一个对应的编码码表索引号)编进码流。因为各A类和B类频带量化频谱的编码相互独立,所以计算获取对应编码码表索引的过程也独立进行。
上述中的量化后频谱信息204模块是根据各频带组的编码码表(编码码表索引信息模块给出)对量化频谱进行编码并形成编码码流。一般情况下,本模块产生的码量在总码流中占的比重最大。
此外,完整的编码码流还包括一些通用辅助信息如音频采样率、通道个数信息以及码流比特率等。最后对所有码流经过格式化处理并最终形成可唯一解码的码流。
图2是本发明的解码器流程图,它通过码流分析器300对码流进行格式化解析,解码器端通过对每帧频谱进行解码、逆量化,然后进行频域信息重构306,它包括经过频→时变换303,时频信号重构304以及通道信号重构305,重构出音频数据,并最终重构出各通道的信号。
首先,进行解码音频流头数据301,进而获得通用解码信息,如采样频率,音频通道数,码流的比特率等。
其次,对每帧的数据进行解码。每帧数据解码的过程中包括解码1)各Bark频带的量化因子信息201,2)频带组信息202,3)各频带组(A类和B类)对应的编码码表信息302,以及4)各频率子带的编码信息。根据Bark频带量化因子信息可以得到各频率子带对应的量化因子。根据频带组信息202以及频带组对应的编码码表信息302可以得到各频率子带的编码码表信息。根据各频率子带的编码信息和对应的编码码表可完整解码得到量化的频谱数据。根据量化的频谱数据以及对应的量化因子,通过反量化计算得到最终的反量化频谱数据。
其中A类频带解码,参照附图5所示,举如下两个实施例加以说明。
实施例1假设编码码表为TA_3,码流为1 0 1 0 1……。首先,根据码表匹配出相应的码字1 0 1 0,然后得到相应的码值为4,将码值4转为低位在前高位在后的4比特二进制0 0 1 0,接下来从码流中取出符号位1(表示为负值),则得到相应4个频率子带的值依次为0,0,-1,0。
实施例2假设编码码表为TA_2,码流为0……。首先,根据码表匹配出相应的码字0,然后得到相应的码值为0,将码值0转为低位在前高位在后的3比特二进制0 0 0。其次,因为均为零,故码流中无符号比特位。从而得到相应3个频率子带的值依次为0,0,0其中B类频带解码,参照附图6所示,举如下两个实施例加以说明。
实施例1假设编码码表为TB_8,码流为1 1 0 0 0……。首先,根据码表匹配得出相应的码字1 1 0 0,然后得到相应的码值为2,其次从码流总取出符号位0(表示为正值),则得到相应频率子带的值为+2。
实施例2假设编码码表为TB_21,固定编码长度为3,码流为1 1 1 1 1 1 0 1 1 1……。首先,根据码表匹配得出相应的码字1 1 1 11 1,然后得到相应的码值为15,码值15表示后面还有剩余码流一起用以表示本频率子带的量化谱值,读取后续3个比特长度的码0 11,为值3,从而得到具体的谱值绝对值为15+3=18,最后从码流中取出符号位1(表示为负值),则得到相应频率子带的值为-18。
最后,根据反量化频谱数据,经过频→时变换,重构出音频数据,并根据采样频率以及通道辅助信息最终重构出各通道的一帧信号。重复上述的解码和重构过程,直到解码完所有的数据并结束解码过程。
权利要求
1.一种音频编解码器的实现方法,其特征在于编码器端第一步,编码器端将音频信号做时-频变换,将信号从时域变换到频域,得到非量化频谱数据,第二步,对所述的非量化频谱数据进行频谱量化,它包括根据所述的非量化频谱数据及目标允许码量,通过迭代方法获得相应最佳的量化因子信息、频带组信息、编码码表索引信息以及量化后的频谱信息,第三步,计算获得并格式化码流,第四步,输出格式化码流,解码器端通过对码流格式化解析,对每帧频谱进行解码、逆量化,经过频→时变换并重构出时域音频数据,并最终重构出各通道的时域信号。
2.如权利要求1所述的一种音频编解码器的实现方法,其特征在于,第二步还包括首先,根据量化后的频谱数据,计算得出总使用的编码数据量,然后,将其与期望数据量进行比较,如果不符合期望要求,则调整量化因子,改变量化因子信息,进而改变各量化频谱数据、调整频带组信息及相应的编码码表,并重新计算总使用的编码数据量、如此重复迭代,直到满足期望数据量,最后计算得出格式化码流。
3.如权利要求1或2所述的一种音频编解码器的实现方法,其特征在于,所述量化因子的编码采用偏移量和差分编码的方式进行。
4.如权利要求1所述的一种音频编解码器的实现方法,其特征在于,所述的频带组至少包括一个频带组,最多不超过四个频带组。
5.如权利要求1或4所述的一种音频编解码器的实现方法,其特征在于,所述的每个频带组由相邻的A类频带和B类频带组成。
6.如权利要求5所述的一种音频编解码器的实现方法,其特征在于,在所述A类频带中,所有频率子带的最大量化绝对值为1,每个频率子带的量化值只能为{+1,0,-1}中的一个。
7.如权利要求5所述的一种音频编解码器的实现方法,其特征在于,在所述B类频带中,所有量化频率子带绝对值的最大值大于1,但可以含有绝对值小于或等于1的频率子带。
8.如权利要求5所述的一种音频编解码器的实现方法,其特征在于,当所有量化频率子带的最大绝对值为1时,在所述B类频带中频率子带量化绝对值的最大值也可以是1。
9.如权利要求5所述的一种音频编解码器的实现方法,其特征在于,在对所述A类频带进行编码中,采用总共4个A类码表中的1个进行编码,并且同一个频带采用同一个码表。
10.如权利要求6所述的一种音频编解码器的实现方法,其特征在于,在对所述A类频带进行编码中,采用总共4个A类码表中的1个进行编码,并且同一个频带采用同一个码表。
11.如权利要求5所述的一种音频编解码器的实现方法,其特征在于,在对所述B类频带进行编码中,采用总共22个B类码表中的1个进行编码,并且同一个频带采用同一个码表。
12.如权利要求7或8所述的一种音频编解码器的实现方法,其特征在于,在对所述B类频带进行编码中,采用总共22个B类码表中的1个进行编码,并且同一个频带采用同一个码表。
13.如权利要求1所述的一种音频编解码器的实现方法,其特征在于,所述频谱量化是基于临界频带进行,同一个临界频带内所有频率子带采用相同的量化因子,且量化步长为
14.如权利要求9或10所述的一种音频编解码器的实现方法,其特征在于,其中所述的4个A类码表分别为TA_0、TA_1、TA_2、TA_3表,TA_0表码为0、1,其对应的码值为0、1;TA_1表码为0、10、110、111,其对应的码值为0、1、2、3;TA_2表码为0、100、101、11100、110、11101、11110、11111,其对应的码值为0、1、2、3、4、5、6、7;TA_3表码为0、1000、1001、11000、1010、11001、11010、111011、1011、11011、11100、111100、111010、111101、111110、111111,其对应的码值为0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15。
15.如权利要求11或12所述的一种音频编解码器的实现方法,其特征在于,其中所述的22个B类码表依次为TB_0、TB_1、TB_2......、TB_20、TB_21,其对应码表能表示的最大值分别为2、2、2、8、3、3、4、4、5、5、6、6、7、7、8、8、9、9、11、11、13、15;其中TB_8表,码为0、10、1100、1101、1110、1111,其对应的码值为0、1、2、3、4、5;TB_21表,码为00、01、100、101、1100、11010、110110、110111、111000、111001、111010、111011、111100、111101、111110、111111,其对应的码值为0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15。
16.如权利要求13所述的一种音频编解码器的实现方法,其特征在于,所述的临界频带的带宽分布为在采样率为32kHz时,临界频带数为20个,各临界频带对应的带宽为6、6、6、6、6、6、9、13、17、21、25、28、32、36、40、43、47、51、55、59,总带宽为512;在采样率为44.1kHz时,临界频带数为21个,各临界频带对应的带宽为4、4、4、4、4、6、8、11、13、16、18、21、24、26、29、31、34、36、39、41、44,总带宽为417;在采样率为48kHz时,临界频带数为21个,各临界频带对应的带宽为4、4、4、4、5、7、9、11、13、15、17、20、22、24、26、28、30、32、34、36、39,总带宽为384。
全文摘要
本发明公开了一种音频编解码器的实现方法,它的计算复杂度低,存储量少同时又可以保证高音频压缩质量,被应用于手持设备、片上系统或专用集成电路产品和嵌入式系统的音频压缩编码技术。在编码器端第一步,将音频信号做时-频变换,将信号变换到频域,得到非量化频谱数据,第二步,根据所述的非量化频谱数据及目标允许码量,通过迭代方法获得相应最佳的量化因子信息、频带组信息、编码码表索引信息以及量化后的频谱信息,第三步,计算并格式化码流,第四步,输出格式化码流;在它的解码器端通过对码流的格式化解析,对每帧频谱进行解码、逆量化,经过频→时变换并重构出时域音频数据,并最终重构出各通道的时域信号。
文档编号G10L19/00GK1905373SQ20051002830
公开日2007年1月31日 申请日期2005年7月29日 优先权日2005年7月29日
发明者欧阳合, 周毅, 吴秉惠, 罗霖, 万凯 申请人:上海杰得微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1