第 6 章 ノードリファレンス 45
6.2 Localization カテゴリ
6.2.19 SourceTracker
図6.42:SourceTrackerの接続例
出力
OUTPUT :Vector<ObjectRef>型.位置が近い音源に同じIDを与えた音源定位結果
パラメータ
表6.32:SourceTrackerのパラメータ表
パラメータ名 型 デフォルト値 単位 説明
THRESH float 音源のパワーがこれより小さければ無視.
PAUSE LENGTH float 800 10 [frame] 音源の生存時間.
COMPARE MODE string DEG DEG or TFINDEX 音源間の距離の計算方法. DEGは角度計
算, TFINDEXはインデックスの比較.
MIN SRC INTERVAL float 20 [deg] 同一の音源とみなす角度差の閾値.
(COM-PARE MODE=DEGのとき有効)
MIN TFINDEX INTERVAL int 3 同一の音源とみなすインデックス差の閾
値. (COMPARE MODE=TFINDEXのと き有効)
MIN ID int 0 割り当てられる 音源IDの最小値
DEBUG bool false デバッグ出力の有無。
THRESH :float型.音源定位結果を無視すべきノイズか否かを,そのパワーで判定する.パワーがTHRESH より小さければノイズであると判断し,その定位結果は出力には反映されなくなる.小さくしすぎると ノイズを拾い,大きくしすぎると目的音の定位が困難になるので,このトレードオフを満たす値を見つ ける必要がある.
PAUSE LENGTH :float型.一度定位結果として出力した音源が,どれだけ長く続くと仮定するかを決める パラメータ.一度定位した方向は,それ以降に音源定位結果が無くても,PAUSE LENGTH/10 [frame]
の繰り返しの間だけ同一方向の定位結果を出力し続ける.デフォルト値は800なので,1度定位した方向 は,それ以降の80 [frame]の繰り返しの間は定位結果を出力し続ける.
COMPARE MODE :型. DEGを選択すると音源を追跡時の音源方向の比較を三角関数を使った角度計算にな り、TFINDEXを選択すると伝達関数中の対応するインデックスの単なる比較になる。インデックスと角 度差が等価ならば(順番に録音しているならば、)計算量が削減可能。
MIN SRC INTERVAL :float型.音源の到来方向の差がMIN SRC INTERVALより小さければ同一の音源と みなして片方の音源定位結果を削除する.こうして音源定位が揺らいでも追跡できる.COMPARE MODE がDEGのとき有効。
MIN TFINDEX INTERVAL : int型. MIN SRC INTERVAL とほぼ同じ。比較するのみ値が異なる。COM-PARE MODEがTFINDEXのとき有効。
MIN ID :int型.定位結果ごとに割り振られるIDの開始番号を定める.
DEBUG :bool型.trueが与えられると,音源定位結果が標準エラー出力にも出力される。
ノードの詳細
まず,本節で用いる記号を定義する.
1. ID :音源のID
2. パワーp:定位された方向のパワー.
3. 座標x,y,z:音源定位方向に対応する,単位球上の直交座標.
4. 継続時間r:定位された音源がそれ以降どれだけ続くと仮定するかの指標.
定位された音源のパワーをp,音源方向に対応する単位球上の直交座標をx,y,zとする.
現在ノードが保持している音源数をN,新たに入力された音源数をMとする.また,直前の値にはlastを,
現在の値にはcurの添字をつける.例えば,i番号めの新たに入力された音源のパワーは pcuri と表示する.
音源の近さを判定する指標の,音源同士の成す角をθ∈[0,180]とする.
音源方向の近さの判定方法:
成す角θは,二つの音源方向を,q1=(x1,y1,z1)とq2=(x2,y2,z2)で表現すると次のように求まる.
q1·q2=|q1||q2|cosθ (6.17) ここで逆余弦関数を用いると,θが求まる.
θ=cos−1 (q1·q2
|q1||q2| )
=cos−1
x1·x2+y1·y2+z1·z2
√
x21+y21+z21
√
x22+y22+z22
(6.18)
以下では,表記を簡単にするために,第i音源と第 j音源との成す角をθi jと表記する.
音源追跡方法:
SourceTrackerの音源追跡アルゴリズムを図6.43にまとめる.また,青い丸が既にノードが持っている音源 位置(last),緑の丸が新たに入力された音源位置(cur)を表す.
まず,すべての音源に対して,パワーpcuri ,plastj がTHRESHより小さければそれを削除する.次に,既に ノードが持つ定位情報と新たに入力された音源位置を比較し,十分近い(=θi jがMIN SRC INTERVAL[deg]以
下)なら統合する.統合された音源には同じIDが付与され,継続時間rlastがPAUSE LENGTHでリセットされ る.統合は,1つの音源を残して他のすべての音源位置を削除することで実現される.
θi jがMIN SRC INTERVAL [deg]より大きい音源は,異なる音源とみなされる.ノードが保持しているが,
新たに入力されなかった音源位置は,rlastを10だけ減らす.もし,rlastが0を下回ったら,音源が消えたとみ なして,その音源位置を削除する.新たに入力された音源位置が,既にノードが持つ音源位置のいずれとも異 なる場合は,新たなIDを付与され,rcurがPAUSE LENGTHで初期化される.
Time (Iteration) Soun
d So urce Dire ctio n
MIN_SRC_INTERVALより近いと統合
PAUSE_LENGTHを超えて 定位が無ければ削除
音源方向が
MIN_SRC_INTERVAL[deg]より 近ければ同じIDを付与 音源が現れると 新たにIDを付与 パワーがTHRESH以下なら削除
図6.43:SourceTrackerの音源追跡方法.横軸が時間(=繰り返し回数)で,縦軸が音源方向を表す.