6.2.21 CSP

6.2.21.1 ノードの概要

CSP 法を用いて2chの音声スペクトルからマイクロホン座標系での音源方向を推定する.

6.2.21.2 必要なファイル

なし.

6.2.21.3 使用方法

どんなときに使うのか

CSP 法によって,2ch マイクロホンの音の到来時間差を求め,音源の方向を推定する. 本ノードから出力される定位結果が,後段の音源追跡や音源分離に利用される.

典型的な接続例

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

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

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

入力

INPUT

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

出力

OUTPUT

: Vector<ObjectRef> 型で音源位置(方向)を表す. ObjectRef は,Source であり,音源位置とその方向の CSP 係数値からなる構造体である.Vector の要素数は音源数 ($N$) . CSP 係数の詳細については,ノードの詳細を参照されたい.

CSPVALUE

: Vector<float> 型.各方向毎の CSP 係数 式(29)の${CSP_{i,j}}(k)$に相当する. 本出力端子は,デフォルトでは非表示である.

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

\includegraphics[width=\linewidth ]{fig/modules/CSP-output1}
Step 1: CSP を右クリックし,Add Output をクリック
\includegraphics[width=\linewidth ]{fig/modules/CSP-output2}
Step 2: Outputs の入力フォームに CSPVALUE を記入し,Add をクリック
\includegraphics[width=\linewidth ]{fig/modules/CSP-output3}
Step 3: ノードに CSPVALUE 出力端子が追加される
Figure 6.52: 非表示出力の使用例 : CSPVALUE 端子の表示

パラメータ

Table 6.38: CSP のパラメータ表

パラメータ名

デフォルト値

単位

説明

DISTANCE_BETWEEN_MICS

float 

0.3

[m]

マイク間距離

SAMPLING_RATE

int 

16000

[Hz]

サンプリングレート

SPEED_OF_SOUND

float 

340

[m/s]

音速

LENGTH

int 

512

[pt]

FFT点数($NFFT$)

LOWER_BOUND_FREQUENCY

int 

500

[Hz]

使用周波数帯域の最小値

UPPER_BOUND_FREQUENCY

int 

2800

[Hz]

使用周波数帯域の最大値

MANUAL_WEIGHT_SQUARE

Matrix<float> 

下記参照

 

矩形重みの周波数転換点

MIN_DEG

int 

0

[deg]

ピーク探索方位角の最小値

MAX_DEG

int 

180

[deg]

ピーク探索方位角の最大値

WINDOW

int 

50

[frame]

クロススペクトル算出時の平均フレーム数

WINDOW_TYPE

string 

FUTURE

 

クロススペクトル算出時の平均フレーム使用区間

PERIOD

int 

50

[frame]

定位結果を算出する周期

CSP_THRESHOLD

float 

0

 

CSP 係数閾値

MAXNUM_OUT_PEAKS

int 

-1

 

最大出力音源数

DEBUG

bool 

false

 

デバッグ出力の ON/OFF

DISTANCE_BETWEEN_MICS

: float 型.0.3がデフォルト値.マイク間距離.

SAMPLING_RATE

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

SPEED_OF_SOUND

: float 型.340がデフォルト値.音速.

LENGTH

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

LOWER_BOUND_FREQUENCY

: int 型.500 がデフォルト値. 音源定位のピーク検出時に考慮する周波数帯域の下限 であり,ノードの詳細では,$\omega _{min}$ で表わされている. $0 \leq \omega _{min} \leq {\rm SAMPLING\_ RATE} / 2$ である必要がある.

UPPER_BOUND_FREQUENCY

: int 型.2800 がデフォルト値. 音源定位のピーク検出時に考慮する周波数帯域の上限 であり,下記では,$\omega _{max}$ で表わされている. $\omega _{min} < \omega _{max} \leq {\rm SAMPLING\_ RATE} / 2$ である必要がある.

MANUAL_WEIGHT_SQUARE

