うまく定位できない

Problem

音源定位システムを作ったけれどもうまく定位しない.

Solution

ここでは,定位システムが動作しない場合の典型的な確認方法について述べる.

録音の確認

 
まずは,うまく録音できないを見て, 録音ができているか確認しよう.

オフラインで音源定位

 
録音ができていれば,次は波形ファイルを使って定位を試してみよう. 波形ファイルは,作成したマイクロホンアレイで録音すればよい. 例えば,10秒間録音して,その間一人で声を出しながらゆっくり マイクロホンアレイのまわりを歩いてみるとよい.

ネットワーク中の AudioStreamFromMic を AudioStreamFromWave に入れ替え れば,音声波形から定位ができる. 定位結果は,SourceTracker の出力に DisplayLocalization を 接続すれば視覚的に確認できる.

この時点でうまく動いていなければ, まずは LocalizeMUSIC の DEBUG を ON にして,MUSIC スペクトル を表示してみよう. 音声がある時間・方向で値が大きくなっているはずである. もしなっていなければ,そもそも伝達関数の計算が怪しい. うまくいっていれば, SourceTracker のパラメータ THRESH を, 音声部分よりは小さく,無音部分よりは大きく設定しよう. これで,音源が定位できる.

その他にも,次のような場合は LocalizeMUSIC のパラメータを調節してみると良い.

  1. NUM_SOURCE を話者数に合わせる.
    例えば話者が2名までしかいないと仮定するなら, NUM_SOURCE は 2にすると良い.

  2. MIN_DEG と MAX_DEG を定める.
    音源が無いのに定位結果が出る状況では, 壁からの反射やノイズ源 (PCのファンなど)が原因である可能性がある. そのとき,その方向に目的音源が無いと仮定できるなら, この二つのパラメータを使ってその方向からは定位結果が 出力されないように設定できる. 例えばロボットの後ろから話しかけることはないなら, MIN_DEG を -90,MAX_DEG を90 とすれば,正面側のみを定位対象にできる.

オンラインで音源定位

 
ここまでできれば,あとはネットワークファイルを AudioStreamFromMic に戻して,実際のシステムに使ってみよう. MUSIC スペクトルの値は,話者との距離や音量によって異なるので, SourceTracker のパラメータ THRESH の微調整が必要かもしれな い.0.1 - 0.2 ぐらいずつ上げ下げしてみよう. 誤りの定位結果が多いなら THRESH をやや増やし, 声を出しても定位結果が出ないなら THRESH をやや減らそう.

Discussion

部屋の残響や話者の声の大きさなどで, 適切なパラメータは変わる. 現在の HARK で定位性能をあげるには, その場でチューニングを行うのが最も確実である. 最も重要なのは THRESH なので,基本的にはそれのみを調節すればよい.

See Also

定位システムを初めて作るときは はじめての音源定位を参照するとよい. HARK ドキュメントの の LocalizeMUSIC と SourceTracker を参照すると,手 法の詳細が分かる. 他にも,音源定位の章には音源定位に関するノ ウハウがある.