6.9.1 EstimateTF

6.9.1.1 ノードの概要

実測によってマイクロホンアレイの推定伝達関数ファイルを作成する.推定は次の手順で行う. まず,ホワイトノイズ等を発音する音源1つを,マイクロホンアレイ周囲の計算想定位置(音源座標)から発音させ,マイクロホンアレイで収録を行う. 各マイク間の相対伝達関数を算出し,その計算想定位置(音源座標)の伝達関数を推定する. この手順のうち,本ノードでは相対伝達関数の算出と計算想定位置(音源座標)の伝達関数の推定を行う. なお,計算想定位置(音源座標)の推定には LocalizeMUSIC などの定位ノードを用いる.

6.9.1.2 必要なファイル

ベースとなる伝達関数ファイル,または,中間ファイル群(マイクロホン座標ファイル,音源座標ファイル,伝達関数ファイル,中間データファイルを含む)

6.9.1.3 使用方法

どんなときに使うのか

本ノードは実測によってマイクロホンアレイの推定伝達関数ファイルを作成する. 本ノードによる推定伝達関数ファイルは,音源定位や音源分離に利用される.

典型的な接続例

典型的な接続例を図 6.163 に示す.

\includegraphics[width=0.85\linewidth ]{fig/modules/EstimateTF-connection}
Figure 6.163: EstimateTF の接続例

また,オンライン処理の場合の接続例を図 6.164 に示す. EstimateTF の前段に置かれた PyCodeExcecutor3 は,定位処理結果を受信し,定位座標と定位処理に対応する処理対象のカウント番号を出力する. EstimateTF は入力された定位座標と処理対象カウントに対応するスペクトルデータを使用して,ノード内の伝達関数データの更新を行い,後段に出力する. LocalizeMUSIC は EstimateTF から出力された伝達関数データでノード内の伝達関数データベースを更新し,定位処理を行う. 定位処理の結果は SourceTracker を経由し,PyCodeExcecutor3 を使用して送信され,EstimateTF 前段の PyCodeExcecutor3 で受信する. これにより,LocalizeMUSIC は常に最新の伝達関数データで使って定位処理を実行することができる.

\includegraphics[width=0.85\linewidth ]{fig/modules/EstimateTF-connection2}
Figure 6.164: EstimateTF の接続例(オンライン処理の場合)

6.9.1.4 ノードの入出力とプロパティ

入力

INPUT

: Matrix<complex<float> > , 入力信号の複素周波数表現 $M \times (NFFT/2+1)$.

SOURCE

: Vector<ObjectRef> 型で音源位置(方向)を表す. ObjectRef は,Source であり、音源位置で構成される.

INPUT_INPROGRESS

: bool , 処理中を表すフラグ. falseとなったとき,伝達関数ファイルにアーカイブする.

SEND_DATA

: bool , データ転送フラグ. 出力端子 TRANSFER_FUNCTION が存在する場合,本入力が trueとなったとき,伝達関数データを送信する.

RESET

: bool , リセット転送フラグ. trueとなったとき,ノード内に更新中の伝達関数データを初期状態に初期化する. また,出力端子 TRANSFER_FUNCTION が存在する場合,全音源位置の伝達関数データを送信する.

SEND_ALL

: bool , 全転送フラグ. 出力端子 TRANSFER_FUNCTION が存在する場合,本入力が trueとなったとき,全音源位置の伝達関数データを送信する.

TARGET_COUNT

: int , 伝達関数更新対象count. 本端子で指定されたcountのスペクトルデータを用いて,伝達関数の更新を行う. 本入力端子は,デフォルトでは非表示である.

非表示入力の追加方法は図 6.165を参照されたい.

\includegraphics[width=\linewidth ]{fig/modules/EstimateTF_input1}
Step 1: EstimateTF を右クリックし,Add Input をクリック
\includegraphics[width=\linewidth ]{fig/modules/EstimateTF_input2}
Step 2: Input の入力フォームに TARGET_COUNT を記入し,Add をクリック
\includegraphics[width=\linewidth ]{fig/modules/EstimateTF_input3}
Step 3: ノードに TARGET_COUNT 入力端子が追加される
Figure 6.165: 非表示入力の使用例 : TARGET_COUNT 端子の表示

出力

OUTPUT_INPROGRESS

: bool , 処理中を表すフラグ. この出力には INPUT_INPROGRESS と同じものが出力される.

TRANSFER_FUNCTION

: TransferFunction , 伝達関数データ. パラメータや入力端子の設定により,全音源位置の伝達関数データまたは一部の伝達関数データが出力される. 本出力端子は,デフォルトでは非表示である.

非表示出力の追加方法は図 6.166を参照されたい.

\includegraphics[width=\linewidth ]{fig/modules/EstimateTF_output1}
Step 1: EstimateTF を右クリックし,Add Output をクリック
\includegraphics[width=\linewidth ]{fig/modules/EstimateTF_output2}
Step 2: Output の入力フォームに TRANSFER_FUNCTION を記入し,Add をクリック
\includegraphics[width=\linewidth ]{fig/modules/EstimateTF_output3}
Step 3: ノードに TRANSFER_FUNCTION 出力端子が追加される
Figure 6.166: 非表示出力の使用例 : TRANSFER_FUNCTION 端子の表示

パラメータ

Table 6.154: EstimateTF のパラメータ表

パラメータ名

デフォルト値

単位

説明

EST_TF_FILENAME

string 

   

推定伝達関数保存ファイル名

LENGTH

int 

512

[pt]

FFT点数

SAMPLING_RATE

int 

16000

[Hz]

サンプリング周波数

INPUT_TYPE

string 

TF

 

ベースとなる伝達関数ファイルの入力方法

BASE_TF_FILENAME

string 

   

