陳玨
關(guān)鍵詞:聲源定位;交叉相關(guān);互動裝置
中圖分類號:TP18 文獻標識碼:A
文章編號:1009-3044(2022)36-0023-03
1 概述
人的雙耳可以分辨從三維空間中的各個方向傳來聲音的位置,專業(yè)領(lǐng)域已經(jīng)有很多基于人耳定位原理的研究成果。斯達克(Starkey)是全球定制機式助聽器最大的研發(fā)和制造商,Starkey 的Cetera 技術(shù)使助聽器在大腦中“隱形”。Cetera消除了聲音和大腦處理信號的能力之間的障礙。Cetera算法是一種聲音定位算法,它忠實地再現(xiàn)了立體聲耳機的三維定位,雖然最初是為使用助聽器而設(shè)計的。如果戴上立體聲耳機,聽一些樣本音軌(最著名的樣本是一個理發(fā)店里的立體聲效果),三維定位的準確無誤會令人吃驚。
但實際應(yīng)用中情況較為復(fù)雜,涉及頭部產(chǎn)生的遮擋和外耳邊緣造成的反射。在本研究中僅僅通過使用2組麥克風(fēng)來模擬完整的聽覺系統(tǒng),雖然定位精度不夠高,但低成本、低技術(shù)(Low-Cost & Low-Tech)方式對學(xué)生制作互動裝置原型有實際應(yīng)用的意義。
這個研究的目的是用2組麥克風(fēng)模擬人類在二維區(qū)域的聽覺系統(tǒng)。該研究將解決一類實體互動的I/O系統(tǒng),例如:一個基于傳入聲音方向的轉(zhuǎn)向系統(tǒng)(如:動態(tài)雕塑中的舵機陣列)。使用低成本的微控制器(Arduino)作為系統(tǒng)的處理中心,目前該微控制器及配套傳感器的價格都很便宜,并且在市場上也很容易買到。當然用2組麥克風(fēng),只能在二維空間檢測到傳入的聲音,而無法區(qū)分聲音是來自系統(tǒng)的前面還是后面,但對互動作品的原型演示已經(jīng)夠用了。
定位傳入聲音方向的方法是基于同一音源的聲波到達兩個麥克風(fēng)的時間差,這需要應(yīng)用交叉相關(guān)法和位置估計技術(shù)。這套實時定位(方向)算法是由微控制器Arduino實現(xiàn)。Arduino是一套開源硬件系統(tǒng),在數(shù)字媒體互動設(shè)計方向已經(jīng)被普遍使用,它的低成本和易開發(fā)以及模塊化設(shè)計已經(jīng)讓很多缺乏專業(yè)技術(shù)的藝術(shù)設(shè)計者受益匪淺,本文的實現(xiàn)硬件系統(tǒng)即為Arduino UNO。
2 交叉相關(guān)算法與位置估算
2.1 交叉相關(guān)算法理論
研究的第1 步是對最簡單的時延估計算法:直接交叉相關(guān)算法(Cross-Correlation)的波束成形理論進行測試。
交叉相關(guān)的定義為:時間序列x(t)和y(t)中,兩個變量之間同時或非同時的一種重合關(guān)系[1]。這里x 和y 可以代表在不同地點測得的同一個變量,或代表在同一地點不同時間測得的單一變量。也可以理解為對兩個波形之間相似性的檢測,是應(yīng)用于其中一個波形的時間滯后的函數(shù)。
圖1 是一個交叉相關(guān)的例子,用于測量相關(guān)信號源之間的滯后時間。找到兩個相似信號的延遲時間的表達式由下面的公式給出。
其中x(t)是傳感器x收到的信號,y(t)是傳感器y收到的信號,τ是2個信號之間的延遲時間[2]。交叉相關(guān)結(jié)果的峰值所在點顯示了兩個信號的延遲時間,如圖1所示。有兩種方法可以對信號進行關(guān)聯(lián)。第一種是周期法。如果信號是正弦波或矩形波這樣的連續(xù)周期信號,或者說采樣信號只代表信號整體形式的某些部分,則采用這種方法。之所以說它是周期,是因為當數(shù)據(jù)指標(幅值)超出范圍時,它還可以被轉(zhuǎn)換到范圍內(nèi),例如:x(N+τ)=x(τ)。第二種是非周期法(沒有周期重復(fù)信號出現(xiàn))??梢哉J為信號是不連續(xù)的,或者說采樣的信號代表了信號的整個形式。在目前的項目中互動方式大都為單一聲源的隨機觸發(fā),所以采用第二種方式較多。
2.2 聲源角度計算方法
一旦進行了交叉關(guān)聯(lián),計算出了信號的延遲時間,那就可以在限定條件下預(yù)測或估算傳入聲音的方向,先簡化建模做如下定義:
限定條件:已有當前空氣聲速數(shù)據(jù);聲源離傳聲器較遠(測量值過小對精度影響較大);假設(shè)環(huán)境較理想(沒有回聲和發(fā)射效應(yīng)等)。
位置估計的幾何原理如圖2,聲音傳入角度可以通過簡單的三角函數(shù)計算得到。
α是聲源的方向(角度);
c是空氣中的實際聲速(測量值);
d是2組麥克風(fēng)模塊的間距;
Δτ是聲源信號達到2個麥克風(fēng)的延遲時間(由交叉關(guān)聯(lián)計算得出)。
3 系統(tǒng)設(shè)計
3.1 系統(tǒng)硬件架構(gòu)
圖3是一套完整的互動裝置系統(tǒng)架構(gòu),包含了輸入-處理-輸出整流程。聲源放在輸入傳感器前面的任何地方(可感應(yīng)范圍設(shè)定為20°~160°)。將由2 組麥克風(fēng)接收傳入的聲音信號,然后在系統(tǒng)中進行處理。在實驗裝置中有2個輸出,1個是輸出到電腦(與Unity 進行串口通信)實現(xiàn)UI 響應(yīng),另一個是輸出到舵機,使攝像頭轉(zhuǎn)向音源位置。
前級采集信號使用了DFRobot SKU:DFR0034模擬聲音傳感器,這款MIC聲音傳感器是一款低成本高靈敏度的聲音傳感器,可用來檢測環(huán)境中聲音的強度,并內(nèi)置了放大器(300倍),輸出模擬信號能使用3.3V和5V為基準AD采集,可以用來實現(xiàn)根據(jù)聲音大小進行互動的效果[3]。工作電壓:5V,工作電流:<10mA,最長響應(yīng)時間:220ms,麥克風(fēng)靈敏度在50dBμ。采集的信號為模擬量,不能直接轉(zhuǎn)成分貝數(shù)值,中間的信號處理會非常的復(fù)雜,增益自動調(diào)節(jié)、頻率計權(quán)、積分電路、時間計權(quán),這些是需要硬件電路來實現(xiàn)的,因此不能單靠單片機的程序來實現(xiàn),商家推薦直接使用現(xiàn)成的分貝計模塊,但費用高昂且接口兼容性差。
3.2 系統(tǒng)優(yōu)化
基于成本的考慮,解決方案中的后級處理選用了DFRobot SKU_DFR00126 頻譜分析模塊。這是一款音頻信號分析模塊,此模塊選用了音頻頻譜分析儀芯片MSGEQ7,并有了2.0改進版。通過接收音頻信息,可運算分析出63 Hz、160 Hz、400 Hz、1,000Hz、2,500Hz七個頻段的振幅[4]。使用該模塊和麥克風(fēng)傳感器(DFR0034)配套使用,完成與Arduino 的音頻采集。
因為在互動裝置作品中對聲音的定位需求是感應(yīng)人聲,傳感器不必采集到全聲域。正常人耳能聽見的頻率范圍是20Hz 到20000Hz(圖4)。頻率1000Hz~4000Hz是人耳能感受到的頻率中最敏感的范圍。據(jù)測定,標準普通話語音頻率在500~3000Hz,聲強在10dB~50dB 之間[5]。所以,通過濾波器保留400Hz,1KHz,2.5kHz 頻段的幅值,并根據(jù)不同的展覽環(huán)境設(shè)定不同的閾值。
依靠雙耳的聽覺。從某方位發(fā)送的聲音到達兩耳時,由于聲源與兩耳的距離不同,其間距與聲源的方位密切相關(guān),因此有時間(或相位)差,聲強也不同。低頻定位主要依據(jù)雙耳在相同瞬間接收聲音的時間差,而高頻定位則依據(jù)強度差,而耳郭的聚聲效應(yīng)又有利于高頻定位[6]。完全模擬人耳較為困難,因此實驗中使用了單一不連續(xù)的聲源進行了測試。
所有交叉關(guān)聯(lián)和位置估計技術(shù)的計算都由Ar?duino UNO(ATmega328p微處理器)程序?qū)崿F(xiàn)。
4 測試
4.1 聲速數(shù)值測定
通過在搭建的硬件原型上做了多次實驗,獲得了有價值的實測數(shù)據(jù)。聲源是通過喇叭播放一個人聲樣本聲音,并且以喇叭至麥克風(fēng)中心垂直位置的距離作為半徑,在圓弧上各個角度進行測試。
位置估計技術(shù)第一步是先確定空氣中的聲音傳播速度??諝庵械穆曀僭诓煌牡胤绞遣煌?,這取決于環(huán)境因素。因此,應(yīng)該先進行一個實驗來測量實際測試環(huán)境中的聲速??諝庵械钠骄曀贋閏=317m/s。但這個值會和實際值有較大偏差,空氣中的音速在1 個標準大氣壓條件下的傳播速度是:空氣(15℃)340m/s ,空氣(25℃)346m/s 。表1是測聲速的實驗數(shù)據(jù),實驗測試環(huán)境下的平均聲速c≈337.55m/s。
4.2 誤差校正
第二步是獲取測試系統(tǒng)的誤差校正值,這應(yīng)該是本次研究中最容易忽略的環(huán)節(jié)。2個信號到達麥克風(fēng)的延遲時間受到了很多因素的影響,例如:相同元件存在的公差,單片機A/D 多路復(fù)用造成的2 個通道的延時,這些都將導(dǎo)致信號的相位偏差。
因為數(shù)字媒體藝術(shù)專業(yè)的學(xué)生偏藝術(shù),普遍存在技術(shù)不夠精通的問題,他們不了解也不可能使用專業(yè)領(lǐng)域中的校準方式。所以,時間延遲校準只能通過比較實際和理論計算之間的差異值來計算誤差。實際獲得誤差值的方式是:假設(shè)聲源方向是兩個麥克風(fēng)相對水平(0°或180°)的位置,麥克風(fēng)之間的距離是D,在檢測程序中使用交叉相關(guān)技術(shù)計算的實際延遲是42。查閱了Arduino UNO板微處理器Atmel 芯片數(shù)據(jù)手冊,ATMega328p 的內(nèi)部A/D 轉(zhuǎn)換器的復(fù)用延遲是每通道100μs,使用了2個通道,采樣的延遲時間為200μs。推演出以下公式用來計算到達2個麥克風(fēng)的聲音的延遲時間的理論值:
通過將公式(1)代入公式(2),并設(shè)置D=50厘米和C=338米/秒,那么:s= 42.604。因此,校準值Δs=42.604-42=0.604。在這個實驗中,最終在數(shù)據(jù)校正時,結(jié)果都會向下取整后再對比。
4.3 實驗結(jié)果
聲源被放置在不同的位置,測試結(jié)果記錄在表中,上面的表格顯示了位置估計實驗的結(jié)果。例如,聲源被放置在與系統(tǒng)有關(guān)的60°處(見表2)。延遲時間的理論值是7.4。接下來,理論值減去校準值(0.604 采樣)結(jié)果是6.79,最后得到理論值是6。這個理論值與實驗數(shù)據(jù)獲得的數(shù)據(jù)6 一致,多次實驗的結(jié)果都驗證了這套解決方案是正確的。
5 結(jié)束語
由于A/D采樣頻率不夠高,方向估算的準確性還有待提高。通過替換高精度高采樣率的A/D轉(zhuǎn)換器,以及提高主板控制器的配置,可以有效提高信號采集的有效性和算法的執(zhí)行效率。在現(xiàn)有實驗的基礎(chǔ)上,完全有可能迭代出更高精度的定位計算系統(tǒng),最終目標是更高難度的三維空間的音源定位。
其實,還有另一種優(yōu)化解決方案。通過分頻方式提取人聲的效率和準確率都不高,但通過語音識別技術(shù),將采樣的聲音進行過濾,去除噪聲(如背景聲,雜音)后,只提取符合要求的聲音以提高計算效率,這個方法也將在下一步研究中進行測試。
一種最新的聲源定位技術(shù)也值得關(guān)注,這項新技術(shù)是利用音視一致性深度學(xué)習(xí)的方式實現(xiàn)聲源定位,這與上述研究中利用聲源到達不同麥克風(fēng)的時差,聲強差來定位思路完全不同。深度學(xué)習(xí)利用大規(guī)模視頻數(shù)據(jù)集學(xué)習(xí)聲音與聲源物體之間的一致對應(yīng)關(guān)系,進而達到定位的目的。當然,這項技術(shù)需要更多專業(yè)領(lǐng)域的知識,這將是下一步的研究計劃。
最后,本研究只是針對特定單一聲源方向的一種估算方法。雖然該解決方案有很大的局限性,但在很多作品中都得到了應(yīng)用,也符合設(shè)計目標中的低成本低技術(shù)的要求。