有了高质量的音频文件,那么是否就能得到高质量的数字音频输出呢?不一定。子弹再好也需要枪,音频的输出途经需要得到重视。
在计算机系统中,若需要输出音频,就要用特定的方法去驱动Codec、DAC等音频芯片。在调动音频芯片的过程中,要使用到一些特殊的应用程序编程接口,也就是音频API。使用音频API,音频软件如播放器等就可以直接针对API设计输出程序,而不必针对不一样的芯片使用不相同的指令。音频API能够理解为,声音在输出过程中需要走过的路。路的质量,影响到声音的送达。
音频API属于声音的输出规范,而各个音频厂商都深谙“控制标准的人就控制了一切”这一套。于是,这些厂商们都针对其旗下的产品开发了属于自己的API。不过,这些API主要用途是实现不同的音效,如游戏中的3D环境音效等,而非播放音乐,所以如果安装了独立声卡,那么选择API就显得很重要。
MME是最常见的Windows音频API,全称为MutiMedia Extensions,即多媒体扩展技术。它历史悠远长久,兼容性好,市面上基本所有设备都能良好支持。它属于高级的API,并不直接和硬件交流,一定要通过层层接口才能访问音频硬件,这也为它带来了高延迟。虽说这种延迟在回放音频的时候并不会造成音质的劣化,但对音频的处理和录制却有着较大的负面影响。
微软的DirectX大家都一定很熟悉,玩游戏之前都需要先安装一下。实际上,DirectX也包含了音频的部分,主要为游戏提供音频接口,减少游戏中画音不同步的现象。DirectX Sound侧重于音频输出,能直接访问硬件,响应速度得到了极大的提升。
WDM是Windows Driver Module的缩写,拥有低延迟、支持多个音频流等特性。MME延迟高,而Direct Sound并非为专业音频设计,WDM的出现很好地弥补了这些缺点。WDM直接和音频芯片的驱动程序交流,减少了大量中间环节,把延迟降低到一个新的层次,目前不少专业音频软件都提供了WDM接口。
举个例子,使用WASAPI的时候,如果正在用44.1kHz的采样率播放音乐,但此时音频采样率为48kHz的QQ又响了,就不必以混响解决,不会产生采样率转换(SRC)劣化音质的情况。事实上,WASAPI这个音频API是很多音乐发烧友的标配。
就和其名字一样,这个API可以使音频直接访问底层数据,绕过系统的各种接口。它能带给音频极低的延迟。不过Kernel Streaming也有其局限性,首先使用这个API会直接霸占音频硬件,你听歌的时候就没法听到QQ响;其次这个API没有音频输入功能,也没法使用麦克风。
ASIO是由德国Steinberg公司提供的音频接口,主要使用在于专业领域。它的特色在于延迟极地,Windows 自有的 MME 驱动程式其延迟时间为 200~500 毫秒,DirectSound 为 50~100 毫秒,使用ASIO却能把延迟降低至10毫秒以下,十分惊人。
低延迟对声音录制和后期制作有着重大的意义,但是在声音回放上的效果却有争议。有的发烧友认为,ASIO的低延迟可以极大程度地减少音频Jitter(抖动,这个会在后面提到),来提升音质;但有另一种说法称ASIO对软硬件的环境要求都比较苛刻,如果音频驱动编写水平一般,很容易产生爆音、声音生冷等问题。
其他常见的音频API还有EAX、OpenAL等,但是这些API一般是在游戏等应用程序中的音效中使用,很少在聆听音乐的时候用到,就略过不提了。