6.3.7 HRLE

6.3.7.1 ノードの概要

本ノードは,Histogram-based Recursive Level Estimation (HRLE)法に よって定常ノイズレベルを推定する.HRLEは,入力スペクトルのヒストグラム (頻度分布)を計算し,その累積分布とパラメータ $Lx$ により指定した 正規化累積頻度からノイズレベルを推定する.ヒストグラムは,指数窓により 重み付けされた過去の入力スペクトルから計算され,1フレームごとに指数窓の 位置は更新される.

6.3.7.2 必要なファイル

無し

6.3.7.3 使用方法

どんなときに使うのか

スペクトル減算によるノイズ抑圧を行うときに用いる.

典型的な接続例

6.66に示すように,入力は GHDSS などの分離ノードの後に接続し,出力は CalcSpecSubGain などの最適ゲインを求めるノードに接続する.図6.67は,EstimateLeak を併用した場合の接続例である.

\includegraphics[width=.95\textwidth ]{fig/modules/HRLE1}
Figure 6.66: HRLE の接続例1
\includegraphics[width=.95\textwidth ]{fig/modules/HRLE2}
Figure 6.67: HRLE の接続例2

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

Table 6.54: HRLE のパラメータ表

パラメータ名

デフォルト値

単位

説明

LX

float 

0.85

 

正規化累積頻度($Lx$ 値).

TIME_CONSTANT_METHOD

string 

LEGACY

 

時定数の定義方法.

TIME_CONSTANT

float 

 

[pt]

時定数.

DECAY_FACTOR

int 

 

[ms]

時定数.

ADVANCE

int 

160

[pt]

フレームのシフト長.

SAMPLING_RATE

int 

16000

[Hz]

サンプリング周波数.

NUM_BIN

float 

1000

 

ヒストグラムのビン数.

MIN_LEVEL

float 

-100

[dB]

ヒストグラムの最小レベル.

STEP_LEVEL

float 

0.2

[dB]

ヒストグラムのビンの幅.

DEBUG

bool 

false

 

デバッグモード.

入力

INPUT_SPEC

: Map<int, ObjectRef> 型. 入力信号のパワースペクトル

出力

NOISE_SPEC

: Map<int, ObjectRef> 型. 推定ノイズのパワースペクトル

パラメータ

LX

: float 型. 累積頻度分布上の正規化累積頻度を0–1の範囲で指定する. 0を指定すると最小レベル,1を指定すると最大レベル,0.5を指定するとメジアン(中央値)を推定する. デフォルトは 0.85.

TIME_CONST_METHOD

: string 型. 時定数の定義方法をサンプル数で指定する LEGACY または、ミリ秒で指定する MILLISECOND から選択する. デフォルトは LEGACY. LEGACY の場合,パラメータ TIME_CONSTANT により時定数を指定し, MILLISECOND の場合,パラメータ DECAY_FACTOR により時定数を指定する.

TIME_CONSTANT

: float 型. 時定数(0以上)を時間サンプル単位で指定する.

DECAY_FACTOR

: int 型. 時定数(0以上)をミリ秒で指定する.

ADVANCE

: int 型. フレームのシフト長[samples]を指定する. デフォルトは 160. 前段階のノード(AudioStreamFromMic , MultiFFT など)における値と一致している必要がある.

SAMPLING_RATE

: int 型. 入力波形のサンプリング周波数[Hz]を指定する. デフォルトは 16000.

NUM_BIN

: float 型. ヒストグラムのビン数を指定する. デフォルトは 1000.

MIN_LEVEL

: float 型. ヒストグラムの最小レベル[dB]を指定する. デフォルトは -100.

STEP_LEVEL

: float 型. ヒストグラムのビンの幅[dB]を指定する. デフォルトは 0.2.

DEBUG

: bool 型. デバッグモードを指定する. デフォルトは false. デバッグモード(true)の場合,累積ヒストグラムの値がコンマ区切りテキストファイル形式で100フレーム毎に標準出力に出力される. 出力値は,複数の行と列を含む複素行列数値形式であり,行は周波数ビンの位置,列はヒストグラムの位置, 各要素は丸括弧で区切られた複素数値(左側が実数,右側が虚数部)を示す. (累積ヒストグラムは,実数値であるため,通常では虚数部は0である.しかし今後のバージョンでも0であることは保障されない.) 1つのサンプルに対する累積ヒストグラムの加算値は,1ではなく指数的に増大している(高速化のため). そのため累積ヒストグラム値は,累積頻度そのものを表してはいない事に注意されたい. 各行の累積ヒストグラム値のほとんどが0で,最後の列に近い位置のみに値を含む場合, 入力値が設定したヒストグラムのレベル範囲を超えて大きい状態(オーバーフロー状態)にあるので, NUM_BIN, MIN_LEVEL,STEP_LEVELの一部またはすべてを高い値に設定しなおすべきである. また逆に各行の累積ヒストグラム値がほとんど一定値で,最初の列に近い位置のみに異なる低い値が含まれる場合, 入力値が設定したヒストグラムのレベル範囲より小さい状態(アンダーフロー状態)にあるので, MIN_LEVELを低い値に設定しなおすべきである.
出力の例:

