an

------------------------------------------------------------------------------------------------------------------------------------------

 

本博客马上就要更新了
-------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------
音乐格式新宠儿MPC
ahaonet 发表于 - 2008-4-22 19:32:00
前言:  

  MusePaCk是由德国人Andree Buschmann开发的一种完全免费的高品质音频格式。在其问世之前,Lame MP3是公认音质最好的有损压缩方案,追求音质的人对它趋之若鹜。但现在这个桂冠无疑该让给MPC了,在中高码率下,MPC可以做到比MP3更好音质。在高码率下,MPC的高频要比MP3细腻不少,可以在节省大量空间的前提下获得最佳音质的音乐欣赏,是目前最适合用于音乐欣赏的有损编码。

  希望通过本文的介绍,能有更多的人加入MPC的行列,尤其是那些追求音质的朋友。其实如果你没有MP3随身听,只是在自己的电脑上制作、播放音乐,完全可以弃MP3而转投MPC,因为后者在编码速度和音质上的表现绝对会让你彻底忘记MP3的!

一、 知识篇

1、MPC有哪些优点?

  MusePaCk(.mpc)原先又被称为MPEGPlus(.mp+),是由德国人Andree Buschmann开发的一种完全免费的高品质音频格式(见图1)。在其问世之前,Lame MP3是公认音质最好的有损压缩方案,追求音质的人对它趋之若鹜。但现在这个桂冠无疑该让给MPC了,因为无论是频谱分析,还是对比试听,160Kbps码率以上的MPC表现绝对要好过MP3(指相同码率的两者而言),也好过任何其他的有损压缩格式。不仅仅是音质,MPC还有编码速度快的优点,经MPC现任负责人Frank Klemm改良后的1.14版编码器,在我的Duron 650上编码速度可以达到实时播放的5.5倍,比慢工出细活的LAME要快得多!


图1

2、了解一些MPC的编码特点

  MPC的编码方案是在MP2的基础上改进而来。它同样采用子带编码技术,但相比MP2,它所采用的心理声学模型要优秀得多,并加入了像ANS(Adaptive Noise Shaping)、CVD(ClearVoiceDetection)等技术,甚至改变了压缩时所用的Huffman(哈夫曼)编码,以得到更大的压缩率。另外,MPC采用的是可变码率进行编码。毫无疑问,可变码率的编码效率要高于固定码率,因为前者可以合理地分配数据量,在信号复杂(微弱)时提高(降低)比特率,在得到满意的效果又能确保不错的压缩率。为了保证高音质,MPC的瞬间最大码率甚至高达1.32Mbps,这已经快接近CD的1.41Mbps了!

注:
(1)什么是MP2?

  MPEG-1音频标准定义了三种不同的压缩层次,即MPEG Audio Layer-1、MPEG Audio Layer-2、MPEG Audio Layer-3,分别简称MP1、MP2和MP3。层次越高压缩性能越好,但是编码的开销和译码的复杂度也随之增加。MP2均衡了性能和复杂度,它能在192~256Kbps的速率下实现CD级的音质。

(2)什么是子带编码(Subband Coding)?

  子带编码是音频压缩方法的一种(其他还有时域编码、变换编码等)。它将输入的音频信号的频带分成若干个连续的频段,每个频带称为子带,然后针对各个子带中的音频信号采用不同的编码方案以降低码率。子带编码的算法复杂度较低,这使得MPC可以有很快的压缩速度,但也带来了它在低码率下表现不佳的先天缺陷。所以请不要把MPC用在低码率(像64Kbps、96Kbps)的场合,Ogg和MP3Pro才是这方面的高手!

