6.3.11 SemiBlindICA

6.3.11.1 ノードの概要

多チャンネル観測信号に含まれる既知信号 (システム発話の音声信号など) を除去する. 参考文献$^{(1)}$ を実装したモジュールである.

6.3.11.2 必要なファイル

無し.

6.3.11.3 使用方法

どんなときに使うのか

音声対話システムでの使用例を示す. 近接マイクを用いない音声対話システムは,ユーザの口元とマイクの間に距離があるため,システム発話もマイクに混入することがある. その場合,システムのマイクから入力される信号には,ユーザの発話とシステムの発話が混ざっているため,ユーザ発話の音声認識精度が劣化することがある.

より一般的には,マイクロフォンアレイで観測した多チャンネル信号に,波形既知の信号が含まれている場合, 既知信号を除去することが出来る. 上記例では,システム発話が既知信号である. ここで,既知とする信号については,再生時の波形がわかっていれば良い (例: スピーカーで再生する wav ファイルがある など). 一般に,スピーカーで再生の波形とマイクで観測した時の波形は,スピーカーからマイクへの伝達の過程で変化し,また,伝達時間に応じた多少の時間ずれが生じる. SemiBlindICA モジュールは,それらの伝達過程や時間ずれも考慮して観測信号から既知信号を除去するため, 再生時の波形が与えられれば良い.

典型的な接続例

図 6.59 and 6.60SemiBlindICA の使用例を示す. 図 6.59 では,未知信号と既知信号が混ざって観測された多チャンネル音響信号を INPUT に, 既知信号を REFERENCE に,それぞれ MultiFFT モジュールで時間周波数領域に変換し,入力としている. OUTPUT は,INPUT から REFERENCE の成分を抑圧した未知信号が出力されており, LocalizeMUSIC モジュールを用いて定位をするなど,未知信号に対する処理が行われていく.

図 6.60 は,1 チャンネル目は既知信号, 2 チャンネル目は既知信号と未知信号が混合された信号を含むステレオ wav ファイルに対する SemiBlindICA モジュールの使用例を示す. ChannelSelector モジュールを利用することで未知観測信号チャネルと既知信号チャネルを切り分け, それぞれ INPUT, REFERENCE に入力している. その出力は,図 6.60 のようにネットワークを構成することで, SaveWavePCM モジュールを用いて,分離抽出された未知信号成分を wav ファイルとして保存することが出来る.

\includegraphics[width=.75\textwidth ]{fig/modules/SemiBlindICA1}
Figure 6.62: SemiBlindICA の基本的な利用例
\includegraphics[width=.75\textwidth ]{fig/modules/SemiBlindICA2}
Figure 6.63: SemiBlindICA で左右チャンネルを使って未知信号を抽出する例

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

Table 6.63: SemiBlindICA のパラメータ表

パラメータ名

デフォルト値

単位

説明

CHANNEL

int 

1

 

入力 INPUT のチャネル数.

LENGTH

int 

512

[pt]

短時間フーリエ変換のフレーム長.

INTERVAL

int 

1

 

短時間フーリエ変換のシフト幅によるフィルタ長補正パラメータ.シフトのオーバラップが大きくなる場合 (シフト幅が小さい場合) に大きな値にする.

TAP_LOWFREQ

int 

8

[frame]

周波数ビン 0 [Hz] におけるフィルタ長.

TAP_HIGHFREQ

int 

4

[frame]

ナイキスト周波数ビンにおけるフィルタ長.

DECAY

float 

0.8

 

既知信号除去フィルタ係数更新に用いる学習係数の時間フレームごとの減衰度合い.

MU_FILTER

float 

0.01

 

既知信号除去フィルタの学習係数.非負値を用いる.

MU_REFERENCE

float 

0.01

 

既知信号の正規化パラメータの学習係数.非負値を用いる.

MU_UNKNOWNSIGNAL

float 

0.01

 

観測信号中の既知でない,未知信号の正規化パラメータの学習係数.非負値を用いる.

IS_ZERO

float 

0.0001

 

入力信号が $0$ とみなす閾値.ただし,時間周波数領域でのパワーであることに注意.

FILE_FILTER_IN

string 

-null

 