\includegraphics[width=0.5\columnwidth ]{fig/modules/HRLE_Param.png}
Figure 6.68: NUM_BIN,MIN_LEVEL,STEP_LEVELの関係

---------- Compmat.disp() ---------- 
[(1.00005e-18,0), (1.00005e-18,0), (1.00005e-18,0), ..., (1.00005e-18,0); 
(0,0), (0,0), (0,0), ..., (4.00084e-18,0); 
... 
(4.00084e-18,0), (4.00084e-18,0), (4.00084e-18,0), .., , (4.00084e-18,0)]^T 
Matrix size = 1000 x 257 

6.3.7.5 ノードの詳細

6.69にHRLEの処理フローを示す. HRLE は,入力パワーからレベルのヒストグラムを求め,その累積分布から $Lx$ レベルを推定する処理となっている.$Lx$ レベルとは,図6.70 に示すように,累積頻度分布上の正規化累積頻度 が $x$ になるレベルである. $x$ は,パラメータであり,例えば,$x=0$ であれば最小値,$x=1$ であれば最大値, $x=0.5$ であれば中央値を推定する処理となる.

\includegraphics[width=0.6\columnwidth ]{fig/modules/HRLE_flow-ja.eps}
Figure 6.69: HRLE の処理フロー
\includegraphics[width=0.6\columnwidth ]{fig/modules/lxhist.eps}
Figure 6.70: $Lx$ 値の推定

HRLE の具体的な処理手順は,下記の7つの数式(図6.69の各処理に対応) で示すとおりである.式中で,$t$ は時刻(フレーム単位),$y_ p$ は入力パワー (INPUT_SPEC),$n_ p$ は推定ノイズパワー(NOISE_SPEC]),$x$,$\alpha $, $L_{min}$,$L_{step}$ はヒストグラムに関わるパラメータでそれぞれ 正規化累積頻度(LX),時定数(TIME_CONSTANT),ビンの最小レベル(MIN_LEVEL), ビンのレベル幅(STEP_LEVEL),$\lfloor a \rfloor $ は $a$ 以下の$a$に最も 近い整数を示している. また,パラメータを除く全ての変数は,周波数の関数であり,各周波数毎に独立して 同じ処理が施される.式中では,簡略化のため周波数を省略した.

  $\displaystyle Y_ L(t) $ $\displaystyle = $ $\displaystyle 10 \log _{10} y_ p(t), \label{eqn:revcon1} $   (71)
  $\displaystyle I_ y(t) $ $\displaystyle = $ $\displaystyle \lfloor (Y_ L(t) - L_{min}) / L_{step} \rfloor , \label{eqn:revcon2} $   (72)
  $\displaystyle N(t, l) $ $\displaystyle = $ $\displaystyle \alpha N(t-1, l) + (1 - \alpha )\delta (l - I_ y(t)), \label{eqn:hitso} $   (73)
  $\displaystyle S(t, l) $ $\displaystyle = $ $\displaystyle \sum _{k=0}^ l N(t, k), \label{eqn:cumul} $   (74)
  $\displaystyle I_ x(t) $ $\displaystyle = $ $\displaystyle \mathop {\rm argmin}_ I \left[ S(t, I_{max}) \frac{x}{100} - S(t, I) \right], \label{eqn:search} $   (75)
  $\displaystyle L_ x(t) $ $\displaystyle = $ $\displaystyle L_{min} + L_{step} \cdot I_ x(t), $   (76)
  $\displaystyle n_ p(t) $ $\displaystyle = $ $\displaystyle 10^{L_ x(t)/10} $   (77)

6.3.7.6 参考文献

(1) H. Nakajima, G. Ince, K. Nakadai and Y. Hasegawa: “An Easily-configurable Robot Audition System using Histogram-based Recursive Level Estimation”, Proc. of IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS), 2010 (to be appeared).