最小分散無歪応答法 (Minimum Variance Distortionless Response; MVDR) を用いた音源分離を行う. 本アルゴリズムでは目的音源を歪ませない線形拘束条件の下で,出力パワーを最小化するような分離行列を求める. 音源からマイクロホンまでの伝達関数情報,音源の区間情報(発話区間の検出結果),および既知雑音の相関行列が必要となる.
ノードの入力は,
混合音のマルチチャネル複素スペクトル
音源方向のデータ
既知雑音の相関行列
である. また,出力は分離音ごとの複素スペクトルである.
対応するパラメータ名 |
説明 |
TF_CONJ_FILENAME |
マイクロホンアレーの伝達関数 |
どんなときに使うのか
所与の音源方向に対して,マイクロホンアレーを用いて当該方向の音源分離を行う. なお,音源方向として,音源定位部での推定結果,あるいは,定数値を使用することができる.
典型的な接続例
MVDR ノードの接続例を図 6.67 に示す. 入力は以下である.
INPUT_FRAMES : MultiFFT 等から来る混合音の多チャネル複素スペクトル
INPUT_SOURCES : LocalizeMUSIC や ConstantLocalization 等から来る音源方向
INPUT_NOISE_CM : 既知雑音の相関行列
出力は分離音声となる.
入力
: Matrix<complex<float> > 型.マルチチャネル複素スペクトル. 行がチャネル,つまり,各マイクロホンから入力された波形の複素スペクトルに対応し,列が周波数ビンに対応する.
: Vector<ObjectRef> 型.音源定位結果等が格納された Source 型オブジェクトの Vector 配列である. 典型的には, SourceTracker ノード,SourceIntervalExtender ノードと繋げ,その出力を用いる.
: Matrix<complex<float> > 型. 各周波数ビン毎の相関行列.$M$次の複素正方行列である相関行列が $NFFT / 2 + 1$ 個入力される. Matrix<complex<float> > の行は周波数($NFFT / 2 + 1$ 行)を,列は複素相関行列($M * M$ 列)を表す.
出力
: Map<int, ObjectRef> 型.分離音の音源IDと,分離音の1チャネル複素スペクトル
(Vector<complex<float> > 型) のペア.
パラメータ
: int 型. 分析フレーム長[samples].前段階における値(AudioStreamFromMic ,MultiFFT ノードなど)と一致している必要がある. デフォルト値は512[samples].
: int 型. フレームのシフト長[samples].前段階における値(AudioStreamFromMic ,MultiFFT ノードなど)と一致している必要がある. デフォルト値は160[samples].
: int 型. 入力波形のサンプリング周波数[Hz].デフォルト値は16000[Hz].
: int 型. 分離処理を行う際に利用する最小周波数値であり,これより下の周波数に対しては処理を行わず,出力スペクトルの値は0となる. 0以上サンプリング周波数値の半分までの範囲で指定する.
: int 型. 分離処理を行う際に利用する最大周波数値であり,これより上の周波数に対しては処理を行わず,出力スペクトルの値は0となる. LOWER_BOUND_FREQUENCY $<$ UPPER_BOUND_FREQUENCY である必要がある.
: bool 型. デフォルトは false. trueが与えられると, 分離状況が標準出力に出力される.
パラメータ名 |
型 |
デフォルト値 |
単位 |
説明 |
LENGTH |
512 |
[pt] |
分析フレーム長 |
|
ADVANCE |
160 |
[pt] |
フレームのシフト長 |
|
SAMPLING_RATE |
16000 |
[Hz] |
サンプリング周波数 |
|
LOWER_BOUND_FREQUENCY |
0 |
[Hz] |
分離処理で用いる周波数の最小値 |
|
UPPER_BOUND_FREQUENCY |
8000 |
[Hz] |
分離処理で用いる周波数の最大値 |
|
TF_CONJ_FILENAME |
マイクロホンアレーの伝達関数を記したファイル名 |
|||
REG_FACTOR |
0.001 |
係数.式(85) |
||
ENABLE_DEBUG |
false |
デバッグ出力の可否 |
技術的な詳細: 基本的に詳細は下記の参考文献を参照されたい.
音源分離概要: 音源分離問題で用いる記号を表 6.58 にまとめる. 演算はフレーム毎に周波数領域において行われるため,各記号は周波数領域での,一般には複素数の値を表す. 音源分離は$K$個の周波数ビン($1 \leq k \leq K$)それぞれに対して演算が行われるが,本節ではそれを略記する. $N$, $M$, $f$をそれぞれ,音源数,マイク数,フレームインデックスとする.
変数 |
説明 |
$\boldsymbol {S}(f) = \left[S_1(f), \dots , S_ N(f)\right]^ T$ |
$f$フレーム目の音源の複素スペクトル |
$\boldsymbol {X}(f) = \left[X_1(f), \dots , X_ M(f)\right]^ T$ |
マイクロホン観測複素スペクトルのベクトル.INPUT_FRAMES 入力に対応. |
$\boldsymbol {N}(f) = \left[N_1(f), \dots , N_ M(f)\right]^ T$ |
加法性雑音 |
$\boldsymbol {H} = \left[ \boldsymbol {H}_1, \dots , \boldsymbol {H}_ N \right] \in \mathbb {C}^{M \times N}$ |
$1 \leq n \leq N$番目の音源から$1 \leq m \leq M$番目のマイクまでの伝達関数行列 |
$\boldsymbol {K}(f) \in \mathbb {C}^{M \times M}$ |
既知雑音相関行列 |
$\boldsymbol {W}(f) = \left[ \boldsymbol {W}_1, \dots , \boldsymbol {W}_ M \right] \in \mathbb {C}^{N \times M}$ |
分離行列 |
$\boldsymbol {Y}(f) = \left[Y_1(f), \dots , Y_ N(f)\right]^ T$ |
分離音複素スペクトル |
音のモデルは以下の一般的な線形モデルを扱う.
$\displaystyle \boldsymbol {X}(f) $ | $\displaystyle = $ | $\displaystyle \boldsymbol {H}\boldsymbol {S}(f) + \boldsymbol {N}(f) \label{eq:MDVR_ observation} $ | (82) |
分離の目的は,
$\displaystyle \boldsymbol {Y}(f) $ | $\displaystyle = $ | $\displaystyle \boldsymbol {W}(f)\boldsymbol {X}(f) \label{eq:MDVR-separation} $ | (83) |
として,$\boldsymbol {Y}(f)$ が $\boldsymbol {S}(f)$ に近づくように,$\boldsymbol {W}(f)$ を推定することである.
MVDR法に基づく分離行列$W_{\textrm{MVDR}}$は次式であらわされる.
$\displaystyle W_{\textrm{MVDR}}(f) $ | $\displaystyle = $ | $\displaystyle \frac{\tilde{\boldsymbol {K}}^{-1}(f)\boldsymbol {H}}{\boldsymbol {H}^{H}\tilde{\boldsymbol {K}}^{-1}(f)\boldsymbol {H}} $ | (84) |
ここで,
$\displaystyle \label{eq:MDVRsep} \tilde{\boldsymbol {K}}(f) $ | $\displaystyle = $ | $\displaystyle \boldsymbol {K}(f) + \alpha \boldsymbol {I} $ | (85) |
であり,ここで$\alpha $ はパラメータ REG__FACTOR,$\boldsymbol {I}$は相関行列の正則化を行うための対角行列である.
トラブルシューティング: 基本的には GHDSS ノードのトラブルシューティングと同じ.
F. Asano: ’Array signal processingfor acoustics —Localization, tracking and separation of sound sources—, The Acoustical Society of Japan, 2011.