白噪音生成器

用 Web Audio 现场合成白噪音、粉红噪音与棕噪音,可调采样率、音量与淡入淡出,试听后直接导出 16 位单声道 WAV。三种噪声的频谱斜率与三分之一倍频程电平表都写在页面上。

听音安全:长时间大音量聆听会损伤听力。美国 NIOSH 建议 85 dB(A) 下每天不超过 8 小时,且每升高 3 dB 允许时长减半(88 dB 4 小时、91 dB 2 小时、94 dB 1 小时)。本页的「音量」是数字域增益,不是实测声压级;实际声压取决于耳机灵敏度与设备输出,请从较小的音量开始。本页不提供任何医疗或助眠疗效承诺。

提示:在任一数字输入框里按 Enter 可重新生成参数预览;首次播放需要一次点击,这是浏览器对自动播放音频的限制,不是工具故障。

使用方法

  1. 先选「噪声类型」。三者的差别只在频谱形状:白噪音每个赫兹分到的功率相同,听感偏「沙沙」的高频;粉红噪音功率与频率成反比,听感更接近雨声、瀑布;棕噪音功率与频率平方成反比,低频更重,接近远处的轰鸣。不要凭名字去猜,先各试听 20 秒再决定。
  2. 「采样率」选 44100 或 48000 Hz。两者的区别是能表达的最高频率(奈奎斯特频率):44100 Hz 对应 22050 Hz,48000 Hz 对应 24000 Hz。因为人耳上限通常在 20000 Hz 附近,这两个采样率听感上几乎没有差别,选默认的 44100 即可;要对齐视频工程时再选 48000。
  3. 「时长」填 30(示例值),允许 1~600 秒的整数。它只决定下载出来的 WAV 有多长,不影响实时试听——实时播放时音频缓冲会无缝循环,你听到的是无限长的噪声,不会在 30 秒处断掉。
  4. 「音量」填 −18(示例值),范围 −60~0 dB。这里的 dB 是相对满量程的数字增益:0 dB 表示把归一化后的波形按原样输出,−18 dB 表示乘上 10−18/20 ≈ 0.125892。先在 −30 dB 左右试听,确认音量合适再往上加。
  5. 「淡入」「淡出」默认 0.80 与 1.20 秒。它给缓冲的首尾各套一段线性斜坡,避免循环点或起停瞬间出现「啪」的爆音。若把淡入设成 0,且下载的是白噪音,首尾突变的台阶会在耳机里听到明显的咔哒声。
  6. 点「播放」开始试听,点「停止」结束。点「下载 WAV」把当前参数下的完整缓冲编码成 16 位单声道 PCM 文件保存到本地。
  7. 「复制对照表」把下方三分之一倍频程表按 TSV 复制,可直接粘进电子表格;表格下方的「加载更多」用于展开被折叠的其余频段行。

这个白噪音生成器能解决什么问题

一是把「到处找一段环境音」换成「现场按需要的频谱合成」。网上流传的白噪音文件往往来历不明、码率参差,还可能被人为加入音乐或提示音。这个白噪音生成器直接由算法生成采样点,你拿到的是纯净的噪声,没有任何附加内容,也不用担心版权与来源。

二是让参数可复现、可对照。噪声类型、采样率、时长、音量、淡入淡出全部显式列出,同一组参数随时能再生成一次;频谱形状不是「听起来差不多」,而是由明确的斜率定义:白 0 dB/oct、粉红 −3.01 dB/oct、棕 −6.02 dB/oct(功率谱密度口径)。

三是纠正「白噪音等于粉红噪音」这个常见混用。很多人把任何「沙沙声」都叫白噪音,但两者在高频差得很远:以 1 kHz 为 0 dB,三分之一倍频程带级在 20 kHz 处白噪音是 +13.0 dB、粉红噪音是 +4.3 dB,相差约 8.7 dB。选错类型,听感会明显偏「尖」或偏「闷」。

