14.3.1 オフライン音源定位

14.3.1.1 実行方法

Localization ディレクトリに移動して、音源定位を実行しよう。 ここでは,3つの 7ch 音声ファイルを順番に読み込み,定位結果を表示する. 音声ファイルはそれぞれ 0, 90度方向からの音声(microcone_0deg.wav, microcone_90deg.wav) と、 移動しながら発話した音声 (microcone_moving.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 実行結果の確認

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

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

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

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

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

> python plotMusicSpec.py log_microcone_90deg.txt 
> python plotMusicSpec.py log_microcone_0deg.txt 
> python plotMusicSpec.py log_microcone_moving.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.10 に主要なパラメータを示す. 重要なパラメータは,伝達関数ファイルを表す A_MATRIX である. このファイルは HARK web ページで提供しているマイクロホンアレイを使う場合は ダウンロードできるが、そうでない場合は自分で harktool を使って作成する必要がある.

Table 14.11: パラメータ表

ノード名

パラメータ名

設定値

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 

8

 

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 

-180

 

MAX_DEG

int 

180

 

LOWER_BOUND_FREQUENCY

int 

500

 

HIGHER_BOUND_FREQUENCY

int 

2800

 

DEBUG

bool 

false