Ⅰ 音频有损压缩技术
音频压缩:音频编码,不进行压缩,每秒产生的数据大小是1M多,数据太大了
有损压缩 :当我们把数据进行压缩之后,无法还原回跟原来一模一样的信息了
无损压缩 :是对文件本身的压缩,和其它数据文件的压缩一样,是对文件的数据存储方式进行优化,采用某种算法表示重复的数据陆坦信息,文件可以完全还原,不会影响文件内容,对于数码图像而言,也就不会使图像细节有任何损失。
感谢分享
有损压缩
无损压缩
音频压缩技术是在保证信号在听觉方面不产生失真的前提下,对音频数据信号进行尽可能大的压缩
压缩的主要方法: 是取出采集到的音频冗余信息。所谓冗余信息包括人耳听觉范围外的音频信号以及呗。
信号的遮蔽 可以分为 频域遮蔽 和 时域遮蔽 。
图片1
现实生活中,声音是一种复合声音(各种声音参杂在一起),在与人对话的时候,听到对方说的,我们听到的,是对方说话的声音和好多环境的声音,比如关冰箱、水壶响,其实是参杂在一起,但是我们为什么能听见对方说的话,而听不见这些声音呢?是因为对方说的声音,覆盖早大桐掉了例如水壶响啊、关冰箱声音等,遮蔽掉了,如何遮蔽的呢?2种技术, 一种是频域遮蔽,另一种是时域遮蔽 。
频域遮蔽 和 时域遮蔽 这个太深奥,在这里不做解释了,设计到的内容太深了,本人掌握的一点,不敢误导人,所以就不写了。
感谢分享
时域和频域转换 傅立叶变换
转换之后,我们只关心我们需要的波形,不要的就要替换掉,那些数据应该保留,那些数据应该扔掉呢?
图片1就给我们做了解释,横轴是它的频率范围,到0.02单位是khz,0.02也就是20hz,20hz一下的,人也不感知,纵轴是声音的强度,有一条静音门槛,这条曲线之下的声音都是被屏蔽掉的,人都是听不到的, 曲线之上的还有一个遮蔽效应,就是在不同的频域上,它会有一个范围,在这个范围之内的声音,也是被屏蔽掉的,2个女生说话,在相同频域范围内,声音高的 会把声音低的这个人的声音屏蔽掉,这也是为啥2个女生吵架的时候,声音高的很容易让人听见,男生和女生说话,虽然女生的声音高,但是男生的声音不一定被屏蔽掉,男生的声音在横轴0.25khz范围上,纵轴在30dB上,没在遮蔽源范围内,还是可以听见男生说话的。
时仿轿域遮蔽:随着时间的推移,它是如何产生遮蔽效应的。横轴是时间,纵轴是声音强度,图2所示,0-200,同时有很多声音进来,声强的会压住声弱的。声强之前的声音也会被屏蔽掉。在50毫秒内,越靠近这个人说话,越会被屏蔽掉。对于后面的屏蔽更长了,达到了200毫秒,你超过它,你就把前面的声音给屏蔽掉了,就看图2后屏蔽这。
Ⅱ 常见的声音压缩标准有哪些它们分别采用什么压缩方法(试举3例)
mp3
MP3全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III)。是当今较流行的一种数字音频编码和有损压缩格式,它设计用来大幅度地降低音频数据量,而对于大多数用户来说重放的音质与最初的不压缩音频相比没有明显的下降。它是在1991年由位于德国埃尔朗根的研究组织Fraunhofer-Gesellschaft的一组工程师发明和标准化的。
ape
APE是目前流行的数字音乐文件格式之一。与MP3这类有损压缩方式不同,APE是一种无损压缩音频技术,也就是说当你将从音频CD上读取的音频数据文件压缩成APE格式后,你还可以再将APE格式的文件还原,而还原后的音频文件与压缩前的一模一样,没有任何损失。APE的文件大小大概为CD的一半,但是随着宽带的普及,APE格式受到了许多音乐爱好者的喜爱,特别是对于希望通过网络传输音频CD的朋友来说,APE可以帮助他们节约大量的资源。
wma
WMA的全称是Windows Media Audio,它是微软公司推出的与MP3格式齐名的一种新的音频格式。由于WMA在压缩比和音质方面都超过了MP3,更是远胜于RA(Real Audio),即使在较低的采样频率下也能产生较好的音质。
在64kbps的数据速率时,在13000-20000Hz频率段就能保留了大部分信息。
但64kbps的WMA的低频表现实在有点令人失望,听上去比较硬,如同加入了哇声效果般,感觉非常不好,当然比同比特64K的mp3要好感觉声音更集中。听觉上64WMA的表现基本接近128kbps mp3的音质水平,但没有达到。96K的wma略好于128K的mp3,WMA在高于128以上的各种比特率表现相差不大,高频和泛音都很丰富,一般人听不出WMA128Kbps以上的音质和音色的差异,总体感觉WMA的声音偏硬,适合流行摇滚,如果是古典或者纯人声的话,感觉有点生硬,在低于128K时,WMA对于MP3拥有绝对优势!128以上的WMA相比MP3会有薄的感觉。
在128kbps及以下码流的试听中WMA完全超过了MP3格式,低码流之王不是浪得虚名的。但是当码流上升到128kbp以后,WMA的音质却并没有如MP3一样随着码流的提高而大大提升。
flac
FLAC即是Free Lossless Audio Codec的缩写,中文可解为无损音频压缩编码。FLAC是一套着名的自由音频压缩编码,其特点是无损压缩。不同于其他有损压缩编码如MP3 及 AAC,它不会破任何原有的音频资讯,所以可以还原音乐光盘音质。现在它已被很多软件及硬件音频产品所支持。
简而言之,FLAC与MP3相仿,但是是无损压缩的,也就是说音频以FLAC方式压缩不会丢失任何信息。这种压缩与Zip的方式类似,但是FLAC将给你更大的压缩比率,因为FLAC是专门针对音频的特点设计的压缩方式,并且你可以使用播放器播放FLAC压缩的文件,就象通常播放你的MP3文件一样(现在已经有许多汽车播放器和家用音响设备支持FLAC,在FLAC的网站上你可以找到这些设备厂家的连接)。
FLAC是免费的并且支持大多数的操作系统,包括Windows,“unix” (Linux, *BSD,Solaris,OS X,IRIX),BeOS,OS/2,和Amiga。并且FLAC提供了在开发工具autotools,MSVC,Watcom C,和Project Builder上的build系统。
Ⅲ 什么是音频压缩技术
音频压培伍缩技术指的是对原始数字音频信号流(PCM编码)运用适当的数字信号处理技术,在不损失有用信息量,或所引入损失可忽略的条件下,降低(压缩)其码率,粗仿也称为压缩编码。它必须具有相应的逆变换,称为解压缩或解码。音频信号在通过一个编解码系统后可能引入大量的噪声和一定的失岩中纤真。
mp3格式就是
Ⅳ MP3是什么
音频压缩技术。
MP3是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(),简称为MP3。它被桥并设计用来大幅度地降低音频数据量。
利用MPEGAudioLayer3的技术,将音乐以1:烂汪1甚至1:12的压缩率,压缩成容量较小的文件,而对于敏历迹大多数用户来说重放的音质与最初的不压缩音频相比没有明显的下降。
Ⅳ MP3的压缩原理是什么
其实音频压缩技术很多,MP3压缩技术并不是最好的。但现在看来它仍然是主流。
音乐信号中有许多冗余成分,其中包括间隔和一些人耳分辨不出的信息(如混杂在较强背景中的弱信号)。CD声音不经压缩,采用44.1kHz的固定速率采样,可以保证最大动态音乐的良好再现,当然,信息量较少处的数据量也是相同的,因而存在压缩的可能性。音响频宽为20~20kHz(顶级CDPlayer可向下延伸至2Hz)已成为目前的音乐标准。MP3为降低声音失真采取了名为"感官编码技术"的编码算法:编码时先对音频文件进行频谱分析然,然后用过滤器率掉噪音电平,接着通过量化的方式将剩下的每一位打散排列,最后形成具有较高压缩比的MP3文件,并使压缩后的文件在回放时能够达到比较接近原音源的声音效果。虽然他是一种有损压缩,但是它的最大优势是一极小的声音失真换来了较高的压缩比。且现在的MP3采用与杜比AC-3相似的变压缩比率(VBR)压缩技术,采样的压缩比率依音乐中信息多寡,并利用人耳的掩蔽效应来减少冗余数据。
Ⅵ Mp3音乐所采用的声音数据压缩编码的标准是什么
声音数据压缩编码的标准是MPEG Audio Layer 3。
相关介绍:
MP3是一种音频压缩技术,利用MPEG Audio Layer 3的技术,将音乐以1:10 甚至 1:12 的压缩率,压缩成容量较小的文件。它是在1991年由位于德国埃尔朗根的研究组织Fraunhofer-Gesellschaft的一组工程师发明和标准化的。
(6)声音压缩技术扩展阅读
1991年,MP3标准的制定由Leon van de Kerkhof(Layer I)和Gerhard Stoll(Layer II)完成。所有这些算法最终都在1992年成为了MPEG的第一个标准组MPEG-1的一部分,并且生成了1993年公布的国际标准ISO/IEC 11172-3。
MPEG音频上的更进一步的工作最终成为了1994年制定的第二个MPEG标准组MPEG-2标准的一部分,这个标准正式的称呼是1995年首次公布的ISO/IEC 13818-3。
Ⅶ 音视频入门-音频压缩技术(二)
音频压缩技术是保证信号在听觉不失真的前提码咐袜下,对音频数据信号进行尽可能大的压缩
压缩的主要方简和法就是去除采集到的冗余信息,所谓冗余信息就是超出人耳听觉范围的音频信号和被遮蔽掉的音频信号
遮蔽的音频信号包括 频域遮蔽 和 时域遮蔽
熵编码:哈夫曼编码、算术编码、香农编码
常见的迟激音频编码器包括:OPUS(文件小、压缩率高)、AAC(运用最广泛的音频编码器,IOS、Android 嵌入式)Ogg、Speex(解决了回音消除,在AAC之前比较受欢迎的音频编码器)、iLBC、AMR、G.711
编解码器总结:不同的场景使用的音频编码器可能不一样,一般情况下,AAC在直播系统中使用比较广泛、OPUS是比较新的编码器,WebRTC默认使用的是OPUS音频编码器、固话使用的是G.711系列
AAC(Advanced Audio Coding)由Fraunhofer IIS、杜比实验室、AT&T、Sony等公司共同开发、目前是取代MP3格式
最开始是基于MPEG-2的音频解码技术,MPEG-4标准出现后,AAC重新集成其特性,加入了SBR技术和PS技术
目前常用的规格有:AAC LC、AAC HE V1和AAC HE V2
AAC LC:(LOW Complexity)低复杂度规格,码流是128K,音质好
AAC HE V1:AAC LC + SBR(Spectral Band Replication),其核心思想是按频谱分保存,低频编码保存主要成分,高频单独放大编码保存音质
码率在64K左右
AAC HE V2:AAC LC + SBR + PS(Parametric Stereo)其核心思想是双声道中的声音存在某种相似性,只需要存储一个声道的全部信息,然后,花很少的字节用描述另一个声道在不同的地方
这种格式的特性是可以确定找到这个音频数据的开始,只能从头开始解码,不能从音频数据流的中间开始,这种格式常用在磁盘文件中
这种格式的特性是每一帧都有一个同步字,所以可以在音频流的任意位置开始解码,它类似于数据流格式
ADTS由7/9个字节组成 ADTS格式查询
-i:输入的多媒体文件
-vn:v表示的是video ,n表示的no 意思是过滤掉视频数据
-c:a : c表示的是codecs编码器,a表示的是audio,也就是指定的音频编码器
-ar:表示的是音频的采样率
-channels:声道数
-profile:对fdk-aac编码器设置了参数,对应的是a,也就是对音频的参数
最后3.aac也就是输出的aac格式的文件名称
Ⅷ 音频压缩原理
音频压缩的原理
转自http://forums.dearhoney.idv.tw/viewtopic.php?t=24378
引用:
音讯资料因为其资料内容的特性,以传统的压缩法难达到很高的压缩率,不过我们人耳并没有无限的时间分辨率和频率分辨率,其实原始的音乐讯号中包含了很多我们听不到的资料,把这些对我们来讲其实无意义的资讯给去掉,这样就可以达到很高的压缩率。这种利用人类 感官知觉的特性作的失真压缩法,就叫做 perceptual coding。
人耳的生理结构,由外耳的耳壳收集外界的声波到达中耳的耳膜产生震动,经由三块小骨连接前庭窗传入内耳,其中由于耳壳的内凹形状,外耳道的长度和宽度.. 等等生理的构造,会对不同频率产生共振升压的效果,尤其是 2~5Khz 的频率,会在这个过程中被放大。人耳听觉频率的范围,大约是 20~20KHz,音量范围则是 130dB SPL,大于 130dB 会产生痛苦的感觉,小于 0dB 则会被当成是静音。如上所述,人耳对 2~5KHz 的频率最敏感,越往高频感觉越不敏锐,音量要超过一定的界限以上查能被我们人耳察觉,这个最低可以听闻的界限,叫做 ATH(absolute threshold of hearing)。内耳的耳蜗有许多绒毛细胞,分别会对不同的频率产生反应,将基底膜淋巴液的波动转换成神经的电流讯号,传达给大脑。也就是说耳蜗的作用就像一个频谱分析仪,把声波转换成不同频率的讯号,每一个特定位置的绒毛细胞会受特定频率的刺激,但是当基底膜传导波动时其邻近周围的绒毛细胞也会受到刺激。这也就是说如果有一个频率的音量很大,在它附近同时有一个比较弱的频率的话,比较弱的频率的声音就会被比较强的声音给遮蔽掉,我们人耳没有办法分办出有另一个比较弱的频率的声音存在。这个遮蔽的作用叫 frquency masking。另外从基底膜受到声音震动到达稳定状态,还有声音结束后完全停止,中间都需要一段时间。所以如果有一个很大声的声音出现,在这个声音开始之前,到这个声音结束之后,有一段时间我们是听不到其他声音的,这种遮蔽效应,我们称为 temporal masking,之前的叫 pre-masking,之后的叫 post-masking。
前面提到耳蜗就像一部频谱分析仪,或者说像一个 band pass filter,会把声音分成许多不同的次频带,每个频带里都有一个中心频率,越往两边遮蔽的效果就越弱,在同一个频带里面的频率会互相影响,我们对他们的感知特性也十分的接近,这种人耳知觉特性的频带,我们称为 critical band。critical band 的宽度并不是都相等的,低频的部分比较窄,高频的部分则比较宽,总共分成 26 个 critical band。
除了人耳的生理结构特性以外,大脑的作用也占了一个很重要的角色。我们都知道音高是由基音决定,而音色是由泛音决定,我们很惊讶的发现,人类的大脑会自动补上基音,即使这个基音并不存在。譬如说电话的频宽只有 300~3200Hz,但是当我们听一个基音在 120Hz 的男性讲电话的时候,我们还是可以听出他的正确的音高,不会把男生听成女生。大脑是如何运用复杂的计算去重建这个不存在的基音,我们目前尚无法得知。
经过长期的实验和观察,我们可将人耳的听觉特性定性,建立一个人耳的听觉模型,叫做 psychoacoustic model。有了这些对人耳知觉特性的了解,我们就可以根据这些理论来压缩音讯资料,把我们听不到的声音去掉。
说是去掉,实际上是怎么做的呢?
要将无限的连续的类比讯号转变为有限的离散的数位资料,中间必须经过取样和量化的手续。譬如说现在量化的位阶只有 0~8 九个数字,每一个位阶的间隔大小是一格,对一个 4.9 的讯号作量化,得到的数字是 5,和原来 4.9 相差 0.1,这个误差叫做量化噪音。假设我们把量化的位阶减少到 5 个,分别等于原来 0~8 的 0, 2, 4, 6, 8 这几个数字,位阶的间隔大小扩大变成二格,此时再对 4.9 量化,量化的结果是 4,误差扩大到 0.9,也就是说量化的位阶越少,量化的间隔就越大,量化噪音也就越大。
我们做一个实验,把 16bit 的声波档转为 8bit,当场丢掉一半的资讯,档案也就小了一半,最简单的失真压缩不过我们观察频谱发现,减少量化的 bit 数产生的量化噪音,会造成全频带都水平上升一定杂讯,你如果听这个 8bit 的声波档,会发现背景充满沙沙沙的噪音,这就是因为量化误差产生的量化噪音。
那我们会想,这样全频带都减少一定的 bit 数太没有效率,为什么不把他分成好几个频带(critical band),再根据人耳的心理声学模型的遮蔽效应,对不同频带分配不同的 bit 数,让各个频带产生的量化噪音低于遮蔽效应的曲线以下,这样这些产生的量化噪音我们就听不到,对知觉来说等于是无失真压缩,这样岂不更好?
所以我们就把压缩的工作分成两个部分,一个部分将原来的 PCM data 经过 band pass filter 分成好几个 subband 次频带,另一个部分就是心理声学模型,分析频谱,找出遮蔽效应的曲线,然后根据这个曲线,对每个 subband 分别量化,决定分配的 bit 数,让产生的量化噪讯低于遮蔽效应的曲线,使量化的失真不会被人耳听到,这样就大功告成了
然后接下来要说的就是这个最复杂的心理声学模型是怎么工作的.... ^^;
怎么讲一讲变成这麼长 ^^;;
都还没进入主题...
我是要解释什么是 scale factor,这个牵扯到量化的过程,还有 short block 和 long block,这个牵扯到心理声学模型的判断和 MDCT window 大小的转换,主要目的是解决 pre-echo 的问题,结果越讲越多... ><
看的人就忍耐一下吧... -_-;;;
前面说到心理声学模型是如何工作的。ISO MPEG1 Audio 提供了两个心理声学模型,分别是 psychoacoustic model 1 和 2,model 2 比 model 1 要来得复杂,但是判断的效果较好。两个声学模型可以用在任何一个 layer,layer 1~3(MPEG1 layer 3 = MP3)。不过我们通常是将 model 1 用在 MP1 和 MP2,model 2 用在 MP3。不过当然也有例外,譬如说有一个特殊版本的 toolame(压 MP1, MP2 最好的 encoder)就是改用 model 2 的心理声学模型而不用 model 1。
MPEG1 Audio 压缩的时候一边是用一个 polyphase filter bank,将 PCM data 分成好几个"等宽的" subband 等待进一步量化压缩,一边是 psychoacoustic model,使用 512(MP1)或 1024(MP2/MP3)point(取 512/1024 个 sample 计算,或者说 window size=512/1024)的 FFT 转换,将 PCM data 转换到频率域,进行频谱分析。之所以另外使用 FFT 来分析,是因为 FFT 有比较好的频率分辨率,计算各个频率的遮蔽效应时会比较精确。然后 psychoacoustic model 会将频率按照 critical band(人耳听觉特性的频带)分为好几组,计算各个 critical band 的遮蔽曲线。在计算遮蔽曲线时,第一件要做的工作是区分哪些频率的声音是 tone,哪些频率的声音是 noise。为什么要这麼区分呢?因为根据实验发现这两种声音的遮蔽能力不一样,noise 具有比 tone 更强的遮蔽效应。这边会提到两个名词,一个是 TMN(Tone Mask Noise),tone 遮蔽 noise 的能力,单位是 dB,比较弱,另一个是 NMT(Noise Mask Tone),noise 遮蔽 tone 的能力,比较强。这两个名词很眼熟吗?MP+/MPC 就有提供让使用者修改这两个参数的设定。调降这两个参数,会减低 tone 和 noise 的遮蔽能力,整个遮蔽曲线会往下降,可以容忍的量化噪音就比较低,量化噪音必须减少,分配的 bit 数就必须增加,所以 MP+/MPC 调低这两个参数,bitrate 会往上窜升,但是量化杂讯也会随之减少。
在判断哪些声音是 tone,哪些声音是 noise,model 1 和 model 2 采用不同的方法。model 1 是寻找区域范围内,音量最大的频率,把这个频率当作 tone,因为 tone 通常是一定的区域范围内音量最大的。其他剩下的部分就当成是 noise,加起来以一个单一的频率代表。
model 2 的作法则不是去区分 tone 和 non-tone(noise),而是给每个频率一个 tone index,由 0~1,index 数字越大,代表这个频率越像 tone,根据这个 index 的比例大小,分别计算他们的遮蔽影响力,这样是不是更精确呢。那要怎么判断某个频率有多像 tone 呢? model 2 是用 predict 的方法。predict 的意思是以现在的状态,去预测下一个状态是什么。在这里 model 2 会储存过去的两个分析过的 window 频谱,根据频谱的变化,来判断哪些频率有多像 tone。因为 tone 的声音会具有可预测性,前后的变化会有高度的关联性,不会随机的杂乱跳动。根据前后的频谱变化,model 2 更可以准确的分办出 tone 和 noise。
找出 tone 和 noise 以后,接着把不重要没有意义的 tone/noise 去掉,譬如说两个 tone 靠近,一强一弱,或是低于 ATH 绝对听觉极限以下的 tone/noise,都可以把他去掉。然后计算剩下来的 tone/noise 的遮蔽效应,求出每个 critical band 的遮蔽曲线,最后在合并这些曲线,找出全体的遮蔽曲线。
实际上 psychoacoustic model 会计算一个数值,然后把这个数值传给量化阶段的程式,让量化阶段的程式知道这个频带可以允许的量化噪音是多少,该分配多少的 bit 数。这个传给量化程式的参数叫做 SMR(Signal to Mask Ratio)。
很眼熟的名词对不对
SMR=SNR-NMR
MP+/MPC/Lame 可以让你自行设定 minimum SMR 的底线是多少。
前面提过,MPEG1 Audio 在分成好几个 subband 准备做量化的时候,用的是"等宽"的 filter bank,这和我们人耳特性的 critical band 不同,由下图可以看出,低频的部分一个 subband,包含了好几个 critical band。到了高频的时候,好几个 subband 包含在一个 critical band 里面。这样心理声学模型计算出来的各个 critical band 的 SMR 要怎么给呢?
model 1 是取 subband 涵盖的范围中,最小的 SMR。这麼做在低频的时候,会将好几个 critical band 的 SMR 取其最小的一个给 subband,因为 subband 包含了好几个 critical band,如果用这几个 critical band 中最大的 SMR,将会有部分频率的遮蔽效应会估计错误,所以为了妥协,只好取最小的。高频的时候则是好几个 subband 共用一个 SMR。model 1 有一个致命伤,就是高频的时候,前面我们说过 model 1 每个 critical band 的 noise 是以一个总和集中的频率代表,现在这个 critical band 横跨好几个 subband,以这个中央代表的 noise 频率计算出来的 SMR,就无法适用在每个 subband 里面。(距离中央越远的就越不正确)
model 2 低频的时候取最小的 SMR,和 model 1 一样,高频的时候则是取 critical band 好几个 SMR 的平均值给 subband。model 2 不用集中式的 noise,而是用 tone index 的方式来计算 tone 和 noise 的遮蔽效应,所以在高频的时候会比 model 1 精确。
好了,心理声学模型不能再讲下去了,头晕了... @_@
图... 有机会再补 ^^;
终于进入主题了:MDCT 和 Quantization(量化)。
前面提到我们将 PCM data 分成好几个 subband 等待心理声学模型的判断,做进一步的量化压缩,这种压缩法我们叫做 subband coding。这个 filter 我们用的是 polyphase filter bank,将 PCM data 分成 32 个等宽的 subband。这个 ployphase filter bank 有几个缺点:
1. 它是有失真的 filter,也就是说,还没有做会失真的量化步骤,经过 filtering 以后的 subsample 立刻将它还原回 PCM data,结果就已经和原来不一样了。不过这个失真很小(小于 0.07dB)所以对品质不会有太大的伤害。
2. 它是等宽的频带,不符合人耳听觉特性的 critical band,对后续量化阶段的处理不利
3. 它的截止点平缓,所以当输入频率很靠近截止点的时候,相邻的两个 subband 会发生 aliasing(或者说 overlap,.....请看图...有机会再补....-_-;;)
MP1 一个 frame 384 个 sample,MP2 和 MP3 用 1152 个 sample,而且 MP3 会将 polyphase filter bank 切出来的 32 个 subband 的 sample,再用 MDCT 转换,进一步划分成更细的频带,提高对频率的分辨率。这个将原本资料转换到另一个空间之后再进行压缩的方法,我们称为 transform coding。因为MP3 混合了 subband filterbank 和 MDCT,所以我们把 MP3 的这个 filtering 的过程称为 Hybird Filterbank。
MDCT 之后,可以运用 butterfly 的计算,消除 polyphase filter bank 产生的 aliasing。
不过成也 MDCT 败也 MDCT,经过这个 MDCT 转换之后,资料会完全丧失时间的资讯。什么是丧失时间资讯?我们回头来说 FFT。
做 FFT 计算的时候,window size 越大(取进来计算的 sample 越多),对频率的分解能越强,频率的计算越精确。但是这些 PCM data 的 sample 是照时间排列的,对 44.1KHz 的 PCM 一次取 32768 个 sample 进来计算,如果不用 overlap,则你的频率分辨率(ie. spectral line resolution)是 1.346Hz,而时间分辨率只有 1sec * 32768/44100 = 743.04msec,你看不到小于 735.61msec 的频率变化的过程。频率分辨率和时间分辨率两个量无法同时求得精确的值,时间越精确(取进来计算的 sample 越少),频率解析就越差,频率越精确(取进来计算的 sample 越多),时间解析就越差。
MP3 经由 polyphase filter bank 之后转 MDCT 的过程如下
1. 1152 个 PCM sample 分成两个部分,各 576 个 sample,称为一个 granule。
2. 这 576 个 sample 送进 polyphase filter bank,输出 32 sample(按频率顺序)x 18 组(按时间排序)
3. 重排为 18 个 sample(按时间排序)x 32 组(按频率排序)
4. 每一组中的 18 个 sample 为时间顺序,加上前面一次转换的 18 个 sample,总共 36 个 sample 送进去做 MDCT 转换(所以 MDCT window 有 50% 的 overlap 重叠)
5. 转出来为 18 个 sepctral line(按频率排序)x 32 组(按频率排序)
好复杂吗? ^^;
总之 MDCT 转换完以后,时间资讯就不见了(每一个都是 spectral line,都是频率资讯,不过频率资讯更细了)。
丢掉时间资讯会有什么影响呢?
假设现在转换的这一块声音区块前面是很微弱的声音,到后面突然出现音量急遽升高的情形,譬如说鼓手突然开始打鼓,这种波形我们称为“attack”:突然拉起的波形。遇到这种情况心理声学模型会很笨的认为这个区块里面有很强的 masker,可以提供很高的遮蔽曲线,所以可以允许较大的量化失真,因此量化的步骤就会给比较少的 bit。MDCT 一次转换就是取 576 个 sample,这个 block 的长度,同时也就是时间的长度,所以一次死就死全部的 block,量化失真产生的 noise 会扩散到整个 block 的长度范围(也就是时间范围),所以前面声音很微弱的区段,也会发生这些量化噪音,想当然尔,原来微弱的音量根本无法遮蔽掉这些量化噪音,如果后面大音量区段的 pre-masking 前遮蔽曲线也不够遮蔽这些 noise,我们就会听到这些量化噪音了,那么心理声学模型也就破功了。
这种压缩瑕疵叫做 pre-echo。
这个道理类似 JPEG 图档的压缩瑕疵,JPEG 一次转换是拿 8x8 的区块去做 DCT 转换,遇到区块内包含锐利的边缘、线条(有很多的高频成分)的时候,经过 DCT 转换,高频的量化失真会扩散到整个 8x8 的像素区块,所以我们常常看到 JPEG 或 MPEG 档案画面上锐利线条的周围(譬如说文字的周围)会有那种斑斑点点,破碎的压缩瑕疵,这就是因为一次死死全部,整个区块都完蛋的关系。
MP+/MPC 因为不用 transform coding,不做 MDCT 转换,所以他的 pre-echo 的问题比较小,观察 MPC 压出来的波形,几乎看不到 pre-echo 的压缩瑕疵。
一个相反的例子,MPEG2 AAC/MPEG4 AAC 完全不用 subband filterbank,直接做 MDCT 转换(前置有一个 gain-control),不过 AAC 有一套对付 pre-echo 的 tool(或者叫 mole)叫做 TNS,可以用来解决 pre-echo 的问题。
这个,越扯越远,写不完了 ><
解决 pre-echo 的方法下次继续....