四是完全离线、不上传任何内容。合成、归一化、淡变、编码都在当前页面用 Web Audio 与 DataView 完成,没有任何网络请求,也不会把音频写进浏览器存储。

本页不做这些事:不承诺改善睡眠、不承诺提升专注力、不做任何医疗用途的暗示,也不提供「治疗耳鸣」之类的说法。噪声只是声音,效果因人而异。想测试自己的耳机或麦克风,可以用页面底部的「麦克风测试」;想给练习定时,可以用「番茄钟计时器」或「HIIT 间隔训练计时器」。

生成原理:频谱形状、Web Audio 缓冲与 WAV 封装

噪声的「颜色」由功率谱密度(PSD)的斜率定义,不是由振幅决定。白噪音的每个采样点互相独立、取自同一均匀分布,因此单位带宽内的功率处处相同,PSD 是常数,斜率记作 0 dB/oct。粉红噪音要求 PSD 与频率成反比 1/f,也就是每个倍频程内功率相同,斜率是 −10·log10(2) = −3.0103 dB/oct。棕噪音(也叫布朗噪音、红噪音)要求 1/f²,斜率是 −20·log10(2) = −6.0206 dB/oct。

这里有个几乎所有人都踩过的换算陷阱。上面那组数字是「每赫兹密度」的斜率。如果你用实时频谱仪按三分之一倍频程或倍频程读数,读到的带级要再加 +3.01 dB/oct——因为带宽本身随频率翻倍,带内功率等于密度乘带宽。换算后,带级斜率是:白噪音 +3.01 dB/oct、粉红噪音 0 dB/oct、棕噪音 −3.01 dB/oct。粉红噪音的带级在三分之一倍频程上是一条水平线,这正是它听起来最「自然」的原因。本页实测(4 秒缓冲、4096 点 Welch 平均、100 Hz~10 kHz 最小二乘)得到白 +2.75、粉 −0.18、棕 −2.67 dB/oct,与理论值相差在 0.3 dB/oct 以内。

三种噪声分别怎么算。白噪音最简单:每个采样点取 2·rand()−1,落在 [−1,1] 上均匀分布,理论 RMS 为 sqrt(1/3) = 0.577350,波峰因数正好是 sqrt(3) = 1.732。粉红噪音用 Paul Kellett 在 2000 年给出的 7 极点近似:把一路白噪音同时喂给 7 个一阶低通,再把输出加权求和,用一组极点的叠加去逼近理想的 1/f 曲线。棕噪音用一阶泄漏积分器 y[n] = (y[n−1] + 0.02·x[n]) / 1.02——分母取 1.02 让直流增益恰好等于 1,既实现 −6 dB/oct 的积分特性,又不会像「裸积分」那样让直流分量慢慢漂出量程。

缓冲、归一化与淡变。生成一段长度为「采样率乘时长」的 Float32Array 后,先算它的实际 RMS,再乘以增益把它拉到目标 RMS(10^(dB/20))。归一化是必要的:三种噪声的原始 RMS 相差极大(实测白 0.577、粉 1.774、棕 0.058),不归一化的话切换类型时音量会跳变 30 dB 以上。随后按淡入淡出样点数套线性斜坡,最后交给 AudioBufferSourceNode 播放;把该节点的 loop 设为 true,缓冲会首尾相接无限循环。

WAV 文件的 44 字节头。导出时按 RIFF/WAVE 规范写定长头:偏移 0 写 RIFF,偏移 4 写「36 加数据字节数」,偏移 8 写 WAVE,偏移 12 写 fmt (注意末尾有一个空格),偏移 16 写子块长度 16,偏移 20 写格式码 1(表示 PCM),偏移 22 写通道数 1(单声道),偏移 24 写采样率,偏移 28 写字节率(采样率乘 2),偏移 32 写块对齐 2,偏移 34 写位深 16,偏移 36 写 data,偏移 40 写数据字节数。浮点采样转 16 位整数时,正值乘 32767、负值乘 32768,这个不对称是为了让取值范围正好覆盖 −32768 到 +32767 而不溢出。

