高通Qualcomm QCS400搭配鈺太科技的麥克風跑出聲音定位角度的方法

聲音定位(sound localization)是動物利用環境中的聲音確定聲源方向和距離的行為。例如蝙蝠用音波來偵測障礙物、或獵物的位置;海豚利用「回聲定位」所「看見」的物體,轉換為圖像。這幾十年來,隨著感測技術的進步,而大量的研究通過聲音信號的各種應用已經研究發展至各個不同的領域,並且被應用在民用和軍用各種領域中去檢測、定位的各項未知物體。例如視訊會議、機器人定位、在養殖場內甚至用聲音來但判斷家畜的健康程度。

現在對聲音定位和跟蹤技術的研究方法包括到達時間差(TDOA)和到達角度(AOA),再運用各式各樣不同的演算法延伸出較高的精準度。

在這一篇博文之中,使用詮鼎工程師自行開發的QCS400 Kit搭配麥克風陣列來計算出方位角。

完整介紹:https://www.wpgdadatong.com/solution/detail/36353

硬體架構



圓形的麥克風陣列的麥克風挑選詮鼎自行開發的套件,麥克風是使用詮鼎代理的鈺太科技Zilltek,挑選自博文

”基於Qualcomm智能音箱的改良:鈺太科技Zilltek麥克風陣列板設計”連結: https://www.wpgdadatong.com/blog/detail/40109

台灣MEMS麥克風龍頭大廠 鈺太科技Zilltek有優異的麥克風模組技術,包含自行開發的ASIC與感測器,不管是製程、價格與備料方面都有優勢。TDM mic選擇ZTS6672,PDM mic則選擇ZTS6572S,在規格、效能各方面表現均能滿足原始設計需求。

經由詮鼎優秀的工程師開發出來的圓形麥克風陣列板提供的功能如下:

  1. 支援兩種數位麥克風元件(TDM mic / PDM mic)7顆分時多工TDM(Time-Division Multiplexed)數位麥克風,六角形排列(1顆置於正中央),預設給遠場語音功能使用
  2. 4顆脈衝密度調變PDM(Pulse-Density Modulation)數位麥克風,方形排列。
  3. 2顆脈衝密度調變PDM數位麥克風,預設給BT語音功能使用。
  4. 5個按鍵(Power/Vol+/Vol-/Activate/Mute)
  5. 16顆RGB LEDs環形排列,以及LED控制器
  6. 1顆Mute指示LED


採用ETSI/T60≈0.3S的混響室,房間尺寸為4.7×3.8×2.7m。 麥克風陣列放置在房間的角落。 麥克風與聲源垂直放置如圖所示。 聲源與麥克風不同角度之間的距離為 1 米。( 此實驗室為大聯大實驗室,大聯大集團不只提供專業的技術服務,還擁有的各種專業的實驗室,包含無線隔離室、混響室、聆聽室以及EMI近場實驗室提供大聯大的客戶做技術驗證)。




下面的圖展示實際量測環境:

到達時間差Time Difference of Arrival(TDOA) 是一種是通過檢測信號到達兩個接收器的時間差來確定移動目標的位置,只需要接收器之間進行時間同步,而沒有目標和基站之間的時間同步要求。普遍在使用於量測角度、距離的技術。這種方法不需要從目標發出信號的時間,只需要接收信號的時間和信號的傳播速度。一旦在兩個參考點收到信號,到達時間的差異可以用來計算目標和兩個參考點之間的距離差異。如圖是以TDoA實現的定位系統,使用一個聲音源,兩個MIC,如圖所示:

探討基於 TDOA 的聲源定位的一些基本概念。 讓我們考慮一對距離為 d 的麥克風和單個遠場聲源 s(k)(其中 k 是樣本的索引)從入射角 θ 撞擊陣列的特殊情況,如下圖所示。 在這種情況下,直接傳播路徑完全由 d 和 θ 決定,兩個麥克風的 TDOA τ 通常表示為:

                                      

其中 c 是聲速,即在 20 °C 空氣中為 343 m/s

在這一個案例中使用簡單的matlabt程式量測聲音,節錄如下

[y,fs]=audioread('C:\adb\Demo\001\100_whatupmyfriend_109_001 34.wav');


y1=y(:,1);

y2=y(:,2);

index=1;

 bufferLength=64;

 yy1=zeros(bufferLength,1);

 xcCoarse=zeros(bufferLength*2-1,1);

interpFactor = 8;

interpolator = dsp.FIRInterpolator('InterpolationFactor',interpFactor,'Numerator',b);

 

 for ii=1:ceil(size(y,1))/bufferLength

 

     [xcCoarse,lags] = xcorr(xx1,xx2);

     [~,idxloc] = max(xcDense);

     delayVector(ii)=(idxloc - groupDelay)/interpFactor - bufferLength;

 end

 

music_delay = delayseq(music_src,avarageDelay*100,fs);

figure(2);

subplot(211);

plot(music_src);

axis([0 length(music_src) -1 1]);

subplot(212);

plot(music_delay);

axis([0 length(music_delay) -1 1]);

[tau1,R,lag] = gccphat(music_delay,music_src,fs);

 

dis_r=tau*c;

angel=acos(tau*c./(mic_d*2))*180/pi;

if dis_s1<dis_s2

    angel=180-angel;

end

disp(180-angel);

 

使用下列的指令進行4聲道的錄音:

tinymix set "VA_DEC0 Volume" "124"

tinymix set "VA_DEC1 Volume" "124"

tinymix set "VA_DEC2 Volume" "124"

tinymix set "VA_DEC3 Volume" "124"

tinymix set "VA_AIF1_CAP Mixer DEC0" "1"

tinymix set "VA_AIF1_CAP Mixer DEC1" "1"

tinymix set "VA_AIF1_CAP Mixer DEC2" "1"

tinymix set "VA_AIF1_CAP Mixer DEC3" "1"

tinymix set "VA DMIC MUX0" "DMIC0"

tinymix set "VA DMIC MUX1" "DMIC1"

tinymix set "VA DMIC MUX2" "DMIC2"

tinymix set "VA DMIC MUX3" "DMIC3"

tinymix set "VA_CDC_DMA_TX_0 Channels" "Four"

tinymix set "MultiMedia1 Mixer VA_CDC_DMA_TX_0" "1"

量測出來的波形,


Matlab計算出來的角位圖

實驗方式與實驗環境

在實驗中,使用分貝計校準環境,將SNR固定在35的值並且使用不同的位置分別為30o、45o以60o來研究研究角度的精準度。測量距離為1公尺,聲音源由於容易受到干擾而導致量測的誤差<因此這個實驗在做的時候以麥克風1以及麥克風2作為基準選取比較穩定的波形作為基準點,用來觀察實際上量測出來的角度,下圖分別為30o、45o以60o所量測出來的位置。


結論

聲源定位已經應用在許多的方面,有包含許多技術可以應用例如TDoA、AoA....並且搭配不同的演算法,大部分都是為了尋求精準度而不斷地增加麥克風的數量以及算法的複雜度以至於不斷的提高硬體的成本,在本博文中,使用Matlab TDoA搭配GCC的技術利用詮鼎代理的麥克風所做的麥克風陣列來達到一定的精準度。這是一個穩定和解簡單的聲源定位方式,目前還有許多的不穩定,例如把裝置放到真實的環境或者是說偵測移動的物體上面,但是透過大聯大的混響室,可以測出相對應的角度。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論