既知信号除去フィルタの初期値を格納したファイル名.デフォルト値の “-null” のときは,ファイル入力を用いない.

FILE_FILTER_OUT

string 

-null

 

既知信号除去フィルタを保存するときのファイル名.デフォルト値の “-null” のときは,ファイル出力しない.

OUTPUT_FREQ

int 

150

[frame]

上記フィルタを保存する時間フレームの間隔.

入力

INPUT

: Matrix<complex<float> > 型.マイクロホンアレイで観測したマルチチャネル複素スペクトル.MultiFFT モジュールで時間周波数領域に変換したあとの信号を入力とする.

REFERENCE

: Matrix<complex<float> > 型.既知信号の複素スペクトル.MultiFFT モジュールで時間周波数領域に変換したあとの信号を用いる.

出力

OUTPUT

: Matrix<complex<float> > 型.入力の INPUT から既知信号 REFERENCE を除去した信号が INPUT と同様,マルチチャネル複素スペクトル型として出力される.

パラメータ

CHANNEL

入力多チャネル信号 INPUT のチャネル数.

LENGTH

短時間フーリエ変換のフレーム長.HARK のデフォルト設定では,512 [pt] である.

INTERVAL

既知信号を除去するフィルタ長を短時間フーリエ変換のシフト幅に応じた補正をするための係数.この補正を multirate repeating と呼び,フィルタ学習の収束性能向上が期待できる$^{(2)}$. 数式中は $K$ で示す.

TAP_LOWFREQ

周波数ビン 0 [Hz] におけるフィルタ長.既知信号と観測信号の時間ずれ,観測環境の残響時間を考慮する.残響時間が長い環境では大きめに,また,低周波領域は一般に大きめの値が必要.数式中は $M_{L}$ で示す.

TAP_HIGHFREQ

ナイキスト周波数ビンにおけるフィルタ長.各周波数ビンにおけるフィルタ長は,TAP_LOWFREQ と線形補間によって決定する.数式中は $M_{U}$ で示す.

DECAY

各時間フレームに対応する既知信号除去フィルタ係数更新に用いる学習係数について,過去のフレームに対応する既知信号除去フィルタ学習係数の減衰度合. 屋内など,残響が存在する環境では,過去のフレームに対応するフィルタ係数は指数的に減衰する.フィルタ係数値のスケールが指数的な広がりを持っているため,学習係数も同様に指数的に減衰させることで, 学習の効率化を図ることが出来る. $1$ のとき,全フィルタ係数が同様の学習係数で更新される. 0.6–0.8 程度が経験的によく用いられる.数式中は \lambda で示す.

MU_FILTER

既知信号除去フィルタの学習は勾配法によって行うが,フィルタ係数更新時に評価関数の勾配にかけられる学習係数である.非負値を用いる. 大きい値に設定すると,フィルタ係数の1度ずつの更新も大きく変化させることが出来るが,フィルタ係数が (局所) 最適解の前後を揺れ動き,収束しないというリスクがある. 一方,小さい値に設定すると,いつかは収束することが期待できるが,(局所) 最適解に到達する更新回数が増えるというリスクが生じる.数式中は $\mu _{w}$ で示す.

MU_REFERENCE

既知信号の正規化パラメータの学習係数.既知信号の正規化処理は,既知信号除去フィルタの収束を加速させるために行う.数式中は $\mu _{\alpha }$ で示す.

MU_UNKNOWNSIGNAL

観測信号中の未知信号の正規化パラメータの学習係数.この正規化処理も,MU_REFERENCE のときと同様に,既知信号除去フィルタの収束性向上のために行う.数式中は $\mu _{\beta }$ で示す.

IS_ZERO

計算資源節約のため,入力信号が $0$ に近いときは処理を省略するが,入力信号が $0$ とみなす閾値.ただし,時間周波数領域でのパワーであることに注意.

FILE_FILTER_IN

既知信号除去フィルタの初期値を格納したファイル名.“-null” のとき,ファイル入力を用いない.

FILE_FILTER_OUT

既知信号除去フィルタを保存する場合のファイル名.“-null” のときは,ファイル出力なし.

OUTPUT_FREQ

既知信号除去フィルタを保存する時間フレームの間隔.

6.3.11.5 ノードの詳細

