Masking Effects
掩蔽效应
人类意识对信息的过滤过程中,包含了一个称为“掩蔽”的过程,研究心理声学的人很关注对这一过程的研究,它研究的是耳朵,意识,和声音之间的相互关系。有两个掩蔽效应对Mp3编码过程产生影响:一个是声响掩蔽,一个是时域掩蔽。
同步掩蔽(也称为声响掩蔽)
要描述同步掩蔽效应,最好是通过一个类比。想象一只在太阳前面飞翔的小鸟。你看到小鸟从左边飞到你和太阳之间,然后小鸟消失,因为太阳光线的亮度太高。当小鸟移出太阳区域,你就又能看到它了。就像在一个安静的环境中,吉他手的手指轻轻滑过琴弦的响声都能听到,但如果同样的响声在一个正在播放摇滚乐曲的环境中,一般人就听不到了。
Mp3编解码器只关心频率之间和音量之间的相互关系。用mp3编解码器能够处理的方式描述同步掩蔽如下:你有个声音信号,是个1000赫兹的正弦波(一),然后我们再来一个1100赫兹的正弦波(二),正弦波二比较弱,-10db。大多数人在这种情况下感知不到正弦波二的存在。但是正弦波二之所以不容易被感知,不仅因为它比较弱,而且还因为它的频率和正弦波一十分接近。为了说明这个现象,我们逐渐增加第二个正弦波的频率,但保持它的音量不变,直到我们能听到它。假定它的频率增加到4000赫兹的时候我们就能听到这个声音了。当两个正弦波的频率差别逐渐变大,第二个正弦波逐渐可以听得到,直到它的频率增高到某一点之后,绝大多数人都可以听到两个互不相同的音调了,一个比较大声,另一个比较小声。
这个过程就是心理声学所说的“同步掩蔽”现象。两个频率相近,但是音量相差很多的声音,很难被人类感知为两个不同的声音。考虑到这种现象,mp3在编码过程中尽量丢弃那些无法被感知的声音,或者分配尽可能少的比特给这些声音。
Temporal masking
时间掩蔽
同步掩蔽效应和不同频率声音的频率和相对音量有关,时间掩蔽则仅仅和时间有关。如果两个声音在时间上特别接近,人类在分辨它们的时候也会有困难。例如如果一个很响的声音后面紧跟着一个很弱的声音,后一个声音就很难听到。但是如果在第一个声音停止后过一段时间再播放第二个声音,后一个声音就可以听到。到底应该间隔多长时间?对纯音一般来讲是5毫秒。当然如果在时序上反过来效果是一样的,如果一个较低的声音出现在一个较高的声音之前而且间隔很短,那个较低的声音你也听不到。
Enter Bitrates, Stage Left
JPEG压缩可以明确控制压缩中的信息丢弃比率,但Mp3用户不能。可是mp3用户可以指定每一秒的音乐是用多少个bit来存储。最终效果相同。
编码过程中,信号中的“无用分量”被拿来和人类心理声学的数学模型,以及压缩使用的彼特率作比较,以决定要扔掉哪些数据。当前mp3压缩使用的比特率一般是128kbps。编码器在输出每一帧数据的时候都会考虑到这个数字,如果比特率比较低,那么“无关”和“冗余”数据的定义就会被放宽,导致大量的数据被认为是无用数据,此时压缩后的音频会丢失大量细节,导致音质下降。相反,如果使用较高的比特率编码,“无关”和“冗余”的标准就会被限定的更严格,细节会被保留,但是文件更大。
注意,mp3文件的比特率指的是所有被编码声道的总比特率。也就是说一个128kbps立体声mp3文件,和两个同样时间的64kbps的单声道mp3文件加起来的大小相同。但是一个128kbps立体声文件达到的音效,比两个单独的单声道64kbps文件所达到的音质要好。因为在一个立体声mp3文件中,所有的bit可以被按照需求(不平均地)分配给两个声道,比如某一个时刻,一个声道使用其中60%的比特,另外一个使用剩下40%的比特,只不过总的比特数不会超过编码前指定的比特率参数。
固定比特率和可变比特率
我们假定这里讨论的mp3编码使用的是固定比特率的编码方式,也就是说编码产生的文件在任何一个时间段内输出的比特率都是你指定的那个数值。固定比特率编码的缺点是,绝大部分声音文件中的信息量并不是固定不变的。使用乐器较多,或者有很多人同时说话的音频片断中,信息量就大,反之就小:类似这样影响音频文件信息量的因素还有很多。可变比特率编码就是为了适应音频文件的这一特点开发的。可变比特率编码,会根据音频数据的动态特性随时调整编码使用的比特率。
多数情况下,可变比特率编码能用更小的文件达到和固定比特率编码基本相同的音质。但是可变比特率编码也有其自身的缺点。首先,一些比较古老的播放器根本不支持对可变比特率mp3文件的解码,不能播放这样的文件。第二,解码器播放可变比特率mp3的时候无法确定当前解码(播放)到了什么位置,播放器上显示的 “当前播放时间”是不准的。
对一个固定比特率压缩的mp3文件来说,每一帧的头部中的信息都是相同的,但是对可变比特率mp3编码来说就不是。但是解码的时候,可变比特率编码并不比固定比特率的文件需要更多的计算能力,因为mp3解码器即使在播放固定比特率的mp3文件的时候也要读取全部的帧头部。
编码过程中输出任何一帧的时候都必须考虑到,不能超过指定的比特率。由于声音数据的复杂,经常会看到一些帧的数据,不能在满足指定的比特率的前提下,同时达到既定的声音质量。对这样的情况,Mp3标准允许编码器“拆东墙补西墙”,也就是把这一帧里放不下的数据,放到另外一些数据较少、因而有剩余空间的帧内。注意多出来的空间,是别的帧里多出来的富余空间,而不是特别开辟出来的额外空间。
阅读(1383) | 评论(0) | 转发(0) |