3、MPC能取代MP3吗?

  MP3自问世以来一直是压缩音频的霸主,欲革其命的“同志”前赴后继(像VQF、RM、WMA、MP3Pro等),但都无一成功,MPC的前景又如何呢?目前看来想让MPC取代MP3几乎是不可能的。尽管有音质上的优势,但作为个人研发的音频格式,MPC缺乏软硬件支持和市场推广,知名度较低。像Ogg、AAC都有随身听大厂的支持和推广,而目前据悉只有国内一家OEM公司研制出了支持MPC的随身听,该产品内置128MB闪存并支持SM卡扩充,信噪比高达100dB,近期应该就能上市。

  眼下使用MPC的人还不多,主要是一些对音质要求较高的人。希望经过本文的介绍,能有更多的人加入MPC的行列,尤其是那些追求音质的朋友。其实如果你没有MP3随身听,只是在自己的电脑上制作、播放音乐,完全可以弃MP3而转投MPC,因为后者在编码速度和音质上的表现绝对会让你彻底忘记MP3的!

二、测试篇

  如同我们熟悉的Lame编码器,MPC的编码器mppenc.exe也是一个DOS命令行程序,其基本参数格式为:mppenc [--可选参数] <输入文件> <输出文件>。mppenc.exe的可选参数很多,但我们只要了解“quality x”和“xlevel”两个就足够了。“quality x”直接控制了MPC文件的压缩质量,“x”的值可以是0~10之间的任意数值,不过我们一般都取整数值,常用的有5、6、7等。数值越高得到的音质越好,但生成的MPC文件也越大,“x”的默认值是5。而“xlevel”参数则用来防止编码器出现内部削波(Clipping)错误,导致压缩品质的严重恶化。

注:

(1)什么是削波(Clipping)?

  削波是一种形式的波形失真。当源信号的波形振幅超过程序所考虑的采样峰值时,超过的部分会被削除,这就被称为削波。

  对于关键的x值,我们该选择哪个呢?为了让大家对不同quality值的编码效果有个直观上的认识,我进行了下面的一个测试:将一首安立奎(Enrique)演唱的《la chica de ayer》用不同的quality值压缩,再用Cool Edit Pro打开生成的MPC文件查看频谱。这样的做法虽然有些片面,因为对压缩质量的评价还应该结合实际的试听才对,但至少我们可以了解不同的x值对信号的保留程度。同时我也用Lame的三个常用参数压缩了MP3文件来进行对比。之所以采用这首歌是因为其信号非常饱满,尤其是高频信号,最高频率已经超过了20Khz,而有损压缩编码对高频信号的损失向来比较严重。

  实验的结果如下:

格式 使用参数 文件大小 压缩率 码率 耗时 频谱
WAV 41,094KB 1.41Mbps 1
MPC --quality10
--xlevel
9,894KB 24.1% 339.8Kbps 45.4秒 2
--quality 9 --xlevel 8,928KB 21.7% 306.6Kbps 44.6秒 3
--quality 8 --xlevel 8,070KB 19.6% 277.1Kbps 43.5秒 4
--quality 7 --xlevel 7.148KB 17.4% 245.5Kbps 43.2秒 5
--quality 6 --xlevel 6,308KB 15.4% 216.6Kbps 45.0秒 6
--quality 5 --xlevel 5,463KB 13.3% 187.6Kbps 41.9秒 7
MP3 --alt-preset insane 9,322KB 22.7% 320Kbps 1分23秒 8
--alt-preset extreme 7,271KB 17.7% 250Kbps 2分11秒 9
alt-preset standard
6,799KB 16.5% 231Kbps 2分33秒 10



 显而易见,MPC的压缩效果相当令人满意。相近码率的MPC文件高频信号保留得明显比MP3好(对比频谱5和9及频谱3和8),曾经代表最高压缩质量的Lame --alt-preset insane一下子就被quality 9的MPC给比下去了,而quality 10的MPC几乎就是原版CD拷贝!可以看到Lame对高频处理完全是一刀切,尽管它所切除的高频都在18Khz以上,人耳不易察觉,但是从编码质量上来说显然不及MPC优秀。至于x的选择,在一般的电脑音频设备上,quality 5压制的MPC已经能让人比较满意了;如果你的声卡和音箱比较优秀(比如笔者所使用的创新PCI 128和惠威M20W),可以采用quality 7,这个参数的压缩率和编码效果都很不错;至于更高的x值,可以推荐给那些发烧友吧!

三、制作篇

1、如何快速实现CD→MPC?

  看到这里,热心的读者肯定迫不及待要自己动手制作MPC了:)抓取CD压制MPC,最简便的方法莫过于用EAC(Exact Audio Copy)外挂MPC编码器,实现CD→WAV→MPC的一条龙工作。(直接从WAV文件制作MPC可选用Musedrop工具。)运行EAC后,先进行一下设置:

  点击“EAC→压缩选项”进入“压缩选项”窗口后切换到“外部压缩程序”选项卡(如图2),做如下修改:选中“使用外部压缩程序”;“参数使用方案”中选择“User Defined Encoder”;在“使用扩展名”中敲入“.mpc”;在“用于压缩程序所在路径”中选择mppenc.exe所在路径;在“追加的命令行选项”中填入“--quality 7 --xlevel --artist "%a" --title "%t" --album "%g" --year "%y" --track "%n" --genre "%m" %s”;“比特率”的数值没有作用,不用管它;点中“压缩后删除WAV文件”和“使用CRC校验”,取消“添加ID3标签”。另外再切换到“Offset”选项卡,取消掉“编码和解码时使用偏移校正”。


图2

 :“追加的命令行选项”中当然还可以把“quality 7”改成其他数值,比如“quality 5”、“quality 6”,具体视你对音质的要求和CD源盘的品质而定;取消“添加ID3标签”是因为MPC有自己专门开发的APE V2标签,而中间的“--artist "%a"”格式的几个参数就是用来往APE V2标签里添加信息的;末尾的“%s”用来指定源文件,绝对不能少。   接下来就可以制作MPC了。放入一张CD,如果连上了Internet的话,可以先试一下点击工具栏上的“freedb”图标,EAC会访问的freedb到储存了CD信息的freedb,查找有没有这张CD的信息,填好CD的标签、艺术家和曲名(如图3),点左侧的MP3图标就行了!EAC会自动完成一系列工作:抓轨生成WAV→调用mppenc.exe编码MPC→删除WAV,我们只要等待片刻而已!


图3

2、让制作的MPC更加完美  
 喜欢收集音乐的朋友肯定有这样的体会,将四处弄来的MP3放在一起播放时音量会忽大忽小,需要不停地调整音量旋钮才行,很是麻烦!这都是由于CD录制的音量并不统一。为了解决这一问题,网上的音频爱好者们提出了ReplayGain(重放增益)这一概念。所谓ReplayGain,就是在音频文件头部写入一些数值,标注出该音频文件的音量与标准音量(83dB)的差值,从而在回放时通过播放器加以调节。不同于EAC(如图4)、CDEX等软件里有着类似作用的标准化(normalization)选项,ReplayGain不仅对音质是无损的,而且可以随时去除。


图4

给MPC文件加上ReplayGain是非常容易。将一张CD压缩成MPC并保存在同一目录下,然后再拷贝MPC的解码程序mppdec.exe和ReplayGain执行程序replaygain.exe到该目录下。进入DOS界面并转到该目录,敲入“replaygain --auto *.mpc”命令,回车后ReplayGain便开始工作了。它先逐个计算每首歌的音量与标准音量的差值,再计算整张CD的平均音量与标准音量的差值(如图5),并将这两个值写入MPC文件头。前一个差值我们称为“Radio”(广播),若在播放时采用这个值会使所有的歌曲的音量都一样大;后一个称为“Audiophile”(高保真)的差值则会保留同一张CD中各首歌曲的音量差异,而将CD与CD之间的音量差异消除。具体采用哪个值要播放器中设置,一般我们使用Audiophile, 这样不同CD的歌曲放在一起播放就不会出现音量变化很大的问题了。另外,如果你嫌手动输入命令麻烦的话,可以试试MPC的前台程序MPC Batch Encoder(如图6),它可以很方便的帮你自动执行ReplayGain程序。


