14.3.1 オフライン音源定位

14.3.1.1 実行方法

Localization ディレクトリに移動して、音源定位を実行しよう。 ここでは、4ch 音声ファイルを順番に読み込み,定位結果を表示する. 音声ファイルは それぞれ -30, 30度方向からの同時発話 (Multispeech.wav) である。 すべて data ディレクトリにあるので確認しよう。

次のコマンド

> ./demo.sh offline

を実行すると、 図 14.6 のような出力と, 音源定位結果のグラフが表示されるはずだ.

UINodeRepository::Scan()
Scanning def /usr/lib/flowdesigner/toolbox
done loading def files
loading XML document from memory
done!
Building network  :MAIN
TF was loaded by libharkio2.
1 heights, 72 directions, 1 ranges, 7 microphones, 512 points
Source 0 is created.
 (中略)
Source 5 is removed.
UINodeRepository::Scan()
 (以下略)
Figure 14.7: オフライン音源定位の実行結果

14.3.1.2 実行結果の確認

実行後は,Localization.txt と、log.txt という名前のファイルができているはずだ。 もしできていなければ実行に失敗しているので、次のチェックをしよう。

  1. ../data ディレクトリに MultiSpeech.wav かあるかチェックする.これは, HARK がサポートするマイクアレイ Kinect で 実際に録音した音声だ. 入力ファイルなので、これがないと実行できない。

  2. ../config ディレクトリに kinect_loc.dat ファイルがあるかチェックする. これは LocalizeMUSIC に必要な伝達関数ファイルだ。詳しくは HARK documentの LocalizeMUSIC の節を参照。

Localization.txt には,音源定位結果を SaveSourceLocation ノードを使って 保存したテキストファイルで, フレーム番号と音源方向が記録されている. LoadSourceLocation ノードを使えば、これを後で表示させることもできる。 詳しいフォーマットは HARK document の定位結果テキスト の節を参照.

log.txt には, LocalizeMUSIC の DEBUG プロパティを trueすると出力される MUSIC スペクトルが記録されている。 MUSIC スペクトルとは時刻・方向ごとに計算した音源の存在する信頼度のようなもので、 値が大きいところに音源がある。詳しくは HARK documetnの LocalizeMUSIC の節を参照。 次のように表示用プログラムを実行すれば、それぞれのMUSIC スペクトルを表示できる。

> python plotMusicSpec.py log.txt 

もし実行に失敗するようなら、次のコマンドを実行して必要なパッケージをインストールしよう。 For Ubuntu sudo apt-get install python python-matplotlib

ちなみに、これで表示されるカラーバーの値が SourceTracker の THRESH の設定に使える。

14.3.1.3 ネットワークの解説

本サンプルに含まれるノードは,9 個である. MAIN (subnet) に 3 個 MAIN_LOOP (iterator) に 6 個のノードがある. MAIN (subnet) と MAIN_LOOP (iterator) を 図 14.7,14.8 に示す. AudioStreamFromWave で取り込んだ音声波形を MultiFFT で 分析し,LocalizeMUSIC で音源定位する.定位結果を SourceTracker でトラッキングし DisplayLocalization で画面表示し, SaveSourceLocation でファイルに書き出す.

\includegraphics{fig/recipes/demo-LocalizationOffline8ch-MAIN}
Figure 14.8: MAIN (subnet)
\includegraphics{fig/recipes/demo-LocalizationOffline8ch-MAIN_LOOP}
Figure 14.9: MAIN_LOOP (iterator)

14.9 に主要なパラメータを示す. 重要なパラメータは,伝達関数ファイルを表す A_MATRIX である. このファイルは HARK web ページで提供しているマイクロホンアレイを使う場合は ダウンロードできるが、そうでない場合は自分で harktool を使って作成する必要がある.

Table 14.10: パラメータ表

ノード名

パラメータ名

設定値

MAIN_LOOP

LENGTH

int 

512

 

ADVANCE

int 

160

 

SAMPLING_RATE

int 

16000

 

A_MATRIX

int 

ARG2

 

FILENAME

subnet_param 

ARG3

 

DOWHILE

bool 

(空欄)

LocalizeMUSIC 

NUM_CHANNELS

int 

4

 

LENGTH

subnet_param 

LENGTH

 

SAMPLING_RATE

subnet_param 

SAMPRING_RATE

 

A_MATRIX

subnet_param 

A_MATRIX

 

PERIOD

int 

50

 

NUM_SOURCE

int 

1

 

MIN_DEG

int 

-90

 

MAX_DEG

int 

90

 

LOWER_BOUND_FREQUENCY

int 

300

 

HIGHER_BOUND_FREQUENCY

int 

2700

 

DEBUG

bool 

false