浅谈数播与SRC相关知识(src是什么意思的缩写)
SRC是英文SampleRateConversion(采样率转换)的缩略语。要讲清楚SRC(采样率转换),我们就得先说清楚什么是采样率,以及为什么要转换,以及转换带来的后果。
先说说什么是数播。所谓数播,应该就是数字播放机的简称,当然是对音乐播放而言的。
既然是数字播放机,必然是对所有的数字音乐格式必须通吃,早先24/192(24bit量化/192kHz采样的简写形式,以下类同)格式就是非常高端的数字音乐信号格式了。
现在32/384,甚至32/768都不算啥惊世骇俗的规格了,对了,还有DSD,2.8M与5.6M都是寻常的数字格式。不得不承认,当下科技发展速度真的很快!
我相信,最早玩儿所谓数播的应该是从玩儿HTPC(电脑家庭影院)或者PC HiFi(电脑高保真播放)演变过来的,因为那个时候的手机,或者平板的性能都不足以支持高保真播放。
随着ARM架构的系统的性能的突飞猛进,数播也就从PC逐渐演变成当下的ARM系统的设备了。
再说说什么是SRC。SRC是英文Sample Rate Conversion(采样率转换)的缩略语。
要讲清楚SRC(采样率转换),我们就得先说清楚什么是采样率,以及为什么要转换,以及转换带来的后果…...
所谓采样,就是从连续的模拟信号转换到离散的数字信号的抽取样本的工作。
在固定时间内对一段模拟信号抽取的样本越多,也就是采样频率越高,对原始信号的描述就越精确,如下图所示:
由于当年用录像带记录数字音频信号,因此数字采样率受到了录像机制式的影响,产生了44.1KHz这么奇葩的采样率,而且还被CD原模原样的继承了下来。
具体的故事参看我之前的文章“录像机制式决定了CD标准中44.1kHz的采样频率”,这个问题在后来的DAT中得到了纠正,DAT的标准采样率是48kHz,后续的DVD也是48KHz。
以至于后期的高规格大都是48kHz的倍数,但是DSD又是个例外,DSD的2.8MHz采样脱身于16/44.1的采样数据量,估计也是为了与CD兼容的原因。
由于48Khz是整数,因此不少电脑声卡以及安卓系统都将系统的DAC(数/模转换器)定义在48kHz(或者其整数倍)。
而此时如果要播放44.1采样的CD音乐的话,就必须先将44.1kHz采样率的数字信号转换到48KHz,然后再经过DAC模拟输出到功放。
事实上,不光是播放CD,电脑播放里任何不是48kHz采样的声音都要做采样率转换(也就是SRC),到48kHz才能经过DAC输出。如下图所示:
那么这个SRC会带来什么效果呢?显然这个SRC如果处理得不理想就会带来额外的失真!
事实上,如果是整倍数的转换,几乎可以是无损的,例如从96kHz采样率转换到48kHz采样,只需要简单的将采样率减半,也就是每隔一个抽取一个采样数据就可以了,这样仅仅是采样精度下降了。
而将44.1kHz转换到48kHz就很难做到无损转换了,因此,这个转换算法就直接影响到系统播放CD的音质,在这个SRC算法不够成熟的时候,这是早期玩儿数播最头疼的事儿。
事实上,最早认识到电脑通过声卡播放CD音乐声音不够理想的问题就是因为电脑在将不同采样频率的声音整齐归一到统一采样频率转换时的不理想。
尤其是CD与电脑的输出DAC的采样频率不匹配的时候,对音质影响是最大的。
找到音质劣化的原因以后,其实解决方案也挺简单,就是尽量绕开系统的SRC就行了,简单的办法就是所谓的数字转盘+解码器的方案,电脑系统只负责从NAS,或者硬盘等处读取数据。
然后,既不解码,也不转码,而是将源码直接经过数字通道(同轴,光纤,USB线等)传输给解码器,由解码器按照不同的源码格式解码成模拟信号输出给功放。
这样就绕开了电脑系统(包括安卓系统)的SRC的问题。
如果用手机做数字转盘的话,也是需要适配的应用软件如海贝播放器通过USB Audio输出源码音频到外接解码器来绕开安卓系统的SRC,从而达到HiFi播放音乐的目的。
当然这个办法对手机耳输出的音频不起作用。
而使用安卓系统制作的数播机则是应用了安卓系统的一个叫HAL(Hardware Abstraction Layer)底层协议,通过这个东西来隔离安卓系统的应用与硬件对SRC的管控,从而实现安卓系统的高保真重放的问题。
事实上,以现在的SRC算法的技术水准,原则上讲SRC带来的失真已经非常轻微了,如果不是追求完美的听众,几乎可以忽略这个问题了。