不会。
简单说,外行以为数字音频系统是这样:
自左到右的,按照采样频率,比如48khz,一个点一个点的匀速从磁盘读取、写入DA芯片,然后还原出音频波形。
然后他们就创作出一大堆的奇谈怪论。比如,他们以为,如果CPU不能“实时”的、精确间隔1/48k秒的把一个个采样点送进DA芯片,音频波形就会随之变劣——就好像当年电机转速忽快忽慢的磁带录音机一样——还发明了一个极其有B格的词叫jitter,专门用来描述他们想象出来的这种现象。
这是典型的半瓶子咣当。
他们自己有那么蠢、解决不了这个问题,就以为全世界都必须像他们一样蠢。
很遗憾,只有这一小撮蠢人会如此设计数码音频系统。
真实世界里,哪怕你5块钱买个地摊mp3,它都不会像这些低能老烧一样蠢。因为它是这样设计的:
逻辑功能视角;pc上面是这样,但其它设备可能会把以上所有功能做进同一颗芯片
首先,计算机体系并不是只有CPU。CPU也不是每次需要用的时候就去磁盘/flash读取音频信息,而是一次性把整个mp3或者无损的flac文件读入内存。
然后,音频芯片里面起码包括三个部分。第一部分是DA转换器,第二部分是按照外接晶振频率、均匀从缓冲区搬运采样点、传入DA电路的这么一个逻辑电路(为叙述简单起见,这里忽略了不同采样率如何支持等问题的解决方案),第三部分就是集成在芯片中的存储器,用来缓冲音频。
换句话说,音频播放的时间精度由音频芯片本身(以及晶振)保证,CPU只管保证缓冲区总有数据就够了。
音频播放真正的工作模式是:
CPU从磁盘读入音频信息并解码,置于内存缓冲区CPU指示DMA芯片,把解码后的若干毫秒音频数据传给音频芯片音频芯片把这些音频数据存储在缓冲区里音频芯片的播放控制逻辑开始从缓冲区匀速搬运音频信息音乐播放开始当音频芯片缓冲区内容即将用尽(比如还剩下2ms的数据)时,产生中断CPU执行中断程序,指示DMA把解码后的另外若干毫秒音频数据传给音频芯片DMA芯片忙于数据传输时,CPU就可以做其它事情了CPU的工作时间太宝贵,不应该浪费在这些屁事上它只要消耗若干纳秒处理下中断、指示DMA开始工作就行了正因为cpu这种高效率,使得2ms的缓冲时间已经绰绰有余、无需担心数据接不上音频芯片继续缓存这些数据音频芯片的播放控制逻辑毫无所觉,自始至终以晶振控制的稳定频率搬运数据在播放逻辑眼里,数据永远都是现成的,永远不会缺
现在哪怕SATA都有6Gbps以上的传输率。你知道它的意思吗?
意思是,只要磁盘速度够,CPU可以一秒钟搬运大约100首MP3、或者说500分钟的音频到内存。
换句话说,CPU干一秒活,声卡得忙起码8个小时——注意这还是按磁盘传输速率算的;按内存传输速率的话就更夸张了:DDR4内存每秒能传大约25G字节数据;如果这些数据是mp3的话,这一秒钟传输的内容声卡播放半个月都播不完。
所以,我们压根不需要“实时”处理音频——让CPU干几个ms的活,它就能把过去磁带录音机的一整盘磁带读入内容;然后丢给声卡播放就行了。
但,真这样搞就要求声卡上面必须有一个比较大的存储;而且你听不了几秒钟就切歌的话,这些搬运工作就白费了——CPU/总线的工作时间是很宝贵的,不能这样浪费。
同时,对游戏、MIDI来说,我们希望在敲击键盘后、音箱能尽快出现反馈,让我们知道自己的操作/弹奏有效果了——你让声卡缓存1M信息,这里就会出现若干秒的延迟。这显然是无法使用的。
因此,我们故意把声卡缓冲区做的很小,让它只能存储几个毫秒的音频数据(实际情况是支持更复杂的协议,使得在游戏/MIDI业务时延迟更低、但在播放音乐时缓冲更大:有时候机器突然死机、但并未重启或者关机,你就会听到声卡在反复播放一小段音频。这就是因为CPU罢工、声卡内部的环形缓冲区内容得不到更新、使得它的内置播放逻辑循环播放缓冲区内的声音片段)。这才能尽量降低游戏/演奏的延迟。
——如果你用蓝牙耳机玩过游戏、弹过MIDI的话,应该会对此有所察觉。你会发现音箱里面的声音“不跟手”,总是在你敲过键盘后略微延时才会出现:这在你玩格斗、音游、演奏时更加明显,因为这类游戏/工作需要更实时的反馈
——造成这个问题的原因,就是蓝牙传输比较慢、编解码复杂、缓冲区大
——这样才能在受到外界干扰、产生误码时,从容不迫的纠错或者丢弃错误报文、要求主机重传
——没错。反驳老烧们的另一个谣言:数字音频系统是不会有误码的。各种协议都会实时的识别和纠正它们。借助缓冲区,这个识别和纠正动作也不会对音质造成任何影响
——但,这些技术要求也使得通过蓝牙播放音乐时,延迟可能达到100ms甚至200ms以上
——这个延迟对音乐播放毫无影响,但比较影响游戏、音乐演奏等需要听到实时反馈的应用
内核工匠:一文读懂蓝牙音频
扯到蓝牙就有点太远了,哈哈。
回到声卡。
综上,在设计合理的前提下,利用缓冲区和中断机制,数字音频系统是不存在什么jitter的。
就是设计不合理、使得音频芯片缓冲区断流,也只会导致噼噼啪啪的“爆音”而不是jitter。
实时内核不会改变音质。它对音频系统的可能改善只有一个,就是降低延迟——但却对蓝牙这种协议层面产生的延迟无能为力。
而且,非实时内核也能很轻易的就把延迟压到极低水平、低到哪怕格斗游戏玩家、音游玩家、音乐家都感知不到的水平。
鉴于评论区老烧们见缝插针的插入误解,看来这里有再次正本清源的必要。
一、音源-CPU-声卡
音源文件,无论是mp3、flac还是wav,载入内存后CPU都会给它解码。
这是因为无论mp3还是flac甚至wav,都可能是压缩过的:WAV
而声卡是无法直接播放这些五花八门的音频文件的。
因此,虽然如果你使用各种播放库时,它允许你直接传入mp3、flac以及各种格式的wav,或者直接传入各种视频、在播放视频的同时播放它内嵌的伴音音频;但,声卡本身是没有支持这些五花八门的音频格式的能力的。
在你看不见的地方,这些文件都会被CPU按照一定流程识别格式、解开压缩。最终送给声卡的,一定是标准的PCM格式信息。
换句话说,在上面的缓冲区里,存放的一定是PCM格式音频。声卡不可能识别MP3,你给它MP3它一定会发出各种噪音。
很多人可能被评论区老烧误导,以为出现了PCM是多么可怕的事……扯淡。
二、缓冲区到DAC
DAC的工作原理是:你给它一个数字,它输出等于这个数字的电平。
而PCM呢,它其实就是一序列的采样点;只要你按照采样频率把PCM数据传给DAC,DAC就能还原当初采样的音频波形了。这个波形再经过滤波、放大,就可以通过两米长的耳机线播放进你的耳朵,或者通过三四米甚至十几米长的模拟线缆送进功放机(可能内置于音箱),完成模拟波形放大并通过喇叭播放。
换句话说,DAC相当于过去的录音机磁头,而我们把PCM匀速送到这个“磁头”下的“走带机构”是什么呢?
没错。晶振。晶体振荡器。石英晶体振荡器。
依靠晶振输出的、超高稳定性的时钟信号,把一个个PCM数据里的采样点依序、匀速的送到DAC。
当然了,晶体振荡器虽然具有极高的稳定性,但这个稳定性也是有极限的。这在高精度仪表里面是个问题,也就是jitter。
不过,这个jitter究竟听不听得到呢?
1、录音机时代的抖晃率
录音机时代和现在不同,当时全靠电机转速控制技术来保证“走带机构”以4.76厘米每秒的速度匀速走带;但这个技术是不靠谱的,电池电量不足时就会明显变慢。下面就是典型的电机转速控制电路:
录音机磁带走得慢的解决办法 - 音频技术 - 电子发烧友网
有些录音机的调速电路是集成在电机内部的;电机后端会留一个调节孔,用螺丝刀伸进去拧里面的可调电阻,就可以控制走带速度了。
当年我手里没少干坏这种玩意儿
我们可以看到,这套电路并没有石英晶体振荡器来精确控制速度,而是使用了不靠谱的滑动电阻器。
理所当然的,无论环境温度变化还是机器工作时的震动(以及音箱震耳欲聋的声波冲击)造成的滑动变阻器接触簧压紧/放松、还是空气湿度变化、长期使用后的脏污,都可能引起走带速度改变。
那么,怎么校准录音机的走带速度呢?
Freeman:用手机APP调整磁带录音机转速的方法
答案是用一盘录着标准1khz音频的专用磁带在上面放音,然后用螺丝刀调整可调电阻,直到最终播放的音频频率恰好等于1khz。
当然,正好等于1000.00HZ是不可能的。人耳并没有那么高的精度。
更“可怕”的是,电机本身依靠磁场工作,而直流电机内部的磁场是不均匀的:
绕组磁场方向和永磁体磁场正好相反时,受到的磁场推力是最大的;但一旦稍微偏转,受到的磁场力就会指数水平的降低:
我拆解过几十个不同录音机使用的电机。很遗憾,它远不如现在的电脑风扇精致:简单的两片弧形永磁体(也有做成环形、但仍然只有两个极性的),三个绕组——现在电脑风扇为了静音,经常都要做5个、7个甚至更多绕组呢。
这样的电机,其转速显然不可能非常均匀。
不仅如此,录音机走带速度还严重依赖于“主轴”的加工精度;但主轴本身可能有安装误差、或者主轴本身不够直、使得转动时另一端画圆、于是走带速度就忽快忽慢。
用久了的主轴还可能沾染上大量脏污,我当年帮人修录音机,其中的一大工作就是抠上面的污物——这玩意儿在上面沾的非常紧,尤其那些使用多年未曾打理的,靠酒精是去不掉的;用指甲抠掉大块的、再用酒精彻底擦净,这是当时的重要维修工作之一。
这些脏污显然也会严重影响磁带走带速度。
显然,走带速度是不可能均匀的,一定存在某种忽快忽慢的变动。这叫“抖晃率”。
那么,允许的走带偏差/抖动是多少呢?
一.核心技术指标:1,带速误差<0.15%,即4.5Hz2,抖晃率<0.03%RMS,<0.05%PEAK二.使用的测试工具:抖晃仪软件,或者实体抖晃仪索尼KA3ES三磁头卡座三.使用方法:1,分别播放测试带的带头和带尾2,检查抖晃仪显示的频率和抖晃率3,和维修手册的参考值进行比较如果不符合,检查原因并作出调整!四.实测结果:华声HCD340测试带带速2994.1抖晃率约0.03RMS,0.062PEAKTEAC MTT111DN(标称误差小于1Hz)带速2995抖晃率约0.03RMS,0.057PEAK索尼KA3ES的指标是:带速2990到3010抖晃率小于0.047RMS可见符合技术指标两盘测试带的测试结果的基本一致的!华声测试带实测指标分析:实测频率和Teac比误差<1Hz实测抖晃率和Teac比差距<0.01%玩转测试带之一! 3kHz和3.15kHz测试带的正确使用方法! 国产和进口指标对比!2、石英晶体振荡器的精度
硬之城Allchips:谈谈晶振的频率精度、稳定度及长期稳定度
老烧们神奇的耳朵,它们听不见录音机转速0.15%的“巨大”偏差,也听不出录音机主轴脏污/弯曲后远超0.06%的抖晃——却听得出石英晶体振荡器百万分之几的频率差值。
三、信号传输
在这个框图中:
音源-CPU-音频芯片这些路径中,传输的信号都是纯数字信号。
这些信号是无需考虑误码率/抖动的,只要缓冲区补充及时就足够了。
而缓冲区到DAC的搬运过程比较特殊。此时是“半数字半模拟”的。
半数字指的是PCM采样点,这些信息是数字的;半模拟是石英晶体振荡器控制着采样点到DAC的输出间隔——当然了,如果你读了前面部分,会知道石英晶体振荡器远比录音机电机“可怕”的精准度和稳定度;那么你肯定不会担心这里出现问题。
没错。可能有jitter;但那又如何?只要你还是地球上的大型哺乳动物,你就听不出来。
DAC转换并经过前级滤波、放大之后、传输到音箱这段,是纯模拟信号。
实际实现中,不同方案可能会采取不同的传输方式。
1、光纤输出
光纤输出其实相当于用光纤替代了后续的晶振、DAC的位置,从而直接把CPU放到声卡缓冲区的PCM信息透过光纤传递给外部解码器。
这个设计本质上和USB输出是一样的。因此这里不再讨论它。
2、USB输出
USB输出相当于用USB接口替代了声卡的位置,使得CPU直接把本该放到声卡缓冲区的PCM信息通过USB电缆、传递到了外部解码器。
和电脑机箱中一样,这个传输是纯数字输出。也就是说,它并不携带晶振的频率信号。
恰恰相反,USB音频标准要求在报文中包含PCM采样频率等信息(且可以支持不同音频格式);远端的USB解码器需要通过这些信息调整自己的晶振分频,从而以正确的速度从自己的缓冲区把一个个PCM采样点送到DAC。
因此,和老烧们的凭空想象不同,这里并不会引入什么jitter。除非你用的解码器太烂。
3、模拟信号和数字信号
当然,和光纤一样,USB输出的PCM信息是不带校验的。也就是说,它可能出错。
那么,这会不会影响音质呢?
在谈论这个之前,我要先科普一下何谓“数字信号”,以及数字信号有什么优势。
先让我们看看模拟音频信号吧:
如你所见,模拟音频信号是一系列细碎的波。这些波的最高频率是20KHZ。
通过一条音频电缆传输模拟信号时,这些波可能发生畸变。
畸变包括频率漂移、引入干扰、振幅改变等等——总之,把20khz的音频传输150米,这是一项极大的挑战。
不过没关系。人的耳朵极不敏感。只要避免引入干扰、造成极大的底噪甚至啸叫,其它畸变都无所谓。反正听不出来。
相比之下,数字信号就靠谱多了。
和模拟信号不同,数字信号要“简单粗暴”的多得多。
以USB为例:
USB总线电平标准、USB总线状态、USB总线信号详解_usb时序图-CSDN博客常用通信接口电气特征(七):USB_usb差分信号电压是多少-CSDN博客
看到了吗?
2.8v以上、0.3v以下有效。
换句话说,0和1状态至少相差2.5v,这才是有效的数字信号。
差值低于2.5v,这个信号就认为是一个错误。
再换句话说,峰值2.5v的干扰,这在模拟信号里面足够遮的什么声音都听不清了、根本谈不上音质;但在数字信号里面可以无视。
当然,高速数字信号不用如此恐怖的电压差。耗电太凶、对器件要求太高了。所以标准定在700~1100mv这样的级别。这叫牺牲可靠性换速度。
正因为这个牺牲,使得目前的USB3对线材存在一定的要求。可以轻易传输USB2.0信号的线缆,传输USB3.0信号就可能协商不通过,只能降速到USB2.0使用。
模拟信号里面,10个mv意味着什么?——简单说,10个mv就可以把一些耳机驱动到足够损害你的听力的声压级了。而在数字信号里,几百个毫伏、甚至2500毫伏以下的信号可以直接无视。高于这个压差的信号才被认为是有效信号。长期戴入耳式耳机听歌有什么危害吗?
顺带说一句,搜麦文学大神这篇文章时,我看到了某音频设备厂商在知乎的一个账号正在谋财害命——它甚至鼓吹使用95db以上声压听歌、并要求设备必须能把耳机推到120db,也就是痛阈。
但事实上,长时间用超过65db的音量听歌,已经可能造成永久性听力下降了。
每天暴露在91db噪声环境里的时间超过2小时,就足以造成听力损失。
而那个无良厂商居然到处放毒、要求使用95db以上音量听歌!
那么,如何知道高速数字信号质量好不好呢?
没错,就是硬件同学熟悉的“眼图”了。
只要眼睛张得开,信号就不会有问题。
比如,哪怕牺牲了可靠性的、usb3.2这样10Gbps以上的信号,其误码率都可以低于10E-12——小数点后12个零!
低压差、超高频的USB3.2都有这么高的可靠性;USB2.0嘛……其实压根无需规定,随便捡条线都能用——只要线没锈,包括USB2.0 的480Mbps传输速率,都是想错都难。
USB3之前的任何协议都是不挑线的。随便买,都能用,别锈的太夸张都行。
直到usb3之后,想要支持USB3的传输率,你才需要买质量稍微好一点的线。
这样优秀的能力,以PCM格式传输点傻乎乎的低频音频数字信号,岂不是手到擒来?
你要知道,USB所谓的低速、全速,指的可是:
没错,12Mbps!
——事实上,当调制技术更高时,比如当年12Mbps的ADSL,你知道它的设计传输距离有多远吗?
以 ITU-T G.992.1 标准为例,ADSL 在一对铜线上支持上行速率512Kbps~1Mbps,下行速率1Mbps~8Mbps,有效传输距离在3~5公里范围以内。当电信服务提供商的设备端和用户终端之间距离小于1.3千米的时候,还可以使用速率更高的VDSL,它的速率可以达到下行55.2Mbps,上行19.2Mbps。adsl
没错。用粗重的音频电缆在音乐会现场把功放后的、强劲的音频信号传递150米,难死了无数音频工程师;用一对细细的铜线传输数字信号,却成了“小于1.3km时,可以使用VDSL,从而达到下行55.2Mbps上行19.2Mbps”——读出其中的举重若轻了吗?
这就是数字信号的优越性。
就你20KHZ的小音频,也敢来碰瓷数字信号?
这玩意儿模拟信号传两米、甚至都不用差分接法,你的木头耳朵照样听不出问题。
结果用更粗的差分线把黑大傻粗的数字信号传一米两米,你居然就听出来了?尤其是,居然是去碰瓷早年的、超高压差的USB2.0前的USB线?
这都是谁给你的勇气……
这里专门研究您这种高人,不妨去为国家做点贡献吧: