CSP 法を用いて2chの音声スペクトルからマイクロホン座標系での音源方向を推定する.
なし.
どんなときに使うのか
CSP 法によって,2ch マイクロホンの音の到来時間差を求め,音源の方向を推定する. 本ノードから出力される定位結果が,後段の音源追跡や音源分離に利用される.
典型的な接続例
典型的な接続例を図 6.51 に示す.
入力
: Matrix<complex<float> > , 入力信号の複素周波数表現 $M \times (NFFT/2+1)$.
出力
: Vector<ObjectRef> 型で音源位置(方向)を表す. ObjectRef は,Source であり,音源位置とその方向の CSP 係数値からなる構造体である.Vector の要素数は音源数 ($N$) . CSP 係数の詳細については,ノードの詳細を参照されたい.
: Vector<float> 型.各方向毎の CSP 係数 式(29)の${CSP_{i,j}}(k)$に相当する. 本出力端子は,デフォルトでは非表示である.
非表示出力の追加方法は図 6.52を参照されたい.
パラメータ
パラメータ名 |
型 |
デフォルト値 |
単位 |
説明 |
DISTANCE_BETWEEN_MICS |
0.3 |
[m] |
マイク間距離 |
|
SAMPLING_RATE |
16000 |
[Hz] |
サンプリングレート |
|
SPEED_OF_SOUND |
340 |
[m/s] |
音速 |
|
LENGTH |
512 |
[pt] |
FFT点数($NFFT$) |
|
LOWER_BOUND_FREQUENCY |
500 |
[Hz] |
使用周波数帯域の最小値 |
|
UPPER_BOUND_FREQUENCY |
2800 |
[Hz] |
使用周波数帯域の最大値 |
|
MANUAL_WEIGHT_SQUARE |
下記参照 |
矩形重みの周波数転換点 |
||
MIN_DEG |
0 |
[deg] |
ピーク探索方位角の最小値 |
|
MAX_DEG |
180 |
[deg] |
ピーク探索方位角の最大値 |
|
WINDOW |
50 |
[frame] |
クロススペクトル算出時の平均フレーム数 |
|
WINDOW_TYPE |
FUTURE |
クロススペクトル算出時の平均フレーム使用区間 |
||
PERIOD |
50 |
[frame] |
定位結果を算出する周期 |
|
CSP_THRESHOLD |
0 |
CSP 係数閾値 |
||
MAXNUM_OUT_PEAKS |
-1 |
最大出力音源数 |
||
DEBUG |
false |
デバッグ出力の ON/OFF |
: float 型.0.3がデフォルト値.マイク間距離.
: int 型.16000 がデフォルト値.入力音響信号のサンプリング周波数.LENGTH と同様,他のノードとそろえる必要がある.
: float 型.340がデフォルト値.音速.
: int 型.512 がデフォルト値.フーリエ変換の際のFFT点数.前段までのFFT点数と合わせる必要がある.
: int 型.500 がデフォルト値. 音源定位のピーク検出時に考慮する周波数帯域の下限 であり,ノードの詳細では,$\omega _{min}$ で表わされている. $0 \leq \omega _{min} \leq {\rm SAMPLING\_ RATE} / 2$ である必要がある.
: int 型.2800 がデフォルト値. 音源定位のピーク検出時に考慮する周波数帯域の上限 であり,下記では,$\omega _{max}$ で表わされている. $\omega _{min} < \omega _{max} \leq {\rm SAMPLING\_ RATE} / 2$ である必要がある.
: 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]までのクロススペクトルを抑圧することができる.
: int 型.0 がデフォルト値. 音源探索する際の最小角度.
: int 型.180 がデフォルト値. 音源探索する際の最大角度.
: int 型.50 がデフォルト値. クロススペクトル計算時の平滑化フレーム数を指定する. ノード内では,入力信号の複素スペクトルから相関行列を毎フレーム生成し,WINDOW で指定されたフレームで加算平均を取る. この値を大きくすると,相関行列が安定するが,区間が長い分,時間遅れが長くなる.
: string 型.FUTURE がデフォルト値. クロススペクトル計算時の平滑化フレームの使用区間を指定する. FUTURE に指定した場合,現在のフレーム $f$ から $f+WINDOW-1$ までが平滑化に使用される. MIDDLE に指定した場合,$f-(WINDOW/2)$ から $f+(WINDOW/2)+(WINDOW\% 2)-1$ までが平滑化に使用される. PAST に指定した場合,$f-WINDOW+1$ から $f$ までが平滑化に使用される.
: int 型.50 がデフォルト値. 音源定位結果算出の周期をフレーム数で指定する. この値が大きいと,定位結果を得るための時間間隔が大きくなり, 発話区間が正しく取りにくくなったり,移動音源の追従性が悪くなる. ただし,小さくすると計算負荷がかかるため,計算機環境に合わせたチューニングが必要となる.
: float 型.0 がデフォルト値. CSP係数の閾値を指定する.音源として採用するCSP係数の閾値.
: int 型.-1 がデフォルト値. 出力最大音源数を表す. 0 , -1 の場合は,探索された全てのピークが出力される. MAXNUM_OUT_PEAKS $> 0$ の場合は,CSP係数の大きなピークから順に MAXNUM_OUT_PEAKS 個が出力される.
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) |
綱沢駿, 大山真司, “複数フレームのCSP係数を用いたTDOA推定による複数人物定位・追跡” 計測自動制御学会論文集, Vol.53, No.12, 644/653(2017).