我始终认为,对一个初学者来说,IT界的技术风潮是不可以追赶的,而且也没有能力去追赶。我时常看 见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心。
而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑。C++就象当年的ASP一样,"忽如一夜春风来,千树万树梨花开",结果许多学校的信息学院成了"Web 学院"。
96,97级的不少大学生都去做Web了。当然我没有任何歧视某一行业的意识。我只是觉得如 果他们把追赶这些时髦技术的时间多花一点在基础的课程上应该是可以走得更远的。
几个误区
初学者对C++风潮的追赶其实也只是学习过程中经常遇到的几个误区之一。我将用一些实际的例子来说明这 些现象,你可以按部就班的看看自己是不是属于其中的一种或者几种:
认为计算机技术等于编程技术:
有些人即使没有这个想法,在潜意识中也有这样的冲动。让我奇怪的是,许多信息学院的学生也有这样的念头。认为计算机专业就是编程专业,与编程无关的,或者不太相关的课程他统统都不管,极端的学生只要书上没带"编程"两个字他就不看。
其实编程只是计算机技术应用过程中一种复杂性最低的劳动,这就是为什么IT业最底层的人是程序员( CODER)。计算机技术包括了多媒体,计算机网络,人工智能,模式识别,管理信息系统等等这些方面。
编程工作只是在这些具体技术在理论研究或者工程实践的过程中表达算法的过程。编程的人不一定对计算机技术的了解就一定很高。而一个有趣的现象是,不少大师级的计算机技术研究者是不懂编程的。网上的炒作和现实中良好的工作待遇把编程这种劳动神秘化了。其实每一个程序员心里都明白,自己这些东西,学的时候并不比其它专业难,所以自然也不会高档到哪里去。
咬文嚼字的孔乙己作风:
我见过一本女生的《计算机网络原理》教材,这个女生象小学生一样在书上划满了横杠杠,笔记做得满满的,打印出来一定比教材还厚。我不明白的是,象计算机网络原理这样的课程有必要做笔记?我们的应试教育的确害了不少学生,在上《原理》这一类课程的时候许多学生象学《马列原理》一样逐字背诵记忆。
这乃是我见过的最愚蠢的行为。所谓《原理》,即是需要掌握它为什么这样做,学习why,而不是how(怎样做)。极端认真的学生背下以太网的网线最大长度,数据帧的长度,每个字段的意义,IP报头的格式等等,但是忘了路由的原则,忘了TCP/IP协议设计的宗旨。总之许多人花了大量的时间把书背得滚瓜烂熟却等于什么也没学。
在学习编程的时候这些学生也是这样,他们确切的记得C++语法的各个细节。看完了C++教程后看《Thinking in C++》(确实是好书),《Inside C++》,《C++ reference》,this C++,thatC++……,然后是网上各种各样的关于C++语法的奇闻逸事,然后发现自己又忘了C++的一些语法,最后回头继续恶补…。有个师弟就跟我说:"C++ 太难了,学了这里忘了那里,学了继承忘了模板。"我的回答道:"你不去学就容易了"。我并没有教坏他,只是告诉他,死抠C++的语法就和孔已己炫耀茴香豆的茴字有几种写法一样毫无意义。你根本不需要对的C++语法太关心,动手编程就是了,有不记得的地方一查MSDN就立马搞定。我有个结论就是,实际的开发过程中对程序语法的了解是最微不足道的知识。这是为什么我在为同学用Basic(我以前从没有学过它)写一个小程序的时候,只花了半个小时看了看语法,然后再用半个小时完成了程序,而一个小时后我又完全忘记了Basic 的所有关键字。
不顾基础,盲目追赶时髦技术:
终于点到题目上来了。大多数的人都希望自己的东西能够马上跑起来,变成钱。这种想法对一个已经进入职业领域的程序员或者项目经理来说是合理的,而且IT技术进步是如此的快,不跟进就是失业。但是对于初学者来说(尤其是时间充裕的大中专在校生),这种想法是另人费解的。一个并未进入到行业竞争中来的初学者最大的资本便是他有足够的时间沉下心来学习基础性的东西,学习why 而不是how。时髦的技术往往容易掌握,而且越来越容易掌握,这是商业利益的驱使,为了最大化的降低软件开发的成本。但在IT领域内的现实就是这样,越容易掌握的东西,学习的人越多,而且淘汰得越快。每一次新的技术出来,都有许多初学者跟进,这些初学者由于缺乏必要的基础而使得自己在跟进的过程中花费大量的时间,而等他学会了,这种技术也快淘汰了。基础的课程,比方数据结构,操作系统原理等等虽然不能让你立马就实现一个linux(这是许多人嘲笑理论课程无用的原因),但它们能够显著的减少你在学习新技术时学习曲线的坡度。而且对于许多关键的技术(比方Win32 SDK 程序的设计,DDK的编程)来说甚至是不可或缺的。
一个活生生的例子是我和我的一个同学,在大一时我还找不到开机按纽,他已经会写些简单的汇编程序了。我把大二的所有时间花在了汇编,计算机体系结构,数据结构,操作系统原理等等这些课程的学习上,而他则开始学习HTML和VB,并追赶ASP的潮流。大三的时候我开始学习Windows 操作系统原理,学习SDK编程,时间是漫长的,这时我才能够用VC开发出象模象样的应用程序。我曾一度因为同学的程序已经能够运行而自己还在学习如何创建对话框而懊恼不已,但临到毕业才发现自己的选择是何等的正确。和我谈判的公司开出的薪水是他的两倍还多。下面有一个不很恰当的比方:假设学习VB编程需要4个月,学习基础课程和VC的程序设计需要1年。那么如果你先学VB,再来学习后者,时间不会减少,还是1年,而反过来,如果先学习后者,再来学VB,也许你只需要1个星期就能学得非常熟练。
几个重要的基础课程
如果你是学生,或者如果你有充足的时间。我建议你仔细的掌握下面的知识。我的建议是针对那些希望在IT技术上有所成就的初学者。同时我还列出了一些书目,这些书应该都还可以在书店买到。说实在的,我在读其他人的文章时最大的心愿就是希望作者列出一个书单。
大学英语-不要觉得好笑。我极力推荐这门课程是因为没有专业文档的阅读能力是不可想象的。中文的翻译往往在猴年马月才会出来,而现在的许多出版社干脆就直接把E文印刷上去。学习的方法是强迫自己看原版的教材,开始会看不懂,用多了自然熟练。吃得苦下得狠心绝对是任何行业都需要的品质。
计算机体系结构和汇编语言-关于体系结构的书遍地都是,而且也大同小异,倒是汇编有一本非常好的书。《80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)。你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。
计算机操作系统原理-我们的开发总是在特定的操作系统上进行,如果不是,只有一种可能:你在自己实现一个操作系统。无论如何,操作系统原理是必读的。这就象我们为一个芯片制作外围设备时,芯片基本的工作时序是必需了解的。这一类书也很多,我没有发现哪一本书非常出众。只是觉得在看完了这些书后如果有空就应该看看《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。关于学习它的必要性,ZDNET上的另一篇文章已经有过论述。
数据结构和算法-这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时)。很多人喜欢买C++版的,但我觉得没有必要。C++的语法让算法实现过程变得复杂多了,而且许多老师喜欢用模块这一东西让算法变得更复杂。倒是在学完了C版的书以后再来浏览一下C++的版的书是最好的。
软件工程-这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华)。不要花太多的时间去记条条框框,看不懂就跳过去。在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获。
Windows 程序设计-《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本《Inside Windows 2000》也最好放到这本书的后面读。
在这本书中,没有C++,没有GUI,没有控件。有的就是如何用原始的C语言来完成Windows 程序设计。在 学完了它以后,你才会发现VC其实是很容易学的。千万不要在没有看完这本书以前提前学习VC,你最好碰都不要碰。我知道的许多名校甚至都已经用它作为教材进行授课。可见其重要。
上面的几门课程我认为是必学的重要课程(如果你想做Windows 程序员)。
对于其它的课程有这样简单的选择方法:如果你是计算机系的,请学好你所有的专业基础课。如果不是,请参照计算机系的课程表。如果你发现自己看一本书时无法看下去了,请翻到书的最后,看看它的参考文献,找到它们并学习它们,再回头看这本书。如果一本书的书名中带有"原理"两个字,你一定不要去记忆它其中的细节,你应该以一天至少50页的速度掌握其要领。尽可能多的在计算机上实践一种理论或者算法。
你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书。
日三省乎己
每天读的书太多,容易让人迷失方向。一定要在每天晚上想想自己学了些什么,还有些什么相关的东西需要掌握,自己对什么最感兴趣,在一本书上花的时间太长还是不够等等。同时也应该多想想未来最有可能出现的应用,这样能够让你不是追赶技术潮流而是引领技术潮流。同时,努力使用现在已经掌握的技术和理论去制作具有一定新意的东西。坚持这样做能够让你真正成为一个软件"研发者"而不仅仅是一个CODER。
把最多的时间花在学习上
这是对初学者最后的忠告。把每个星期玩SC或者CS的时间压缩到最少,不玩它们是最好的。同时,如果你的ASP技术已经能够来钱,甚至有公司请你兼职的话,这就证明你的天份能够保证你在努力的学习之后取得更好的收益,你应该去做更复杂的东西。眼光放长远一些,这无论是对谁都是适用的。
相信你已经能够决定是否学习C#或者什么时候去学它了
本文链接:http://www.blueidea.com/tech/program/2008/5505.asp
(作者不详)
自从PC支持多媒体以来,陆陆续续地出现了许多音频格式。这些格式既有流行的也有不那么流行的,关于它们的来龙去脉,本文向你一一道来。
主流
目前的主流音频格式其实不少。不同的格式有自己的用途,比如大家都应该很熟悉的MP3格式就是用于聆听用途的。下面我们逐一介绍:
存在便是永恒 - WAV
WAV是Microsoft Windows本身提供的音频格式,由于Windows本身的影响力,这个格式已经成为了事实上的通用音频格式。不客气地说,它实际上是Apple电脑的 AIFF格式的克隆。通常我们使用WAV格式都是用来保存一些没有压缩的音频,但实际上WAV格式的设计是非常灵活(非常复杂)的,该格式本身与任何媒体数据都不冲突,换句话说,只要有软件支持,你甚至可以在WAV格式里面存放图像。之所以能这样,是因为WAV文件里面存放的每一块数据都有自己独立的标识,通过这些标识可以告诉用户究竟这是什么数据。在WINDOWS平台上通过ACM(Audio Compression Manager)结构及相应的驱动程序(在这里通常称为CODEC,编码/解码器),可以在WAV文件中存放超过20种的压缩格式,比如ADPCM、 GSM、CCITT G.711、G.723等等,当然也包括MP3格式。

