オフライン音源定位

Localization ディレクトリにある demoOffline8ch.sh を実行しよう. 図 14.6 のような出力と, 音源定位結果のグラフが表示されるはずだ. ここでは,4つの 8ch 音声ファイルを順番に読み込み,定位結果を表示する. 各音声ファイルはそれぞれ 0,90,180,270 度方向からの音声を録音している.

$>$ demoOffline8ch.sh
Display sounds from 000 degrees.
UINodeRepositoryScan()
Scanning def /usr/lib/flowdesigner/toolbox
done loading def files
loading XML document from memory
done!
Building network MAIN
reading A matrix
Identifier is different from HARK’s oneH
Try to read ../config/music.dat as header-less MUSIC transfer function format.
72 directions, 1 ranges, 8 microphones, 512 points
done
initialize
Source 0 is created.
Source 0 is removed.
中略
Source 9 is created.
Source 9 is removed.
Vector<ObjectRef> 
Vector<ObjectRef> 
Display sounds from 090 degrees.
以下略
: demoOffline8ch.sh の実行例.

実行後は,Localization_.*txt という名前のファイルが4つできている. これは,音源定位結果をテキスト形式で保存したもので, フレーム番号と音源方向が記録されている. 詳しいフォーマットは HARK document の”定位結果テキスト” の節を参照.

うまく定位できないときは,次のチェックをしよう.

  1. ../data ディレクトリに f101_000.wav,f101_090.wav,f101_180.wav,f101_270.wav がある かチェックする.これらのファイルは,0,90,180,270 度方向からの インパルス応答を重畳した 8ch 録音音声波形のシミュレーション合成音 声である.仮想ロボットに各方向から音声を流した場合に得られる音声 と解釈できる.これらのファイルがなければ,音源定位結果は表示され ない.

  2. ../config ディレクトリに music.dat ファイルがあるかチェックする. 仮想ロボットのインパルス応答ファイルである.これらのファイルがな ければ,音源定位結果は表示されない.

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

\includegraphics{fig/recipes/demo-LocalizationOffline8ch-MAIN.png}
: MAIN (subnet)
\includegraphics{fig/recipes/demo-LocalizationOffline8ch-MAIN_LOOP.png}
: MAIN_LOOP (iterator)

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