MD的基本算法原理(查找到的资料)
MD的基本算法原理--ATRAC
??ATRAC(Adaptive Transform Acoustic Coding自适应声学转换编码)是一套基于心理声学原理的音响译码
系统,它可以把CD唱片的音频压缩到原来数据量的大约1/5而声音质量没有明显的损失。这一技术可以说是把MD
的体积缩到这么小的算法基础。
ATRAC主要被设计完成如下任务:
*把16位、44.1KHz的立体声音频压缩到小于原数据量的1/5,而声音质量的损失最小
*硬件执行简单便宜,适合便携的播放和录放机
??统计分析表明,声音信号中存在多种冗余度,编码时可以去除这些冗余,在解码时这些冗余可以重建。利用
人耳听觉的心理声学特性(频谱掩蔽特性和时间掩蔽特性)以及人耳对信号幅度、频率、时间的有限分辩能力,编
码时凡是入耳感觉不到的成分不编码,不传送,即凡是对人耳辨别声音信号的强度、音调、方位没有贡献的部分
(称为不相关部分或无关部分)都不编码和传送。对感觉到的部分,进行编码时,允许有较大的量化失真、并使其
处于听阈以下,人耳仍然感觉不到。ATRAC就是利用这些特点来工作的。
心理声学
??为了了解ATRAC的原理,我们先来大致看一看心理声学的基本特性。这里主要包括几个概念:
等响曲线
??听觉的灵敏度随着频率而改变,人的耳朵对4kHZ的频率最灵敏,只在4kHz频率下能被察觉来出的声音压力水
平,在其它频率时并不能被觉察出来。而通常两个功率一样但频率不同的音调听起来并不一样响。一个声音的感
知响度可以用多少个"sone"来表述,1 sone定义为一个40分贝的音调在1kHz下的响度。
屏蔽
??屏蔽是指一个声音(弱信号)被另一个声音(强信号)屏蔽导致不可察觉。它包括同时屏蔽、后屏蔽和前屏
蔽。同时屏蔽发生在强信号和弱信号同时发生的时侯,例如一段会话(弱信号)被一列路过的火车(强信号)淹
没。前屏蔽发生在强信号产生之前的极短的时间里;后屏蔽发生在强信号刚结束之后极短的时间里。
??当两个声音在时间和频率上很接近的时候,屏蔽效应就会很强。例如同时屏蔽的效应比前效应和后效应要强
,因为声音是同时发生的。屏蔽试验通常用一个频带很窄的白噪音作为屏蔽信号,然后测量一个纯净的音调在不
同的时间和频率下刚好能被察觉的水平。
??这里表现了两个重要的结论:首先,当强信号的频率与弱信号相同或比它高时,同时屏蔽效应最有效;其次
,在强信号停止后比较长的时间里后屏蔽有效,但前屏蔽只在强信号开始前2、3毫秒内有效。
临界频带
??对于人类的听觉来说,对声音的感知特性并不是以线性频率为尺度来变化的,而是可以用称之为临界频带的
一系列有限频段来表达。在同一个临界频段内(即在一个确定的频率范围内)的频率,耳朵的听觉感知是相类似
的,即心理声学特性都是一样的。在有屏蔽信号的情况下,一个临界频带之内的声音感知程度与等带宽划分的跨
越几个临界频带的声音感知程度并不相同。
ATRAC的编码和解码
??当数字音频数据被压缩时,通常都会把一定数量的量化噪音带入信号。许多音频编码系统通过控制这些噪音
的时间-频率分配使得它们在人耳中不被察觉。如果这一点做得很成功的话,那么经过处理的信号与原信号将难
以区别。
??通常的做法是,音频编码器把信号分解为一组单元,每一单元都对应特定的时间和频率范围。音频信号会被
使用这些时间-频率分配并根据心理声学原理来分析。分析指出那些单元是重要的,必须高精度编码,那些单元
不敏感,可以容忍一些量化噪音而不会降低声音的感知质量。基于这些信息,可用的比特被分配到时间-频率单
元。通过使用这些比特,每一个单元的频谱范围被量化。而在解码器中,量化频谱会根据比特分配重新建立,然
后合成为音频信号。
??ATRAC也是这样操作的,但有一些改进。ATRAC不但把心理声学应用在比特分配运算中,而且还应用在时间-
频率的分割过程中。通过结合子频带译码和转换译码技术,输入的信号被分析到不均匀的强调重要低音区域的频
率分割。另外,ATRAC使用一个可变块长度改编输入的信号。这可以确保在稳定通过时高效的译码而不会在瞬时
通过时影响时间的分辨率。
编码过程
??ATRAC系统同时采用了子频带技术和转换技术。为了减轻芯片处理编码时的负担,输入信号在5.5125kHz和
11.025kHz被分成三个频带。子频带的分解使用QMF(Quadrature Mirror Filters积分映射过滤器)来完成。
??这三个频带被MDCT(Modified Discrete Cosine Transform变址离散余弦变换--类似于通常的快速傅里叶变
换)转换成频谱值,MDCT允许块之间有达50%的交迭,使得在维持临界采样时能提高频率解析度。块的长度可以
根据信号的种类改变,这就是ATRAC的自适应部分(这一做法主要是为了利用前屏蔽掩盖初始量化噪声)。MDCT
出来的结果是一系列的频谱值,这些频谱值,被使用浮点数量化,然后被一些BFU(Block Floating Units块浮
动单元)聚合起来,每一个BFU使用一样的比例系数和字长来分配比特。
??ATRAC并没有详细说明比特分配的算法和心理声学模型。每一个BFU的字长存贮在经过量化频谱值的比特流里
,所以解码器与比特分配算法是完全分开的,这使得改进比特分配算法(改进音质)可以不用改变现有的解码器
基础。
解码过程
??ATRAC的解码要比编码过程简单得多。除了(或多或少)复杂的比特分配阶段,这个过程类似于编码过程的
反过程。解码器把频谱值重组(使用比例系数和字长),这些频谱值使用参数给出的适当块长通过IMDCT
(Inverse MDCT)转换成时域,最后,三个时域信号被QMF综合过滤器综合成输出信号。
??ATRAC压缩后的数据量还有多大?用一个专用的名词bitrate(位速率--常常在压缩相关的东西中见到它)来
表示的话,ATRAC压缩后立体信号的Bitrate是292162.5bit/sec,即约285Kbit/sec。这个Bitrate其实是根据
ATRAC的算法处理过程计算出来的。由于ATRAC把每512个16比特的采样压缩成一个ATRAC"声组"(212bytes),所
以详细的计算可以归结为:
44100 samples/sec(每通道采样率)/512 sample/soundgroup(按每512个采样一个声组分开)*2 channels(
两个通道)*212bytes/soundgroup*8bit/bytes=292162.5bit/sec
简单的说,就是压缩比为4.83:1。