ベースとなる伝達関数のファイル名

IMPORT_INTERMEDIATE_DATA

string 

   

ベースとする中間ファイル群を含むディレクトリ

EXPORT_INTERMEDIATE_DATA

string 

   

更新後の中間ファイル群を含むディレクトリ

EXPORT_HISTORY_FILE

bool 

false

 

ヒストリファイルの出力フラグ

HISTORY_FILE_FRAMES

int 

10000

 

1ファイルあたりのヒストリフレーム数

HISTORY_FILE_ PERIOD

int 

1

 

ヒストリ保存する周期

INITIAL_TF_OUTPUT

string 

ALL

 

伝達関数データの初回出力方法

LOOK_BACK_COUNT

int 

10

 

伝達関数更新対象countの検索範囲

DEBUG

bool 

false

 

デバッグ出力のON/OFF

EST_TF_FILENAME

: string 型.伝達関数の推定結果の書き出し先ファイル名を指定する. $INPUT\_ INPROGRESS=false$ となったとき,現在保持している伝達関数の書き出しを行う.

LENGTH

: int 型.512 がデフォルト値.フーリエ変換の際の FFT 点数. 前段までの FFT 点数と合わせる必要がある.

SAMPLING_RATE

: int 型.16000 がデフォルト値. 入力音響信号のサンプリング周波数.LENGTH と同様,他のノードとそろえる必要がある.

INPUT_TYPE

: string 型.TF がデフォルト値. ベースとなる伝達関数ファイルの入力方法を TF または INTERMEDIATE で指定する. TF とした場合,BASE_TF_FILENAME の指定が必須となる. INTERMEDIATE とした場合,IMPORT_INTERMEDIATE_DATA を指定した上,当該ディレクトリにマイクロホン座標ファイル (microphones.xml) および音源座標ファイル (source.xml) が存在する必要がある.

BASE_TF_FILENAME

: string 型.デフォルト値はなし. ベースとなる定位用伝達関数ファイルを指定する. 本パラメータは $INPUT\_ TYPE=TF$ のときのみ表示される.

IMPORT_INTERMEDIATE_DATA

: string 型.デフォルト値はなし. ベースとする中間ファイル群を含むディレクトリを指定する. 当該ディレクトリにマイクロホン座標ファイル (microphone.xml) および音源座標ファイル (source.xml) が存在する必要がある.本パラメータは $INPUT\_ TYPE=INTERMEDIATE$ のときのみ表示される.

EXPORT_INTERMEDIATE_DATA

: string 型.デフォルト値はなし. 更新後の中間ファイル群を含むディレクトリ.入力がない場合は出力しない. 中間データのヒストリファイルを出力する場合には指定が必要.

EXPORT_HISTORY_FILE

: bool 型.デフォルト値は false.ヒストリファイル出力の ON/OFF. trueのとき,EXPORT_INTERMEDIATE_DATA にヒストリファイルが出力される.

HISTORY_FILE_FRAMES

: bool 型.デフォルト値は10000. 1ファイルあたりのヒストリフレーム数.ヒストリファイルの出力時に使用する. EXPORT_HISTORY_FILE が trueのとき表示される.

HISTORY_FILE_PERIOD

: int 型.デフォルト値は1.ヒストリ保存する周期. ヒストリファイルの出力時に使用する. EXPORT_HISTORY_FILE が trueのとき表示される.

INITIAL_TF_OUTPUT

: string 型.デフォルト値はALL.伝達関数データの初回出力方法を ALL または PARTIAL で指定する. ALL の場合,初回出力時には全伝達関数データを出力する. PARTIAL の場合,更新分の伝達関数データのみを出力する.

LOOK_BACK_COUNT

: int 型.デフォルト値は10.伝達関数更新対象countの検索範囲. この範囲を超える TARGET_COUNT が指定された場合,更新処理は実行されない.

DEBUG

: bool 型.デバッグ出力のON/OFF,デバッグ出力のフォーマットは,以下の通りである. 更新された音源座標ががタブ区切りで出力される. 続けて更新後の伝達関数値が出力される.

6.9.1.5 ノードの詳細

伝達関数推定方法:

伝達関数の推定は,マイクロホンアレイに入力された音響信号からマイクロホン間の振幅差,位相差を平均化することにより行う. このため,伝達関数の推定を行うにはまず音源定位を行う必要がある. 推定は下記の手順で行う.

  1. パラメータ入力されたベースの伝達関数について正規化を行っておく

  2. 入力スペクトルを正規化し,定位された位置の伝達関数に対し線形平均となるように更新する

これら手順における正規化は入力信号に対し,周波数ラインごとの振幅のノルムが 1 ,位相の平均が 0deg となるように行う.

中間ファイル群:

中間ファイル群は伝達関数ファイルにアーカイブする前の下記ファイルを含む.

これらをアーカイブし,伝達関数ファイル (.zip) を作成する. 中間ファイル群を入力して伝達関数推定を行う場合,source.xml と microphones.xml の入力は必須となる.

中間データファイル仕様:

中間データファイルは,伝達関数推定の追加更新を行う際に使用するファイルである. ファイル形式は,Matrix バイナリ形式となっており,型は float である. 行は音源位置に,列は下記に対応する.

ヒストリファイル仕様:

ヒストリファイルは,伝達関数推定の更新履歴分析を行う際に使用するファイルである. フレームの経過とともに,推定された伝達関数の平均や分散の変化を知ることができる. ヒストリ保存周期は HISTORY_FILE_PERIOD によって指定することができ,HISTORY_FILE_FRAMES を超えたデータについては,ヒストリファイル中最も古いデータを上書き更新していく. ファイル形式は,Matrix バイナリ形式となっており,型は float である. 行はフレームに,列は下記に対応する.