完整示例(数值仅作演示)

示例条件与打开页面时的默认值一致:白噪音、44100 Hz、30 秒、−18 dB、淡入 0.80 秒、淡出 1.20 秒。逐项算一遍:

切换到粉红噪音时,同一目标 RMS 下的增益会小得多:粉红噪音实测原始 RMS 约 1.774,增益只有 0.125892 / 1.774 = 0.07097(−22.98 dB);棕噪音原始 RMS 约 0.0579,增益反而是 0.125892 / 0.0579 = 2.1743(+6.75 dB)。也就是说,在相同听感音量下,棕噪音需要放大、粉红噪音需要大幅衰减——这正是「归一化不能省」的直接证据。切到棕噪音时还要注意,它的低频游走让波峰因数随缓冲变长而上升:4 秒缓冲实测 3.94,10 秒 4.41,30 秒 4.56,60 秒升到 4.64,所以缓冲越长,留给峰值的余量要越多。

三种噪声频谱斜率与三分之一倍频程电平对照表

下表按 ISO 266 的 30 个三分之一倍频程中心频率列出三种噪声的功率谱密度相对电平,统一以 1 kHz 为 0 dB 基准。默认显示前 12 行,点「加载更多」看全部 30 行;「复制对照表」按 TSV 复制全表。

中心频率白噪音 密度粉红噪音 密度棕噪音 密度
25 Hz0.0 dB−16.0 dB−32.0 dB
31.5 Hz0.0 dB−15.0 dB−30.0 dB
40 Hz0.0 dB−14.0 dB−28.0 dB
50 Hz0.0 dB−13.0 dB−26.0 dB
63 Hz0.0 dB−12.0 dB−24.0 dB
80 Hz0.0 dB−11.0 dB−21.9 dB
100 Hz0.0 dB−10.0 dB−20.0 dB
125 Hz0.0 dB−9.0 dB−18.1 dB
160 Hz0.0 dB−8.0 dB−15.9 dB
200 Hz0.0 dB−7.0 dB−14.0 dB
250 Hz0.0 dB−6.0 dB−12.0 dB
315 Hz0.0 dB−5.0 dB−10.0 dB

怎么读这张表
  • 三列都是「单位赫兹功率」的相对电平,所以白噪音一列恒为 0.0 dB:这正是白噪音的定义。粉红与棕的数值按 −3.0103 × log2(f/1000) 与 −6.0206 × log2(f/1000) 得出,例如 25 Hz 相对 1 kHz 是 5.32 个倍频程,粉红得 −16.0 dB、棕得 −32.0 dB。
  • 20 Hz 到 20 kHz 共 log2(20000/20) = 9.966 个倍频程,所以粉红噪音从 20 Hz 到 20 kHz 的密度总落差是 3.0103 × 9.966 = 30.0 dB,棕噪音是 6.0206 × 9.966 = 60.0 dB。
  • 换成频谱仪上按三分之一倍频程读到的带级时,每一列都要加上 3.0103 × log2(f/1000):白噪音变成 +3.01 dB/oct 的斜线,粉红噪音变成一条 0 dB 的水平线,棕噪音变成 −3.01 dB/oct 的斜线。
  • 相邻两个三分之一倍频程中心频率之比是 2^(1/3) = 1.2599,所以每行之间的落差恒为 3.0103 / 3 = 1.0034 dB(粉红)与 2.0069 dB(棕)。表里数值按 0.1 dB 取整,因此会出现 −21.9 这样的尾数。

输入范围、边界与取整说明

常见问题

白噪音、粉红噪音、棕噪音到底该选哪个?