: Vector<float> 型. <Vector<float> 0.0 2000.0 4000.0 6000.0 8000.0> がデフォルト値. MANUAL_WEIGHT_SQUARE で指定した周波数によって矩形重みを生成し,クロススペクトルに付与する. MANUAL_WEIGHT_SQUARE の奇数成分から偶数成分までの周波数帯域は 1 の重みを, 偶数成分から奇数成分までの周波数帯域は 0 の重みを付与する. デフォルト値では 2000 [Hz] から 4000[Hz],6000 [Hz] から 8000[Hz]までのクロススペクトルを抑圧することができる.

MIN_DEG

: int 型.0 がデフォルト値. 音源探索する際の最小角度.

MAX_DEG

: int 型.180 がデフォルト値. 音源探索する際の最大角度.

WINDOW

: int 型.50 がデフォルト値. クロススペクトル計算時の平滑化フレーム数を指定する. ノード内では,入力信号の複素スペクトルから相関行列を毎フレーム生成し,WINDOW で指定されたフレームで加算平均を取る. この値を大きくすると,相関行列が安定するが,区間が長い分,時間遅れが長くなる.

WINDOW_TYPE

: string 型.FUTURE がデフォルト値. クロススペクトル計算時の平滑化フレームの使用区間を指定する. FUTURE に指定した場合,現在のフレーム $f$ から $f+WINDOW-1$ までが平滑化に使用される. MIDDLE に指定した場合,$f-(WINDOW/2)$ から $f+(WINDOW/2)+(WINDOW\% 2)-1$ までが平滑化に使用される. PAST に指定した場合,$f-WINDOW+1$ から $f$ までが平滑化に使用される.

PERIOD

: int 型.50 がデフォルト値. 音源定位結果算出の周期をフレーム数で指定する. この値が大きいと,定位結果を得るための時間間隔が大きくなり, 発話区間が正しく取りにくくなったり,移動音源の追従性が悪くなる. ただし,小さくすると計算負荷がかかるため,計算機環境に合わせたチューニングが必要となる.

CSPVALUE

: float 型.0 がデフォルト値. CSP係数の閾値を指定する.音源として採用するCSP係数の閾値.

MAXNUM_OUT_PEAKS

: int 型.-1 がデフォルト値. 出力最大音源数を表す. 0 , -1 の場合は,探索された全てのピークが出力される. MAXNUM_OUT_PEAKS $> 0$ の場合は,CSP係数の大きなピークから順に MAXNUM_OUT_PEAKS 個が出力される.

6.2.21.5 ノードの詳細

CSP 法による音源定位は 2ch のマイクロホン ($M_{i}$ , $M_{j}$) で収録した信号$s_{i}(n)$ , $s_{j}(n)$ から CSP 係数および到来時間差 ( TDOA : Time difference of arrival )を推定することにより行う. CSP 係数および TDOA の計算式を式(29),式(30)に示す.

  \begin{equation} \label{eq:CSP-value} CSP_{i,j}(k) = DFT^{-1}[\frac{DFT[s_{i}(n)]DFT[s_{j}(n)]^{\ast }}{|DFT[s_{i}(n)]||DFT[s_{j}(n)]|}] \end{equation}   (29)
  \begin{equation} \label{eq:CSP-TDOA} \tau = argmax_{k}(CSP_{i,j}(k)) \end{equation}   (30)

式(30)に示すとおり,CSP 係数の大きくなる時間差 $\tau $ (サンプル差)が TDOA となる.時間差 $\tau $ と音速 $c$ , マイクロホン間隔 $d$ , サンプリング周波数 $F_{s}$ を用いて音源方向 $\theta $ を推定する.

  \begin{equation} \label{eq:CSP-theta} \theta = \cos ^{-1}(\frac{c \tau / F_{s}}{d}) \end{equation}   (31)
\includegraphics[width=.5\textwidth ]{fig/modules/CSP-fig-ja}
Figure 6.53: CSP 法

6.2.21.6 参考文献