实时 Linux 内核音质会更好吗?


不会。

简单说,外行以为数字音频系统是这样:

自左到右的,按照采样频率,比如 48khz,一个点一个点的匀速从磁盘读取、写入 DA 芯片,然后还原出音频波形。

然后他们就创作出一大堆的奇谈怪论。比如,他们以为,如果 CPU 不能“实时”的、精确间隔 1/48k 秒的把一个个采样点送进 DA 芯片,音频波形就会随之变劣——就好像当年电机转速忽快忽慢的磁带录音机一样——还发明了一个极其有 B 格的词叫 jitter,专门用来描述他们想象出来的这种现象。

这是典型的半瓶子咣当。

他们自己有那么蠢、解决不了这个问题,就以为全世界都必须像他们一样蠢。

很遗憾,只有这一小撮蠢人会如此设计数码音频系统。

真实世界里,哪怕你 5 块钱买个地摊 mp3,它都不会像这些低能老烧一样蠢。因为它是这样设计的:

逻辑功能视角;pc 上面是这样,但其它设备可能会把以上所有功能做进同一颗芯片

首先,计算机体系并不是只有 CPU。CPU 也不是每次需要用的时候就去磁盘 /flash 读取音频信息,而是一次性把整个 mp3 或者无损的 flac 文件读入内存。

然后,音频芯片里面起码包括三个部分。第一部分是 DA 转换器,第二部分是按照外接晶振频率、均匀从缓冲区搬运采样点、传入 DA 电路的这么一个逻辑电路(为叙述简单起见,这里忽略了不同采样率如何支持等问题的解决方案),第三部分就是集成在芯片中的存储器,用来缓冲音频。

换句话说,音频播放的时间精度由音频芯片本身(以及晶振)保证,CPU 只管保证缓冲区总有数据就够了。

音频播放真正的工作模式是:

  1. CPU 从磁盘读入音频信息并解码,置于内存缓冲区
  2. CPU 指示 DMA 芯片,把解码后的若干毫秒音频数据传给音频芯片
  3. 音频芯片把这些音频数据存储在缓冲区里
    1. 音频芯片的播放控制逻辑开始从缓冲区匀速搬运音频信息
      1. 音乐播放开始
  4. 当音频芯片缓冲区内容即将用尽(比如还剩下 2ms 的数据)时,产生中断
  5. CPU 执行中断程序,指示 DMA 把解码后的另外若干毫秒音频数据传给音频芯片
    1. DMA 芯片忙于数据传输时,CPU 就可以做其它事情了
    2. CPU 的工作时间太宝贵,不应该浪费在这些屁事上
      1. 它只要消耗若干纳秒处理下中断、指示 DMA 开始工作就行了
      2. 正因为 cpu 这种高效率,使得 2ms 的缓冲时间已经绰绰有余、无需担心数据接不上
  6. 音频芯片继续缓存这些数据
    1. 音频芯片的播放控制逻辑毫无所觉,自始至终以晶振控制的稳定频率搬运数据
      1. 在播放逻辑眼里,数据永远都是现成的,永远不会缺

现在哪怕 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.5Hz
2,抖晃率<0.03%RMS,<0.05%PEAK
二.使用的测试工具:
抖晃仪软件,或者实体抖晃仪
索尼 KA3ES 三磁头卡座
三.使用方法:
1,分别播放测试带的带头和带尾
2,检查抖晃仪显示的频率和抖晃率
3,和维修手册的参考值进行比较
如果不符合,检查原因并作出调整!
四.实测结果:
华声 HCD340 测试带
带速 2994.1
抖晃率约 0.03RMS,0.062PEAK
TEAC 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 线?

这都是谁给你的勇气……

这里专门研究您这种高人,不妨去为国家做点贡献吧:

当你有一双好看的腿之后,会不会觉得差一张好看的脸?
上一篇
需要加 5.67 升机油的车,机油加到 5 升的时候启动了,会不会造成磨损拉缸?
下一篇
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

相关推荐

  • 苹果手机各个功能介绍,iphone必须关闭的十个功能

    1、关闭蓝牙。现在已经很少有人用蓝牙传输文件了,而且iPhone与安卓的蓝牙并不兼容,所以,可以在设置中,关闭蓝牙功能。2、关闭通知功能。关于APP推送,无非也就是一些更新提醒,关了也不会有什么影响,还能多省点电。3、关闭自动调节亮度功能。一般来说,可以将屏幕亮度在15%-30%之间,在强光环境中,在进行手动调整就可以了。4、禁止后台刷新。在设置—通用中,关闭后台自动刷新功能,也可以对省电起到一点...

  • 高德打车怎么设置途经地,高德如何添加途经路线

    1、点击高德地图APP界面底部的“导航”按钮,进入导航模式。2、点击右下角的“路线”,进入路线设定页面,根据要求输入起点、终点进行路线规划。3、点击“添加途经点”,弹出添加途经点页面,点击右上角,可以添加或者删除途经点,乘客可以手动输入要添加的途经点。4、当添加完途经点时,点击“确定”按钮,即可添加途经路线。此时地图会显示出这条路线上所有的途经点,以及当前途经点的地点信息。怎么设计高德地图设置要经...

  • 高中必修二物理知识点总结,高一物理必修2重点知识点归纳

    您好,1.运动学-位移、速度、加速度的概念及计算方法-相关运动的分析方法,如相对运动和抛体运动-牛顿运动定律及其应用2.力学-力的概念及种类,如重力、弹力、摩擦力等-牛顿第一、二、三定律及其应用-力的合成与分解-能量、功、动能定理、功率的概念及计算方法-动量、冲量定理及其应用3.热学-温度、热量、热能的概念及计量单位-热传递的方式及其特点,如传导、对流、辐射-热力学第一、二定律及其应用,如热机效率...

  • 驻波,竟然还可以这么好看!(驻波的概念?产生驻波的条件?)

    来了暖气之后,确实是不冷了。不仅是不冷了,还变得更热了(气)。搞得小编有一点声音就无法安心学习(暴躁)。太热了为了能够隔绝声音,小编想到了耳塞、耳罩,带起来都不太舒服;降噪耳机一方面是因为还要充电,另...

  • 动物为什么没有细胞壁?(动物为什么没有细胞壁吗)

    我来写个太长不看版:动物细胞表面其实也有类似的复杂糖蛋白、大糖链结构,但是不如植物细胞的纤维素糖壁那样有明显的光学效果,也不像原核生物和真菌等表面的蛋白聚糖类型那样容易被特殊染色。所以早期的定义细胞壁...