zoukankan      html  css  js  c++  java
  • [转]通俗的讲解压缩音频格式

    日常生活中我们能接触到很多声音信息。而记录这些信息的方法也是多种多样。最常见的就是磁带、CD、MD、MP3。当然,还有其他比如LP、DVD-A等。这里主要介绍最为常见的MP3、MD和比较有对比性的APE格式。这三种格式都是数码音频格式,且都是压缩格式。要了解这些数码格式之前,我们还要了解什么是数码信号。

      “数码/数字”这两个词如今使用是越来越普遍了。感觉只要什么东西和这两个词粘上关系就属于“高科技”了。其实,所谓数码最终形式只不过是“开关”而已。当然,和家里电源的开关不是很一样。数码是一种“电子开关”。它最终只会包含两种信息,一个是“0”一个是“1”。之所以能表现出复杂的各种形式,是因为“电子开关”的速度相当惊人,每秒的“开关”(运算)速度是极快的,这种速度远远高于人能够分辨的程度。

      理解了数码信号接下来理解一下“音频数码信号”。同样的道理,数码音频信号的最终形式仍然是“0/1”构成的。它们可能是任何排列和组合,比如“0001110101”或者“11100001010”。当然,组合不同,其效果当然就不一样。看到这里,应该有朋友注意到了。如果声音是用“00101010”这样的形式来记录,那最终形态岂不就是一个“点”,也就是一个简单的“开关”过程而已。声音是连续不断的,怎么能用“点”来记录呢?这样我们听到的声音不就应该是一段一段的吗?道理不难理解。回家打开日光灯,你能发现日光灯在闪吗?不能?其实日光灯的确是在不停闪烁的。看过动画片吧,那些都是用一格一格的静止的图画连接成的。一格一格的图画我们也可以简单的理解为一个一个的“点”。人对自然界的感觉是有极限的,视觉和听觉都是如此。动画片能产生连贯的动作是因为这些“点”在人的视觉未能及时做出反映的情况下让人产生的一种错觉,除了机器,人是无法把这些“点”区分开的。声音也是如此。如果声音闪动的频率很快,人也是无法分辨的。另外,由于声音在进行“数字转换模拟信号”(D/A转换)的时候,解码芯片已经将这些“点”用连贯的串在一起了,所以我们听到的是非常连贯的声音了。

      要理解“数码音频”当然必不可少还要理解两个东西!

      1.速率。

      什么是速率?当然我不能直接给你解释说“速率就是比特率”。呵呵,对于这样的解释还不如不说的好。大家在用一些软件播放声音文件的时候应该注意到了一个小小的信息。比如“128Kbps”、“1411Kbps”...也有朋友知道了,通常情况下,”Kbps”前面的数字越大,声音效果越好。比如CD就是“1411Kbps"。那么,到底这些数字代表什么呢?简单的说来就是在每秒钟时间内,有多少数据被转换成声音。之所以CD的音质比MP3好(别拿D版的CD来说哦),是因为CD在每一秒内的信息比MP3多。比如,128Kbps的MP3文件相比1411Kbps的CD文件,其每秒被转换的数据量,MP3比CD少了近12倍。同样的一首歌曲,CD听来就要细腻得多(当然人群中有这么一群号称“木耳”的人可能觉得效果是一样的)MP3用较少的数据表达相同的内容,其详细程度当然就不如CD了。这里可以把CD理解为一篇美文,而MP3就相当于段落总结。两者都能让人理解其主要内容,不过要想了解文章的美妙只看段落总结是不行的。至于MP3的原理后面会说到。

      2.采样率。

      采样率也是很常见的一个词语。具体表现形式为“XXHZ”,其中“XX”是一个具体数字。比如“44100HZ”,“32000HZ”等。采样率这个词从字面意思来理解应该不难。之前已经说过了,数码音频文件是由很多个“点”来组成的,那么采样率其实就是采集这些“点”的一个“数量”标准。很显然“44100HZ”比“32000HZ”的采样率要高,所以单位时间内(1秒)搜集到的点就更多。单位时间的点越多声音的信息也就越完善,当然也就更接近于真实。所以,如果在保证速率相同的条件下,“44100HZ”的文件要好于“32000HZ”。(不是绝对的,原因后面会说到)

      了解到以上“知识”之后,我们就可以进一步来了解各种音频格式了。这里,我不能把每一种格式都一一介绍。只取了几个比较有代表性的格式来说明一下。其中CD只是作为对比格式粗略说明。

      CDDA(Compact Disc Digital Audio):

      不要变了一个称呼就不知道这是什么格式了,这就是大家最熟悉的“CD”格式的全称。说到CD,种类有不少。最为常见的有“HDCD”(微软)“SACD”(索尼)“XRCD”(JVC),不要被这些字母搞晕了。总的说来就是“CD”,只是运用的技术不同。有些需要专用的解码器才能达到最优质的效果,这里就不多说到底这些格式之间有哪些差异了。

      CD是大家最容易获取到的音质最好的音频文件之一。通常CD采样都是“44100HZ”而速率是“1411Kbps”。由于CD的精度已经非常高,所以,我们称这种格式为“无损音频格式”。CD是由荷兰“飞利普”和日本“索尼”共同制定的格式。

      MP3(MPEG <Moving Picrure Experts Group> Audio Layer-3):

      没想到MP3的名字有这么长吧~~

      1987年德国Fraunhofer研究院研制成功了一种有损压缩音频格式,1989年取得了专利。MP3刚出来并没有引起人们的注意,在当初年代,MP3可以说是毫无竞争力。因为它本身会对音频文件造成过多的损坏,所以,当时是不能被人们所接受的。那个时候的MP3技术也不成熟,听MP3还不如买盘磁带听着舒服。直到后来网络的发展,让人们意识到MP3这种格式的方便性。于是MP3由于互联网的关系迅速在全世界蔓延开了。如今已经是家喻户晓的东西了。

      早期的MP3都是固定速率编码。后来格式进一步改善,之后出现可变比特率。这种方式相比单纯的固码率要先进得多。它能对声音进行进一步的分析。能将声音中某些需要加强的地方采用高速率编码,而某些声音简单一些的地方使用低速率编码。这样一来,MP3文件在播放的时候速率就不固定了。这种做法既能节约有效空间又能达到更优秀的音质。

      MP3压缩原理运用到了“心理声学数据储存”。简单的说,就是丢弃一些人耳不易或者不能察觉到的信号。比如删除超高频和超低频的声音,保留主要的一些部分。也利用到了人耳的“屏蔽效应”(简单的说就是当两个声音同时响起的时候,如果其中一个声音音量大过另外一个声音很多,那么另外一个声音就会完全被第一个声音所掩盖,人就听不到另外一个声音了。比如在极其吵闹的“的吧”,由于音响声音非常大,所以用平时的声音说话根本就听不见。另外,低频的声音比较容易屏蔽高频声音,而高频声音却难屏蔽低频),所以,MP3文件能在比CD小很多的情况下仍然有不错的音质。

    ATRAC:

      MD大家应该多少都有一些了解,MD所用格式就是ATRAC。1991年,索尼开发出了ATRAC技术。同时采用了MD碟来储存这种格式。从时间上来看,MP3的发展时间要比ATRAC要早,不过早期MP3并没有得到人们的重视,所以发展较晚。

      MD被索尼定义为“随时随地享受音乐”。最初,索尼大势宣传ATRAC属于“无损压缩”。不过,索尼的这一种做法遭到了无数“金耳朵”的指责。有相当一部分人能够听出ATRAC与CD之间的差异。如今,索尼意识到群众的耳朵是“金子”做的,于是,取消掉了这种说法。

      ATRAC格式演变到现在已经进化了N次了。如今这种格式可以说已经比较成熟了。它的目的是在压缩声音文件的同时尽量取得更优质的音质效果。其原理和MP3类似,不过算法比MP3更先进。所以ATRAC在相同速率的情况下(默认44100HZ采样率)音质优于MP3。ATRAC格式属于固定速率编码。

    APE:

      APE是Monkey's Audio提供的一种无损压缩格式。这个才是真正意义上的无损格式。

      APE文件需要专用的播放软件或者安装有APE格式插件的播放器才能播放。对于APE的历史我了解的不多。不过相信在之后的时间里,这种格式能被更多人所使用,其相关数据也会被更多人所了解。

      APE格式不同于MP3和ATRAC。它的目的并不是在压缩的前提下尽量保证音质,而是绝对的完整的保证音质。APE格式的压缩比不大,如果采用最高压缩则可以减小到原文件的3倍-4倍不等。同样大的两个声音文件APE可能压缩出来的大小不一样。很简单的道理,APE并不是采用的固定速率进行压缩的。在回放APE文件的时候能很清楚的看到文件的速率是在不停的变化着的。由此可见,可变速率的编码方式在保证音质方面是非常实用的技术。

    有损与有损、有损与无损之间的差异:

      之前说到了ATRAC的音质在相同速率的条件下要好于MP3。为什么相同的速率相同的采样率音质却不相同呢?这个当然和文件本身的计算方式有直接的关系。MP3在很多人眼中有点“暴力”倾向。因为MP3在压缩过程中往往遗漏掉很多细节,抓不住重点部分,对音质影响很关键。

      大家知道,采样率是用来采集点数量的标准。同是44100HZ的CD文件其速率是1411Kbps,而MP3可以减少到128Kbps(MP3标准格式)甚至更少。也就是说,MP3要在“点”的数量相同的条件下,用更少的信息去记录这些点的关系。MP3为了减小文件体积,不得不从1411Kbps的信息当中删除1000多的信息量,而被删除的这1000多的信息量当中却记录着N个“点”。MP3删除了这些信息也就意味着删除了这些信息当中的N个“点”。那么,MP3在回放的时候怎么还能以44100HZ的采样率播放呢?这里运用到的一个技术就是插值算法。

      举一个简单的例子,假如声音信号里面有1、2、3、4、5、6、7、8、9、0这10个点。如果MP3删除了有关2、3、5、6、8、9的数据,在回放的时候,为了保证还有这么多的“点”,就要插入一些数据来填充这些漏洞。所以,经过MP3解码之后得到的数据可能就是1、②、③、4、⑤、⑥、7、⑧、⑨、0。虽然“点”的数量还原了,不过丢失的点却是“算”不回来的,只有靠相近的一些“点”来填补空缺。这样的做法虽然保证了“点”的数量却改变了“点”的一些性质,所以从根本上就对音质起了破坏作用。

      之前提到ATRAC格式在相同速率的条件下其效果要优于MP3。原理在于ATRAC格式比MP3格式更“聪明”一些。虽然压缩的基本原理都差不多,不过ATRAC格式能更准确的抓住重要的信息。ATRAC格式能更清楚的分辨哪些“点”是更重要的“点”,是需要保留的信息。

      同样举例说明一下。假如有10个点:1、2、3、4、5、6、7、8、9、0 其中2、4、6、8为相对重要的“点”。MP3结果则还是同上面一样直接丢失2、3、5、6、8、9而得到1、②、③、4、⑤、⑥、7、⑧、⑨、0 的形式。ATRAC可能就完全不同,ATRAC能更多的抓住这些“点”。ATRAC还原出来的点就可能是①、2、③、④、5、⑥、⑦、8、⑨、0 由此可见ATRAC格式在删除信息的时候能够更多的保留一些重要信息。因此声音的还原度比MP3高。实际听感也是如此,如今132Kbps的ATRAC格式就已经不比256Kbps的MP3格式音质差,甚至还更好。(音质问题属于主观因素,这里只做参考)

      APE是一种比较优秀的压缩模式。它采用的技术与MP3和ATRAC完全不同。APE是真正意义上能做到“无损”的格式。要说到APE的算法那就有点复杂了,非理科人材可能根本看不懂。如何去理解呢?其实这里有一个现成的例子!人人电脑上都应该有的一个软件“WIN RAR”,对于这个软件大家并不陌生。这是一个文件压缩软件。它的目的是让文件通过压缩之后体积减小,而在解压缩的时候能100%还原原文件信息。当然,声音文件也可以通过“WIN RAR”来压缩。但是“WIN RAR”对声音的压缩比并不高。APE压缩方式类似于“WIN RAR”,不同的是APE是专用做对声音压缩的格式。它能比“WIN RAR”更快而且压缩比更高。

      做一个简单的实验。

      同样的一个WAV(无损格式)文件,其所占容量是47.4MB。用“WIN RAR”最高压缩后文件是25.5MB,而使用APE最高压缩之后是15.6MB。虽然压缩比不一样,但是解压缩之后所还原的WAV文件却是和原文件一模一样。(利用2进制对比)这是保证音质的关键。

      APE压缩就好比家里的棉被又松又大不好收拾。叠好了装进塑料带然后抽空里面的空气可以减小很大一部分体积。而且绝对不会损坏棉被本身,还原后还是和之前一样。MP3和ATRAC就好比把棉被里面的棉絮抽出来扔掉了,体积可以缩小到更小的程度。但是要用的时候由于扔掉的棉絮找不回来就只能随便找些棉絮塞进去。棉被还是棉被,表面上看好象还是那样,但是根本早已改变。

      那么是否高速率(采样率相同)的声音文件就一定比低速率的要好呢?

      这一点是不确定的!速率只代表信息的多少并不能代表信息的正确性。就好比上面所说ATRAC格式和MP3格式的差异一样。另外再举一个简单的例子。把一段64Kbps的MP3刻录成CD,速率一下子就从64Kbps升到了1411Kbps。速率的确上去了,不过音质却只有64Kbps。原理很简单。64Kbps的MP3文件已经把很多信息丢掉了,即便速率上去了但是弥补进来的信息就犹如上面所说的填棉絮的方法,和之前的信息已经完全不同。这也是如今D版CD音质下降的主要原因之一。如今D版CD有相当多一部分都是直接用MP3转过来的。音质效果=MP3,这种D版是一种极其让人讨厌的东西,所以我有好久都没买D版碟了。

      有关音频文件的压缩损耗也会造成速率相同音质不同的现象。

      有损压缩格式会在压缩的时候丢失部分信息,所以应该尽量减少压缩次数。举一个例子:

      CD转MP3分两种转法。1.先把CD转成320Kbps,然后转成256Kbps,最后转成128Kbps。2.直接把CD转为128Kbps。如果你可以做这样一个实验,那通过第一种方式得到的文件其效果甚至不如96Kbps的文件。所以在压缩文件的时候尽量做到一次到位,多次压缩会使得数据丢失更加严重。

      看完以上内容相信大家应该对数码音频格式有一定的了解。对于文章中如果出现的不正确的比喻或者观点还请各位提出来。

  • 相关阅读:
    LeetCode 461. Hamming Distance
    LeetCode 442. Find All Duplicates in an Array
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode Find the Difference
    LeetCode 415. Add Strings
    LeetCode 445. Add Two Numbers II
    LeetCode 438. Find All Anagrams in a String
    LeetCode 463. Island Perimeter
    LeetCode 362. Design Hit Counter
    LeetCode 359. Logger Rate Limiter
  • 原文地址:https://www.cnblogs.com/rywx/p/2090662.html
Copyright © 2011-2022 走看看