SemiBlindICA では,短時間フーリエ変換(STFT)領域における音の混合モデル に基づいて,未知信号と既知音との独立性条件を用いた独立成分分析(ICA)を適 応し,観測信号から既知音を分離する. 本モジュールでは入力の多チャンネル音響信号に対し,各チャンネル・周波数ビ ン個別にこの処理を適応し,入力に含まれる既知信号を分離した多チャンネル音 響信号を出力する.

混合モデルと分離過程: SemiBlindICA では既知音の再生空間における残響を考慮した混合モデルを使用 する. このモデルは,STFT領域での線形混合モデルで表現され,$\omega $を周波数イン デックス, $f$をフレームインデックスとして観測信号$X(\omega , f)$は以下の ように定式化される.

  $\displaystyle X(\omega , f) = N(\omega , f) + \sum ^ M_{m=0} H(\omega , m)S(\omega , f-m) \nonumber $    

ここで,$N(\omega , f)$は未知信号,$S(\omega , f)$は既知信号を表し, $H(\omega , m)$は$m$番目の遅延フレームの伝達係数を表す.

混合過程が瞬時混合として扱えるため,ICAを適用することで既知信号を分離す る.分離過程を以下に示す.

  $\displaystyle \left( \begin{array}{c} \hat{N}(\omega , f) \\ {\boldsymbol S}(\omega , f) \end{array} \right) $ $\displaystyle = $ $\displaystyle \left( \begin{array}{cc} a(\omega ) & -{\boldsymbol w}^ T(\omega ) \\ {\boldsymbol 0} & {\boldsymbol I} \end{array} \right) \left( \begin{array}{c} X(\omega , f) \\ {\boldsymbol S}(\omega , f) \end{array} \right) \label{eq:unmix} $   (109)
  $\displaystyle {\boldsymbol S}(\omega , f) $ $\displaystyle = $ $\displaystyle [S(\omega , f), S(\omega , f-K), \cdots , S(\omega , f-M(\omega )K)]^ T \nonumber $    
  $\displaystyle {\boldsymbol w}(\omega ) $ $\displaystyle = $ $\displaystyle [w_0(\omega ), w_1(\omega ), \cdots , w_{M(\omega )}(\omega )]^ T \nonumber $    
  $\displaystyle M(\omega ) $ $\displaystyle = $ $\displaystyle {\rm floor}\left(\omega / \omega _{nyq}(M_ U - M_ L)\right) + M_ L \nonumber $    

ここで,$\omega _{nyq}$はナイキスト周波数に相当する周波数ビン番号を, $M_ L$,$M_ U$は0Hzに対応する周波数ビンと$\omega _{nyq}$におけるフィルタ長 を表し,${\boldsymbol w}(\omega )^ T$は$M+1$次の分離フィルタ${\boldsymbol w}(\omega )$の転置である. また,$K$は既知信号を除去するフィルタ長を短時間フーリエ変換のシフト幅に 応じて補正するための係数である. この補正を multirate repeating$^{(2)}$ と呼び,フィルタ学習の収束性能向上が期待で きる.

分離フィルタの推定: 分離フィルタは,$\hat{N}$,${\boldsymbol S}$の結合確率密度と周辺確率密度の積との距 離である Kullback-Leibler Divergence (KLD)を最小化することで推定する. 非ホロノミック拘束$^{(3)}$と自然勾配法により,後述する正規化された未知信号 ${\hat{N}_ n}$ および既知信号 ${\boldsymbol S}_ n$から,以下の学習則が得られる.

  $\displaystyle {\boldsymbol w}(\omega , f+1) $ $\displaystyle = $ $\displaystyle {\boldsymbol w}(\omega , f) + {\boldsymbol \mu }_ w \Phi _{\hat{N}_ n(\omega )}\left( \hat{N}_ n(\omega , f)\right) \bar{\boldsymbol S}_ n(\omega , f) \nonumber $    
  $\displaystyle a(\omega ) $ $\displaystyle = $ $\displaystyle 1 \nonumber $    

