LocalizeMUSIC モジュールで計算された MUSIC スペクトルを $[0~ 1]$ の範囲に正規化し, SourceTracker モジュールによる音源検出を安定化させるモジュール.
無し.
どんなときに使うのか
HARK での音源定位では,各時間・方向1 で計算された MUSIC スペクトルに閾値を設定し, 閾値を超える MUSIC スペクトルを持つ時間・方向に音源が存在すると判定する. このモジュールは,LocalizeMUSIC モジュールによって計算される MUSIC スペクトルに対して, SourceTracker モジュールで閾値を設定するのが困難な場合に利用することができる. このモジュールは観測音に対する MUSIC スペクトルを $[0~ 1]$ の範囲に正規化するため, SourceTracker モジュールで設定する閾値は $0.95$ などに設定すれば音源定位が安定する.
内部では,正規化用パラメータ推定と,MUSIC スペクトルの正規化処理を行なっている. 正規化用パラメータ推定は MUSIC スペクトルがある程度たまると計算され, 観測された MUSIC スペクトルから音源が存在する/しない場合の MUSIC スペクトルの分布を得る. 推定された正規化用パラメータを利用して,各フレームでの MUSIC スペクトルの正規化処理をパーティクルフィルタによって行う.
典型的な接続例
図 6.38 に NormalizeMUSIC の使用例を示す. 図 6.38 では,LocalizeMUSIC モジュールの出力 (OUTPUT: 音源位置や対応する MUSIC スペクトル値などの音源情報, SPECTRUM: 各方向の MUSIC スペクトル) を, NormalizeMUSIC にそれぞれ入力している. NormalizeMUSIC の出力 SOURCES_OUT は,LocalizeMUSIC の出力 OUTPUT と同様に SourceTracker モジュールに接続できる.
パラメータ名 |
型 |
デフォルト値 |
単位 |
説明 |
SHOW_ALL_PARAMETERS |
false |
INITIAL_THRESHOLD 以外の設定可能なパラメータの表示/非表示を設定. |
||
INITIAL_THRESHOLD |
30 |
音源が存在する/しないときの MUSIC スペクトルのおおまかな境目の値.最初の正規化用パラメータ更新にも利用する. |
||
ACTIVE_PROP |
0.05 |
正規化用パラメータ更新を行うか否かの閾値. |
||
UPDATE_INTERVAL |
10 |
正規化用パラメータ更新の周期,および,更新に利用する MUSIC スペクトルの時間フレーム数. |
||
PRIOR_WEIGHT |
0.02 |
正規化用パラメータ更新時の正則化パラメータ. |
||
MAX_SOURCE_NUM |
2 |
下記パーティクルフィルタの 1 つのパーティクルが持つ音源数.実際の音源数より少なくても良い. |
||
PARTICLE_NUM |
100 |
正規化スペクトル計算時に利用するパーティクルフィルタのパーティクル数. |
||
LOCAL_PEAK_MARGIN |
0 |
MUSIC スペクトルが極大になる方向を取得する際,隣接方向同士で無視する MUSIC スペクトルの差. |
入力
: Vector<ObjectRef> 型.LocalizeMUSIC の OUTPUT と接続.音源情報 (音源位置と対応する MUSIC スペクトル) が格納されている.
: Vector<float> 型.LocalizeMUSIC の SPECTRUM と接続.各方向ごとの MUSIC スペクトル値.パラメータ更新や正規化に利用.
出力
: Vector<ObjectRef> 型.入力の SOURCES_IN と同じ音源情報が入っている.ただし,各音源の MUSIC スペクトルは $[0~ 1]$ に正規化された値に書き換えられている.
: Vector<float> 型.入力の MUSIC_SPEC を正規化した値.デバッグなどに使用.
パラメータ
: bool 型.デフォルトは false.下記の INITIAL_THRESHOLD 以外のパラメータを変更したい場合は trueにして表示させる. 多くの場合,INITIAL_THRESHOLD 以外はデフォルト値で問題なく動作する.
: float 型.この値は 2 つの役割を果たす. (1) パラメータ更新時に音源が存在する/しない場合の境目の事前知識として利用. (2) 下記 ACTIVE_PROP と併用して最初のパラメータ更新をするかを決定する.
: float 型.デフォルト値は $0.05$.MUSIC スペクトルが UPDATE_INTERVAL フレーム集まったとき, その観測値に基づいて正規化用パラメータを更新するかを決める閾値. MUSIC スペクトルが $T$ フレーム,$D$ 方向,合計 $TD$ 個あり,ACTIVE_PROP が $\theta $ のとき, INITIAL_THRESHOLD よりも大きな MUSIC スペクトルの値を持つ時間・方向点が $\theta TD$ 個以上あった場合, 正規化用パラメータの更新処理が行われる.
: 正規化用パラメータ更新に使う MUSIC スペクトルのフレーム数. ここで指定したフレーム数を周期として更新が行われる. HARK を初期設定で利用した場合,16000 (Hz) サンプリングされた音声信号が MultiFFT モジュールにて, 160 (pt),つまり 0.01 (sec) 間隔で短時間フーリエ変換が行われる. LocalizeMUSIC では,初期設定では 50 フレームおき,つまり 0.5 (sec) おきに MUSIC スペクトルが計算される. したがって,UPDATE_INTERVAL を 10 に設定すると,5 (sec) のデータを使って正規化パラメータの更新が行われる.
: 正規化パラメータ更新でのパラメータ計算を安定化させる正則化パラメータ. 具体的な意味は下記の 技術的な詳細,値設定の目安は トラブルシューティング をそれぞれ参照されたい.
: MUSIC スペクトル正規化に用いるパーティクルフィルタで, 各パーティクルは音源が存在する方向を仮説として持っている. その時に各パーティクルが持つことのできる音源数の最大値. 入力音の実際の音源数にかかわらず,1–3 に設定すると安定する.
: MUSIC スペクトル正規化に用いるパーティクルフィルタが利用するパーティクル数. 経験的には,MUSIC スペクトルが 72 方向 ($5^\circ $ 解像度で水平面 1 周分) の場合,100 程度で十分. より多くの方向 (例えば,仰角方向も考慮し $72\times 30$ 方向など) を扱う場合,より多くの粒子数が必要の可能性がある.
: MUSIC スペクトル正規化のパーティクルフィルタでは, MUSIC スペクトルが極大値をとる方向を利用する. 隣接方向の MUSIC スペクトル値と比較する際,無視する MUSIC スペクトルの差を設定する. この値を大きくし過ぎると,どの方向でも MUSIC スペクトルが極大と解釈され, 音源の誤検出につながるおそれがある.
技術的な詳細: 正規化パラメータの計算や,そのパラメータによる MUSIC スペクトルの正規化の詳細は下記の参考文献を参照されたい. 下記の文献中で,正規化パラメータの計算は VB-HMM (変分ベイズ隠れマルコフモデル) の事後分布推定に対応し, MUSIC スペクトルの正規化処理は,パーティクルフィルタによるオンライン確率推定に対応している.
おおまかには,図 6.39 に示すように, 観測した MUSIC スペクトルの分布 (図 6.39 中,青い度数分布) から, 音源が存在しない場合の分布 (赤)と,音源が存在する場合の分布 (緑) をガウス分布でフィッティングしている.
以下では,この文献中の変数の値と,このノードのパラメータの対応関係を述べる. 正規化パラメータ計算用の VB-HMM に対する入力は,フレーム数 $T$,方向数 $D$ の MUSIC スペクトルである. $T$ は UPDATE_INTERVAL に指定されたフレーム数で,$D$ は LocalizeMUSIC モジュールから出力される方向数である. VB-HMM が用いるハイパーパラメータは $\alpha _{0}, \beta _{0}, m_0, a_0, b_0$ がある. これらのうち,$\alpha _0, a_0, b_0$ は文献と同様に 1 に設定されている. $m_0$ としては INITIAL_THRESHOLD を利用し, $\beta _0$ は,PRIOR_WEIGHT の値を $\varepsilon $ としたとき,$\beta _0 = TD\varepsilon $ とする.
処理の流れ図:
図 6.40 に,NormalizeMUSIC モジュール内の処理の流れずを示す. 青線が SOURCES_IN から SOURCES_OUT への音源情報のデータの流れ, 赤実線が正規化前の MUSIC スペクトル,赤破線が正規化後の MUSIC スペクトルの値の流れを示す. 毎フレーム行われる処理は,(1) 最新の正規化パラメータを利用した MUSIC スペクトルの正規化処理と (中央列), (2) 音源情報内の MUSIC パワー値を正規化したものに置き換える処理 (左列) である. 後段の SourceTracker モジュールは,音源情報内の MUSIC パワー値を参照して音源の検出処理を行なっている.
右列は,観測した MUSIC スペクトルからの正規化パラメータ更新処理に相当する. 正規化パラメータの更新処理は,次の 2 つの基準が満たされると実行される.
MUSIC スペクトルのバッファが UPDATE_INTERVAL フレームだけたまった,かつ
音源が存在する時間・方向点の割合が ACTIVE_PROP を超える.
1. が満たされたとき,フレーム数 $T$,方向数 $D$ の MUSIC スペクトル $x_{t,d}$ に対して, 2. の判定を行う. ACTIVE_PROP の値を $\theta $ とする.
最初の更新: プログラムが実行されてから,1 度も正規化パラメータ更新が行われていない場合, $x_{t,d}$ のうち,INITIAL_THRESHOLD を超える時間・方向点の個数が $\theta TD$ を超える場合, 正規化パラメータ更新処理が行われる.
以降の更新: それ以降は,前回の正規化パラメータ更新が観測音の MUSIC スペクトルを反映しているため, 正規化された MUSIC スペクトルの合計値が $\theta TD$ を超える場合に次の 正規化パラメータの更新処理が行われる.
トラブルシューティング: ここでは,正しく音源定位・検出が行われない場合のモジュールパラメータ調整の指針を示す.
基本はMUSIC スペクトルを可視化: MUSIC スペクトルが音源が存在するときに高い値,音源が存在しないときは低い値になっているか確認する. 可視化の方法は LocalizeMUSIC モジュールのパラメータ DEBUG を trueにして, ネットワークを実行した時に標準出力に現れる MUSIC スペクトルの値を適当なツール (例: python+matplotlib,matlab など) で可視化する. HARK クックブック 「3.3 うまく定位できない」に同様の説明がある. もし,MUSIC スペクトルの計算結果が信頼出来ない場合,HARK クックブック 「8 音源定位」などを参照し,問題点を確認する. LocalizeMUSIC の NUM_SOURCE を 1 にする,LOWER_BOUND_FREQUENCY を 1000 (Hz) に上げることで MUSIC スペクトルの計算が安定化する場合がある.
まず試すこと: パラメータ ACTIVE_PROP,PRIOR_WEIGHT を 0 にし, INITIAL_THRESHOLD を 低め (例: 20 程度) にする. NormalizeMUSIC の SOURCES_OUT を接続した SourceTracker モジュールの THRESH パラメータを 0.95 に設定する. この状態で何も定位できない場合,MUSIC スペクトルが正しく計算されていない可能性が高い. 音源が過度に検出される場合,INITIAL_THRESHOLD を 5 刻み程度で上げて調整していく (例: 20 $\rightarrow $ 25 $\rightarrow $ 30).
音源が過度に検出される: 考えられる要因は (1) 検出したくない方向の MUSIC スペクトル値が高い, (2) 図 6.39 の音源が存在する緑の分布の平均値が低い,などが考えられる. (1) の場合,雑音相関行列を利用した MUSIC アルゴリズムの利用 (LocalizeMUSIC モジュール参照), LocalizeMUSIC の LOWER_BOUND_FREQUENCY パラメータを 800–1000 (Hz) に上げるなどで問題が和らぐことがある. 後者は特に,音源間が近いため,音源間の MUSIC スペクトル値が高い場合に有用である. (2) の場合,INITIAL_THRESHOLD の値を上げる (例: 30 から 35 に上げてみる), PRIOR_WEIGHT の値を上げる (例: 0.05–0.1 程度にする),
音源が検出されない: 考えられる要因は (1) 検出するべき方向の MUSIC スペクトル値が低い, (2) INITIAL_THRESHOLD が大きすぎる. (1) の場合,LocalizeMUSIC の調整が必要である. NUM_SOURCES パラメータを実際の音源数と揃える (あるいは $M-1$, $M-2$ など大きめの値を使う,ただし $M$ はマイク数), LOWER_BOUND_FREQUENCY,UPPER_BOUND_FREQUENCY を目的音に適った周波数帯域に設定する. (2) の場合,INITIAL_THRESHOLD を下げてみる.
Takuma Otsuka, Kazuhiro Nakadai, Tetsuya Ogata, Hiroshi G. Okuno: Bayesian Extension of MUSIC for Sound Source Localization and Tracking, Proceedings of International Conference on Spoken Language Processing (Interspeech 2011), pp.3109-3112. 2
大塚 琢馬, 中臺 一博, 尾形 哲也, 奥乃 博: 音源定位手法MUSICのベイズ拡張, 第34回 AI チャレンジ研究会, SIG-Challenge-B102-6, pp.4-25〜4-30, 人工知能学会. 3
Footnotes