音频编解码原理讲解和分析.doc_第1页
音频编解码原理讲解和分析.doc_第2页
音频编解码原理讲解和分析.doc_第3页
音频编解码原理讲解和分析.doc_第4页
音频编解码原理讲解和分析.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

音频编码原理讲解和分析作者:谢湘勇,算法部, 2007-10-13简述2音频基本知识2采样(ADC)3心理声学模型原理和分析3滤波器组和window原理和分析6Window6TDAC:时域混叠抵消,time domain aliasing cancellation7Long and short window、block switch7FFT、MDCT8Setero and couple原理和分析8量化原理和分析9mp3、AAC量化编码的过程9ogg量化编码的过程11AC3量化编码的过程11Huffman编码原理和分析12mp3、ogg、AC3的编码策略12其他技术原理简介13比特池技术13TNS13SBR13预测模型14增益控制14OGG编码原理和过程详细分析14Ogg Vorbis的引入14Ogg Vorbis的编码过程14ogg心理声学模型15ogg量化编码的过程16ogg的huffman编码策略17主要音频格式编码对比分析19Mp319Ogg20AAC21AC322DRA(AVS内的中国音频标准多声道数字音频编码)23BSAC,TwinVQ24RA24音频编码格式的对比分析25主要格式对比表格如下26语音编码算法简介26后处理技术原理和简介28EQ28SRS WOW29环境音效技术(EAX)293D30Dolby多项后处理技术30多声道介绍30简述音频编解码目前主流的原理框图如图1,下面我希望由浅入深的对各算法原理作一说明。音频基本知识 人类可听的音频频率范围为20-20khz 全音域可分为8度音阶(Octave)概念,每octave又可以分为12份,相当于17的每半音为一份(1/12 octave) 音调和噪音:音调有规律的悦耳的声音(如乐器的17),噪音是无规律的难听的声音。音调具有谐波分量,不同的乐器对同一音调产生不同的谐波,所以我们产生不同的感觉,这叫做音色,不同的谐波也产生了音色的好坏。音质主要定义为噪音的多少。 主要的音频编解码对象是音乐、语音,一般采用不同的编解码算法来进行编码 音频的编解码的格式分类 无压缩的格式(PCM) 无损压缩格式(APE,FLAC,LPAC,WMA_LS) 有损音乐压缩格式(AAC,AACPlus,AC3,DTS,ATRAC,MP3,WMA,OGG,RA) 有损语音压缩格式(AMR, GSM, LPC, SPEEX, CELP, G.7XX, ADPCM,) 合成算法(MIDI,TTS) 音频的编解码的目的:减少传输的信息量,减少储存的信息量采样(ADC)采样即将连续的信号转化为离散的量化信号,一般应用是ADC,音频编码内采样的频率一般有:fs=8k,11.025k,12k,16k,22.05k,24k,32k,44.1k,48k(hz)9种,96khz,192khz也有应用。根据奈归斯特定理,采样频率fs大于信号频率f的两倍时,可完全重构原信号,所以音域为20khz的音乐信号,一样采用fs=44.1khz采样率。采样混叠问题,由于采样会使信号的频谱产生2为周期的周期扩展,所以信号的频率ffs/2时,会产生混叠效应,故一般进行采样需要增加低通滤波器,使输入信号频率小于fs/2。重采样的问题下面列出两问题作参考:1. 将采样率为48khz的音频信号转化为24khz的信号,请问其处理过程? 答案:先经过一低通滤波器(截止频率为/2) ,再每两个信号抽取一个信号,产生24khz的信号.如果不进行低通滤波,则会产生混叠。2. 将采样率为24khz的音频信号转化为48khz的信号,请问其处理过程?答案:先每个信号后插入一个0,再经过一低通滤波器(截止频率为/2),产生48khz的信号. 如果不进行低通滤波,则会产生原信号的映像,且最大幅度下降,增加滤波可去除映像和实现对填充的零值平滑化。心理声学模型原理和分析心理声学模型是研究心理与声学的相关性,目前的主要研究成果是,1. 低于一定频率或高于一定频率我们无法听到,一般人可听范围为(20hz-20khz)2. 人的耳朵对在低于一定的声压级或高于一定的声压级的声音,我们无法听到,而最低的可听声压级,被称为绝对听觉阈值曲线l 绝对听觉曲线近似方程: 3. 对不同频率同一声压级的声音人感觉的声音响度是不同的,同时不同年龄的人对同一声音其感觉的响度也会不同,小孩对低频和高频的感受能力都比老人要强烈很多。这里声音的实际能量大小我们定义为声压级,人感觉的声音大小我们定义为响度。通常人对1k-4khz的声音感觉最敏感,而人的语音也大部分集中在这个频段。下图为等响曲线,其中0的曲线是绝对听觉阈值曲线。l4. 掩蔽性,即比较大的声音会掩蔽比较小的声音,掩蔽原理分:时域掩蔽、频域掩蔽。l 频域掩蔽即同一时间点某一声音较大的某一频率信号会掩蔽附近其他频率的信号,如下图2.5红线以下的信号被掩蔽,蓝线为绝对听觉曲线,以下的信号也同样被掩蔽。同时低频信号对高频信号掩蔽效果较大,如下图2.6。整体掩蔽效果是所有掩蔽的叠加,如下图1.3lll 时域掩蔽是某一时间点某一声音较大的某一频率信号会掩蔽此信号之前和后的声音,向前的掩蔽时间较短5ms,向后的掩蔽时间较长150ms。l 根据声学模型,声音在用一临界区间内的掩蔽作用基本相同,所以我们一般定义此区间的单位为bark,020khz声音可基本分为25bark,某一临界区间内的强信号对别的临界区间的掩蔽效果可以用拓展函数计算。bark计算公式和带宽如下图:ll 掩蔽同时又可主要分出:音调掩蔽噪音(TMN)和噪音掩蔽音调(NMT)。而且音调掩蔽噪音的作用较小,噪音掩蔽音调较大。根据心理声学模型的成果,目的是将人耳听不到的或影响很小的信息部分去除,不编码。目前的应用也有不同的实现方法,但都使用同样的心理声学模型成果。mpeg有mode1和mode2两种声学模型,lay1和lay2使用mode1,lay3(mp3)使用mode2,AAC与mp3相同使用mode2,ogg实现方法与mpeg不同。下面主要介绍mpeg的mode2声学模型的具体实现方式和ogg的实现方式。MPEG mode2声学模型MPEG mode2声学模型计算原理可以分为几个步骤1. FFThaning window2. 将谱线按临界区间进行分组,计算掩蔽值按分组为单位3. 辨认音调信号和噪声信号。Mode1主要是根据局部峰值特性来确定音调信号,临界区间内的其他信号根据几何平均值来确定噪声信号;而mode2则根据不可预测性指数来作为加权值进行掩蔽值计算,依据的原理是音调信号预测性较好,而噪声信号预测性较差。加权公式如下:l SNR=tb(b)*TMN(b)+(1-tb(b)*NMT(b), TMN=18db, NMT=64. 使用扩展函数计算其他临界区间对此区间的影响5. 预回声控制,取min(前一帧的掩蔽性nb_l(b)*rpe,nb(b),rpe=1 or 26. 使用绝对听觉阈值曲线max(绝对阈值qt(b),nb(b)7. 计算谱线掩蔽thr(w),并计算和输出子带SMR8. 感知熵计算,用于长短窗判定,平稳信号的感知熵较小。PE=-(whigh(b)-wlow(b)*log10(nb(b)/(e(b)+1)9.ogg心理声学模型下见“OGG编码原理和过程详细分析”内:ogg心理声学模型滤波器组和window原理和分析WindowWindow的作用是将无限信号截取为短时有限信号,但其会改变信号的频谱特性,主要是频谱泄漏,使中心频带变宽,产生旁瓣频谱。而中心频带宽度,旁瓣频谱的衰减特性是我们实际应用中选择window的主要依据,目前主要的window函数如下窗类型 项数 阻带衰减 通带增益20log(1-deta_p)矩形 0.91*fs/TW 21db -0.9db汉宁 3.32*fs/TW 44db -0.06db哈明 3.44*fs/TW 55db -0.02db布莱克曼 5.98*fs/TW 75db -0.0014db凯塞(pda=6) 4.33*fs/TW 64db -0.0057db凯塞(pda=8) 5.25*fs/TW 81db -0.00087db凯塞(pda=10) 6.36*fs/TW 100db -0.000013dbfs=frequency sample, TW=中心频带带宽在此介绍AAC、mp3、ogg的window使用AAC的使用了正弦窗和KBD窗(kaiser-bessel dirved window)两种窗类型,解码使可切换。KBD win的主瓣较宽,旁瓣衰减大,适合频率间隔大于140hz的变换;正弦窗的主瓣较窄,旁瓣衰减小,适合频率间隔小于140hz的变换;故AAC内长窗(2048point)用正弦窗,短窗(256point)用KBD窗.窗频谱对比分析如下图Mp3长短都用了与AAC一样的正弦窗,正弦窗公式 w=sin(/N*(i+0.5)OGG长短也只用一种窗,但与AAC、mp3不同,公式为y=sin(0.5 * * sin2(x+0.5)/n * ),也可以属于正弦窗之列TDAC:时域混叠抵消,time domain aliasing cancellation 目前的音频编码使用MDCT的基本上都用了此项技术,可抵消掉MDCT的边界的问题,保证MDCT与IMDCT完全重构,目前都采用50混叠,相应窗函数必须满足对称性和完全重构条件。Long and short window、block switch使用短窗可以去除预回声效应,出现非平稳信号时使用,使用长窗可以提高压缩比,稳态信号时使用,音频编码时大部分都是稳态信号,所以长窗使用较多,长短窗间形成block switch,从而有起始窗函数和结束窗函数对应。如下图可用感知熵PE进行长短窗的判决,PE大用短窗,反之用长窗预回声的产生原理,过大的冲击信号使同一区间的小信号的量化噪声过大,而向前掩蔽的效应时间较短,产生预回声mp3的长短窗长度为(12,36),但其是分32子带,所以等效窗长为(384,1152)AAC的长短窗长度为(256,2048)ogg的长短窗长度可有多种配置方案,(512,512), (1024,1024), (512,1024), (256,2048) , (512,4096),大部分的编码都用(256,2048) 方案FFT、MDCTFFT、MDCT都是用来将时域信号转化为频域信号,FFT是在复数域上计算,而MDCT是在实数域上计算,而且此变换一般占用音频编解码的运算量百分比较大,所以基于它们的快速算法或电路设计都较多,所以在此不再叙述。目前发现大部分的主要音频编解码算法都使用了这些变换作为滤波器组的算法,而且使用算法相同。FFT: X(k)=(x(n)*WNnk), (n=0 to N-1,k=0 to N-1, WN=e-j2/N )MDCT:IMDCT:Setero and couple原理和分析根据声学研究的结论人类的听觉是低频段(4000),幅度差起主导作用。Stereo的原理是利用上结论,并两声道间的相关性和冗余来编码,因为在实际生活中两声道往往发出非常类似的声音,主要有MS stereo和Intensity stereo编码,都是利用声道之间的特性,进行压缩,这种处理也可以称为couple,如果不进行couple处理则成为dual channels mode。MS stereo原理是利用两声道间较强的相关性进行,编码时令M(L+R)/2,S=(L-R)/2,可认为一个声道保留幅度,一个声道保留“相位”。Intensity stereo原理是利用人耳对声音的高频成分感知与频谱相位相关性小,主要靠其强度进行判知,故可对高频成分,左声道用来表示左右声道的强度之和,右声道设为0,同时保存左右声道各子带的能量比,具体看如下公式Mp3编码可选性的使用MS stereo和Intensity stereoAAC与mp3相同Ogg使用正方形极坐标映射算法(Polar stereo) 和类似Intensity stereo的技术,原理一样量化原理和分析通常简单的量化表示一个数按N bit进行线形量化,如PCM按16bit量化,即-1,1 之间的小数线形均匀的分成65536份,qstep=(1/2)15。此种量化每提高1bit,可提高SNR 6db左右,16bit量化的SNR=90db,CD音质即为16bit PCM,已基本满足人类的听觉需要,这也通常表示为无压缩的格式准则,而数据量为,按44.1k采样率2声道计算, 44.1*16*2=1411.2kbps,经过音频编码后一般需要压缩到64kbps或128kbps,压缩比分别为22.05,11.025倍。量化的过程基本涵盖了音频编码的整体核心架构,接下来将详细讲解mp3、AAC、ogg、AC3量化编码的过程,对比分析。mp3、AAC量化编码的过程mp3和AAC量化编码的过程基本是一样,所以放在一起讲。使用非均匀量化,公式为:量化的过程没有固定的最好办法,但总的流程是比较固定的。整体上分成三层循环,frame_loop,outer_loop,inner_loop,每层循环设定一定的跳出条件,如图inner_loop负责量化并进行huffman编码,满足量化总bits小于可用bits,否则增加整体量化因子common_scalefac,重新量化;outer_loop负责使每一子带的量化噪声小于掩蔽阈值,否则提高对应子带的saclefactor,重新进入inter_loop,量化噪声计算公式为frame_loop是整体的音频帧循环。量化的每层循环流程图如下(frame_loop)理想的情况是所有的量化子带量化噪声都在掩蔽阈值之下,且量化总bits小于可用的bits,但由于受软硬件资源的限制,需要在outer_loop设置循环的次数限制或较弱的跳出条件。同时outer_loop内可加入最优算法,即将每次的量化方案与最优方案进行比较,如更优,则将当前方案保存为最优方案,在outer_loop结束循环后,重新load出最优方案,作为最后的量化方案。同时实践中可以根据每阶段的数据分析,调整量化的实际计算过程和方案。由此和心理声学模型一起形成的感知音频编码整体过程为ogg量化编码的过程ogg分floor 量化编码和residue量化编码两部分,与mp3/AAC不同,具体下见“OGG编码原理和过程详细分析”内:ogg量化编码的过程AC3量化编码的过程在此简单带过一下AC3的量化过程,因为它与前mp3/ogg两种都不同,见下量化整体框图它是提取频谱的指数和尾数两部分分别进行量化,将指数部分作为频谱包络,并根据心理声学模型决定尾数部分量化编码的位分配信息,最后合并进行封装,与ogg分两部分量化编码有类似的地方,只是提取包络的方式不一样。Huffman编码原理和分析Huffman编码可以称为无损熵编码,熵即信息熵;信息熵,1948年,由香农提出了“信息熵”(shng) 的概念,解决了对信息的量化度量问题。香农指出,它的准确信息量H=-(p1*log2(p1)+p2*log2 (p2)+.+pN*log2 (pN),其中p1,p2,.,pN 分别是其概率。香农把它称为“信息熵” (Entropy),一般用符号 H 表示,单位是比特。变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。 信息熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。实际中,由于每变量的出现概率往往不能准确获得,所以所需bits一般并不能理想达到熵的值。Huffman编码也是根据每变量的概率来构建huffman tree,概率越大,code_len越短,最后构建的目标是total_len=code1_len*p1+ code2_len*p2+codeN_len*pN最小,pN是其出现概率。其码字的特点是任何一个码字都不会是另外一码字的前面的部分。如下图一种huffman tree的例子上图例子:07即每码字对应的编码code_value,当然它可以映射为其他值,如(-3,-2,-1,0,1,2,3,4) 分别对应(07).Huffman编码同时可以分为线性量化和向量量化两种,线性量化即每code_value只表示一个需要编码的量化值,而向量量化可表示多个需要编码的量化值,具体的个数是Huffman tree的维数。下面来看两简单的2维huffman code table,code_value=(x,y),code_len=hlen,code=hcode.左边是4个code_value属于等概率时构建而成的tree,右边是4个不等概率构建而成的tree。#x y hlen hcod #x y hlen hcod 0 0 2 11 0 0 1 1 0 1 2 10 0 1 3 001 1 0 2 01 1 0 2 01 1 1 2 00 1 1 3 000 另huffman编码可以进行迭代编码,即由多个huffman trees来对一量化值编码。mp3、ogg、AC3的编码策略mp3的huffman编码策略Mp3一帧分成2个颗粒,每颗粒576个量化值,对576个量化值分成3个区,大值区,小值区,0值区;小值区是不大于1的数,0值区是等于0的数;大值区使用32个huffman trees,每2个量化值组成一向量编码,小值区使用2个huffman trees,每4个量化值组成一向量编码,0值区不需编码。OGG的huffman编码策略下见“OGG编码原理和过程详细分析”内:ogg的huffman编码策略AC3的编码策略没用huffman编码,直接设计组合打包算法,采用指数和尾数两部分编码,指数采用D15, D25, or D45映射编码策略;尾数也采用类似的group映射原理编码;D15表示1个指数差被编码,exp diff=(-2,-1,0,1,2)分别映射为M=(0,1,2,3,4);D25表示2个指数差被编码,但第2个与第一个相同,映射同D15;D45表示4个指数差被编码,但第2-4个与第一个相同,映射同D15;对所有模式,每3个Dx5策略的映射值(M1,M2 and M3)被组合一起编码成7bit code,公式为 Coded 7 bit Grouped Value = (25*M1) + (5*M2) + M3 ; 每帧含6block,后面的block可以重用0block的部分量化值和信息,使1-5block的部分量化值和信息可以不编码。其他技术原理简介比特池技术、TNS、SBR、预测模型、增益控制比特池技术前面帧没用完的bits可以提供给后面帧使用,可以在信息量大的时候用多些bits,信息量少的时候用少些bits,从而在固定bps下灵活调控量化噪声的掩蔽,但它受bits cache的大小限制TNSTNS,即时域噪声整形(temporal noise shaping),其原理是时域和频域具有对偶性,时域信号较平稳时,频域信号变化较剧烈,而频域信号较平稳时,时域信号变化较剧烈。根据此原理,但时域信号变化较剧烈,利用预测算法预测平稳的频域信号,将原信号减去预测值,对差值进行下面的量化编码,将可提高压缩比。一般感知熵PE大于预设值时,进行TNS,TNS在1.5khz进行较好,目前定在2.5khz,而算法预测使用levison-durbin recursion算法SBRSBR ,即spectral band reprication;1997,由coding technologies公司发明,利用高频和低频信号具有较强的相关性原理设计,只编码低频成份,高频成份有提取的参数和低频成份构造产生,后被加入mpeg4 standard 标准,mp3+ SBR =mp3pro,AAC+ SBR=AAC+预测模型Predition,用前两帧的信号预测当前帧的信号,二阶预测增益控制Gain conctrol,由PQF, gain detector, gain modifier三部分组成OGG编码原理和过程详细分析Ogg Vorbis的引入Ogg Vorbis是由美国Xiph.Org 基金组织开发的一种类似于MP3等现有的通过有损压缩算法进行音频压缩的感知音频编解码方式。与MP3以及其他优秀音频压缩编码算法不同的是,这种格式是完全免费、开放源码且没有专利限制的。Vorbis是这种音频压缩方式的名字,而Ogg则是一种为Vorbis音频数据提供同步以及校验等操作的封装机制。该组织意图设计一个完全开放源码的多媒体系统供人们免费使用。Ogg Vorbis的编码过程同其他的高效宽带音频编解码一样,Ogg Vorbis也属于感知编码的范畴。它出现的时间比较晚,可以借鉴之前出现的编码方法的所有成功之处,因而立足点比较高。与MP3相比,在相同码率下它能达到较高的声音质量,或者在相同回放音质的情况下它具有更低的码率。Ogg Vorbis的编解码流程如下Ogg编码框图1所示,l 首先对输入音频PCM信号加窗,进行稳态/瞬态分析,决定MDCT窗的长度,Ogg的长短窗长度可有多种配置方案,(512,512), (1024,1024), (512,1024), (256,2048) , (512,4096),大部分的编码都用(256,2048) 方案;OGG长短窗只用一种窗函数,但与AAC、mp3不同,公式为y=sin(0.5 * * sin2(x+.5)/n * );l 然后将这些音频信号进行FFT和MDCT变换分析。两种变换得到的频谱系数被输入到心理声学模型单元进行掩蔽曲线的计算,掩蔽曲线求出之后,再联合MDCT系数求代表整个频谱包络的基底曲线;l 基底曲线求出之后,从MDCT系数中去掉频谱包络便得到被白化的残差频谱,相对于MDCT系数来说,残差频谱的动态范围明显变小,从而可以降低编解码时的量化误差。而且去掉基底曲线之后,剩余多声道的残差矢量会具有很大的相似性,这给之后采用声道耦合技术进一步降低冗余度提供了前提;l 去掉基底曲线的残差信号进行信道之间的耦合之后进行矢量量化,Ogg使用残差声道交织和正方形极坐标映射(Polar stereo) 和类似Intensity stereo的技术,有效避开mp3的joint setero专利;l 然后将量化之后的信息进行Huffman编码;l 最后将要传输的各种信息数据按照Vorbis定义的包格式组装,形成Vorbis压缩码流;l Ogg Vorbis解码过程与编码过程相反,但是没有心理声学模型分析、比特分配以及矢量量化等模块。 -(Ogg编码框图1)ogg心理声学模型ogg心理声学模型的计算主要步骤1. FFT+haning window2. 音调掩蔽曲线计算,根据FFT谱线找到所有单音信号后计算每单音的掩蔽,形成总音调掩蔽曲线3. MDCT+WINDOW4. 噪声掩蔽曲线计算,根据mdct的每谱线对其所在临界区间进行线性回归分析,求出此点的噪声均值,所有点形成噪声平滑曲线,平滑曲线及噪声频谱偏移两曲线(预设)可得到最终的噪声掩蔽曲线。线性回归方程:5. 取音调掩蔽曲线和噪音掩蔽曲线两者每谱线的最大者作为输出综合掩蔽曲线,提供给floor计算,完成6. - (ogg心理声学模型流程框图)ogg量化编码的过程ogg量化编码整体流程如下,它与mp3的三层循环过程不一样,主要分floor和residue两模块,l floor以心理声学模型的输出综合掩蔽曲线为输入,对幅度db域-140,0db的谱线信号均匀量化为1024级,然后进行分段线形回归,分段数根据采样率和量化等级决定,求出一定数目的回归点,作为输出控制基底曲线的趋势点postlist,对postlist进行线性插值得出全域的控制基底曲线,提供给residue module。l Residue信号是由mdct谱线值除于控制基底曲线得出的商取整产生,再经过couple处理后进行huffman编码。l 而它对量化噪声的控制和bitrate管理则通过调整综合掩蔽曲线来完成,产生16种掩蔽曲线,分别进行上量化过程,同时产生16种量化方案,根据比特池来选择一种合适量化方案,作为最后输出。l Floor的计算原理如下:Ogg Vorbis的频谱包络分析(floor)是整个编码过程中最具特色之处。从最初版本发布至今,它的基底函数推出了两种求取方法,分别称为基底类型0和基底类型1。Vorbis基底类型0以线谱对LSP参数表示编码平滑的频谱包络曲线。这种方法计算复杂,已经逐渐被淘汰。Vorbis基底类型1使用分段线段逼进的方法来表示编码频谱包络,并基于线性频率轴和对数幅度轴画出曲线。基底类型1的算法比较简单,而且具有较高的帧间稳定特性,所以现在发行的Vorbis版本都采用了这种方法。下面对这种方法做简单介绍(下面的例子是为了理解的方便而不是编解码真正采用的数值):假设基底函数的长度为128,从码本头包中得出的频率系数下标按顺序为:0,16,32,48,64,80,96,112,128。在编码时建立基底曲线的过程如下图2所示。首先将0与128点的绝对值连线,组成一条整体预测曲线,然后按照顺序进行内插,使用连线上的预测值和实际值相减的方法得出各个点的编码值(在Vorbis中,为了最大限度的降低比特率,除了前后两个端点的Y值是用绝对值编码外,其余值都是相对于预测值的差值)。按照这个过程直到所选数据都处理完毕,这样比特流中数据部分的编码依次为110,20,-5,-45,0,-25,-10,30,-10。解码器工作时首先根据边缘的点预测中间内插值,然后再与解码出来的差值相加,重构基底曲线。上面只是通过一个例子来说明基底类型1的编解码过程,实际的横轴取点并不是均匀的,编码器在低频部分所取的样点要多于高频部分。以采样率为44.1kHz的宽带音乐编码为例,码本头包中128点的短块使用的基底样点下标按照从低到高的顺序为0,2,4,6,8,10,12,14,16,19,23,28,33,39,46,58,70,90,128。-(floor计算图)ogg的huffman编码策略ogg分floor 编码和residue编码,由于有多种huffman码书方案,根据编码的要求,选择码书方案,然后将编码所用方案的码书全放在编码的信息头内,供解码时用;l floor 编码采用的都是线性huffman trees,对控制基底曲线的postlist进行编码;l residue编码同时采用线性和向量huffman trees编码,且采用huffman迭代编码。l residue编码的策略可看下图此图内例子,是class_codeword使用一种线性码书,而partition内的8个量化值使用m级迭代huffman编码,每级编码使用一种向量码书,分A、B两组向量。l 每partition内的向量group方式有三种mode:residue0,residue1,residue2residue 0Residue 0 and 1 differ only in the way the values within a residue partition are interleaved during partition encoding(visually treated as a black box-or cyan box or brown box-in the above figure). Residue encoding 0 interleaves VQ encoding according to the dimension of the codebook used to encode a partition in a specific pass. The dimension of the codebook need not be the same in multiple passes, however the partition size must be an even multiple of the codebook dimension.As an example, assume a partition vector of size eight, to be encoded by residue 0 using codebook sizes of 8, 4, 2 and 1:original residue vector: 0 1 2 3 4 5 6 7 codebook dimensions = 8 encoded as: 0 1 2 3 4 5 6 7 codebook dimensions = 4 encoded as: 0 2 4 6 , 1 3 5 7 codebook dimensions = 2 encoded as: 0 4 , 1 5 , 2 6 , 3 7 codebook dimensions = 1 encoded as: 0,1,2,3,4,5,6,7It is worth mentioning at this point that no configurable value in the residue coding setup is restricted to a power of two.residue 1Residue 1 does not interleave VQ encoding. It represents partition vector scalars in order. As with residue 0, however, partition length must be an integer multiple of the codebook dimension, although dimension may vary from pass to pass. As an example, assume a partition vector of size eight, to be encoded by residue 0 using codebook sizes of 8, 4, 2 and 1:original residue vector: 0 1 2 3 4 5 6 7 codebook dimensions = 8 encoded as: 0 1 2 3 4 5 6 7 codebook dimensions = 4 encoded as: 0 1 2 3 , 4 5 6 7 codebook dimensions = 2 encoded as: 0 1 , 2 3 , 4 5 , 6 7 codebook dimensions = 1 encoded as: 0, 1 ,2,3,4,5,6, 7residue 2Residue type two can be thought of as a variant of residue type 1. Rather than encoding multiple passed-in vectors as in residue type 1, the ch passed in vectors of length n are first interleaved and flattened into a single vector of length ch*n. Encoding then proceeds as in type 1. Decoding is as in type 1 with decode interleave reversed. If operating on a single vector to begin with, residue type 1 and type 2 are equivalent.主要音频格式编码对比分析下面列出各格式的编码框图作为参考Mp3Mp3的编码框图如下 OggAACAC3DRA(AVS内的中国音频标准多声道数字音频编码)BSAC,TwinVQRA音频编码格式的对比分析Mp3:特点是采用多相分析滤波器组,将频带分成32个子带分别进行mdct,mdct长短窗长为(12,36),每子带18条谱线,使用短窗,则每子带含3个短窗mdct运算,每帧内分两颗粒,每颗粒有32*18=576的频谱线。目前使用比较流行。OGG:是无版权的编码格式,特点是分成floor和residue两部分编码,采用多方案码书策略和改进的向量量化编码方法,并将使用方案策略和码书保存在编码头信息内;采用了残差声道交织和正方形极坐标映射。AAC:使用TNS /Predition等先进预测算法,增加GainControl module,使用可配置的模块设计思想,故根据使用环境可选性使用多种先进算法的配置编码策略,如GainControl/TNS /Predition/SBR/PS等算法模块都可以灵活配置。AC3(DIGITAL AUDIO COMPRESSION):DOLBY公司发明,成为ATSC STARDARD,32 kbps to 640 kbps, 支持1 to 5.1 channels,384 kbps=5.1 channels,多应用于DVD系统;采用指数和尾数两部分编码,指数采用D15, D25, or D45编码策略;尾数解码加入dither原理,采用dynamic range control原理,具有downmix功能。每帧含6block,每block含256samples,后面的block可以重用0block的部分量化值和信息,使1-5block的部分量化值和信息可以不编码。DRA:采用可切换分辨率滤波器组,和特别设计的量化分区策略,提高编码效率TwinVQ :NTT1995 发明,VQ编码,(transformation domain weighted interleave VQ)根据能量给与不同权重的低码率编码方法,主要用于低于64kbps,经过lpc平坦化后的信号在量化时根据频谱能量等来确定平坦信号的量化权重,这样可以防止平坦化信号还原时误差被放大,敏感的信号量化权重增加频谱正则化(SN)技术BSAC: 比特分片算述编码BSAC(the bit-sliced arithmetic coding), BSAC coding is best performed in the range of 40 kbit/s to 64 kbit/s, though it operates in the range of 16 kbit/s to 64 kbit/s最大特点是作为一种无噪声编码,它能提供从16kbit/s至64kbit/s之间以1kbit/s的步率实现码率的分可级性以上只是简单描述出各主要应用格式的比较有特色的技术特征,关键在技术上分析其优劣,而编码内技术对应产生的音质问题不好评判,可在网上查看评测机构发布的评测报告。64kbps的测试结果:/64test/results.html/主要格式对比表格如下类型/模块MP3OGGAACDRA预处理无无GainControl无窗长(12,36)多种,主要(256,2048)(256,2048)(256,2048)滤波器组PQF+MDCTMDCTMDCTMDCT心理声学模型MPEG声学模型2音调掩蔽+噪声掩蔽两路计算MPEG声学模型2不确定,原理相同预测算法无无TNS /LTP / Predition /PNS无量化策略三层迭代模型Floor-residue三层迭代模型三层迭代模型Couple算法MS stereo,Intensity stereo残差声道交织和正方形极坐标映射MS stereo,Intensity stereoMS stereo,Intensity stereo编码算法Huffman编码,分大值区,小值区,零值区Huffman编码,多方案码书策略和改进的向量量化编码方法Huffman编码Huffman编码,特别设计的分区策略额外算法SBR/PS无SBR/PS等无特别之处使用比较流行无版权可配置的模块设计思想AVS的中国音频标准语音编码算法简介下面简要介绍几种主要语音编码PCM 脉冲编码调制 是Pulse Code Modulation的缩写。PCM编码的方法是对语音信号进行采样,然后对每个样值进行量化编码。CCITT(现ITU-T)的64kbit/s语音编码标准G.711采用PCM编码方式,采样速率为8kHz,每个样值用8bit非线性的律或A律进行编码,总速率为64kbit/s。ADPCM 自适应差分脉冲编码调制 是Adaptive Differential Pulse Code Modulation的编写。ADPCM编码的方法是对输入样值进行自适应预测,然后对预测误差进行量化编码。CCITT的32kbit/s语音编码标准G.721采用ADPCM编码方式,每个语音样值相当于用4bit进行编码。LPC 线性预测编码 是Linear Predictive Coding的缩写。LPC语音编码是最基本的低速率语音编码方法,LPC语音编码的基础是语音产生模型,在这个模型中,语音是由激励信号激励一个自适应滤波器(即LPC滤波器)而产生。LPC滤波器的参数是通过线性预测的方法,即用过去的样值预测当前样值提取的。美国联邦标准FS1015的2.4kbit/sLPC-10和LPC-10e就是LPC语音编码的典型例子,主要用于电话线上的窄带语音保密通信。CELP 码激励线性预测编码 是Code Excited Linear Prediction的缩写。CELP是近10年来最成功的语音编码算法。CELP语音

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论