音频编码原理讲解和分析作者:谢湘勇,算法部,**************************简述 (2)音频基本知识 (2)采样(ADC) (3)心理声学模型原理和分析 (3)滤波器组和window原理和分析 (6)Window (6)TDAC:时域混叠抵消,time domain aliasing cancellation (7)Long and short window、block switch (7)FFT、MDCT (8)Setero and couple原理和分析 (8)量化原理和分析 (9)mp3、AAC量化编码的过程 (9)ogg量化编码的过程 (11)AC3量化编码的过程 (11)Huffman编码原理和分析 (12)mp3、ogg、AC3的编码策略 (12)其他技术原理简介 (13)比特池技术 (13)TNS (13)SBR (13)预测模型 (14)增益控制 (14)OGG编码原理和过程详细分析 (14)Ogg V orbis的引入 (14)Ogg V orbis的编码过程 (14)ogg心理声学模型 (15)ogg量化编码的过程 (16)ogg的huffman编码策略 (17)主要音频格式编码对比分析 (19)Mp3 (19)Ogg (20)AAC (21)AC3 (22)DRA(A VS内的中国音频标准多声道数字音频编码) (23)BSAC,TwinVQ (24)RA (24)音频编码格式的对比分析 (25)主要格式对比表格如下 (26)语音编码算法简介 (26)后处理技术原理和简介 (28)EQ (28)SRS WOW (29)环境音效技术(EAX) (29)3D (30)Dolby多项后处理技术 (30)多声道介绍 (30)简述音频编解码目前主流的原理框图如图1,下面我希望由浅入深的对各算法原理作一说明。
音频基本知识▪人类可听的音频频率范围为20-20khz▪全音域可分为8度音阶(Octave)概念,每octave又可以分为12份,相当于1—7的每半音为一份(1/12 octave)▪音调和噪音:音调有规律的悦耳的声音(如乐器的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.低于一定频率或高于一定频率我们无法听到,一般人可听范围为(20hz-20khz)2.人的耳朵对在低于一定的声压级或高于一定的声压级的声音,我们无法听到,而最低的可听声压级,被称为绝对听觉阈值曲线●绝对听觉曲线近似方程:3.对不同频率同一声压级的声音人感觉的声音响度是不同的,同时不同年龄的人对同一声音其感觉的响度也会不同,小孩对低频和高频的感受能力都比老人要强烈很多。
这里声音的实际能量大小我们定义为声压级,人感觉的声音大小我们定义为响度。
通常人对1k-4khz的声音感觉最敏感,而人的语音也大部分集中在这个频段。
下图为等响曲线,其中0的曲线是绝对听觉阈值曲线。
●4.掩蔽性,即比较大的声音会掩蔽比较小的声音,掩蔽原理分:时域掩蔽、频域掩蔽。
●频域掩蔽即同一时间点某一声音较大的某一频率信号会掩蔽附近其他频率的信号,如下图2.5红线以下的信号被掩蔽,蓝线为绝对听觉曲线,以下的信号也同样被掩蔽。
同时低频信号对高频信号掩蔽效果较大,如下图2.6。
整体掩蔽效果是所有掩蔽的叠加,如下图1.3●●●时域掩蔽是某一时间点某一声音较大的某一频率信号会掩蔽此信号之前和后的声音,向前的掩蔽时间较短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的实现方式。
MPEG mode2声学模型MPEG mode2声学模型计算原理可以分为几个步骤1.FFT+haning window2.将谱线按临界区间进行分组,计算掩蔽值按分组为单位3.辨认音调信号和噪声信号。
Mode1主要是根据局部峰值特性来确定音调信号,临界区间内的其他信号根据几何平均值来确定噪声信号;而mode2则根据不可预测性指数来作为加权值进行掩蔽值计算,依据的原理是音调信号预测性较好,而噪声信号预测性较差。
加权公式如下:●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%混叠,相应窗函数必须满足对称性和完全重构条件。