音频编解码原理讲解和分析报告报告材料.docx
- 文档编号:25694571
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:39
- 大小:1.48MB
音频编解码原理讲解和分析报告报告材料.docx
《音频编解码原理讲解和分析报告报告材料.docx》由会员分享,可在线阅读,更多相关《音频编解码原理讲解和分析报告报告材料.docx(39页珍藏版)》请在冰豆网上搜索。
音频编解码原理讲解和分析报告报告材料
音频编码原理讲解和分析
谢湘勇,算法部,xie.chris.2007-10-13
简述
音频编解码目前主流的原理框图如图1,下面我希望由浅入深的对各算法原理作一说明。
音频根本知识
▪人类可听的音频频率X围为20-20khz
▪全音域可分为8度音阶〔Octave〕概念,每octave又可以分为12份,相当于1—7的每半音为一份〔1/12octave〕
▪音调和噪音:
音调有规律的悦耳的声音〔如乐器的1—7〕,噪音是无规律的难听的声音。
音调具有谐波分量,不同的乐器对同一音调产生不同的谐波,所以我们产生不同的感觉,这叫做音色,不同的谐波也产生了音色的好坏。
音质主要定义为噪音的多少。
▪主要的音频编解码对象是音乐、语音,一般采用不同的编解码算法来进展编码
▪音频的编解码的格式分类
•无压缩的格式(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π为周期的周期扩展,所以信号的频率f>fs/2时,会产生混叠效应,故一般进展采样需要增加低通滤波器,使输入信号频率小于fs/2。
重采样的问题下面列出两问题作参考:
1.将采样率为48khz的音频信号转化为24khz的信号,请问其处理过程?
答案:
先经过一低通滤波器〔截止频率为π/2〕,再每两个信号抽取一个信号,产生24khz的信号.如果不进展低通滤波,如此会产生混叠。
2.将采样率为24khz的音频信号转化为48khz的信号,请问其处理过程?
答案:
先每个信号后插入一个0,再经过一低通滤波器〔截止频率为π/2〕,产生48khz的信号.如果不进展低通滤波,如此会产生原信号的映像,且最大幅度下降,增加滤波可去除映像和实现对填充的零值平滑化。
心理声学模型原理和分析
心理声学模型是研究心理与声学的相关性,目前的主要研究成果是,
1.低于一定频率或高于一定频率我们无法听到,一般人可听X围为〔20hz-20khz〕
2.人的耳朵对在低于一定的声压级或高于一定的声压级的声音,我们无法听到,而最低的可听声压级,被称为绝对听觉阈值曲线
●绝对听觉曲线近似方程:
3.对不同频率同一声压级的声音人感觉的声音响度是不同的,同时不同年龄的人对同一声音其感觉的响度也会不同,小孩对低频和高频的感受能力都比老人要强烈很多。
这里声音的实际能量大小我们定义为声压级,人感觉的声音大小我们定义为响度。
通常人对1k-4khz的声音感觉最敏感,而人的语音也大局部集中在这个频段。
如下图为等响曲线,其中0的曲线是绝对听觉阈值曲线。
●
4.掩蔽性,即比拟大的声音会掩蔽比拟小的声音,掩蔽原理分:
时域掩蔽、频域掩蔽。
●频域掩蔽
●
●
●时域掩蔽是某一时间点某一声音较大的某一频率信号会掩蔽此信号之前和后的声音,向前的掩蔽时间较短5ms,向后的掩蔽时间较长150ms。
●根据声学模型,声音在用一临界区间内的掩蔽作用根本一样,所以我们一般定义此区间的单位为bark,0—20khz声音可根本分为25bark,某一临界区间内的强信号对别的临界区间的掩蔽效果可以用拓展函数计算。
bark计算公式和带宽如如下图:
●
●掩蔽同时又可主要分出:
音调掩蔽噪音(TMN)和噪音掩蔽音调(NMT)。
而且音调掩蔽噪音的作用较小,噪音掩蔽音调较大。
根据心理声学模型的成果,目的是将人耳听不到的或影响很小的信息局部去除,不编码。
目前的应用也有不同的实现方法,但都使用同样的心理声学模型成果。
mpeg有mode1和mode2两种声学模型,lay1和lay2使用mode1,lay3〔mp3〕使用mode2,AAC与mp3一样使用mode2,ogg实现方法与mpeg不同。
下面主要介绍mpeg的mode2声学模型的具体实现方式和ogg的实现方式。
MPEGmode2声学模型
MPEGmode2声学模型计算原理可以分为几个步骤
1.FFT+haningwindow
2.将谱线按临界区间进展分组,计算掩蔽值按分组为单位
3.识别音调信号和噪声信号。
Mode1主要是根据局部峰值特性来确定音调信号,临界区间内的其他信号根据几何平均值来确定噪声信号;而mode2如此根据不可预测性指数来作为加权值进展掩蔽值计算,依据的原理是音调信号预测性较好,而噪声信号预测性较差。
加权公式如下:
●SNR=tb(b)*TMN(b)+(1-tb(b))*NMT(b),TMN=18db,NMT=6
4.使用扩展函数计算其他临界区间对此区间的影响
5.预回声控制,取min(前一帧的掩蔽性nb_l(b)*rpe,nb(b)),rpe=1or2
6.使用绝对听觉阈值曲线max(绝对阈值qt(b),nb(b))
7.计算谱线掩蔽thr(w),并计算和输出子带SMR
8.感知熵计算,用于长短窗判定,平稳信号的感知熵较小。
PE=-∑(whigh(b)-wlow(b))*log10(nb(b)/(e(b)+1))
9.
ogg心理声学模型
下见“OGG编码原理和过程详细分析〞内:
ogg心理声学模型
滤波器组和window原理和分析
Window
Window的作用是将无限信号截取为短时有限信号,但其会改变信号的频谱特性,主要是频谱泄漏,使中心频带变宽,产生旁瓣频谱。
而中心频带宽度,旁瓣频谱的衰减特性是我们实际应用中选择window的主要依据,目前主要的window函数如下
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
窗类型项数阻带衰减通带增益[20log〔1-deta_p)]
fs=frequencysample,TW=中心频带带宽
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
在此介绍AAC、mp3、ogg的window使用
Mp3长短都用了与AAC一样的正弦窗,正弦窗公式w=sin(π/N*(i+0.5))
OGG长短也只用一种窗,但与AAC、mp3不同,公式为y=sin(0.5*π*sin2((x+0.5)/n*π)),也可以属于正弦窗之列
TDAC:
时域混叠抵消,timedomainaliasingcancellation
目前的音频编码使用MDCT的根本上都用了此项技术,可抵消掉MDCT的边界的问题,保证MDCT与IMDCT完全重构,目前都采用50%混叠,相应窗函数必须满足对称性和完全重构条件。
Longandshortwindow、blockswitch
使用短窗可以去除预回声效应,出现非平稳信号时使用,使用长窗可以提高压缩比,稳态信号时使用,音频编码时大局部都是稳态信号,所以长窗使用较多,长短窗间形成blockswitch,从而有起始窗函数和完毕窗函数对应。
如如下图
可用感知熵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、MDCT
FFT、MDCT都是用来将时域信号转化为频域信号,FFT是在复数域上计算,而MDCT是在实数域上计算,而且此变换一般占用音频编解码的运算量百分比拟大,所以基于它们的快速算法或电路设计都较多,所以在此不再表示。
目前发现大局部的主要音频编解码算法都使用了这些变换作为滤波器组的算法,而且使用算法一样。
FFT:
X(k)=∑(x(n)*WNnk),(n=0toN-1,k=0toN-1,WN=e-j2π/N)
MDCT:
IMDCT:
Seteroandcouple原理和分析
根据声学研究的结论人类的听觉是低频段(<1400),相位差起主导作用,中频(1400-4000),幅度差和相位差共同起作用,高频段(>4000),幅度差起主导作用。
Stereo的原理是利用上结论,并两声道间的相关性和冗余来编码,因为在实际生活中两声道往往发出非常类似的声音,主要有MSstereo和Intensitystereo编码,都是利用声道之间的特性,进展压缩,这种处理也可以称为couple,如果不进展couple处理如此成为dualchannelsmode。
MSstereo原理是利用两声道间较强的相关性进展,编码时令M=(L+R)/2,S=(L-R)/2,可认为一个声道保存幅度,一个声道保存“相位〞。
Intensitystereo原理是利用人耳对声音的高频成分感知与频谱相位相关性小,主要靠其强度进展判知,故可对高频成分,左声道用来表示左右声道的强度之和,右声道设为0,同时保存左右声道各子带的能量比,具体看如下公式
Mp3编码可选性的使用MSstereo和Intensitystereo
AAC与mp3一样
Ogg使用正方形极坐标映射算法(Polarstereo)和类似Intensitystereo的技术,原理一样
量化原理和分析
通常简单的量化表示一个数按Nbit进展线形量化,如PCM按16bit量化,即[-1,1]之间的小数线形均匀的分成65536份,qstep=(1/2)15。
此种量化每提高1bit,可提高SNR6db左右,16bit量化的SNR=90db,CD音质即为16bitPCM,已根本满足人类的听觉需要,这也通常表示为无压缩的格式准如此,而数据量为,按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,否如此增加整体量化因子mon_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年,由香农提出了“信息熵〞(shāng)的概念,解决了对信息的量化度量问题。
香农指出,它的准确信息量H=-(p1*log2(p1)+p2*log2(p2)+...+pN*log2(pN)),其中p1,p2,...,pN分别是其概率。
香农把它称为“信息熵〞(Entropy),一般用符号H表示,单位是比特。
变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。
信息熵是信息论中用于度量信息量的一个概念。
一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。
所以,信息熵也可以说是系统有序化程度的一个度量。
实际中,由于每变量的出现概率往往不能准确获得,所以所需bits一般并不能理想达到熵的值。
Huffman编码也是根据每变量的概率来构建huffmantree,概率越大,code_len越短,最后构建的目标是total_len=code1_len*p1+code2_len*p2+…+codeN_len*pN最小,pN是其出现概率。
其码字的特点是任何一个码字都不会是另外一码字的前面的局部。
如如下图一种huffmantree的例子
上图例子:
0—7即每码字对应的编码code_value,当然它可以映射为其他值,如(-3,-2,-1,0,1,2,3,4)分别对应(0—7).
Huffman编码同时可以分为线性量化和向量量化两种,线性量化即每code_value只表示一个需要编码的量化值,而向量量化可表示多个需要编码的量化值,具体的个数是Huffmantree的维数。
下面来看两简单的2维huffmancodetable,code_value=(x,y),code_len=hlen,code=hcode.
左边是4个code_value属于等概率时构建而成的tree,右边是4个不等概率构建而成的tree。
#xyhlenhcod#xyhlenhcod
002110011
01210013001
1020110201
11200113000
另huffman编码可以进展迭代编码,即由多个huffmantrees来对一量化值编码。
mp3、ogg、AC3的编码策略
mp3的huffman编码策略
Mp3一帧分成2个颗粒,每颗粒576个量化值,对576个量化值分成3个区,大值区,小值区,0值区;小值区是不大于1的数,0值区是等于0的数;大值区使用32个huffmantrees,每2个量化值组成一向量编码,小值区使用2个huffmantrees,每4个量化值组成一向量编码,0值区不需编码。
OGG的huffman编码策略
下见“OGG编码原理和过程详细分析〞内:
ogg的huffman编码策略
AC3的编码策略
没用huffman编码,直接设计组合打包算法,采用指数和尾数两局部编码,指数采用D15,D25,orD45映射编码策略;尾数也采用类似的group映射原理编码;
D15表示1个指数差被编码,expdiff=(-2,-1,0,1,2)分别映射为M=(0,1,2,3,4);
D25表示2个指数差被编码,但第2个与第一个一样,映射同D15;
D45表示4个指数差被编码,但第2-4个与第一个一样,映射同D15;
对所有模式,每3个Dx5策略的映射值(M1,M2andM3)被组合一起编码成7bitcode,公式为
Coded7bitGroupedValue=(25*M1)+(5*M2)+M3;
每帧含6block,后面的block可以重用0block的局部量化值和信息,使1-5block的局部量化值和信息可以不编码。
其他技术原理简介
比特池技术、TNS、SBR、预测模型、增益控制
比特池技术
前面帧没用完的bits可以提供应后面帧使用,可以在信息量大的时候用多些bits,信息量少的时候用少些bits,从而在固定bps下灵活调控量化噪声的掩蔽,但它受bitscache的大小限制
TNS
TNS,即时域噪声整形(temporalnoiseshaping),其原理是时域和频域具有对偶性,时域信号较平稳时,频域信号变化较剧烈,而频域信号较平稳时,时域信号变化较剧烈。
根据此原理,但时域信号变化较剧烈,利用预测算法预测平稳的频域信号,将原信号减去预测值,对差值进展下面的量化编码,将可提高压缩比。
一般感知熵PE大于预设值时,进展TNS,TNS在>1.5khz进展较好,目前定在>2.5khz,而算法预测使用levison-durbinrecursion算法
SBR
SBR,即spectralbandreprication;1997,由codingtechnologies公司发明,利用高频和低频信号具有较强的相关性原理设计,只编码低频成份,高频成份有提取的参数和低频成份构造产生,后被参加mpeg4standard标准,mp3+SBR=mp3pro,AAC+SBR=AAC+
预测模型
Predition,用前两帧的信号预测当前帧的信号,二阶预测
增益控制
Gainconctrol,由PQF,gaindetector,gainmodifier三局部组成
OGG编码原理和过程详细分析
OggVorbis的引入
OggVorbis是由美国Xiph.Org基金组织开发的一种类似于MP3等现有的通过有损压缩算法进展音频压缩的感知音频编解码方式。
与MP3以与其他优秀音频压缩编码算法不同的是,这种格式是完全免费、开放源码且没有专利限制的。
Vorbis是这种音频压缩方式的名字,而Ogg如此是一种为Vorbis音频数据提供同步以与校验等操作的封装机制。
该组织意图设计一个完全开放源码的多媒体系统供人们免费使用。
OggVorbis的编码过程
同其他的高效宽带音频编解码一样,OggVorbis也属于感知编码的X畴。
它出现的时间比拟晚,可以借鉴之前出现的编码方法的所有成功之处,因而立足点比拟高。
与MP3相比,在一样码率下它能达到较高的声音质量,或者在一样回放音质的情况下它具有更低的码率。
OggVorbis的编解码流程如下Ogg编码框图1所示,
●首先对输入音频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*π));
●然后将这些音频信号进展FFT和MDCT变换分析。
两种变换得到的频谱系数被输入到心理声学模型单元进展掩蔽曲线的计算,掩蔽曲线求出之后,再联合MDCT系数求代表整个频谱包络的基底曲线;
●基底曲线求出之后,从MDCT系数中去掉频谱包络便得到被白化的残差频谱,相对于MDCT系数来说,残差频谱的动态X围明显变小,从而可以降低编解码时的量化误差。
而且去掉基底曲线之后,剩余多声道的残差矢量会具有很大的相似性,这给之后采用声道耦合技术进一步降低冗余度提供了前提;
●去掉基底曲线的残差信号进展信道之间的耦合之后进展矢量量化,Ogg使用残差声道交织和正方形极坐标映射(Polarstereo)和类似Intensitystereo的技术,有效避开mp3的jointsetero专利;
●然后将量化之后的信息进展Huffman编码;
●最后将要传输的各种信息数据按照Vorbis定义的包格式组装,形成Vorbis压缩码流;
●OggVorbis解码过程与编码过程相反,但是没有心理声学模型分析、比特分配以与矢量量化等模块。
<-〔Ogg编码框图1〕
ogg心理声学模型
ogg心理声学模型的计算主要步骤
1.FFT+haningwindow
2.音调掩蔽曲线计算,根据FFT谱线找到所有单音信号后计算每单音的掩蔽,形成总音调掩蔽曲线
3.MDCT+WINDOW
4.噪声掩蔽曲线计算,根据mdct的每谱线对其所在临界区间进展线性回归分析,求出此点的噪声均值,所有点形成噪声平滑曲线,平滑曲线与噪声频谱偏移两曲线〔预设〕可得到最终的噪声掩蔽曲线。
线性回归方程:
5.取音调掩蔽曲线和噪音掩蔽曲线两者每谱线的最大者作为输出综合掩蔽曲线,提供应floor计算,完成
6.
<-(ogg心理声学模型流程框图)
ogg量化编码的过程
ogg量化编码整体流程如下,它与mp3的三层循环过程不一样,
主要分floor和residue两模块,
●floor以心理声学模型的输出综合掩蔽曲线为输入,对幅度db域[-140,0]db的谱线信号均匀量化为1024级,然后进展分段线形回归,分段数根据采样率和量化等级决定,求出一定数目的回归点,作为输出控制基底曲线的趋势点postlist,对postlist进展线性插值得出全域的控制基底曲线,提供应residuemodule。
●Residue信号是由mdct谱线值除于控制基底曲线得出的商取整产生,再经过couple处理后进展huffman编码。
●而它对量化噪声的控制和bitrate管理如此通过调整综合掩蔽曲线来完成,产生16种掩蔽曲线,分别进展上量化过程,同时产生16种量化方案,根据比特池来选择一种适宜量化方案,作为最后输出。
●Floor的计算原理如下:
OggVorbis的频谱包络分析(floor)是整个编码过程中最具特色之处。
从最初版本发布至今,它的基底函数推出了两种求取方法,分别称为基底类型0和基底类型1。
Vorbis基底类型0以线谱对LSP参数表示编码平滑的频谱包络曲线。
这种方法计算复杂,已经逐渐被淘汰。
Vorbis基底类型1使用分段线段逼进的方法来表示编码频谱包络,并基于线性频率轴和对数幅度轴画出曲线。
基底类型1的算法比拟简单,而且具有较高的帧间稳定特性,所以现在发行的Vorbis版本都采用了这种方法。
下面对这种方法做简单介绍〔下面的例子是为了理解的方便而不是编解码真正采用的数值〕:
假设基底函数的长度为128,从码本头包中得出的频率系数下标按顺序为:
{0,16,32,48,64,80,96,112,128}。
在编码时建立基底曲线的过程如如下图2所示。
首先将0与128点的绝对值连线,组成一条整体预测曲线,然后按照顺序进展内插,使用连
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音频 解码 原理 讲解 分析 报告 材料