回聲
回聲 (Echo)
國立臺灣大學電機工程學系 伍庭曄
回聲,或回音 (echo) 一詞大家一定不陌生,在空曠的禮堂大喊、學校的室內體育館運球抑或是對著山谷放歌,都能體驗到回聲的物理現象。而本篇文章的目的即在解釋回聲此物理現象,並大略的介紹描述聲波的方式以及介紹在波動學、力學及工程數學中都極其重要的運算:折積(又作「捲積」,convolution)。
當聲波遇到障礙物時,除了部分以「隔牆有耳」形式穿過障礙物的聲波外,另一部分的聲波會反射回來。由於相較於直接傳播的聲音,反射聲波所經過的路徑較長,因此反射聲波會比直接傳播的聲音晚被聽到。然而若依此定義,除非在荒郊野外空曠地,幾乎任何地方都有回聲的存在,因此就聽覺的效果上我們對回聲有更嚴格的要求:兩聲波的時間間隔需大於 1 / 15 秒(或另一說約 0.1 秒)。如果間格小於 1 / 15 秒,人耳將會無法清楚分辨前後兩聲音,只能聽到被延長的聲音。此種被延長的聲音有如在浴室唱歌等,稱之為殘響 (reverberation),有別於回聲。然而室溫下的聲速大約是每秒 340 公尺,所以站在發聲處的人若要清楚聽到回聲,他至少需要站離障礙物 11 公尺。
然而對於不同的聲源及不同的空間,產生的回音也不盡相同。那麼聲源的音波函數 $$x(t)$$ 和接受者耳中,有回音的 $$y(t)$$ 存在著甚麼關係呢?
首先此處的「音波函數」必須要多加說明一下:中學物理告訴我們聲波是疏密波,也就是空氣分子在空間中的分佈呈現局部的「密」和「疏」,造成了局部的「高壓」和「低壓」因而造成空氣分子的震動而產生聲音(見圖一)。
如果我們想紀錄空間中氣體這種偏向高壓、低壓,或偏向密、偏向疏的變化,通常我們會將這種變化幅度看成是一個隨時間和空間變化的函數 $$f(x,y,z,t)$$。上圖所描繪的是一個一維(只考慮沿著傳遞的方向)聲波凍結在某個時刻時,氣體變化幅度隨空間的變化,又由於其只隨位置改變,可以用諸如 $$f(x)=\sin x$$ 的函數來描述。若加入時間的因素,$$f(x,t)=\sin(x-t)$$ 就是一個沿著正 x 軸傳遞的弦波。除了凍結時間,另一個減少變數的方式便是固定位置。對於一個在固定位置接收聲波的人來說,由於 x 固定,我們可以用例如 $$f(x)=\sin x$$ 的函數來表示聲波。這個概念就好像觀察一個放置在固定處而正在震動的鼓皮,其鼓面的位置一樣。
我們現在好奇的問題便是,是否存在一種轉換,能從發聲者的聲波訊號 $$x(t)$$ 計算出回音的訊號 $$y(t)$$?答案是肯定的!我們可以找到另一個隨時間變化的函數 $$h(t)$$,並且由 $$y(t)=x(t)\star h(t)$$ 來得到回音訊號,我們稱 $$h(t)$$ 為脈衝響應 (impulse response),而 $$\star$$ 的符號即為折積 (convolution)。為了避開一些積分上的運算,以下我們先以簡單的離散數列作這些觀念的解釋。
假如原聲波 $$x(t)$$ 我們每 0.1 秒去測一下它的值,因而得到一個數列 $$x[0],x[1],x[2],…,x[n]=x(0.1),x(0.2),x(0.3),…,x(0.1n),$$,如圖二所示。
假如想得到有回聲版本的 $$y[n]$$,$$y[n]=x[n]\star h[n]$$ 是甚麼意思?
首先我們先粗淺定義一下「回聲」:
定義「回聲 A」:在聽到原始的聲波後,隔一秒,也就是數列中間隔十個數字後會聽到回聲。
如果再更貼近現實一點,我們可以額外定義「回聲 B」:在聽到原始的聲波後,隔一秒會聽到減弱一半的回聲,再隔一秒聽到再減弱一半的回聲。
相信各位看到這裡可能已經用一張紙和一支筆作圖就解出了下圖的答案了:
然而 $$x[n]$$ 和 $$y[n]$$ 間的關係可以由下列的式子算出:
$$\displaystyle h_A[n]=\left\{\begin{array}{ll}1&,for~n=0\\0.5&,for~n=10\\0&,otherwise\end{array}\right.$$
$$\displaystyle h_B[n]=\left\{\begin{array}{ll}1&,for~n=0\\0.5&,for~n=10\\0.25&,for~n=20\\0&,otherwise\end{array}\right.$$
並且
$$\displaystyle y_A[n]=x[n]\star h_A[n]=\sum^\infty_{k=-\infty}x[n-k]h_A[k]$$
以及
$$\displaystyle y_B[n]=x[n]\star h_B[n]=\sum^\infty_{k=-\infty}x[n-k]h_B[k]$$
看出端倪了嗎?此處的 $$h_A[n]$$ 和 $$h_B[n]$$ 和我們訂的回聲規則一模一樣,一五一十地反映出「隔多久會有多少變化」。細心的讀者可能已經發現,如果輸入的訊號只有一個脈衝,即
$$\displaystyle x[n]=\left\{\begin{array}{ll}1&,for~n=0\\0&,otherwise\end{array}\right.$$
則得到的 $$y[n]$$ 就是 $$h[n]$$ 自己,這也就是 $$h[n]$$ 之所以叫做脈衝響應的緣故。在信號處理的領域,離散時間的脈衝我們會用
$$\displaystyle \delta[n-k]=\left\{\begin{array}{ll}1&,for~n=k\\0&,otherwise\end{array}\right.$$
來表示,因此 $$h[n]$$ 又可以表示為
$$h_A[n]=\delta[n]+\delta[n-10]$$
$$h_B[n]=\delta[n]+0.5\delta[n-10]+0.25\delta[n-20]$$
而在物理上由於時間、空間的連續性,連續時間的 $$\delta(t)$$ 函數定義如下
$$\displaystyle \delta(t)=\left\{\begin{array}{ll}\infty&,for~t=0\\0&,for~t\ne 0\end{array}\right.$$,且滿足 $$\int^\infty_{-\infty}\delta(t)dt=1$$
$$y(t)$$ 和 $$x(t)$$ 的關係則可以寫成
$$\displaystyle y(t)=x(t)\star h(t)=\int^{\infty}_{-\infty}x(t-\tau)h(\tau)d\tau$$
我們可以發現連續時間的折積其實就是當 $$x[n]$$ 與 $$x[n+1]$$ 的取樣間隔趨於無限小時的極限。脈衝響應在力學、波動學中尤其重要,因為探討一個任意的輸入其物理系統產生的影響或許很複雜,但若能將輸入拆解成無數的脈衝疊加,將會有很好的數學性質。
另一個和回聲很像的「殘響」效果,其物理成因與回聲類似,但其脈衝響應與回聲有明顯的不同:回聲有明顯能區分的脈衝,並且與原聲至少有將近 0.1 秒的間隔,而殘響則是有眾多脈衝以短時距密集分布(如圖四),因此聽起來像是延長的聲音。
參考文獻
- Halliday D., Resnick R., Walker J. (2011). Principles of Physics Extended, 9th Edition International Student Version.
- Echo — http://en.wikipedia.org/wiki/Echo
- Convolution — Wikipedia. http://en.wikipedia.org/wiki/Convolution