6.2.18 SourceIntervalExtender

6.2.18.1 ノードの概要

音源定位開始時刻を,実際よりも早めたいときに使う. ノードパラメータ PREROLL_LENGTH に与えた分だけ, 実際よりも早く定位結果が出力される.

例えば, PREROLL_LENGTH が5なら, 実際の定位結果が出力される5フレーム分前から 定位結果が出力される.

6.2.18.2 必要なファイル

無し.

6.2.18.3 使用方法

どんなときに使うのか

音源定位の後に音源分離を行うときに,音源定位と音源分離の間に挿入する. なぜなら,音源定位結果は音が発生してから出力するので, 実際の音の開始時刻よりもやや遅れてしまう. 従って,分離音の先頭が切れてしまう. そこで, SourceIntervalExtender を挿入して強制的に音源定位結果を 早く出力させることで, この問題を解決する.

典型的な接続例

6.39に典型的な接続例を示す. 図のように,定位結果を元に分離したい場合には, SourceTracker の後に SourceIntervalExtender を挿入する.

\includegraphics[width=\textwidth ]{fig/modules/SourceIntervalExtender}
Figure 6.39: SourceIntervalExtender の接続例: Iterator  サブネットワーク

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

入力

SOURCES

: Vector<ObjectRef> 型.Source 型で表現される音源定位結果の Vector が入力される.ObjectRef が参照するのは,Source 型のデータである.

出力

OUTPUT

: Vector<ObjectRef> 型.早められた出力された音源定位結果が出力される.ObjectRef が参照するのは,Source 型のデータである.

パラメータ

Table 6.31: SourceIntervalExtender のパラメータ表

パラメータ名

デフォルト値

単位

説明

PREROLL_LENGTH

int 

50

[frame]

何フレームだけ早く定位結果を出力し始めるか.

PREROLL_LENGTH

: int 型. 定位結果を実際よりどれだけ早く出力するかを決定する正の整数. 値が小さすぎると分離音の先頭が出力されないので, 前段で用いる音源定位手法の遅延に合わせて設定する必要がある.

6.2.18.5 ノードの詳細

SourceIntervalExtender 無しで 定位結果を元に音源分離を行ったとき, 図6.40に 示すように音源定位の処理時間の分だけ分離音の先頭部分が切れてしまう. 特に音声認識の際,音声の先頭部分が切れていると認識性能に悪影響を及ぼすので, 本ノードを使って定位結果を早める必要がある.

当然, 音源が定位される前に定位結果を出力するのは不可能である. そこで本ノード以降のネットワークの処理を PREROLL_LENGTH 分だけ遅らせることで “音源定位結果の出力を早める” 機能を実現する. こうして全体を遅らせたあと, 各繰り返しでPREROLL_LENGTH分だけ入力を先読みし, そこ定位結果があれば,その時点から定位結果の出力を開始する (図6.41参照.)

\includegraphics[width=\linewidth ]{fig/modules/SourceIntervalExtender-detail}
Figure 6.40: 音源定位結果を実際より早く出力する必要性
\includegraphics[width=\linewidth ]{fig/modules/SourceIntervalExtender-detail2}
Figure 6.41: SourceIntervalExtender の動作: 定位結果を見つけると, PREROLL_LENGTH 分だけ事前に出力する.