第 6 章 ノードリファレンス 45
6.2 Localization カテゴリ
6.2.16 NormalizeMUSIC
表6.29:NormalizeMUSICのパラメータ表 パラメータ名 型 デフォルト値 単位 説明
SHOW ALL PARAMETERS bool false INITIAL THRESHOLD 以外の設定可能
なパラメータの表示/非表示を設定.
INITIAL THRESHOLD float 30 音源が存在する/しないときのMUSICス
ペクトルのおおまかな境目の値.最初の 正規化用パラメータ更新にも利用する.
ACTIVE PROP float 0.05 正規化用パラメータ更新を行うか否かの
閾値.
UPDATE INTERVAL int 10 正規化用パラメータ更新の周期,および,
更新に利用するMUSICスペクトルの時 間フレーム数.
PRIOR WEIGHT float 0.02 正規化用パラメータ更新時の正則化パラ
メータ.
MAX SOURCE NUM int 2 下記パーティクルフィルタの1つのパー
ティクルが持つ音源数.実際の音源数よ り少なくても良い.
PARTICLE NUM int 100 正規化スペクトル計算時に利用するパー
ティクルフィルタのパーティクル数.
LOCAL PEAK MARGIN float 0 MUSICスペクトルが極大になる方向を取
得する際,隣接方向同士で無視する MU-SICスペクトルの差.
ノードの入出力とプロパティ
入力
SOURCES IN : Vector<ObjectRef>型.LocalizeMUSICのOUTPUTと接続.音源情報(音源位置と対応す
るMUSICスペクトル)が格納されている.
MUSIC SPEC :Vector<float>型.LocalizeMUSICのSPECTRUMと接続.各方向ごとのMUSICスペクト ル値.パラメータ更新や正規化に利用.
出力
SOURCES OUT :Vector<ObjectRef>型.入力のSOURCES INと同じ音源情報が入っている.ただし,各
音源のMUSICスペクトルは[0 1]に正規化された値に書き換えられている.
01 SPEC :Vector<float>型.入力のMUSIC SPECを正規化した値.デバッグなどに使用.
パラメータ
SHOW ALL PARAMETERS :bool型.デフォルトはfalse.下記のINITIAL THRESHOLD以外のパラメー タを変更したい場合はtrueにして表示させる.多くの場合,INITIAL THRESHOLD以外はデフォルト 値で問題なく動作する.
1例えば,10 msの時間解像度,5◦おきの方向解像度など.
INITIAL THRESHOLD :float型.この値は2つの役割を果たす.(1)パラメータ更新時に音源が存在する/
しない場合の境目の事前知識として利用.(2)下記ACTIVE PROPと併用して最初のパラメータ更新をす るかを決定する.
ACTIVE PROP :float型.デフォルト値は0.05.MUSICスペクトルがUPDATE INTERVALフレーム集まっ たとき,その観測値に基づいて正規化用パラメータを更新するかを決める閾値.MUSICスペクトルがT フレーム,D方向,合計T D個あり,ACTIVE PROPがθのとき,INITIAL THRESHOLDよりも大きな
MUSICスペクトルの値を持つ時間・方向点がθT D個以上あった場合,正規化用パラメータの更新処理
が行われる.
UPDATE INTERVAL :正規化用パラメータ更新に使うMUSICスペクトルのフレーム数.ここで指定したフ レーム数を周期として更新が行われる.HARKを初期設定で利用した場合,16000 (Hz)サンプリングさ れた音声信号がMultiFFTモジュールにて,160 (pt),つまり0.01 (sec)間隔で短時間フーリエ変換が行わ れる.LocalizeMUSICでは,初期設定では50フレームおき,つまり0.5 (sec)おきにMUSICスペクトル が計算される.したがって,UPDATE INTERVALを10に設定すると,5 (sec)のデータを使って正規化 パラメータの更新が行われる.
PRIOR WEIGHT :正規化パラメータ更新でのパラメータ計算を安定化させる正則化パラメータ.具体的な意 味は下記の技術的な詳細,値設定の目安はトラブルシューティングをそれぞれ参照されたい.
MAX SOURCE NUM : MUSICスペクトル正規化に用いるパーティクルフィルタで,各パーティクルは音源 が存在する方向を仮説として持っている.その時に各パーティクルが持つことのできる音源数の最大値.
入力音の実際の音源数にかかわらず,1–3に設定すると安定する.
PARTICLE NUM : MUSICスペクトル正規化に用いるパーティクルフィルタが利用するパーティクル数.経 験的には,MUSICスペクトルが72方向(5◦解像度で水平面1周分)の場合,100程度で十分.より多く
の方向(例えば,仰角方向も考慮し72×30方向など)を扱う場合,より多くの粒子数が必要の可能性が
ある.
LOCAL PEAK MARGIN : MUSICスペクトル正規化のパーティクルフィルタでは,MUSICスペクトルが極 大値をとる方向を利用する.隣接方向のMUSICスペクトル値と比較する際,無視するMUSICスペクト ルの差を設定する.この値を大きくし過ぎると,どの方向でもMUSICスペクトルが極大と解釈され,音 源の誤検出につながるおそれがある.
ノードの詳細
技術的な詳細: 正規化パラメータの計算や,そのパラメータによるMUSICスペクトルの正規化の詳細は下記 の参考文献を参照されたい.下記の文献中で,正規化パラメータの計算はVB-HMM (変分ベイズ隠れマルコフ モデル)の事後分布推定に対応し,MUSICスペクトルの正規化処理は,パーティクルフィルタによるオンライ ン確率推定に対応している.
おおまかには,図6.36に示すように,観測したMUSICスペクトルの分布(図6.36中,青い度数分布)から,
音源が存在しない場合の分布(赤)と,音源が存在する場合の分布(緑)をガウス分布でフィッティングしている.
以下では,この文献中の変数の値と,このノードのパラメータの対応関係を述べる.正規化パラメータ計算用の VB-HMMに対する入力は,フレーム数T,方向数DのMUSICスペクトルである.T はUPDATE INTERVAL に指定されたフレーム数で,DはLocalizeMUSICモジュールから出力される方向数である.VB-HMMが用い るハイパーパラメータはα0, β0,m0,a0,b0 がある.これらのうち,α0,a0,b0は文献と同様に1に設定されてい
20 22 24 26 28 30 32 0
100 200 300 400 500
Log MUSIC spectrum
# of observations Off (, 0)
On (, 1)
図6.36: MUSICスペクトルからのパラメータ学習
る.m0としてはINITIAL THRESHOLDを利用し,β0は,PRIOR WEIGHTの値をεとしたとき,β0 =T Dε とする.
処理の流れ図: 図6.37に,NormalizeMUSICモジュール内の処理の流れずを示す.青線がSOURCES INから
MUSIC スペクトル をバッファ
正規化 パラメータ MUSIC スペクトル入力
MUSIC_SPEC
正規化 パラメータ更新 MUSIC スペクトル
正規化
正規化スペクトル出力 01_SPEC 音源情報入力
SOURCES_IN
MUSIC パワー 書き換え
音源情報出力 SOURCES_OUT
UPDATE_INTERVAL フレーム経過?
音源情報 MUSIC スペクトル 正規化スペクトル
yes no
図6.37:処理の流れ図
SOURCES OUTへの音源情報のデータの流れ,赤実線が正規化前のMUSICスペクトル,赤破線が正規化後
のMUSICスペクトルの値の流れを示す.毎フレーム行われる処理は,(1)最新の正規化パラメータを利用した
MUSICスペクトルの正規化処理と(中央列),(2)音源情報内のMUSICパワー値を正規化したものに置き換え
る処理(左列)である.後段のSourceTrackerモジュールは,音源情報内のMUSICパワー値を参照して音源の 検出処理を行なっている.
右列は,観測したMUSICスペクトルからの正規化パラメータ更新処理に相当する.正規化パラメータの更 新処理は,次の2つの基準が満たされると実行される.
1. MUSICスペクトルのバッファがUPDATE INTERVALフレームだけたまった,かつ 2. 音源が存在する時間・方向点の割合がACTIVE PROPを超える.
1. が満たされたとき,フレーム数T,方向数DのMUSICスペクトルxt,d に対して,2. の判定を行う.AC-TIVE PROPの値をθとする.
最初の更新: プログラムが実行されてから,1度も正規化パラメータ更新が行われていない場合,xt,dのうち,
INITIAL THRESHOLDを超える時間・方向点の個数がθT Dを超える場合,正規化パラメータ更新処理が行わ
れる.
以降の更新: それ以降は,前回の正規化パラメータ更新が観測音のMUSICスペクトルを反映しているため,正 規化されたMUSICスペクトルの合計値がθT Dを超える場合に次の正規化パラメータの更新処理が行われる.
トラブルシューティング: ここでは,正しく音源定位・検出が行われない場合のモジュールパラメータ調整の 指針を示す.
基本は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→25→30).
音源が過度に検出される: 考えられる要因は(1)検出したくない方向のMUSICスペクトル値が高い,(2)図6.36 の音源が存在する緑の分布の平均値が低い,などが考えられる.(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) INI-TIAL THRESHOLD が大きすぎる.(1) の場合,LocalizeMUSICの調整が必要である.NUM SOURCES パ ラメータを実際の音源数と揃える(あるいは M−1, M−2 など大きめの値を使う,ただしM はマイク数),
LOWER BOUND FREQUENCY,UPPER BOUND FREQUENCYを目的音に適った周波数帯域に設定する.(2) の場合,INITIAL THRESHOLDを下げてみる.
参考文献
(1) 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 Pro-cessing (Interspeech 2011), pp.3109-3112.2
(2) 大塚 琢馬,中臺 一博,尾形 哲也,奥乃 博:音源定位手法MUSICのベイズ拡張,第34回AIチャレンジ研 究会, SIG-Challenge-B102-6, pp.4-25〜4-30,人工知能学会.3
2http://winnie.kuis.kyoto-u.ac.jp/members/okuno/Public/Interspeech2011-Otsuka.pdf
3http://winnie.kuis.kyoto-u.ac.jp/SIG-Challenge/SIG-Challenge-B102/SIG-Challenge-B102.pdf