[專業涵養] 遮蔽音

Noise 的畫面Mac OS X 上面,有一套由 Blackhole Media 所開發的免費軟體叫 Noise (以下稱 Noise.app) ,這套軟體祇有一個功能:隨機產生白色噪音 (White Noise) 或粉紅色噪音 (Pink Noise) ,並且讓妳調整音量。

這到底是拿來做甚麼的呢?這其實是用來遮蔽 (mask) 環境中的聲音的。當妳需要專心工作,而周遭總是有繁雜的聲音時,就可以選用這兩種聲音來加以遮蔽。一般來說,通常的情況下妳可以選用白色噪音,而粉紅色噪音則是特別針對說話聲的遮蔽材料。為什麼可以這樣做?請聽我慢慢解釋。

首先有一個很重要的觀念要釐清:響音心理學 (Psychoacoustic) 上的噪音 (Noise) 跟通常聲學上的噪音定義並不相同。在響音心理學中,任何妳所不想聽到的聲音都算噪音;而在一般聲學上,噪音則有特定的種類。因此我們會利用一般聲學上的噪音,作為響音心理學上的遮蔽音 (Masker) ,讓妳聽不到那些妳不想聽到的聲音(響音心理學上的噪音)。

人們所不想聽到的聲音有很多種,針對不同的(響音心理學上的)噪音,又可以選用不同的遮蔽音,以達最大效率。一般所使用的遮蔽音,也就是聲學上的噪音;按照聲學慣例,人們習慣用「顏色」來表示不同的噪音。這個表示方法是借用光譜,把人耳所能聽到的頻率範圍 20Hz ~ 20kHz 套上顏色, 20Hz 頻率低,相對來說波長比較長,所以對應到紅色;然後依序是妳所熟知的橙、黃、綠、藍、靛,而 20kHz 那一端頻率較高,對應到的就是波長較短的紫色;接著把聲音訊號透過快速傅立葉轉換 (Fast Fourier Transform, FFT) 在這個聲譜上顯示成頻譜圖 (Spectrum) 。

如果在每一個頻率上,聲音的能量都均等的話,就好像是所有的顏色都具備的光⸺也就是白色光,因此這樣的聲音會被稱做白色噪音。因為白色噪音在每一個頻率上的能量均等,所以也成為最被廣泛運用的遮蔽音⸺既然妳不知道想遮蔽掉的噪音分佈在哪些頻率,索性就遮蔽所有的頻率。下圖是我用 Adobe Audition 所產生出來的白色噪音 (white-audition.wav, 長一分鐘整) 進行 FFT 的結果:
白色噪音的 FFT ,各頻率的能量均等
妳可以看到,這個聲音在各個頻率的能量都是一樣高的。

然而白色噪音在每個頻率的能量都一樣強,所以要製造特定音強的白色噪音時,所會消耗的總能量就會比較大。如果妳能夠得知所要遮蔽的聲音的特性,就可以選用不同的遮蔽音,這樣就可以用較少的能量,而達到相同的功效。

以人類說話的聲音來說吧。一般描述語音的產生,大概都是援用 Fant 自 1960 起所提出的理論及其後續的研究,使用聲源—慮波器模型 (The Source-Filter Model) 來加以解釋,認為聲音是由聲帶振動所產生,經過聲道 (Vocal Tract) 濾波,最後再加上來自口部的發散作用,纔形成了語音。

考慮聲帶的振動以及口部的發散作用,語音的能量在本質上乃是與頻率成反比的。因此最有效遮蔽語音的材料,就是能量與頻率成反比關係的聲音,也就是粉紅色噪音。下圖是我用 Adobe Audition 所產生出來的粉紅色噪音 (pink-audition.wav, 長一分鐘整) 進行 FFT 的結果:
粉紅色噪音的 FFT 結果,能量與頻率成反比
上面這個粉紅色噪音又被稱做頻率反比 (1/f) 噪音,因為它的能量分佈與頻率成反比,或者說是每一個八度音程 (Octave) 能量就衰退 3 dB 。其實在臨床聽力學上另外還有專門的語音噪音,是用於遮蔽語音的;不過在產生上,還是以粉紅色噪音最為經濟也最為常用。

經過上述的介紹,妳大概對於這種遮蔽音的使用,也有了一些瞭解了。除了我們一開始提過的 Noise.app 之外,其實在 Windows 上也有類似的產品,像是由 Vector Media Software 所發售的 SoundMasker

SoundMasker 介面的縮圖SoundMasker 的功能比 Noise 多了一些:在它的畫面左邊除了白色噪音與粉紅色噪音外,還有咖啡色噪音 (Brown Noise) 、藍色噪音 (Blue Noise) 以及其他預先定義好的噪音種類;妳可以同時混用多種不同的噪音,利用中央的控制棒分別指定不同的音量,並且在右邊還可以選擇不同的低通濾波器 (Low-pass Filter) 。妳可以把搭配出來的選擇儲存成一份設定,也可以把它錄製起來,然後拿到其他裝置裏播放。