图表 - 使用音频编辑软件WaveCN(http://www.wavecn.com)列出Windows安装了的ACM驱动信息
虽然WAV文件可以存放压缩音频甚至mp3,但由于它本身的结构注定了它的用途是存放音频数据并用作进一步的处理,而不是像mp3那样用于聆听。目前所有的音频播放软件和编辑软件都支持这一格式,并将该格式作为默认文件保存格式之一。这些软件包括:Sound Forge, Cool Edit Pro, WaveLab等等。由于WAV的支持实在是太广泛了,可以说,即使Windows退出历史舞台,WAV格式也不会消亡。
老当益壮 – mp3 
第二个要提到的就是改变了世界的mp3了。这个比喻相信大家都会同意。mp3是Fraunhofer-IIS 研究所(http://www.iis.fhg.de/)的研究成果。mp3是第一个实用的有损音频压缩编码。在mp3出现之前,一般的音频编码即使以有损方式进行压缩能达到4:1的压缩比例已经非常不错了。但是,mp3可以实现12:1的压缩比例,这使得mp3迅速地流行起来。mp3之所以能够达到如此高的压缩比例同时又能保持相当不错的音质是因为利用了知觉音频编码技术,也就是利用了人耳的特性,削减音乐中人耳听不到的成分,同时尝试尽可能地维持原来的声音质量。

图表 - 人耳等响度曲线图,mp3的技术基础。
衡量mp3文件的压缩比例通常使用比特率来表示。这个术语的英文是bps: bit per second,表示每1秒钟的音频可以用多少个二进制比特来表示。通常比特率越高,压缩文件就越大,但音乐中获得保留的成分就越多,音质就越好。由于比特率与文件大小音质的关系,所以后来又出现了vbr(Variant Bitrate 可变比特率)方式编码的mp3,这种编码方式的特点是可以根据编码的内容动态地选择合适的比特率,因此编码的结果是在保证了音质的同时又照顾了文件的大小,结果大受欢迎。其实mp3的编码标准本来就支持这种压缩方式,但是第一个将此功能实现的反而是一个第三方工具:曾经非常有名的Xing Technology公司(http://www.xingtech.com,当年很多电脑上看VCD听mp3就靠这个公司的Xing Player)推出的Xing Encoder。
由于mp3是世界上第一个有损压缩的编码方案,所以可以说所有的播放软件都支持它,否则就根本没有生命力。在制作方面,也曾经产生了许多第三方的编码工具。不过随着后来Fraunhofer-IIS宣布对编码器征收版税之后很多都消失了。目前属于开放源代码并且免费的编码器是LAME (Lame Ain't Mp3 Encoder,http://lame.sourceforge.net)。这个工具是公认的压缩音质最好的mp3压缩工具。另外,几乎所有的音频编辑工具都支持打开和保存mp3文件。最近,Fraunhofer-IIS对之前不收取版权费的mp3解码器也征收了版权费。此举大有Fraunhofer-IIS意识到mp3已经在没落,趁还能收到钱最后捞一把的意思。应该说,到了现在,MP3确实显现出疲态了。许多新一代的编码技术都已经能在相同的比特率下提供比MP3优越得多的音质。特别是音乐发烧友对mp3的音质更是嗤之以鼻。不过由于mp3的影响力实在是太大了,支持mp3的软件多如牛毛,更别提众多支持mp3的硬件播放器,如MPMAN,DiscMan, CD/VCD/DVD机等等。一句话,它依然是世界上最流行的音频压缩技术,所以要它真正退出舞台相信还有好一段时间。

图表 - Lame的其中一个前端:RazorLame(http://www.dors.de/razorlame)
老树发新花 - mp3PRO 
为了使mp3能在未来仍然保持生命力,Fraunhofer-IIS研究所连同Coding Technologies 公司(http://www.codingtechnologies.com)还有法国的Thomson multimedia公司(http://www.thomson.net)共同推出了mp3PRO。这种格式与之前的mp3相比最大的特点是能在低达64kbps的比特率下仍然能提供近似CD的音质(mp3是128K)。该技术称为SBR(Spectral Band Replication),它在原来mp3技术的基础上专门针对原来mp3技术中损失了的音频细节进行独立编码处理并捆绑在原来的mp3数据上,在播放的时候通过再合成而达到良好的音质效果。

图表 - SBR技术在音频编码/解码过程中的应用
mp3PRO格式与mp3是兼容的,所以它的文件类型也是mp3。mp3PRO播放器可以支持播放 mp3PRO或者mp3编码的文件;普通的mp3播放器也可以支持播放mp3PRO编码的文件,但只能播放出mp3的音质。但是,虽然mp3PRO是一种优秀的技术,由于技术专利费用的问题以及其他技术提供商比如Microsoft的竞争,mp3PRO并没有得到很大的流行。大家可以从Coding Technologies的网站下载Demo播放/压缩工具和Winamp的播放插件。目前也有许多专业音频编辑软件比如Cool Edit Pro 2.0支持mp3PRO格式,但播放器除了刚才说的和Music Match Juke Box就基本没有了。最关键的是由于Microsoft的媒体播放机不支持,使得mp3PRO失去了流行的机会。前段时间Coding Technologies推出了最新的MPEG-4 aacPlus,通过将SBR技术应用在AAC(Advanced Audio Codec)技术中而获得更卓越的音质。Coding Technologies并表示SBR将会成为MPEG-4的核心技术。但缺乏支持的技术到底能走多远,谁也不清楚。

图表 - THOMSON mp3PRO 播放器
网络流媒体鼻祖 - Real Media 
互联网大行其道之后,Real Media 出现了。这种文件格式几乎成了网络流媒体的代名词。RA、RMA这两个文件类型就是Real Media里面向音频方面的。它是由Real Networks公司(http://www.realnetworks.com)发明的,特点是可以在非常低的带宽下(低达28.8kbps)提供足够好的音质让用户能在线聆听。这一特点在互联网的早期简直是广大网虫的福音。也就是因为出现了Real Media之后,相关的应用比如网络广播,网上教学,网上点播等等才浮出水面,形成了一个新的行业。
网络流媒体的道理其实非常简单,简单说就是将原来连续不断的音频分割成一个一个带有顺序标记的小数据包,将这些小数据包通过网络进行传递,在接收的时候再将这些数据包重新按顺序组织起来播放。如果网络质量太差,有些数据包收不到或者延缓了到达,它就跳过这些数据包不播放,以保证用户在聆听的内容是基本连续的。就是这么简单的道理,促成了网络上的又一个传奇。
由于Real Media是从极差的网络环境下发展过来的,所以Real Media的音质并不怎样,包括在高比特率的时候,甚至差于mp3。特别是有相当长的一段时间Real Networks公司只顾着往Real Media里面加入各种各样的新特性比如广告插播什么的,而忽略了随着网络速度的提升和宽带网的普及,用户对质量的要求也不断提高。后来Real Networks通过与SONY公司合作,利用SONY的ATRAC技术(http://www.minidisc.org/,也就是MD的压缩技术)实现高比特率的高保真压缩,但这些举措始终都带给用户一个姗姗来迟的感觉。由于Real Media的用途是在线聆听,并不适于编辑,所以相应的处理软件并不多。一些主流软件可以支持Real Media的读/写,可以实现直接剪辑的软件是Real Networks自己提供的捆绑在Real Media Encoder编码器中的Real Media Editor。但功能非常有限。这一点与现在的Windows Media相比是两个世界。

图表 - Real One Player, 最新的Real Media播放器
霸气十足 - Windows Media 
任何事情都少不了Microsoft的份。在意识到网络流媒体之于互联网的重要性之后,Microsoft立马就推出了Windows Media与Real Media相抗衡,同时开始对其他音频压缩技术说不:一律不提供直接支持。到了Windows XP版本还把原来提供的mp3压缩功能都拿掉了。
Windows Media (http://www.microsoft.com/windows/windowsmedia)也是一种网络流媒体技术,本质上跟Real Media是相同的。但Real Media是有限开放的技术,比如rtsp(Real Time Stream Protocol实时流协议)这样的网络传输协议是提交到网络工作组RFC网络协议集的其中一个(编号RFC2326),而Windows Media则没有公开任何技术细节,据称是为了更好地进行版权保护,因此要完全封闭,还创造出一种名为mms(Multi-Media Stream多媒体流)的传输协议。所有这些事情综合起来可以看出Microsoft意图一统江湖的野心。
最初版本的Windows Media并没有得到什么好评,特别在音质方面更被网络上那些“金耳朵”的网友所不齿。不过在更新了几个版本之后,目前最新的Windows Media 9技术携带着大量的新特性并在Windows Media Player的配合下表现已经不可同日而语。特别在音频方面,Microsoft是唯一一个能提供全部种类音频压缩技术(无失真、有失真、语音)的解决方案,大有囊括一切的势头。这也是微软的一贯特色:虽然我的东西质量不是最好的,但肯定是最方便,集成度最高的。目前Windows Media还是处于推广期,播放器和编码器可以免费下载,服务器端捆绑在Windows服务器版中,不另外收费。这些手段正在不断提升其市场占有率。而且由于Microsoft的影响力,支持Windows Media的软件非常多。虽然它也是用于聆听用途,不能编辑,但几乎所有的Windows平台的音频编辑工具都对它提供了读/写支持,至于第三方播放器更是无一例外了,连Real Player都支持其播放。通过Microsoft 自己推出的Windows Media File Editor可以实现简单的直接剪辑。最近,Microsoft还推出了Windows XP Media Center版本,通过在Windows XP中捆绑Windows Media 9技术以及相关娱乐媒体软件来加强Windows作为家庭娱乐中心的作用。如果Microsoft继续保持其在操作系统特别是桌面操作系统的垄断地位的话,Windows Media的未来肯定是一片光辉。

图表 - 最新的Windows Media Player 9,带有大量的网络特性
电脑与电子乐器的桥梁 – MIDI 



MIDI技术本来不是为了电脑发明的。该技术最初应用在电子乐器上用来记录乐手的弹奏,以便以后重播。不过随着在电脑里面引入了支持MIDI合成的声音卡之后MIDI才正式地成为了一种音频格式。有很多人都误以为MIDI是用来记谱的,这是错的。MIDI的内容除了乐谱之外还记录了每个音符的弹奏方法,所以有些MIDI文件播放起来不好听,而某些则有良好的效果。MIDI本身也有两个版本,General MIDI和General MIDI 2。在MIDI上还衍生了许多第三方的非标准技术,比如非常著名的:X-MIDI(或者叫XG),这是由日本YAMAHA公司(http://www.yamaha.com)发明的,在原有的MIDI具有128种乐器的基础上扩充到了512种,并增加了更多的演奏控制,配合YAMAHA自己的波表播放软件或支持X-MIDI的硬件可以还原出非常动听和接近真实乐器效果的音乐。另外就是为了弥补MIDI中通过声音合成得到的乐器声音始终比不上真实乐器声音这一缺点而由 General MIDI Association(MIDI规范的国际组织,http://www.midi.org)推出的DLS(Downloadable Sound)技术,该技术通过给MIDI文件附带上真实乐器的录音(采样)而使MIDI文件能营造出接近真实乐器效果的声音,不过该技术的主要问题是带上乐器采样之后的MIDI文件实在是太大了,通常情况下都有4兆字节以上(这样的大小用户当然是去找mp3了),影响了该技术的普及。
由于MIDI具有的优点和特殊性,因此可以相信这是一种在相当长的时间里都会继续存在的技术。普通的MIDI 文件许多播放器都支持,但要达到好的效果就必须安装软波表,比如曾经很出名的WinGroove、Roland Virtual Sound Canvas和YAMAHA S-YXG Player。随着Microsoft与Roland(http://www.roland.com)合作在DirectX里面增加了 DirectMusic之后软波表就变成了Windows系统的标准配置了。需要注意的是对于X-MIDI格式来说必须使用YAMAHA自己推出的播放器才能得到良好的播放效果。比如当年曾经卖得很火的使用YAMAHA YMF724/740做芯片的声音卡便带有X-MIDI的播放器S-YXG100。

图表 - Roland Virtual SoundCanvas软音源界面

图表 - YAMAHA S-YXG50软音源播放器界面,怎么看都觉得比Roland的好看。

图表 - YAMAHA S-YXG50 XGPlayer软音源播放器界面,这个版本支持的播放控制更多。
如果要对MIDI文件进行编辑,可以使用的比较出名的软件是Cake Walk Pro和Sonar(http://www.cakewalk.com); X-MIDI则要使用YAMAHA XGWorks。另外还有一些曲谱软件,比如Sibelius(http://www.sibelius.com)。不过这些软件都是非常昂贵的。国产的相关软件都有一些,而且支持简谱,比如TT作曲家(http://www.centrmus.com)。
开放、免费 - Ogg Vorbis 
开放源代码的Ogg Vorbis(http://www.xiph.org 或 http://www.vorbis.com),作为开放源码向专利技术下的第一封战书出现在世人的面前。在经历了一些变故之后,Ogg Vorbis终于在2002年7月释出了1.0版本。由于开放源码的东西向来都缺少枪手为其摇旗呐喊,所以国内并不是有很多的人了解Ogg Vorbis。Ogg Vorbis 是一种音频压缩格式,类似于MP3等现有的通过有损压缩算法进行音频压缩的音乐格式。但有一点不同的是,Ogg Vorbis格式是完全免费、开放源码且没有专利限制的。Vorbis 是这种音频压缩机制的名字,而Ogg则是一个计划的名字,该计划意图设计一个完全开放源码的多媒体系统。开放源代码能为用户在经济上带来收益,这一点很多人都知道了,但不能忘记的是Ogg Vorbis的技术也不是盖的。Ogg Vorbis文件的扩展名是.OGG。这种文件的设计格式是非常灵活的。它的最大特点是在文件格式已经固定下来后还能对音质进行明显的调节和新算法。现在创建的OGG文件可以在未来的任何播放器上播放,因此,这种文件格式可以不断地进行大小和音质的改良,而不影响旧有的编码器或播放器。在压缩技术上, Ogg Vorbis的最主要特点是使用了VBR(可变比特率)和ABR(平均比特率)方式进行编码。与MP3的CBR(固定比特率)相比可以达到更好的音质。 Ogg Vorbis其他技术特性还包括:支持类似于MP3的ID3信息,但比MP3要灵活而又完整得多,实际上可以填写随意多的信息。Vorbis还具有比特率缩放功能,可以不用重新编码便可调节文件的比特率。Vorbis文件可以被分成小块并以样本粒度(granularity,专业术语,指数据可以被分割的最小尺寸)进行编辑;Vorbis支持多通道(大于2)音频流并使用了独创性的处理技术;Vorbis文件可以以逻辑方式相连接等。
在经济利益的推动下,Ogg Vorbis从一诞生就获得了各方的关注,许多著名音频软件,包括象出品Sound Forge的Sonic Foundry(http://www.sonicfoundry.com)这样的工业巨头也在软件中增加了对Ogg Vorbis的支持,而对于本来就是免费的或者开放源码的音频相关软件比如WinAMP(http://www.winamp.com)、CDEX(http://cdex.sourceforge.net)等等更是第一时间在软件中加入了Ogg Vorbis的支持。可以这样说,Ogg Vorbis在业界的支持是非常广泛的。简单的举个例子,著名的游戏闪点行动(Operation Flash Point)就是使用Ogg Vorbis作为游戏所有声音和音乐的保存格式的。
当然,软件上的支持对于一种音乐格式来说还是一厢情愿的事情。Ogg Vorbis是否能够真正流行起来,关键还是要靠广大用户和音乐制作人。可喜的是,目前在网络上Ogg Vorbis格式的应用已经日渐增多,而且已经开始向其他方面发展,比如游戏、多媒体应用的配乐等。目前Ogg Vorbis取得的最大成就是获得著名的BBC广播公司的认可,使用Ogg Vorbis音频流在线播放节目。另外,在硬件方面也出现了支持播放OGG格式的播放器。
Ogg Vorbis几乎得到所有的音频编辑器的支持。另外,作为一般的编码使用,可以在http://www.vorbis.com/download_win.psp网址可以下载到OggDrop/OggDrop XPd。播放可以使用WinAMP播放。现在Ogg Vorbis已经是WinAMP标准配置之一。

图表 - OggDrop XPd, Ogg Vorbis的编码器
生不逢时 – VQF 
VQF实际指的是TwinVQ(Transform-domain Weighted INterleave Vector Quantization)技术,是日本Nippon Telegraph and Telephone集团属下的NTT Human Interface Laboratories(http://sound.splab.ecl.ntt.co.jp)开发的一种音频压缩技术。该技术受到著名的YAMAHA公司的支持。VQF或TVQ是其文件的文件类型名。VQF其实是一种比较先进的技术,通常认为 96kbps VQF 与 128kbps MP3 质量相同。下图是MP3与VQF的一个质量对比示意图:
MP3 128Kbps | | Original 1411Kpbs | | VQF 96Kbps |

| | 
| | 
|
虽然说质量相同,但由于VQF使用的是不同的技术,从这个图上大家应该可以感受到两者的差别。
VQF在YAMAHA公司的大力推动下也曾有相当的市场份额。不过时至今日,VQF已经在逐步淡出舞台。原因是多方面的。首先,VQF 是专门开发来用于低比特率情况的,对于录音室这种需要高保真的环境就无能为力了。换句话说,VQF仅适合一般播放用途。这使得VQF的应用范围相对狭窄。其次,VQF没有得到操作系统平台的直接支持,就像mp3PRO那样,Windows自始至终都不支持直接播放VQF文件,使得VQF得不到大范围的推广。再次,VQF是一种封闭的专利技术,导致市场所有与VQF相关的编码器、播放器无一不是YAMAHA和NTT的产物,这一点极大地妨碍了VQF的发展。最著名的一个例子就是一个曾经致力于推广VQF技术的网站:http://www.vqf.com宣布由于VQF的衰落而停止更新,等待高比特率 (192kbps或以上)的VQF格式出台后再作打算。虽然YAMAHA公司已经成功地将VQF提交到了MPEG组织,并成为MPEG-4标准的一部分,但这些努力也是无济于事的。因为MPEG-4本来就是一个面向对象的大包容的平台,与MPEG-1和MPEG-2这样专门针对某种具体的技术而制定的标准已经不是一回事了。
要播放VQF软件,可以通过给WinAMP增加支持插件来实现,也可以使用YAMAHA自己的SoundVQ Player播放器。编码软件可以使用YAMAHA SoundVQ Encoder或者NTT TwinVQ Encoder。后者的优化比较好,速度比前者快一些。

图表 - TwinVQ 编码器,非常简单的界面。
非主流
最热门的非主流 - MOD 
Module(简称mod)是数码音乐文件,由一组samples(乐器的声音采样)、曲谱和时序信息组成,告诉一个mod播放器何时以何种音高去演奏在某条音轨的某个样本,附带演奏一些效果比如颤音等。因而mod与纯正的象WAV或AU那样的没有包含时序信息的样本文件不同,与象MIDI文件那样的不携带任何附加样本/乐器的文件也不同(与现在支持DLS技术的MIDI倒是有点相似,不过mod的体积要比 DLS MIDI小得多。)。mod起源于Amiga计算机,当时的文件扩展名是MOD,为了区分具体的类型和整个结构体系,通常使用mod来表示整个 Module格式体系。由于该格式起源很早,因此曾经非常流行,因为mod提供了一种具有可以接受的音质水平而又非常廉价的制作音乐的方法。而且这种文件的音质效果对于当时的电脑硬件水平来说效果比MIDI要好,文件的体积也不大,好处是轻而易见的。随着高质量的音响硬件的使用,新一代的mod的声音质量甚至可以提升到接近专业设备的水平。这使得mod成为一种介乎于象WAV或VOC那样的纯正样本数据文件和象General MIDI那样的纯正时序信息文件之间的混合体,成为一种比较灵活的音频格式。
但是,mod的最大缺点是具体的格式变化太多。由于原本的MOD格式只支持4条音轨,而且MOD格式并没有版权限制,导致后来涌现了一大堆在MOD的基础上改进而来的格式,比如xm这种支持高达32条音轨128种采样的格式。但由于mod格式的不统一,最终结果就是这种格式在商业领域没有多大的作为。Windows平台上曾经有一个非常好的播放器名为MOD4WIN,后来也停止了开发。目前支持播放Mod的播放器主要有WinAMP,比较新的制作软件则有Sk@le Tracker(http://www.skale.org),是一个免费的软件。大家如果对这种格式产生兴趣的话可以到http://www.modplug.com 看看,这里是最齐全的关于mod的站点。

图表 - 非常华丽的Sk@le Tracker,目前还是0.75Beta版本

图表 - 同样有着不错界面的MOD4WIN的最后版本,也是免费软件。
一个也不能少 - Monkey's audio 
Monkey's Audio(http://www.monkeysaudio.com)是一种无损压缩技术。他并不是由什么大公司发明的,完全是一个个人业余兴趣作品。为了使Monkey's Audio能有更好的发展,现在这个软件已经公开了源代码。
这种压缩格式的特点是无损压缩,也就是说对压缩数据进行还原之后得到的数据与原来的数据是完全相同的。该格式的特点尤其适合那些拥有一对“金耳朵”并且一直对mp3的音质耿耿于怀的音乐发烧友。后者有人会问,要无损压缩,我随便找个压缩软件比如WINRAR都可以达到不错的效果了,还要这种格式干嘛?所以这里要澄清一个误解:使用普通的压缩软件进行压缩无疑是可以得到不错的压缩效果,有时候甚至更优于使用Monkey's Audio,但是压缩软件生成的压缩包必须要先解压还原之后才能播放里面的内容,而Monkey's Audio这种无损压缩编码得到的文件可以直接使用播放器(比如WinAMP)进行播放。Monkey's Audio的压缩效果大约在2:1左右,也就是说压缩结果是原来的二分之一大小。一张CD大约需要330MB左右的空间存放,相比之下还是比较占空间的。由于这个原因,所以对音质要求不是太高的人通常都选择VBR方式的mp3而不是选择它。
与Monkey's Audio类似的编码格式还包括WavPack、RKAU、Shorten等等。由于相对不是那么出名,又或者在某些方面不够Monkey's Audio做得好,因此获得的关注程度就逊色很多。

图表 - Monkey's Audio的压缩/解压器界面。那个猴子图案挺有趣的。
苹果专用 - aiff

刚才我们在介绍WAV格式的时候已经提到过AIFF了。它是Apple苹果电脑(http://www.apple.com)上面的标准音频格式,属于QuickTime技术(http://www.apple.com/quicktime)的一部分。这一格式的特点就是格式本身与数据的意义无关,因此受到了Microsoft的青睐,并据此搞出来WAV格式。AIFF虽然是一种很优秀的文件格式,但由于它是苹果电脑上的格式,因此在PC平台上并没有得到很大的流行。不过由于Apple电脑多用于多媒体制作出版行业,因此几乎所有的音频编辑软件和播放软件都或多或少地支持AIFF格式。只要苹果电脑还在,AIFF就始终还占有一席之地。
由于AIFF的包容特性,所以它支持许多压缩技术。这里顺带说说的是在苹果平台上原生的流媒体压缩技术是 QDesign公司(http://www.qdesign.com)的QDMC,QDesign Music Codec。据官方资料介绍,QDesign Music Codec 2能在全带宽立体声的设置下将音频压缩为原来的百分之一大小。与其他纯粹基于知觉音频编码技术(mp3等)不同的是,QDesign Music Codec 2 使用了新的专利的算法技术,因此,可以在modem的速度上达到相当的音频质量。该技术最大支持128kbps。不过在笔者的实验结果看来,该技术的唯一过人之处就是在任何比特率下都能提供44khz立体声的输出。不过脱离了音质的输出又有什么意思呢?

图表 - Quick Time 6 的播放器,正在播放aiff格式的文件。
聊胜于无 – au 

au 是unix下一种常用的音频格式,起源于Sun 公司(http://www.sun.com)的 Solaris系统。这种格式本身也支持多种压缩方式,但文件结构的灵活性就比不上aiff和WAV。这种格式的最大问题是由于它本身所依附的平台不是面向广大消费者的,所以知道这东西的人并不多。但这种格式毕竟出现了很多年,所以许多播放器和音频编辑软件都提供了读/写支持。不过时至今日,在本人看来实在意义不大,因为这个文件格式对目前许多新出现的音频技术都无法提供支持,起不到类似于WAV和aiff那种通用性音频存储平台的作用。目前可能唯一必须使用au格式来保存音频文件的就是java平台。
曾经辉煌 – VOC 

当年创新公司(Creative, http://www.creative.com)的声音卡成了PC平台上的多媒体声音卡事实标准的时候,VOC格式也跟同着成为了DOS系统下面的音频文件格式标准。因为它是创新公司发明的音频文件格式。当然,现在已经很少见到了。由于该格式属于硬件公司的产品,因此不可避免地带有浓厚的硬件相关色彩。这一点随着Windows平台本身提供了标准的文件格式WAV之后就变成了明显的缺点。加上Windows平台不提供对VOC格式的直接支持,所以VOC格式很快便消失在人们的视线中。不过现在的很多播放器和音频编辑器都还是支持该格式的,道理就跟au一样:出来的早嘛!
记住你的声音 - vox 
这个格式比较特殊。Vox引申是voice的意思,表明了该格式专门面向语音音频。它是由Dialogic公司(现已被Intel公司收购)发明的,使用ADPCM压缩技术进行压缩,主要应用于语音通信方面。由于面向语音压缩,因此该技术专门针对低采样律进行优化。该格式仅支持单声道16位音频,并达到了4:1的压缩比(它将每个音频有损压缩为4个比特)。该格式最大的失败在于没有文件头,无法在音频文件中储存相关的信息。如果你忘记了当初是以什么采样频率录的音,那就是一场恶梦。这个文件格式最常见于一些利用互联网进行语音通信的软件,比如PC2Phone。主流音频编辑器一般都支持这个格式。
在介绍了这么多音频媒体格式之后,我们来看看下面的特点概括列表:
媒体格式 | 扩展名 | 相关公司或组织 | 主要优点 | 主要缺点 | 适用领域 |
WAV | wav | Microsoft | 可通过增加驱动程序而支持各种各样的编码技术。 | 不适于传播和用作聆听。支持的编码技术大部分只能在Windows平台下使用。 | 音频原始素材保存。 |
mp3(MPEG 音频) | mp3 (包括mp2 mp1 mpa等) | Fraunhofer-IIS | 在低至128kbps的比特率下提供接近CD音质的音频质量。广泛的支持。 | 出现得比较早,因此音质不是很好。 | 一般聆听和高保真聆听。 |
mp3PRO | mp3 | Fraunhofer-IIS CodingTechnologies Thomson Multimedia | 在低至64kbps的比特率下提供接近CD音质的音频质量。 | 专利费用较高,支持的软件和硬件不多。 | 一般聆听和高保真聆听。 |
RealMedia | ra, rma | RealNetworks | 在极低的比特率环境下提供可听的音频质量。 | 不适于除网络传播之外的用途。音质不是很好。 | 网络音频流传输。 |
Windows Media | wma, asf | Microsoft | 功能齐全,使用方便。同时支持无失真、有失真、语音压缩方式。 | 失真压缩方式下音质不高。必须在Windows平台下才能使用。 | 音频档案级别保存,一般聆听,网络音频流传输。 |
MIDI | MID MIDI RMI XMI 等 | MIDI Association | 音频数据为乐器的演奏控制,通常不带有音频采样。 | 没有波表硬件或软件配合时播放效果不佳。 | 与电子乐器的数据交互,乐曲创作等。 |
Ogg Vorbis | OGG | Xiph Foundation | 在低至64kbps的比特率下提供接近CD音质的音频质量。开放源代码,不需要支付使用许可费用。跨平台。 | 发展较慢。推广力度不足。 | 一般聆听和高保真聆听。 |
VQF | vqf tvq | NTT Human Interface Laboratories | 在低至96kbps的比特率下提供接近CD音质的音频质量。 | 相关软件太少。 | 一般聆听。 |
MOD(Module) | mod s3m it xm mtm ult 669 等 | Amiga和mod社区 | 音频数据由乐器采样和乐谱、演奏控制信息组成。 | 具体的文件格式太多影响推广和使用。 | 一般聆听。 |
Monkey's Audio | ape | Matthew T. Ashland | 无失真压缩。部分开放代码。 | 由于是个人作品,使用上存在一定风险。 | 高保真聆听和音频档案级别保存。 |
aiff | aiff | Apple | 可通过增加驱动程序而支持各种各样的编码技术 | 一般限于苹果电脑平台使用。 | 苹果电脑平台下音频原始素材保存。 |
au | au | Sun | Unix和Java平台下的标准文件格式。 | 支持的压缩技术太少且音频数据格式受文件格式本身局限。 | Unix和Java平台下音频原始素材保存。 |
voc | voc | Creative | 对于目前的音频技术来讲,该格式已经没有什么优点了。 | 与具体的硬件相结合因此没有延续性。 | 淘汰。 |
vox | vox | Dialogic | 面向语音的编码。 | 文件格式缺乏足够的信息,因此不适应作存档用途。技术比较早期。 | 淘汰。 |
当然,无论一种音频格式目前是否主流,在未来都有可能被新出现的更先进的技术取代。不过从目前的形势来看,音频技术已经发展到了一个成熟的、优胜劣汰的阶段。那些没有技术优势的音频格式将很快就会被市场淘汰掉,而存活下来的音频技术由于技术性能方面已经非常接近且基本上不存在继续发展的空间,将会努力从网络功能和应用功能两方面去吸引用户并打倒竞争对手。因此,实力强大的商业公司在这方面有着充分的优势。可喜的是由于开放源代码运动的发展,我们在商业技术之外还可以有另外一个选择。所以,音频技术的发展可以肯定的是只会剩下一个商业公司的技术和一个开放源码的技术并存。就像现在的操作系统之争那样。
作为一个音频技术的用户,如何选择适合自己的音频格式是一个比较头疼的事情。有些人趋向音质要求高;有些则需要丰富的附加功能。要做出自己的选择,则必须首先搞清楚自己需要的是什么。另外,需要提醒大家的是,随着中国电子政务的铺开以及Linux在电子政务中的应用,我们必须重视开放源代码这一不可忽视的要素,否则由于选择错了音频格式而导致随后工作的推倒重来那可是严重的经济损失。
希望大家看完这篇文章后能对目前繁多的各种音频格式有一个大致的了解,并能正确地作出适合自己的选择
--考研结束已有一个月了,再不写点总结,就全都忘了。趁现在还有零星的记忆,回望以下吧
考研
1 时间安排
真正开始准备还是要从十月下旬开始算,数学的复习和英语词汇的记忆占据了前面的一个半月,当然期间也马马虎虎的过了一遍政治,到了12月初,看看英语作文,数学真题解析,政治的序列二,三,12月下旬才把专业课放上日程。12月结束时,很惶恐,数学还未开始真正做题,英语的阅读没好好练习,包括写作。1月分是很紧张的,每天的作业量也不得不大的要命。那时既希望时间慢慢流逝,又希望马上考试,矛盾中,考研已经来到。政治感觉还好,英语的作文第一次写,问题超多:caption写成了capital……数学三十分未作,拿手的线代居然成了拦路虎,专业课还算可以,虽然时间还是急迫。1月20号考完的那个下午,大脑空空的,又暗暗的,和那天灰蒙蒙的雨天一样。
2 辅导书略评
A数学,微积分用老蔡的肯定没错,很经典,很强大。线代还是要用二李的,实现融会贯通。概率哪本都可以,题目不难。然后是二李的真题解析,做过一遍,才能真正对考研数学有所领会。再是模拟题,二李,老蔡的做一遍,那就没问题了(我是到最后都只做了几套题,没时间了……)
B英语,把握词汇和写作两个大点。词汇好好准备,当成一个敌人,花一个月,过一遍,哪本词汇都可以,但要掌握良好的词汇记忆的方法。写作尽量提前准备,不要像很多人放在最后,背几篇模板了事。学好英语是肯定有用处了,千万不要为考试而英语。至于真题解析,肯定推荐张剑的,而阅读理解的话,220 100 都行,关键是老老实实做上一定的数量:量变才有质变。模拟题张剑的不错,恩波的也可以。英语还是贵在真才实学上。
C政治,我推荐红宝书,老老实实自己画出重点。序列一虽然标记的很完善,但毕竟不是自己弄的,反而看的眼花缭乱。然后序列二,三,四跟上。政治就没问题了。毕竟大家没想要太高的分,加上政治上付出时间和收获的性价比较低,大家自己看着办吧
D专业课,专业不同,略去
3 心态
为什么考研?只有自己知晓,考研不苦,问题是你怎么看待考研的?每天同样的生活,看书做题,比较枯燥,机械,但是假如你自己有一个很好的计划和憧憬,那么这些都将成为你成功的一段扎实的回望。