白噪音是一種聲音,其功率譜密度在音訊系統能夠重現的每一個頻率上都保持平坦,無論該頻段位於 200 Hz、2,000 Hz 或 20,000 Hz,每個頻段的平均能量都相同。這種頻譜上的平坦性就是白噪音的定義特質,就像白光看起來是所有可見顏色同時組合的結果一樣。因此,白噪音產生器會產生一連串不相關的樣本,將其送入喇叭或耳機輸出,讓聽者聽到一個穩定、無特徵的嘶聲。數位系統無法提供無限頻寬,因此實際上你得到的是一個實用的有限頻寬近似值,僅在裝置能解析的頻率範圍內保持平坦。Lizely 的 白噪音產生器 正是直接在您的瀏覽器分頁中播放這種有界限的數位近似值,並提供一個從 0% 到 100% 的滑桿,以及一個無需淡入淡出或延遲即可結束播放的單擊操作。

white noise generator explained
白噪音產生器解析:數位噪音如何運作

「白」在噪音訊號中的真正意涵

工程師從光學借用了「白」這個詞,因為頻譜的表現方式與陽光經過分光後再重新組合的方式相同。白光在可見光波段內,每個波長所攜帶的能量大致相等;白噪音則在可聽頻段內,每個頻率所攜帶的能量大致相等。這在技術上的說法稱為平坦功率譜密度,這也是 National Instruments 在描述寬頻噪音於頻域中呈平坦時所提到的概念,以及 MathWorks 在文件中記載的有限頻寬白噪音源的定義特質。

平坦並不代表音量。一個完全白色的訊號可能非常安靜,也可能非常大聲;重要的是頻譜的形狀。它也不代表每個樣本都相同。白噪音中的樣本會在每個瞬間跳動變化;唯一不變的是,當你對時間取平均後,每個頻率箱中所包含的平均能量。這個取平均的步驟,正是區分真正的白噪音產生器與隨機音調產生器的關鍵,也正是為什麼任何重複相同樣本,或使用階梯式模式的實作,實際上根本不是在產生白噪音。

數位白噪音產生器如何建立其訊號

數位白噪音產生器是一條具有三項工作的小型管線。首先,它向瀏覽器詢問目前的取樣率,這透過 Web Audio API 經由 AudioContext 公開。Lizely 的工具接受從 8,000 Hz 到 192,000 Hz 的任何取樣率,因此能在常見硬體上順暢執行。其次,它配置正好兩秒的單聲道 Float32 儲存空間,並以從 -1 (含) 到 1 (不含) 均勻分布的偽亂數填滿該緩衝區。第三,它將緩衝區交給一個迴圈播放的 AudioBufferSourceNode,透過一個由滑桿控制的單一 GainNode 反覆播放相同的樣本。

在所接受的最高取樣率下,這個固定的兩秒預算計算如下:

192,000 樣本/秒 × 2 秒 = 384,000 樣本 384,000 樣本 × 每個 Float32 4 位元組 = 1,536,000 位元組 ≈ 1.5 MiB

將緩衝區上限設為兩秒是一個刻意的安全選擇:它能防止不尋常的 AudioContext 配置向瀏覽器索取無限制的記憶體區塊。每次你按下 Start 時,訊號都會以全新的 32 位元種子產生,使用的是 George Marsaglia 在《Journal of Statistical Software》中描述的三位移 xorshift32 遞迴式。這個產生器對音訊用途來說快速且可重現,但並不具備密碼學安全性,因此不應用於產生金鑰、權杖,或任何需要在攻擊者面前保持不可預測性的用途。

如何使用 Lizely 白噪音產生器

由於這個工具在瀏覽器本地端執行,並以保守的音量開始,操作流程非常簡潔。三個步驟就足夠:

  1. 先將裝置輸出音量調低,然後讓工具保持其保守的 15% 起始音量,或進一步調低。
  2. 選擇 Start white noise,並視需要調整 0–100% 的滑桿。
  3. 在離開頁面前,或每當聲音聽起來不舒服時,選擇 Stop。

