考虑到我们有一个无损音频播放器和一个无损录音机,它们都是数字的(意味着音频永远不会通过模拟电缆),我们应该能够播放音频文件并录制它,因此原始文件和录音文件应该一点一点地相同(不包括元数据)。
我的问题是,这在 Windows 或 Linux 上可行吗?意思是,如果我在浏览器中播放一首歌曲,然后使用 Stereo Mix (Realtek)、What U Hear (Sound Blaster) 或 WASAPI 录制它,然后将录音保存到文件中,然后再次执行相同的操作,它会产生一个与第一个文件一点一点相同的文件吗?如果不是,为什么?
我觉得情况并非如此,至少在 Windows 上不是这样。我注意到一个奇怪的现象,如果我在 Windows 上将音量调到 100%,但没有播放声音,我会听到轻微的嗡嗡声。我原本预期的是,数字信号传到耳机的实际扬声器时应该没有声音,因此耳机的嗡嗡声不明显(因为据我所知,每个扬声器至少都会发出一点哔哔声),无论音量大小。因为 0 * 任何东西都是 0,所以放大其中没有任何内容的数字音频应该没有任何内容,而放大其中含有 0.0001 的模拟音频应该会使嗡嗡声更响亮一些。
我想知道 Windows 以这种方式处理音频的原因。
答案1
只要您不涉及任何模拟音频路径(或比特或采样率变化),理论上,只需使用您描述的直接音频捕获机制保存文件,您就应该能够获得比特完美的再现。在数字领域,假设没有转换阶段,则不应该有任何因素导致数据丢失。
扬声器发出的声音的问题在于它不是数字的,而是模拟信号。您正在切换到模拟域,即使是最轻微的信号噪声也是您的敌人。
为了将声音输出到扬声器,需要使用数模转换器 (DAC),然后使用可变增益放大器。这些可能实现在单个单片音频芯片中,用于处理输入和输出音频,但它将要在输出端有这两个基本块。
DAC 及其同类 ADC(模拟数字转换器)往往能够很好地再现信号,但由于电源噪声、附近设备的噪声等,它们难以再现最微弱的信号。
进入 DAC 的数字音频数据可以是位完美的,但输出的数据却受模拟电子设备的影响。
这意味着 DAC 输出的信号会带有少量“波纹”,这些波纹在到达扬声器之前会被馈送到放大器中。
通过将音量调到最大,您会将来自 DAC 的微小噪音放大到极大的程度,因此您就会听到噪音。