看起來很不錯?但是我自己實際試用起來,卻覺得他所產生的遮蔽音就是有那麼一點怪,所以我檢查了一下,發現 SoundMasker 並不真的是以程式亂數產生遮蔽音!在 SoundMasker 的程式目錄中,妳可以找到一些 .wav 的波形檔,像是 White.wavPink.wav 等,原來它偷偷用了預先錄製好的遮蔽音片段,然後祇是再即時加以混音與濾波而已啊!於是我把這兩個檔案也餵進 Adobe Audition 進行分析。它的白色噪音樣本分析起來如下圖:
SoundMasker 裏的白色噪音樣本, FFT 之後發現高頻部分的能量略多
這個結果就沒有之前我用 Adobe Audition 所產生出來的好,仔細一點看就可以發現能量的分佈並不平均,而且高頻部分的能量其實比低頻部分的能量略多了一點。

同樣地, SoundMasker 裏的粉紅色噪音分析起來也不大理想:
SoundMasker 裏的粉紅色噪音樣本, FFT 之後發現低頻部分的能量略少
低頻部分很明顯地不夠理想,可以看出能量略有不足。

雖然 SoundMasker 裏的遮蔽音樣本沒有非常優異,但是其實還不會太差,可是我聽起來的結果真的不大對勁。基於實證的精神,我使用了 SoundMasker 內建的錄音功能,把這兩種遮蔽音分別錄起來,然後加以分析:

首先是白色噪音 (white-soundmasker-rec.wav, 長一分鐘整) :
用 SoundMasker 錄製的白色噪音片段, FFT 之後發現高頻部分的能量增加變得更明顯,而且受到低通濾波器影響
從圖中我們明顯看到 2000 Hz 至 3000 Hz 部分的能量明顯偏多,然後在 3500 Hz 處以上就完全沒有能量了。這顯然是受到 SoundMasker 的低通濾波器影響所致⸺沒錯,那個濾波器妳甚至關不掉!

接下來是粉紅色噪音 (pink-soundmasker-rec.wav, 長一分鐘整) :
用 SoundMasker 錄製的粉紅色噪音片段, FFT 之後發現受到低通濾波器影響
同樣地,粉紅色噪音也受到了低通濾波器影響,因而不甚理想。

結果就是 SoundMasker 看似功能較多,其實卻是處處受限,尤其對於 4000Hz 以上的環境噪音一點抑制能力也沒有;如果真的單單為了遮蔽背景噪音而花 30 美元要買這套軟體,恐怕實用性上來說還是沒有 Mac OS X 上免費的 Noise.app 理想。(不過這話說得太早了⸺我還沒有分析過 Noise.app 所產生出來的東西呢!)

更新:我後來拜託 mjhsieh 幫我把 Noise.app 產生出來的遮蔽音錄起來,然後也用相同的方法分析。請見底下的說明:

首先是白色噪音 (white-noise.app-rec.wav, 長一分鐘整) :
用 Noise.app 產生的白色噪音片段, FFT 之後相當完美
從圖中我們可以發現這個聲音跟先前用 Adobe Audition 所產生出來的白色噪音可以說是一樣完美的,各個頻率上的聲音能量都很一致,比 SoundMasker 播放出來的好上許多。

接下來是粉紅色噪音 (pink-noise.app-rec.wav, 長一分鐘整) :
用 Noise.app 產生的粉紅色噪音片段, FFT 之後發現似乎不是很標準
咦,這個粉紅色噪音分析之後的結果怪怪的,似乎低於某個頻率的部分各頻率能量均相等,在該頻率以上的部分纔符合粉紅色噪音 1/f 的特性……為了要看得更詳細點,讓我們把縱座標放大來觀察:
用 Noise.app 產生的粉紅色噪音片段, FFT 之後發現 500Hz 以下的部分並不標準
從這張圖來看就很清楚了,的確在低於 500Hz 的部分比較像白色噪音⸺各個頻率的能量均等;而在高於 500Hz 的部分則跟標準的粉紅色噪音無異。

我們可以看到 Noise.app 所輸出的遮蔽音比 SoundMasker 播放的還要理想許多,可是為什麼這個粉紅色噪音會不標準呢?我有想到幾個可能的原因:第一,可能 Noise.app 認為這個樣子的遮蔽音,會比正確的粉紅色噪音來得實用(也就是更能有效率地遮蔽語音混雜的環境噪音);第二個可能就是我們在轉錄 Noise.app 的聲音時,哪裡沒有設定好,使得原本的聲音遭受尖峰消除 (Peak-Clipping) 處理,把大於 -50 dB 的部分都弭平了,纔會變成現在這樣。(但是這樣的話,轉折點 (Knee-point) 剛好在 500Hz 似乎又太巧了點)

不過不管怎麼說,我覺得這麼一比較下來, Noise.app 還是比 SoundMasker 實用多了; SoundMasker 光在花俏的功能上下功夫,卻沒有把根本顧好,有點可惜。要到哪一天, Windows 上纔會有像 Noise.app 這樣輕巧實用的小程式呢?

jedi.org: