Spatialisation領域裡面 或者是多聲道控制領域裡 很重要的一門課題 就是虛擬音源的設立模擬
由於並非所有的錄音 都是以既定的多聲道規格 去收音的 因此 在事後製作 以及重新模擬一個虛擬的音源 及相關的音場 變成了異常的重要
大部分的空間處理 或是模擬軟體 都一定會牽涉到多聲道編解碼的問題 也就是說 當一個虛擬音源 被放置在一個虛擬的音場空間內 其單一訊號 要如何分配到相關再生重建此音場的喇吧的一個重要問題
別以為這樣多了幾顆喇吧 好像 就只是兩倍或三倍於傳統立體聲的數量 因此 仍然從立體聲的觀點去看待多聲道控制 其實 整體的複雜程度 應該是指數成長 而非倍數
大部分的3D AUDIO 多聲道 spatialisation處理 都會牽涉到兩個層面 (或者是說 分成兩種層面來解釋 會比較好理解) 第一 就是所謂 要實現聲音定位感 第二 要能實現聲音的空間感
事實上 以目的而論 完美的模擬音源再生 當然都是結合了好的定位跟空間資訊 缺一不可 不過 在實行上 我們還是會將兩者分開來處理 會比較方便
而定位感的部分 所謂的sound localisation 會從兩個因素上去判斷 一者為ILD (interaural level difference) 另一者為ITD (interaural time difference) 白話的說起來 就是音量差距 跟時間差距 因此 兩耳之間的音量差距 或是時間差距 造就了人類去分辨音源的來源及定位
而在多聲道實現上 雖然整個概念 以及數學模型 跟立體聲有很大的差距 可是若以定位目的來看 大致上 仍舊會在ILD 跟ITD上下手
純粹以ILD來做多聲道PANNING的規格 所要解決的問題 就只是要去解決多個喇吧 所建構起的音場內 聲音的平均分布以及合理性 代表作如ambisonics 跟VBAP (vector based amplitude panning)
但是若要考慮到ITD 更多的問題 就來了 簡單的說法 我們僅需要額外再考慮 每個聲道 或是喇吧之間的細微時間差距即可 但是 實際上操作起來 並不是這麼一回事
假設 虛擬的音源 是靜態的 不會移動的 那還好處理 若一個虛擬音源S, 在N顆喇吧所組成的音場內 則每個喇吧 SPn 所會擁有的ITD 則會根據音源S的位置而定 依序可得 SP1=若干ms的delay,SP2=若干ms的delay,SP3......SPn=若干ms的delay
但是 如果今天 虛擬的音源 是會移動的 問題就大了 我們無法在單純的僅用幾何上的算術 就把相對應的SPn的delay給算出來 因為 這變成 每個SPn的時間差 隨時都在變動
這樣說起來 好像沒什麼大不了 可是請仔細想想 所謂的一個虛擬音源 其聲音來源 不外乎兩種 1.外部的麥克風 或是音訊音源 2.現成的聲音檔案
假設此虛擬音源 是靜止的 那麼 我們只要令 SPn中 delay最小的 甚至沒有delay設定的喇吧 先開始播放此音源 然後 依據每個SPn的延遲 依序播放下去即可 比方說 第一個喇吧 有1ms的延遲後 開始播放此音源 而第二個喇吧 再等1ms的延遲 第三個喇吧 再等1ms..... 一切都可以運作很正常
若假設 此虛擬音源開始移動 變代表著 每個SPn的延遲開始有了變動 回到剛才的假設 第一個喇吧會從1ms的延遲 經過0.5秒後 增加到2ms 問題來了 請問 在這0.5秒的時間內 此虛擬音源的訊號 要怎麼處理呢?? 對於SPn來說 訊號從一開始產生後 就必須是連續不斷的 線性的 因此 根本不可能 從1ms 突然跳到xxms的時間差 要達到這樣的目的 等於是要硬生生的將音源(無論是聲音檔案 或是現場的input)切成兩半 從新的時間點繼續播放 否則不可能改變時間差 但是 這樣就會出現一個很不合理的現象 : 在自然生活中怎麼可能有聲音 會突然斷掉 跳到另一個時間點上去呢? 非線性在日常生活中 是不可能存在的
因此 我們必須重新回頭思考 一個"移動中"的音源 在現實生活中 會有什麼樣的情況發生 於是 就不得不去重視 "都普勒效應" 的存在 跟應用
都普勒效應的公式如下 : f={(v+vr)/(v-vs)}*f0
其中 f為 想要求得的最終頻率變化 v為正常一般介質下的音速 vr為聆聽者的速度(若靠近音源則為正 反之為負) vs為音源的速度 (若靠近聆聽者則為負 反之為正)
現在讓我們回到剛才的問題 要如何讓這0.5秒內 由1ms的延遲增加到2ms 最簡單的做法 就是非線性的粗魯做法 直接把1ms 跳到2ms 也就是說 此虛擬音源 中間會有整整1ms的斷層突然消失
但是我們說過這是不允許的 因此 換個角度來想 要如何 讓虛擬音源 在這0.5秒內 可以從1ms的延遲逐漸變化到2ms 達到一個線性的目的
若用doppler的角度去解釋 1ms的秒差*音速340m/s的話 就是等於34cm 也就是此虛擬音源的直線上運動遠離了聆聽者(圓心)34公分 在0.5秒內 因此速率為0.68m/s 代入上面公式 可得340/340+0.68=0.998 因此 假設虛擬音源的頻率為440hz的La 在此移動中 我們會聽到440*0.998=439 的大約頻率
這是現實情況
若以聲音檔案 或是數位訊號來看 要做到這樣看似簡單的事情 卻還滿難的 不過還是可以達成
如同上面所說 若時間是延續的 線性的 那麼 要在0.5秒內 讓聲音延遲從1ms變成2ms 一個很直覺的方法 就是把播放的速度放慢 因此 當慢到2ms的延遲後 再回復正常速度 我們知道 當聲音檔案放慢的同時 音高頻率也會降低 這其實 就是任何波形運動 簡諧運動都會存在的現象 都普勒效應 一樣可以在播放聲音檔案中實現出來
結論 在以ITD implementation內的多聲道虛擬系統中 只要扯的上時間差距 就必須要扯到都普勒效應 否則無法維持時間上的線性 虛擬音源在移動的過程中 一定會爆音 以及非線性的延遲 但是為求運算效能 只要虛擬的音源 是靜止的 我們大可以放心捨棄doppler 節省運算資源

沒有留言:
張貼留言