Localization ディレクトリにある demoOffline8ch.sh を実行しよう. 図 14.6 のような出力と, 音源定位結果のグラフが表示されるはずだ. ここでは,4つの 8ch 音声ファイルを順番に読み込み,定位結果を表示する. 各音声ファイルはそれぞれ 0,90,180,270 度方向からの音声を録音している.
実行後は,Localization_.*txt という名前のファイルが4つできている. これは,音源定位結果をテキスト形式で保存したもので, フレーム番号と音源方向が記録されている. 詳しいフォーマットは HARK document の”定位結果テキスト” の節を参照.
うまく定位できないときは,次のチェックをしよう.
../data ディレクトリに f101_000.wav,f101_090.wav,f101_180.wav,f101_270.wav がある かチェックする.これらのファイルは,0,90,180,270 度方向からの インパルス応答を重畳した 8ch 録音音声波形のシミュレーション合成音 声である.仮想ロボットに各方向から音声を流した場合に得られる音声 と解釈できる.これらのファイルがなければ,音源定位結果は表示され ない.
../config ディレクトリに music.dat ファイルがあるかチェックする. 仮想ロボットのインパルス応答ファイルである.これらのファイルがな ければ,音源定位結果は表示されない.
本サンプルに含まれるノードは,10 個である. MAIN (subnet) に 3 個 MAIN_LOOP (iterator) に 7 個のモジュールがある. MAIN (subnet) と MAIN_LOOP (iterator) を 図 #.#.#,#.#.# に示す. AudioStreamFromWave モジュールで取り込んだ音声波形を MultiFFT で 分析し,LocalizeMUSIC で音源定位する.定位結果を SourceTracker と SourceIntervalExtender でトラッキングし DisplayLocalization で画面表示し, SaveSourceLocation でファイルに書き出すネットワーク構成である.
表 14.9 に主要なパラメータを示す. 重要なパラメータは,伝達関数ファイルを表す A_MATRIX である. このファイルは harktool で作成する必要がある.
ノード名 |
パラメータ名 |
型 |
設定値 |
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 |