本ノードは,Histogram-based Recursive Level Estimation (HRLE)法に よって定常ノイズレベルを推定する.HRLEは,入力スペクトルのヒストグラム (頻度分布)を計算し,その累積分布とパラメータ $Lx$ により指定した 正規化累積頻度からノイズレベルを推定する.ヒストグラムは,指数窓により 重み付けされた過去の入力スペクトルから計算され,1フレームごとに指数窓の 位置は更新される.
無し
どんなときに使うのか
スペクトル減算によるノイズ抑圧を行うときに用いる.
典型的な接続例
図6.53に示すように,入力は GHDSS などの分離ノードの後に接続し,出力は CalcSpecSubGain などの最適ゲインを求めるノードに接続する.図6.54は,EstimateLeak を併用した場合の接続例である.
パラメータ名 |
型 |
デフォルト値 |
単位 |
説明 |
LX |
0.85 |
正規化累積頻度($Lx$ 値). |
||
TIME_CONSTANT |
16000 |
[pt] |
時定数. |
|
NUM_BIN |
1000 |
ヒストグラムのビン数. |
||
MIN_LEVEL |
-100 |
[dB] |
ヒストグラムの最小レベル. |
|
STEP_LEVEL |
0.2 |
[dB] |
ヒストグラムのビンの幅. |
|
DEBUG |
false |
デバッグモード. |
入力
: Map<int, float> 型. 入力信号のパワースペクトル
出力
: Map<int, float> 型. 推定ノイズのパワースペクトル
パラメータ
: float 型.デフォルトは 0.85 .累積頻度分布上の正規化 累積頻度を0–1の範囲で指定する.0を指定すると最小レベル, 1を指定すると最大レベル,0.5を指定するとメジアン(中央値)を推定する.
: float 型.デフォルトは 16000 . 時定数(0以上)を時間サンプル単位で指定する.
: float 型.デフォルトは 1000 . ヒストグラムのビン数を指定する.
: float 型.デフォルトは -100 . ヒストグラムの最小レベルを dB 単位で指定する.
: float 型.デフォルトは 0.2 . ヒストグラムのビンの幅を dB 単位で指定する.
: bool デフォルトは false. デバッグモードを指定する. デバッグモード(true)の場合,累積ヒストグラムの値が標準出力にコンマ区切りテキストファイル形式で100フレーム毎に1回出力される. 出力値は,複数の行と列を含む複素行列数値形式であり,行は周波数ビンの位置,列はヒストグラムの位置,各要素は丸括弧で区切られた複素数値(左側が実数,右側が虚数部)を示す.(累積ヒストグラムは,実数値であるため,通常では虚数部は0である.しかし今後のバージョンでも0であることは保障されない.) 1つのサンプルに対する累積ヒストグラムの加算値は,1ではなく指数的に増大している(高速化のため). そのため累積ヒストグラム値は,累積頻度そのものを表してはいない事に注意されたい. 各行の累積ヒストグラム値のほとんどが0で,最後の列に近い位置のみに値を含む場合,入力値が設定したヒストグラムのレベル範囲を超えて大きい状態(オーバーフロー状態)にあるので,NUM_BIN, MIN_LEVEL,STEP_LEVELの一部またはすべてを高い値に設定しなおすべきである. また逆に各行の累積ヒストグラム値がほとんど一定値で,最初の列に近い位置のみに異なる低い値が含まれる場合,入力値が設定したヒストグラムのレベル範囲より小さい状態(アンダーフロー状態)にあるので,MIN_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.56にHRLEの処理フローを示す. HRLE は,入力パワーからレベルのヒストグラムを求め,その累積分布から $Lx$ レベルを推定する処理となっている.$Lx$ レベルとは,図6.57 に示すように,累積頻度分布上の正規化累積頻度 が $x$ になるレベルである. $x$ は,パラメータであり,例えば,$x=0$ であれば最小値,$x=1$ であれば最大値, $x=0.5$ であれば中央値を推定する処理となる.
HRLE の具体的な処理手順は,下記の7つの数式(図6.56の各処理に対応) で示すとおりである.式中で,$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} $ | (56) | ||
$\displaystyle I_ y(t) $ | $\displaystyle = $ | $\displaystyle \lfloor (Y_ L(t) - L_{min}) / L_{step} \rfloor , \label{eqn:revcon2} $ | (57) | ||
$\displaystyle N(t, l) $ | $\displaystyle = $ | $\displaystyle \alpha N(t-1, l) + (1 - \alpha )\delta (l - I_ y(t)), \label{eqn:hitso} $ | (58) | ||
$\displaystyle S(t, l) $ | $\displaystyle = $ | $\displaystyle \sum _{k=0}^ l N(t, k), \label{eqn:cumul} $ | (59) | ||
$\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} $ | (60) | ||
$\displaystyle L_ x(t) $ | $\displaystyle = $ | $\displaystyle L_{min} + L_{step} \cdot I_ x(t), $ | (61) | ||
$\displaystyle n_ p(t) $ | $\displaystyle = $ | $\displaystyle 10^{L_ x(t)/10} $ | (62) |
(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).