沒有檔案需要下載,沒有帳號需要建立,也不會請求麥克風權限。Start 會建立正好一個 AudioContext、一個迴圈播放的 AudioBufferSourceNode,以及一個 GainNode。Stop 會將這三者全部拆除並關閉 context,因此重複按下不會堆疊出重疊的播放器。如果瀏覽器因任何原因拒絕啟動音訊,工具會顯示錯誤,並且不會留下任何殘留的播放狀態。

均勻分布與高斯分布振幅:兩種「白」的味道

Lizely 的工具產生的是技術上所稱的有界均勻白噪音:每個樣本都取自 -1 到 1 之間的平坦分布。許多音訊參考資料在描述白噪音時,會將其假設為高斯分布,意即振幅集中在零附近,尾部則向無限大逐漸變細。當樣本彼此不相關、且期望功率譜密度為平坦時,兩者都可以是「白」的,但它們聽起來與測量起來都不一樣。

特性均勻白噪音高斯白噪音
樣本範圍有界,例如 -1 到 1理論上無界
直方圖形狀在整個範圍內呈平坦鐘形曲線,峰值在零
均方功率(單位刻度)1/31
聽起來是白的嗎?是,當樣本不相關時是,當樣本不相關時
易於在瀏覽器中產生是,每個樣本只需一次乘法需要 Box–Muller 轉換

Lizely 的測試套件確認了其範圍、接近於零的平均值、1/3 的均勻均方功率、等於 sqrt(1/3) 的 RMS,以及低延遲一的自相關值,這些正是你對一個不相關均勻來源所預期的結果。分布的選擇在多數情況下影響不大,除非噪音被送入一個假設為高斯統計特性的下游處理程序,例如某些感知模型;若是用於一般聆聽、遮蔽效果或路由測試,均勻白噪音聽起來與高斯白噪音實際上沒有差別。

瀏覽器白噪音訊寬受限的真正極限

真實的音訊系統無法提供無限頻寬。工具所接受的最高取樣率 192 kHz,將奈奎斯特極限設在 96 kHz,遠高於人耳聽力範圍,但仍然是有限的。所接受的最低取樣率 8 kHz,則給出 4 kHz 的奈奎斯特極限,這代表訊號中根本不存在高於該頻率的內容。在所有情況下,產生器在其實際能重現的頻段內都保持平坦,但瀏覽器產生器並不能取代經過認證的聲學測試儀器。想要深入了解瀏覽器實作究竟能達到多接近真實情況的讀者,可以另外閱讀瀏覽器白噪音產生器的準確度指南。

實際的限制也來自播放鏈。音量滑桿僅控制本頁面的線性 GainNode;你的作業系統混音器、瀏覽器音訊管線、喇叭、耳機、擴大機以及房間的聲學特性,全都位於該節點的下游,共同形塑了你的耳朵實際接收到的聲音。任一個環節的變動都可能讓感知音量上下變化,而滑桿本身完全沒有移動,因此滑桿值只是一個工具設定,而不是聲壓的量測結果。

使用音量滑桿安全聆聽

預設 15% 的增益之所以存在,是因為音量很容易被低估,特別是在使用耳機時。較低的起始值讓你在聲音到達不舒服的程度之前,有空間調高滑桿。除此之外,滑桿是本頁面唯一公開的增益級,且接受 0% 到 100% 之間的任何數值。

滑桿位置作用
0%將增益級歸零,使輸出靜音
15% (預設)保守的起始工具增益,並非安全保證
100%工具的最大增益,並未被認可為安全

這些位置都不會告訴你,在你特定的設定下,結果會有多大聲。從低音量開始,只在需要時調高滑桿,如果聲音讓你感到不適,就調低裝置輸出或按下 Stop,並遵循你音訊設備所附的指引。這個工具是一個簡單且可控的訊號來源,並非醫療器材、聽力防護裝置或經認證的聲學測試儀器,亦未聲稱能診斷、預防或治療睡眠、聽力、耳鳴、焦慮或任何其他健康狀況。

若想進一步了解,請參閱白噪音產生器入門指南:快速上手。