ここで,$\bar{x}$は$x$の複素共役を表す. また,$\Phi _ x(x)$には$\tanh (|x|)e^{j\theta (x)}$を,${\boldsymbol \mu }_ w$には次式を用いる.

  $\displaystyle {\boldsymbol \mu }_ w = {\rm diag}\left(\mu _ w, \mu _ w \lambda ^{-1}, \cdots , \mu _ w \lambda ^{-M(\omega )}\right) \label{eq:update_ w} $   (110)

これは室内でのインパルス応答が時間方向に指数的に減衰する知見からと,収束 の高速化のために用いられる. 得られた分離フィルタから出力である未知信号の推定値$\hat{N}$を計算するに は式(109)より,

  $\displaystyle \hat{N}(\omega , f) $ $\displaystyle = $ $\displaystyle X(\omega , f) - {\boldsymbol w}(\omega , f)^ T {\boldsymbol S}_ n(\omega , f) \label{eq:calc_ n} $   (111)

を計算すればよい.

非ホロノミック拘束により,$\hat{N}$を正規化する必要がある. なぜなら,同拘束により$E[1-\Phi _ x(x\alpha _ x)\bar{x}\bar{\alpha }_ x] =1$が 満たされなければならないからである. 一般に,自然勾配法によるKLD最小化における,$x$の正規化係数$\nu _ x$は以下 の式で更新される.

  $\displaystyle \nu _ x(f+1) = \nu _ x(f) + \mu _ x[1 - \Phi _ x(x(f)\nu _ x(f))\bar{x}(f)\bar{\nu }_ x(f)]\nu _ x(f) \nonumber $    

同様に,$\hat{N}$の正規化は正規化係数$\alpha $を用いて次式で導出される.

  $\displaystyle \hat{N}_ n(f) $ $\displaystyle = $ $\displaystyle \alpha (f)\hat{N}(f) \label{eq:calc_ nn} $   (112)
  $\displaystyle \alpha (f+1) $ $\displaystyle = $ $\displaystyle \alpha (f) + \mu _\alpha [1 - \Phi _{\hat{N}_ n}(\hat{N}_ n(f))\bar{\hat{N}}_ n(f)]\alpha (f) \label{eq:update_ a} $   (113)

SemiBlindICA では,収束の高速化のために観測信号の正規化も行う. これは,$\hat{N}$の時と同様に正規化係数$\beta $を用いて次式で導出される.

  $\displaystyle S_ n(f) $ $\displaystyle = $ $\displaystyle \beta (f)S(f) \label{eq:calc_ sn} $   (114)
  $\displaystyle \beta (f+1) $ $\displaystyle = $ $\displaystyle \beta (f) + \mu _\beta [1 - \Phi _{S_ n}(S_ n(f))\bar{S}_ n(f)]\beta (f) \label{eq:update_ b} $   (115)
  $\displaystyle {\boldsymbol S}_ n(f) $ $\displaystyle = $ $\displaystyle [S_ n(f), S_ n(f-K), \cdots , S_ n(f-MK)] \nonumber $    

処理の流れ: SemiBlindICA のメインアルゴリズムは式() $\sim $ ()についてある周波数ビン,フレームに対して処理を行い, 対応する出力を得る. Algorithm 6.1にメインアルゴリズムの概略を示す.

Algorithm 6.1: SemiBlindICA のメインアルゴリズム

*** ある周波数ビン$\omega $,フレーム$f$に対し以下を実行 ***

$\hat{N}(\omega , f)$を計算 (式())

$\hat{N}(\omega , f)$と${\boldsymbol S}(\omega , f)$を正規化 (式 ())

フィルタ係数${\boldsymbol w}(\omega , f)$を更新 (式())

正規化係数$\alpha (\omega , f)$,$\beta (\omega , f)$を更新 (式 )

計算した$\hat{N}(\omega , f)$を出力

全体の処理をAlgorithm 6.2に示す. 新しい入力フレームを得るたびに,チャンネル$ch$,周波数ビン$\omega $ごとに 出力を計算するオンライン処理となっている.

Algorithm 6.2: 全体の処理

*** 新しいフレームが入力される度に以下を実行 ***

$f \leftarrow f + 1$

for $ch$ in $0, \cdots , C$ do {default}

for $\omega $ in $0, \cdots , \omega _{nqt}$ do {default}

メインアルゴリズムを現在の$f$,$\omega $について実行

end for

end for

6.3.11.6 参考文献