このノードは,音源分離ノード GHDSS によって分離された複素スペクトルに対し, 音声認識精度を向上するための後処理を行う. 同時に,ミッシングフィーチャーマスクを生成するための,ノイズパワースペクトルの生成も行う.
無し.
どんなときに使うのか
このノードは,GHDSS ノードによって分離されたスペクトルの整形と, ミッシングフィーチャーマスクを生成するために必要なノイズスペクトルを生成する時に用いる.
典型的な接続例
PostFilter ノードの接続例は図 388 の通り. 入力の接続として,INPUT_SPEC は GHDSS ノードの出力, INIT_NOISE_POWER は BGNEstimator ノードの出力と接続する.
出力について,図 388 では
分離音 (OUTPUT_SPEC) の音声特徴抽出 (MSLSExtraction ノード),
分離音と分離音に含まれるノイズのパワー (EST_NOISE_POWER) から音声認識時のミッシングフィーチャーマスク生成 (MFMGeneration ノード)
の接続例を示している.
入力
: Map<int, ObjectRef> 型. GHDSS ノードからの出力と同じ型. 音源 ID と,分離音の複素スペクトルである Vector<complex<float> > 型データのペア.
: Matrix<float> 型. BGNEstimator ノードによって推定された定常ノイズのパワースペクトル.
出力
: Map<int, ObjectRef> 型. 入力 INPUT_SPEC から,ノイズ除去がされた分離音の複素スペクトル. Object 部分は Vector<complex<float> > 型.
: Map<int, ObjectRef> 型. OUTPUT_SPEC の各分離音に対して,含まれていると推定されたノイズのパワーが, Vector<float> 型データとして ID とペアになっている.
パラメータ
パラメータ名 |
型 |
デフォルト値 |
単位 |
説明 |
MCRA_SETTING |
false |
ノイズ除去手法である,MCRA推定に関するパラメータ設定項目を表示する時,trueにする. |
||
MCRA_SETTING |
以下,MCRA_SETTING が trueの時に表示される |
|||
STATIONARY_NOISE_FACTOR |
1.2 |
定常ノイズ推定時の係数. |
||
SPEC_SMOOTH_FACTOR |
0.5 |
入力パワースペクトルの平滑化係数. |
||
AMP_LEAK_FACTOR |
1.5 |
漏れ係数. |
||
STATIONARY_NOISE_MIXTURE_FACTOR |
0.98 |
定常ノイズの混合比. |
||
LEAK_FLOOR |
0.1 |
漏れノイズの最小値. |
||
BLOCK_LENGTH |
80 |
検出時間幅. |
||
VOICEP_THRESHOLD |
3 |
音声存在判定の閾値. |
||
EST_LEAK_SETTING |
false |
漏れ率推定に関するパラメータ設定項目を表示する時,trueにする. |
||
EST_LEAK_SETTING |
以下,EST_LEAK_SETTING が trueの時に表示される. |
|||
LEAK_FACTOR |
0.25 |
漏れ率. |
||
OVER_CANCEL_FACTOR |
1 |
漏れ率重み係数. |
||
EST_REV_SETTING |
false |
残響成分推定に関するパラメータ設定項目を表示する時,trueにする. |
||
EST_REV_SETTING |
以下,EST_REV_SETTING が trueの時に表示される. |
|||
REVERB_DECAY_FACTOR |
0.5 |
残響パワーの減衰係数. |
||
DIRECT_DECAY_FACTOR |
0.2 |
分離スペクトルの減衰係数. |
||
EST_SN_SETTING |
false |
SN 比推定に関するパラメータ設定項目を表示する時,trueにする. |
||
EST_SN_SETTING |
以下,EST_SN_SETTING が trueの時に表示される. |
|||
PRIOR_SNR_FACTOR |
0.8 |
事前 SNR と事後 SNR の比率. |
||
VOICEP_PROB_FACTOR |
0.9 |
音声存在確率の振幅係数. |
||
MIN_VOICEP_PROB |
0.05 |
最小音声存在確率. |
||
MAX_PRIOR_SNR |
100 |
事前 SNR の最大値. |
||
MAX_OPT_GAIN |
20 |
最適ゲイン中間変数 v の最大値. |
||
MIN_OPT_GAIN |
6 |
最適ゲイン中間変数 v の最小値. |
パラメータ名 |
型 |
デフォルト値 |
単位 |
説明 |
EST_VOICEP_SETTING |
false |
音声確率推定に関するパラメータを設定する時,trueにする. |
||
EST_VOICEP_SETTING |
以下,EST_VOICEP_SETTING が trueの時に有効. |
|||
PRIOR_SNR_SMOOTH_FACTOR |
0.7 |
時間平滑化係数. |
||
MIN_FRAME_SMOOTH_SNR |
0.1 |
周波数平滑化 SNR の最小値 (frame). |
||
MAX_FRAME_SMOOTH_SNR |
0.316 |
周波数平滑化 SNR の最大値 (frame). |
||
MIN_GLOBAL_SMOOTH_SNR |
0.1 |
周波数平滑化 SNR の最小値 (global). |
||
MAX_GLOBAL_SMOOTH_SNR |
0.316 |
周波数平滑化 SNR の最大値 (global). |
||
MIN_LOCAL_SMOOTH_SNR |
0.1 |
周波数平滑化 SNR の最小値 (local). |
||
MAX_LOCAL_SMOOTH_SNR |
0.316 |
周波数平滑化 SNR の最大値 (local). |
||
UPPER_SMOOTH_FREQ_INDEX |
99 |
周波数平滑化上限ビンインデックス. |
||
LOWER_SMOOTH_FREQ_INDEX |
8 |
周波数平滑化下限ビンインデックス. |
||
GLOBAL_SMOOTH_BANDWIDTH |
29 |
周波数平滑化バンド幅(global). |
||
LOCAL_SMOOTH_BANDWIDTH |
5 |
周波数平滑化バンド幅(local). |
||
FRAME_SMOOTH_SNR_THRESH |
1.5 |
周波数平滑化 SNR の閾値. |
||
MIN_SMOOTH_PEAK_SNR |
1.0 |
周波数平滑化 SNR ピークの最小値. |
||
MAX_SMOOTH_PEAK_SNR |
10.0 |
周波数平滑化 SNR ピークの最大値. |
||
FRAME_VOICEP_PROB_FACTOR |
0.7 |
音声確率平滑化係数 (frame). |
||
GLOBAL_VOICEP_PROB_FACTOR |
0.9 |
音声確率平滑化係数 (global). |
||
LOCAL_VOICEP_PROB_FACTOR |
0.9 |
音声確率平滑化係数 (local). |
||
MIN_VOICE_PAUSE_PROB |
0.02 |
音声休止確率の最小値. |
||
MAX_VOICE_PAUSE_PROB |
0.98 |
音声休止確率の最大値. |
式で用いられる添字は,表 6.1 で定義されているものに準拠する. また,以降の式では,特に必要のない場合は,時間フレームインデックス f を省略して表記する.
図 6.51 は,PostFilter ノードの流れ図である. 入力としては,GHDSS ノードからの分離音スペクトルと, BGNEstimator ノードの定常ノイズパワースペクトルが得られる. 出力には,音声が強調された分離音スペクトルと,分離音に混入しているノイズのパワースペクトルである.
処理の流れは
ノイズ推定
SNR 推定
音声存在確率推定
ノイズ除去
となっている.
1) ノイズ推定:
ノイズ推定処理の流れを図 6.52 に示す. PostFilter ノードが対処するノイズは,
a) マイクロホンの接点などが要因となる定常ノイズ ,
b) 除去しきれなかった別の音源の音 (漏れノイズ),
c) 前フレームの残響,
の3つである.
最終的な分離音に含まれるノイズ λ(f,ki) は,
λ(f,ki) | = | λsta(f,ki)+λleak(f,ki)+λrev(f−1,ki) | (55) |
として求められる. ただし,λsta(f,ki),λleak(f,ki),λrev(f−1,ki) はそれぞれ, 定常ノイズ,漏れノイズ,前フレームの残響を表す.
1-a) で用いる変数は 表6.41 に基づく.
変数 |
説明,対応するパラメータ |
Y(ki)=[Y1(ki),…,YN(ki)]T |
周波数ビン ki に対応する分離音複素スペクトル |
λinit(ki)=[λinit1(ki),…,λinitN(ki)]T |
定常ノイズ推定に用いる初期値パワースペクトル |
λsta(ki)=[λsta1(ki),…,λstaN(ki)]T |
推定された定常ノイズパワースペクトル. |
αs |
入力パワースペクトルの平滑化係数.パラメータ SPEC_SMOOTH_FACTOR,デフォルト 0.5 |
Stmp(ki)=[Stmp1(ki),…,StmpN(ki)] |
最小パワー計算用のテンポラリ変数. |
Smin(ki)=[Smin1(ki),…,SminN(ki)] |
最小パワーを保持する変数. |
L |
Stmp の保持フレーム数.パラメータ BLOCK_LENGTH,デフォルト 80 |
δ |
音声存在判定の閾値.パラメータ VOICEP_THRESHOLD,デフォルト 3.0 |
αd |
推定定常ノイズの混合比.パラメータ STATIONARY_NOISE_MIXTURE_FACTOR,デフォルト 0.98 |
Yleak(ki) |
分離音に含まれると推定される漏れノイズのパワースペクトル |
q |
入力分離音パワーから漏れノイズを除くときの係数.パラメータ AMP_LEAK_FACTOR, デフォルト 1.5 |
Sfloor |
漏れノイズ最小値.パラメータ LEAK_FLOOR, デフォルト 0.1 |
r |
定常ノイズ推定時の係数.パラメータ STATIONARY_NOISE_FACTOR, デフォルト 1.2 |
まず,入力スペクトルを1フレーム前のパワーと平滑化したパワースペクトル S(f,ki)=[S1(f,ki),…,SN(f,ki)] を求める.
Sn(f,ki) | = | αsSn(f−1,ki)+(1−αs)|Yn(ki)|2 | (56) |
次に,Stmp,Smin を更新する.
Sminn(f,ki) | = | {min{Sminn(f−1,ki),Sn(f,ki)}if f≠nLmin{Stmpn(f−1,ki),Sn(f,ki)}if f=nL, | (57) | ||
Sminn(f,ki) | = | {min{Stmpn(f−1,ki),Sn(f,ki)}if f≠nLSn(f,ki)if f=nL, | (58) |
ただし,n は任意の整数である. Smin はノイズ推定を始めてからの最小パワーを保持し, Stmp は最近の L フレームの極小パワーを保持している. L フレームごとに Stmp は更新される.
続いて,最小パワーと入力分離音のパワーの比から,音声が含まれるかどうかを判定する.
Srn(ki) | = | Sn(ki)Smin(ki), | (59) | ||
In(ki) | = | {1if Srn(ki)>δ0if Srn(ki)≤δ | (60) |
In(ki) に音声が含まれる場合 1,含まれない場合 0となる. この判定結果をもとに,前フレーム定常ノイズと, 現在のフレームのパワーとの混合比 αCd,n(ki) を決める.
αCd,n(ki) | = | (αd−1)In(ki)+1. | (61) |
次に,分離音のパワースペクトルに含まれる漏れノイズを除去する.
Sleakn(ki) | = | N∑p=1|Yp(ki)|2−|Yn(ki)|2, | (62) | ||
S0n(ki) | = | |Yn(ki)|2−qSleakn(ki), | (63) |
ただし,S0n(ki)<Sfloor のとき,
S0n(ki) | = | Sfloor | (64) |
に値が変更される.
漏れノイズを除いたパワースペクトル S0n(f,ki) と, 前フレームの推定定常ノイズ λsta(f−1,ki) または, BGNEstimator からの出力である bfλinit(f,ki) を混合することで, 現在のフレームの定常ノイズを求める.
λstan(f,ki) | = | {αCd,n(ki)λstan(f−1,ki)+(1−αCd,n(ki)rS0n(f,ki)if音源位置に変更なしαCd,n(ki)λinitn(f,ki)+(1−αCd,n(ki)rS0n(f,ki)if音源位置に変更あり | (65) |
1-b) で用いる変数は 表6.42 に基づく.
変数 |
説明,対応するパラメータ |
λleak(ki) |
漏れノイズのパワースペクトル,各分離音の要素から成るベクトル. |
αleak |
全分離音パワーの合計に対する漏れ率. LEAK_FACTOR × OVER_CANCEL_FACTOR |
Sn(f,ki) |
式 (56) で求める平滑化パワースペクトル |
いくつかのパラメータを次のように計算する.
β | = | −αleak1−(αleak)2+αleak(1−αleak)(N−2) | (66) | ||
α | = | 1−(N−1)αleakβ | (67) |
このパラメータを用いて,平滑化されたスペクトル S(ki) と, 式 (62) で求められた,他の分離音のパワーから自分の分離音のパワーを除いた パワースペクトル Sleakn(ki) を混合する.
Zn(ki) | = | αSn(ki)+βSleakn(ki), | (68) |
ただし,Zn(ki)<1 になる場合は,Zn(ki)=1 とする.
最終的な漏れノイズのパワースペクトル λleak(ki) は,
λleakn | = | αleak(∑n′≠nZn′(ki)) | (69) |
として求める.
1-c) で用いる変数は 表6.43 に基づく.
変数 |
説明,対応するパラメータ |
λrev(f,ki) |
時間フレーム f での残響のパワースペクトル |
ˆS(f−1,ki) |
前フレームの PostFilter の出力したノイズ除去後分離音スペクトル |
γ |
前フレーム残響パワーの減衰係数.パラメータ REVERB_DECAY_FACTOR,デフォルト 0.5 |
Δ |
前フレーム分離音の減衰係数.パラメータ DIRECT_DECAY_FACTOR,デフォルト 0.2 |
残響のパワーは,前フレームの推定残響パワー λrev(f−1,ki)=[λrev1(f−1,ki),…,λrevN(f−1,ki)]T と, 前フレームの分離スペクトル ˆS(f−1,ki)=[ˆS1(f−1,ki),…,ˆSN(f−1,ki)]T から次のように計算される. ˆSn(f−1,ki) は複素数であることに注意.
λrevn(f,ki) | = | γ(λrevn(f−1,ki)+Δ|ˆSn(f−1,ki)|2) | (70) |
2) SNR 推定:
SNR 推定の流れを図 6.53 に示す. SNR 推定は,
a) SNR の計算
b) ノイズ混入前の事前 SNR 推定
c) 音声含有率の推定
d) 最適ゲインの推定
から成る.
変数 |
説明,対応するパラメータ |
Y(ki) |
PostFilter ノードの入力である分離音の複素スペクトル |
ˆS(ki) |
PostFilter ノードの出力となる,整形された分離音複素スペクトル |
λ(ki) |
前段で推定されたノイズのパワースペクトル |
γn(ki) |
分離音 n の SNR |
αpn(ki) |
音声含有率 |
ξn(ki) |
事前 SNR |
GH1(ki) |
分離音の SNR を向上させるための最適ゲイン |
表 6.44 のベクトルの要素は,各分離音の値に対応する.
2-a) で用いる変数は,表6.44 に従う. ここでは,入力の複素スペクトル Y(ki) と, 前段で推定されたノイズのパワースペクトル λ(ki) を元に, SNR γn(ki) が計算される.
γn(ki) | = | |Yn(ki)|2λn(ki) | (71) | ||
γCn(ki) | = | {γn(ki)if γn(ki)>00otherwise | (72) |
2-b) で用いる変数は,表6.45 に従う.
変数 |
説明,対応するパラメータ |
αpmag |
事前SNR係数.パラメータ VOICEP_PROB_FACTOR,デフォルト 0.9 |
αpmin |
最小音声含有率.パラメータ MIN_VOICEP_PROB,デフォルト 0.05 |
音声含有率 αpn(f,ki) は,前フレームの事前 SNR ξn(f−1,ki) を用いて次のように計算される.
αpn(f,ki) | = | αpmag(ξn(f−1,ki)ξn(f−1,ki)+1)2+αpmin | (73) |
2-c) で用いる変数は,表6.46 に従う.
変数 |
説明,対応するパラメータ |
a |
前フレーム SNR の内分比.パラメータ PRIOR_SNR_FACTOR,デフォルト 0.8 |
ξmax |
事前SNR の上限.パラメータ MAX_PRIOR_SNR,デフォルト 100 |
事前 SNR ξn(ki) は,次のようにして計算する.
ξn(ki) | = | (1−αpn(ki))ξtmp+αpn(ki)γCn(ki) | (74) | ||
ξtmp | = | a|ˆSn(f−1,ki)|2λn(f−1,ki)+(1−a)ξn(f−1,ki) | (75) |
ただし,ξtmp は計算上の一時的な変数で,前フレームの推定 SNRγn(ki) と,事前 SNR ξn(ki) の内分値である. また,ξn(ki)>ξmax となる場合,ξn(ki)=ξmax と値を変更する.
2-d) で用いる変数は,表6.47 に従う.
変数 |
説明,対応するパラメータ |
θmax |
中間変数 vn(ki) 最大値.パラメータ MAX_OPT_GAIN,デフォルト 20 |
θmin |
中間変数 vn(ki) 最小値.パラメータ MIN_OPT_GAIN,デフォルト 6 |
最適ゲイン計算の前に,上で求めた事前 SNRξn(ki) と,推定 SNRγn(ki) を 用いて,以下の中間変数 vn(ki) を計算する.
vn(ki) | = | ξn(ki)1+ξn(ki)γn(ki) | (76) |
vn(ki)>θmax の場合,vn(ki)=θmax とする.
音声がある場合の最適ゲイン GH1(ki)=[GH11(ki),…,GH1N(ki)] は,
GH1n(ki) | = | ξn(ki)1+ξn(ki)exp{12int infvn(ki)e−ttdt} | (77) |
として求める. ただし,
GH1n(ki)=1ifvn(ki)<θminGH1n(ki)=1ifGH1n(ki)>1. | (78) |
3) 音声存在確率推定:
音声存在確率推定の流れを図 6.54 に示す. 音声存在確率推定は,
a) 3種類の帯域ごとに事前 SNR の平滑化
b) 各帯域で,平滑化した SNR を元に,暫定的な音声確率を推定
c) 3つの暫定確率をもとに音声休止確率を推定
d) 最終的な音声存在確率を推定
から成る.
3-a) で用いる変数を表6.48 にまとめる.
変数 |
説明,対応するパラメータ |
ζn(ki) |
時間平滑化した事前 SNR |
ξn(ki) |
事前 SNR |
ζfn(ki) |
周波数平滑化 SNR (frame) |
ζgn(ki) |
周波数平滑化 SNR (global) |
ζln(ki) |
周波数平滑化 SNR (local) |
b |
パラメータ PRIOR_SNR_SMOOTH_FACTOR,デフォルト 0.7 |
Fst |
パラメータ LOWER_SMOOTH_FREQ_INDEX,デフォルト 8 |
Fen |
パラメータ UPPER_SMOOTH_FREQ_INDEX,デフォルト 99 |
G |
パラメータ GLOBAL_SMOOTH_BANDWIDTH,デフォルト 29 |
L |
パラメータ LOCAL_SMOOTH_BANDWIDTH,デフォルト 5 |
まず,式(74) で計算された事前 SNR ξn(f,ki) と,前フレームの時間平滑化事前 SNR ζn(f−1,ki) で, 時間平滑化を行う.
ζn(f,ki) | = | bζn(f−1,ki)+(1−b)ξn(f,ki) | (79) |
周波数方向の平滑化は,その窓の大きさによって,frame,global,local の順に小さくなっていく.
frame での周波数平滑化
周波数ビン Fst∼Fen の範囲で加算平均による平滑化が行われる.
ζfn(ki) | = | 1Fen−Fst+1Fen∑kj=Fstζn(kj) | (80) |
global での周波数平滑化
global では,幅 G での hanning 窓を用いた周波数平滑化が行われる.
ζgn(ki) | = | (G−1)/2∑j=−(G−1)/2whan(j+(G−1)/2)ζn(ki+j), | (81) | ||
whan(j) | = | 1C(0.5−0.5cos(2πjG)), | (82) |
ただし,C は ∑G−1j=0whan(j)=1 にするための正規化係数.
local での周波数平滑化
local では,幅 F での三角窓を用いた周波数平滑化が行われる.
ζln(ki) | = | 0.25ζn(ki−1)+0.5ζn(ki)+0.25(ki+1) | (83) |
3-b) で用いる変数を表6.49 に示す.
変数 |
説明,対応するパラメータ |
ζf,g,ln(ki) |
各帯域で平滑化された SNR |
Pf,g,ln(ki) |
各帯域での暫定音声確率 |
ζpeakn(ki) |
平滑化 SNR のピーク |
Zpeakmin |
パラメータ MIN_SMOOTH_PEAK_SNR,デフォルト値 1 |
Zpeakmax |
パラメータ MAX_SMOOTH_PEAK_SNR,デフォルト値 10 |
Zthres |
FRAME_SMOOTH_SNR_THRESH,デフォルト値 1.5 |
Zf,g,lmin |
パラメータ MIN_FRAME_SMOOTH_SNR, |
MIN_GLOBAL_SMOOTH_SNR, |
|
MIN_LOCAL_SMOOTH_SNR,デフォルト値 0.1 |
|
Zf,g,lmax |
パラメータ MAX_FRAME_SMOOTH_SNRF, |
MAX_GLOBAL_SMOOTH_SNR, |
|
MAX_LOCAL_SMOOTH_SNR,デフォルト値 0.316 |
Pfn(ki) と ζpeakn(ki) の計算
まず,ζpeakn(f,ki) を以下のように求める.
ζpeakn(f,ki) | = | {ζfn(f,ki),if ζfn(f,ki)>Zthresζfn(f−1,ki)ζpeakn(f−1,ki),if otherwise. | (84) |
ただし,ζpeakn(ki) の値はパラメータ Zpeakmin,Zpeakmax の範囲に入るようにする. すなわち,
ζpeakn(ki) | = | {Zpeakmin,if ζpeakn(ki)<ZpeakminZpeakmax,if ζpeakn(ki)>Zpeakmax | (85) |
次に,Pfn(ki) を次のように求める.
Pfn(ki) | = | {0,if ζfn(ki)<ζpeakn(ki)Zfmin1,if ζfn(ki)>ζpeakn(ki)Zfmaxlog(ζfn(ki)/ζpeakn(ki)Zfmin)log(Zfmax/Zfmin),otherwise | (86) |
Pgn(ki) の計算
次の通りに計算する.
Pgn(ki) | = | {0,if ζgn(ki)<Zgmin1,if ζgn(ki)>Zgmax log(ζgn(ki)/Zgmin) log(Zgmax/Zgmin) ,otherwise | (87) |
Pln(ki) の計算
次の通りに計算する.
Pln(ki) | = | {0,if ζln(ki)<Zlmin1,if ζln(ki)>Zlmax log(ζln(ki)/Zlmin) log(Zlmax/Zlmin) ,otherwise | (88) |
3-c) で用いる変数を表6.50 に示す.
変数 |
説明,対応するパラメータ |
qn(ki) |
音声休止確率 |
af |
FRAME_VOICEP_PROB_FACTOR,デフォルト,0.7 |
ag |
GLOBAL_VOICEP_PROB_FACTOR,デフォルト,0.9 |
al |
LOCAL_VOICEP_PROB_FACTOR,デフォルト,0.9 |
qmin |
MIN_VOICE_PAUSE_PROB,デフォルト,0.02 |
qmax |
MAX_VOICE_PAUSE_PROB,デフォルト,0.98 |
音声休止確率 qn(ki) は,3つの周波数帯域の平滑化結果を元にして計算した暫定の音声確率 Pf,g,ln(ki) を次のように統合して得られる.
qn(ki) | = | 1−(1−al+alPln(ki))(1−ag+agPgn(ki))(1−af+afPfn(ki)), | (89) |
ただし,qn(ki)<qmin のとき,qn(ki)=qmin とし, qn(ki)>qmax のとき,qn(ki)=qmax とする.
音声存在確率 pn(ki) は,音声休止確率 qn(ki),事前 SNR ζn(ki), 式 (76) により導出された中間変数 vn(ki) を用いて次のように導出する.
pn(ki) | = | {1+qn(ki)1−qn(ki)(1+ζn(ki))exp(−vn(ki))}−1 | (90) |
4) ノイズ除去: 出力である音声強調された分離音 ˆSn(ki) は, 入力である分離音スペクトル Yn(ki) に対して,最適ゲイン GH1n(ki),音声存在確率 pn(ki) を次のように作用させることで 導出する.
ˆSn(ki) | = | Yn(ki)GH1n(ki)pn(ki) | (91) |