■(続々々)音の出所はどこ? [相互相関法による音源位置の同定]

 2次元平面上における音源の位置は、周囲に設置された3個のマイクに音が到達する時間差から推定できます。

 マイクの位置をM1、M2、M3とすると、音源位置はM1、M2を焦点とする双曲線1-2と M1、M3を焦点とする双曲線1-3の交点となります。

 2つのマイクM1とM2(あるいはM1とM3)に音が到達する時間差の算出法には幾つかの方法が知られていますが、ここでは相互相関関数を用いた到達時間差(Delay Of Arrival:DOA)算出法を利用して、音源位置を推定するアプレットを紹介します。
 ●相互相関関数とは
 2つの信号波形 x1(t) と x2(t) の相互相関関数(Cross Correlation Function)は次式で定義されます。
  φ1,2(τ) = (1/N)n=0N-1 x1 (t) x2 (t+τ)

 波形 x1(t)と遅れ時間τだけずらした波形x2(t+τ)において、それぞれ対応する部分を掛け合わせて累積し、平均化する処理を行い、両者の類似度を調べます。

 特に、x2(t) = x1(t) の時は、自己相関関数と呼ばれます。
  φ1,1(τ) = (1/N)n=0N-1 x1 (t) x1 (t+τ)

 自己相関関数φ1,1(τ)はτ=0で最大値をとることが分かっています。
 ●相互相関関数による音源位置の推定
 2つのマイクに音が到達する時間差を算出する場合には、x2(t)はx1(t)と比べて音波が両マイクから音源までの距離差に相当する時間τsだけ遅れた(あるいは進んだ)信号となっているので、
  x2(t) = x1(t-τs)

従って、相互相関関数は
  φ1,2(τ) = (1/N)n=0N-1 x1 (t) x1 (t+τ-τs)

       = φ1,1(τ-τs)

自己相関関数はτ=0で最大値をとるので、上記の相互相関関数φ1,2(τ)では、τ=0よりτsずらしたτ=τsで最大値をとることになります。

従って、両波形の相互相関関数を計算して、その値が最大となる時間差τsを求めれば、それが音の到達時間差になります。

具体的な計算手順は次のとおりです。

1.入力波形:s1(n)、s2(n) [n = 0, 1, .., N-1]の相互相関関数を求める。

   φ1,2(h) = (1/N)k=0N-1 s1(k) s2((k+h) mod N)

   ここで、 h : 0, 1, .., N-1

2.φ1,2(h)が最大となるサンプル差(位相差)hを求めて、δi,jとおく。

   δ1,2 = argmaxh1,2(h)]

3.到達時間差(DOA)を算出する。
   τs1,2 = δ1,2 / Fs

   ここで、 Fs : サンプリング周波数(Hz)
 ●相互相関法により音源位置を推定するアプレット
・平面上(音場)にマイクが3個設置されています。
・ここで音源の位置をマウスでクリックします。
  この点を通り、マイク位置1,2を焦点とする双曲線が青色で表示されます。
・各マイクで受音された音声データ(波形)が画面右上に表示されます。
・「計算」ボタンを押すと、この音声データから相互相関法を利用して到達時間差、音源位置が算出されて画面左上に表示されます(ピンク)。
  2本の双曲線の交点が算出(推定)された音源位置です。
・相互相関関数φi,j(h)の値が画面左下に、グラフが画面右下に表示されます。



・マイク位置を変更することができます。
・「area表示」ボタンを押すと、音源位置の候補点が2つ(双曲線の交点が2個)ある領域が表示されます。
  この領域で音が発生すると、3個のマイクではどちらが音源か判定できません。
・サンプリング周波数 Fs = 8200Hz、データ数 N = 1024としています。
・生成される音声データは音源から各マイクまでの距離にほぼ等しい時間遅れを含む波形にしています。
 ●到達時間差、位相差(サンプル差)の正負について
 2つのマイクM1、M2に対して、音源がM1に近い場合はM2には遅れて音波が到達し、前述の到達時間差τs1,2は正の値となります。
 逆に音源がM2に近い場合はM2には早く音波が到達しますが、前述の到達時間差τs1,2はこの場合も正の値となります。

 音源が2つのマイクのいずれに近いかはδ1,2の値の範囲で判断できます。
  ・δ1,2 < N/2 の時 ---> マイク1に近い
  ・δ1,2 > N/2 の時 ---> マイク2に近い

 これはサンプリング周波数 Fs( = 8200Hz)、データ数 N( = 1024)、音速 V( = 340m/s)と現在の音場の広さ(マイク間の距離)の関係から導くことができます。

 位相差(サンプル差) N/2 = 512 は
   V x N/2/Fs = 340 x 512 / 8200 = 21.2m
の距離差に相当しますが、約20m四方の音場とマイク配置から最大距離差は約15mとなります。 従って、この条件下では距離差が20mを越えることはないわけです。

 また、音源がマイク2に近い場合は(N - 本来の位相差)がδ1,2として得られるので、この場合 本アプレットでは本来の位相差(N - δ1,2)をマイナス表示にしています。
相関係数の値が +1 または -1 になるのはどんな時か
音の出所はどこ?
(続)音の出所はどこ? [音源位置の同定]
(続々々々)音の出所はどこ? [CSP法による音源位置の同定]

ホーム