图5


图6

3、 MPC与MP3能相互转换吗?  

几乎大部分的音频格式都能相互转换,包括MPC和MP3,但是并不推荐这样做!因为两种有损压缩格式之间的转换意味着要丢失更多的信号,带来更大的失真。但有时却有将MPC转换成MP3的必要,特别是像我这种拿到CD碟都一股脑压成MPC的人。如果突然需要一个MP3版本(比如要转到MP3随身听上)又没有原碟时,就只能走转换这条路了。幸好,由于MPC的高音质,将其转换成MP3还是可行的,尤其是高码率的MPC。经过我的试验,发现如果是quality 6级别以上参数压缩的MPC文件,转换成的MP3效果还是不错的,无论从频谱分析还是实际试听来看,差距都不大。(请看频谱1,这是以quality 6压缩的MPC再按--alt-preset standard转换成了MP3,对比一下频谱2,你能看出明显的差别吗?)


频谱1


频谱2

要想方便地实现MPC->MP3的转换,你得用批量转换器MpxChange(如图7)。它已经自带了MPC解码器和Lame编码器,运行后只需将要转换的MPC文件拖到下面的列表框,再点击右下方的“Transcode”按钮就OK了!不过我推荐大家先在“Encoder Options”框单击鼠标右键,将Lame编码参数更改为“--alt-preset standard”,这样能保证比较理想的效果。如果你的MPC是用“quality 10”参数压制的话,你甚至可以尝试一下“--alt-preset extreme”。


图7

四、播放篇

1、那些软件可以播放MPC?

  直接就能播放MPC的软件非常稀少,据我所知只有FooBar2000和JetAudio 5。此外还有一些软件可以通过外加解码插件支持MPC,像Winamp和QCD Player。相信很多人都希望能在Winamp上播放MPC,因为这个软件几乎每台电脑上都有!OK,下文就来介绍如何在Winamp上播放MPC。

2、如何在Winamp上播放MPC?

  只要下载安装一下Winamp的MPC插件(注意你的Winamp版本,2.XX版和3.0对应的插件不同,这里以2.81版为例),就能用它来播放MPC了。不过为了得到满意的播放效果, 我们还得并对该插件进行一些设置。安装好插件后运行Winamp,按Ctrl+P进入“参数设置”(如图8)。选择MPC插件后按“配置”进入配置窗口(如图9),做以下三个部分的设置:


图8


图9

 ① EQ(均衡器)设置。“Equalizing by”(采用哪个均衡器)一定要选中“MusePack”,因为Winamp内置的EQ高频部分丢失严重(尤其是16kHz以上的高音)。“Dynamic range”(动态范围)决定了EQ所能调整的动态范围,选择±6db比较合适。

  ② ReplayGain(重放增益)设置。“Mode”下拉框中选择“ReplyGain album based”,这样插件就会按Audiophile的值来调整音量,不同CD间的音量差异得以解决。“HeadRoom”(头顶空间),用来避免声音的削波和过饱和,其数值表示了重放的最大音量可以比标准的83db大多少,在家庭听音环境下建议设为K-14,即最大音量为83+14=97db。

  ③ Dither(抖动)设置。“Dither output”一定要选中,它在一些时候可以提升我们的音质。

注:什么是Dither(抖动)?

  声音在从高比特向低比特转化时会造成量化失真,比如很多CD在制作时都是采用的24Bit,而我们回放时的采样大小只有16Bit。使用了Dither技术后,会在音频信号量化前中加入一些人耳不容易察觉的随机扰动的噪音,它能将0Hz-12KHz频率内的量化失真大幅减少,而把大部分的失真带到了12KHz以上的高频区域。由于人耳对高频是比较不敏感的,所以就达到了提高音质的作用。

转载:http://www.ogg.cn/info/view-info-9.html

  • 标签:音乐 
  • 发表评论:
    博客托管于 梦想博客 Copyright 2006-2009. All rights reserved.