按你要模仿的声音选。想盖住说话声、键盘声这类中高频干扰,选白噪音,它每个赫兹功率相同,高频成分最多,掩蔽中高频最直接。想接近雨声、溪流、风扇这类自然声,选粉红噪音,因为它的三分之一倍频程带级是平的,能量分布最接近人耳的「等响」感觉。想接近远处车流、雷声、飞机舱压这类低频轰鸣,选棕噪音,它低频最重。三者没有优劣,只有匹配与否。

为什么别人说「粉红噪音是 −3 dB/oct」,我按倍频程量却是平的?

因为两句话说的是两个不同的量。−3 dB/oct 描述的是功率谱密度——每赫兹的功率随频率下降 3 dB。而频谱仪按三分之一倍频程或倍频程读数得到的是带级——带内总功率。带宽本身随频率翻倍,功率等于密度乘带宽,所以带级要把密度的斜率加上 +3.01 dB/oct,粉红噪音的带级斜率就变成 −3.01 + 3.01 = 0,是一条水平线。两者都没有错,只是口径不同。

为什么白噪音听起来比粉红噪音「尖」、比棕噪音「吵」?

因为在相同 RMS 下,白噪音的能量更多落在人耳最敏感的高频区。人耳在 2 到 5 kHz 附近灵敏度最高,而白噪音在 20 kHz 处的三分之一倍频程带级比 1 kHz 高出 +13.0 dB,粉红噪音只高出 +4.3 dB,棕噪音反而低 −13.0 dB。高频越多,听感就越「尖」、越「沙」。这也是为什么很多「助眠白噪音」实际上用的是粉红噪音。

下载的 WAV 为什么是 44 字节头加 PCM,而不是 MP3?

因为 WAV 是无损的容器,写起来只是「44 字节定长头加原始采样」,不依赖任何编码库,浏览器里用 DataView 就能逐字节写出来,几毫秒完成。MP3 需要完整的编码器,体积虽小,但会引入有损压缩的量化噪声,对本来就是噪声的信号没有意义的收益。如果要更小的文件,下完可以用任意音频软件转成 Opus 或 FLAC。

为什么第一次点「播放」没有声音?

这是浏览器的自动播放策略,不是工具故障。Chrome、Edge、Safari 都要求音频上下文必须由一次真实的用户手势启动,否则 AudioContext 会停在 suspended 状态。本页在检测到该状态时会自动调用 resume(),所以只要你是「点按钮」而不是用脚本触发,就能正常出声。若仍无声,请检查系统音量、浏览器标签页是否被静音、输出设备是否选对。

这个工具会把音频或我的操作上传吗?

不会。噪声合成用 crypto.getRandomValues 取随机数,归一化、淡变、WAV 编码全部在当前页面的 Float32Array 与 DataView 上完成,下载走 Blob 与 URL.createObjectURL,整个流程没有任何网络请求,也不写入本地存储或 Cookie。想自己验证,可以在开发者工具的 Network 面板里边点播放边观察,不会出现新的请求。

用它当助眠或专注的背景音,科学上站得住吗?

噪声掩蔽是真实存在的现象——用平稳的声音盖住环境里的突发噪声,确实能让部分人更容易忽略干扰,这属于基础的声学掩蔽。但个体差异很大:有人觉得噪声帮助集中注意力,也有人觉得持续的背景声反而更累。本页只提供声音合成工具,不承诺改善睡眠、不承诺提升专注力、不构成任何医疗建议;如果存在耳鸣、听力下降或睡眠障碍,请咨询医生。

把音量拉到 0 dB 长期听会伤听力吗?

0 dB 是数字域满量程,不等于任何固定的声压级,实际声压由耳机灵敏度和设备输出决定,可能远超 85 dB(A)。NIOSH 的建议是 85 dB(A) 累计不超过 8 小时,且每加 3 dB 允许时长减半。稳妥的做法是:从 −30 dB 左右开始,调到「能盖住环境噪声但不需要刻意去听」的程度,连续聆听每隔一小时休息几分钟,绝不调到耳朵出现嗡鸣或闷胀感。

相关工具