自然声音与合成噪音:全面对比
两种背景声音方案
在构建 WhiteNoise.top 的过程中,我同时实现了录制的自然声景和算法生成的合成噪音,这两种方案之间的工程权衡比大多数人意识到的更加微妙。表面上看,选择似乎很简单:自然声音是“真实的”,合成噪音是“人工的”。但当你深入研究频谱内容、文件管理、循环行为和用户体验时,画面变得更加有趣。
录制的自然声音,如雨声、海浪、鸟鸣、风声和河流,是在自然环境中用麦克风捕获的。录音经过编辑,有时进行叠加,作为音频文件提供给用户设备播放。相比之下,合成噪音是使用算法实时数学生成的。没有音频文件;声音由随机数经数字滤波器整形后创建,正如我在噪音生成器工作原理文章中所述。
两种方案都有各自的优势和劣势,根据我的经验,最好的音频工具会同时提供两种选择,让用户根据偏好和使用场景自行选择。在本文中,我将从音频质量和实际部署两方面,跨多个维度对比这两种方案。
频谱内容与声学特性
自然声音和合成噪音之间最根本的区别在于它们的频谱内容。合成噪音——无论是白噪音、粉红噪音还是棕噪音——都有精确定义的频谱形状。白噪音具有平坦的功率谱密度。粉红噪音以每倍频程恰好 3 分贝的速率衰减。这些形状是数学确定的,且完全可重复。在我的测量中,我们生成器相对理论理想值的频谱偏差在可听范围内小于 0.5 dB。
而自然声音则具有复杂的、随时间变化的频谱特征,难以简单概括。例如雨声——水滴撞击物体表面产生宽带能量,但频谱随水滴大小、表面材质和降雨强度而变化。在我对高质量雨声录音的频谱分析中,发现能量集中在 500 Hz 到 8 kHz 之间,溅射成分在 2 到 4 kHz 附近形成宽峰值,200 Hz 以下的能量相对较少。频谱也随着雨势的波动而逐时变化。
海浪呈现出更复杂的图景。浪花拍岸产生一阵从次低频隆隆声到高频嘶嘶声的宽带能量爆发,随后是水流冲过沙滩的持续嘶嘶声。在我的分析中,频谱质心(频谱的质量中心)在每个浪潮周期内剧烈变化——冲击阶段低于 500 Hz,退潮阶段高于 3 kHz。这种动态变化是海浪声引人入胜的原因之一,但也是它们与合成噪音的平稳特性根本不同的原因。
从遮蔽的角度来看,录制声音的非平稳性既是优势也是劣势。变化维持了听者的兴趣且感觉更自然,但也意味着遮蔽效果随时间波动。在浪潮之间的安静时段或雨势减弱时,遮蔽水平下降,可能让不需要的声音变得可听。合成噪音则始终保持恒定、可预测的遮蔽水平。
循环伪影与无缝播放
录制自然声音中最具挑战性的工程问题之一是创建无缝循环。自然录音有有限的时长,通常为 30 秒到几分钟,必须重复以实现连续播放。如果循环点被听出来,听者就会听到一种节奏性的重复,打破自然环境的幻觉。在我的制作工作中,我开发了几种技术来最小化循环伪影,但没有一种是完美的。
最简单的方法是交叉淡入淡出循环,使用淡入淡出曲线将录音的结尾与开头混合。我通常使用三到五秒的升余弦交叉淡入淡出,对雨声等连续声音效果很好,但如果混合的两个片段有明显特征——比如响亮的雷声同时出现在淡出和淡入中——可能产生可听的叠加伪影。
更精细的方法是使用长录音(五到十分钟或更长),在更长的窗口上应用交叉淡入淡出。这降低了重复频率,即使循环点略有察觉,听者也不会频繁遇到以至于感到恼人。然而,更长的录音意味着更大的文件大小,这带来了另一组权衡。
对于包含周期性元素的录音——如海浪——我将循环点同步到波浪周期。我分析波形,在录音的开头和结尾附近找到波浪周期的起点,然后在这些匹配的相位点处裁剪和交叉淡入淡出。这产生的循环保持了波浪的自然节奏而没有突兀的跳跃。在我的测试中,这种技术有效但耗时,需要对每个录音进行手动调整。
合成噪音完全消除了循环问题。因为每个样本都是从随机过程独立生成的,信号永远不会重复(在 PRNG 的周期内,对于 128 位状态机来说周期长到天文数字)。没有循环点、没有交叉淡入淡出、没有听者检测到重复的风险。这是合成噪音相对于录制声景最具说服力的实际优势之一。
文件大小、带宽与传输
录制的自然声音必须存储为音频文件并传输到用户设备。文件大小取决于录音长度、采样率、位深度和压缩格式。一段两分钟的立体声录音,在 44.1 kHz、16 位、未压缩 WAV 格式下约为 21 兆字节。压缩格式大幅减少这一数字:相同录音在高质量 MP3(256 kbps)下约为 3.8 兆字节,在 96 kbps 的 Opus 下约为 1.4 兆字节。
对于像我们这样的网页平台,文件大小直接影响加载时间和数据使用量。如果我们提供 20 种不同的自然声音录音,每种两分钟,MP3 格式的总库大小约为 76 兆字节。使用移动数据连接的用户可能觉得这过多,尤其是如果他们只想尝试几个选项然后选定一个最爱的。在我的实现中,我使用渐进式加载:每段录音的前 15 秒立即加载,其余部分在用户收听时在后台流式传输。
合成噪音完全不需要音频文件。整个生成器,包括 PRNG、频谱整形滤波器和音频工作线程代码,通常不到 10 千字节的 JavaScript。这意味着噪音几乎即时开始播放,数据使用量可忽略不计,无论用户的连接速度如何。对于带宽有限或移动数据昂贵的地区的用户,这一优势非常显著。
不过,录制的声音在首次下载后可以被本地缓存,使后续播放同样快速。而且精心录制的自然声景的丰富性和复杂性很难用合成方式复制。根据我的经验,最好的方法是将合成噪音作为即时、轻量的默认选项,将录制声景作为用户可以按需下载和缓存的可选增强。
一致性与可控性
合成噪音提供了录制声音无法匹配的一致性和可控性水平。当我将粉红噪音生成器设为 -12 dBFS 并指定特定频谱形状时,我清楚地知道输出会是什么——每次、每台设备都一样。频谱、振幅分布和统计特性是确定性的且可重复的。这种可预测性对声学测量、设备测试和声音遮蔽系统校准等应用至关重要。
录制的自然声音本质上是可变的。即使单个录音也包含电平、频谱和时间模式的自然波动。相同声源的不同录音——如两个不同地点的雨声——可能因水滴大小、表面材质、麦克风放置和环境条件的差异而听起来截然不同。这种可变性对休闲聆听来说很有魅力,但对需要一致、可预测声学行为的应用来说是个问题。
可控性是合成噪音的另一个优势领域。用户可以实时调整合成噪音的频谱形状、振幅甚至统计分布。想要更多低音?调整频谱倾斜。想要更柔和的特性?从白噪音切换到粉红或棕噪音。这些调整即时生效,可以精确微调。对于录制声音,用户的控制仅限于音量、对现有录音的均衡处理,以及从有限的录音库中选择。改变声音的特性需要选择完全不同的录音。
在我的开发工作中,我构建了将合成噪音的可控性与录制声音的自然特质相结合的混合模式。一种方法是使用从自然录音中提取的包络来调制合成噪音的振幅。结果听起来像雨声或波浪,但具有合成噪音的频谱一致性和无缝循环。另一种方法是将安静的自然录音叠加在较大声的合成噪音背景上,使用录音添加质感和趣味,同时合成噪音提供一致的遮蔽。这些混合方案在想要两全其美的用户中反响良好。
如何在自然声音和合成噪音之间选择
经过多年构建和测试两种类型的音频内容,我总结了一些在两者之间选择的实用指南。对于声学测量、校准以及任何需要频谱精度的应用,合成噪音是明确的选择。它可预测、可控,且不需要存储空间。
对于休闲背景聆听,选择取决于个人偏好。一些用户因自然声音的有机特质和与平静环境的联想而觉得它更引人入胜和愉悦。另一些人则偏好合成噪音的中性、一致的声音层,因为它不会引起对自身的注意。在我对平台用户进行的调查中,一般使用时偏好大约 60/40 倾向自然声音,但在将主要目标描述为遮蔽工作环境中干扰声音的用户中,这一比例反转为 30/70 倾向合成噪音。
对于办公室和图书馆等专业环境中的声音遮蔽,声学顾问几乎总是偏好合成噪音,因为其一致性确保了可靠的性能。使用自然声音的遮蔽系统在安静段落中会出现遮蔽降低的时刻,可能影响声学隐私。
对于通过耳机的个人聆听,我建议尝试两种选项,根据你觉得最好听的来选择。我们的平台让切换合成噪音和录制声景变得轻而易举,许多用户最终创建了结合两者元素的自定义混合。我在本文中描述的技术权衡是真实的,但最终最好的背景声音是在你特定的环境中、为你特定的需求而有效的那一个。
参考资料
常见问题
自然声音录音比合成噪音更适合声音遮蔽吗?
不一定。合成噪音提供恒定、可预测的遮蔽水平,而自然录音有自然的音量波动,在安静段落中可能降低遮蔽效果。对于可靠的遮蔽,合成噪音通常更受青睐。
如何让自然声音录音无缝循环?
最常见的技术是在循环点进行交叉淡入淡出,在数秒内将录音的结尾与开头混合。对于像海浪这样的周期性声音,将循环点同步到浪潮周期能产生更好的效果。
自然声音文件需要多大存储空间?
一段两分钟的 CD 品质立体声录音在 MP3 格式下约 3.8 兆字节。一个包含 20 段录音的库大约是 76 兆字节。合成噪音不需要音频文件,只需要几千字节的生成器代码。
合成噪音能听起来像雨声或海浪吗?
合成噪音可以在频谱上整形以近似自然声音的平均频谱,但它缺乏真实录音的动态变化、瞬态事件和有机特质。使用自然包络调制合成噪音的混合方案提供了一种折中选择。
哪种选择在移动设备上更省电?
两者在播放期间使用相当的 CPU 资源。不过,合成噪音避免了初始的数据下载,这节省了蜂窝网络射频模块的电量。对于长时间使用,两种方案之间的电池消耗差异可以忽略不计。