Processing math: 100%

6.3.7 PostFilter

6.3.7.1 ノードの概要

このノードは,音源分離ノード GHDSS によって分離された複素スペクトルに対し, 音声認識精度を向上するための後処理を行う. 同時に,ミッシングフィーチャーマスクを生成するための,ノイズパワースペクトルの生成も行う.

6.3.7.2 必要なファイル

無し.

6.3.7.3 使用方法

どんなときに使うのか

このノードは,GHDSS ノードによって分離されたスペクトルの整形と, ミッシングフィーチャーマスクを生成するために必要なノイズスペクトルを生成する時に用いる.

典型的な接続例

PostFilter ノードの接続例は図 388 の通り. 入力の接続として,INPUT_SPEC は GHDSS ノードの出力, INIT_NOISE_POWER は BGNEstimator ノードの出力と接続する.

出力について,図 388 では

  1. 分離音 (OUTPUT_SPEC) の音声特徴抽出 (MSLSExtraction ノード),

  2. 分離音と分離音に含まれるノイズのパワー (EST_NOISE_POWER) から音声認識時のミッシングフィーチャーマスク生成 (MFMGeneration ノード)

の接続例を示している.

\includegraphics[width=.9\textwidth ]{fig/modules/PostFilter}
Figure 6.50: PostFilter の接続例

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

入力

INPUT_SPEC

: Map<int, ObjectRef> 型. GHDSS ノードからの出力と同じ型. 音源 ID と,分離音の複素スペクトルである Vector<complex<float> > 型データのペア.

INPUT_NOISE_POWER

: Matrix<float> 型. BGNEstimator ノードによって推定された定常ノイズのパワースペクトル.

出力

OUTPUT_SPEC

: Map<int, ObjectRef> 型. 入力 INPUT_SPEC から,ノイズ除去がされた分離音の複素スペクトル. Object 部分は Vector<complex<float> > 型.

EST_NOISE_POWER

: Map<int, ObjectRef> 型. OUTPUT_SPEC の各分離音に対して,含まれていると推定されたノイズのパワーが, Vector<float> 型データとして ID とペアになっている.

パラメータ

Table 6.39: PostFilter のパラメータ表 (前半)

パラメータ名

デフォルト値

単位

説明

MCRA_SETTING

bool 

false

 

ノイズ除去手法である,MCRA推定に関するパラメータ設定項目を表示する時,trueにする.

MCRA_SETTING

     

以下,MCRA_SETTING が trueの時に表示される

STATIONARY_NOISE_FACTOR

float 

1.2

 

定常ノイズ推定時の係数.

SPEC_SMOOTH_FACTOR

float 

0.5

 

入力パワースペクトルの平滑化係数.

AMP_LEAK_FACTOR

float 

1.5

 

漏れ係数.

STATIONARY_NOISE_MIXTURE_FACTOR

float 

0.98

 

定常ノイズの混合比.

LEAK_FLOOR

float 

0.1

 

漏れノイズの最小値.

BLOCK_LENGTH

int 

80

 

検出時間幅.

VOICEP_THRESHOLD

int 

3

 

音声存在判定の閾値.

EST_LEAK_SETTING

bool 

false

 

漏れ率推定に関するパラメータ設定項目を表示する時,trueにする.

EST_LEAK_SETTING

     

以下,EST_LEAK_SETTING が trueの時に表示される.

LEAK_FACTOR

float 

0.25

 

漏れ率.

OVER_CANCEL_FACTOR

float 

1

 

漏れ率重み係数.

EST_REV_SETTING

bool 

false

 

残響成分推定に関するパラメータ設定項目を表示する時,trueにする.

EST_REV_SETTING

     

以下,EST_REV_SETTING が trueの時に表示される.

REVERB_DECAY_FACTOR

float 

0.5

 

残響パワーの減衰係数.

DIRECT_DECAY_FACTOR

float 

0.2

 

分離スペクトルの減衰係数.

EST_SN_SETTING

bool 

false

 

SN 比推定に関するパラメータ設定項目を表示する時,trueにする.

EST_SN_SETTING

     

以下,EST_SN_SETTING が trueの時に表示される.

PRIOR_SNR_FACTOR

float 

0.8

 

事前 SNR と事後 SNR の比率.

VOICEP_PROB_FACTOR

float 

0.9

 

音声存在確率の振幅係数.

MIN_VOICEP_PROB

float 

0.05

 

最小音声存在確率.

MAX_PRIOR_SNR

float 

100

 

事前 SNR の最大値.

MAX_OPT_GAIN

float 

20

 

最適ゲイン中間変数 v の最大値.

MIN_OPT_GAIN

float 

6

 

最適ゲイン中間変数 v の最小値.

Table 6.40: PostFilter のパラメータ表 (後半)

パラメータ名

デフォルト値

単位

説明

EST_VOICEP_SETTING

bool 

false

 

音声確率推定に関するパラメータを設定する時,trueにする.

EST_VOICEP_SETTING

     

以下,EST_VOICEP_SETTING が trueの時に有効.

PRIOR_SNR_SMOOTH_FACTOR

float 

0.7

 

時間平滑化係数.

MIN_FRAME_SMOOTH_SNR

float 

0.1

 

周波数平滑化 SNR の最小値 (frame).

MAX_FRAME_SMOOTH_SNR

float 

0.316

 

周波数平滑化 SNR の最大値 (frame).

MIN_GLOBAL_SMOOTH_SNR

float 

0.1

 

周波数平滑化 SNR の最小値 (global).

MAX_GLOBAL_SMOOTH_SNR

float 

0.316

 

周波数平滑化 SNR の最大値 (global).

MIN_LOCAL_SMOOTH_SNR

float 

0.1

 

周波数平滑化 SNR の最小値 (local).

MAX_LOCAL_SMOOTH_SNR

float 

0.316

 

周波数平滑化 SNR の最大値 (local).

UPPER_SMOOTH_FREQ_INDEX

int 

99

 

周波数平滑化上限ビンインデックス.

LOWER_SMOOTH_FREQ_INDEX

int 

8

 

周波数平滑化下限ビンインデックス.

GLOBAL_SMOOTH_BANDWIDTH

int 

29

 

周波数平滑化バンド幅(global).

LOCAL_SMOOTH_BANDWIDTH

int 

5

 

周波数平滑化バンド幅(local).

FRAME_SMOOTH_SNR_THRESH

float 

1.5

 

周波数平滑化 SNR の閾値.

MIN_SMOOTH_PEAK_SNR

float 

1.0

 

周波数平滑化 SNR ピークの最小値.

MAX_SMOOTH_PEAK_SNR

float 

10.0

 

周波数平滑化 SNR ピークの最大値.

FRAME_VOICEP_PROB_FACTOR

float 

0.7

 

音声確率平滑化係数 (frame).

GLOBAL_VOICEP_PROB_FACTOR

float 

0.9

 

音声確率平滑化係数 (global).

LOCAL_VOICEP_PROB_FACTOR

float 

0.9

 

音声確率平滑化係数 (local).

MIN_VOICE_PAUSE_PROB

float 

0.02

 

音声休止確率の最小値.

MAX_VOICE_PAUSE_PROB

float 

0.98

 

音声休止確率の最大値.

6.3.7.5 ノードの詳細

\includegraphics[width=0.7\textwidth ]{fig/modules/PF-fc-overview.eps}
Figure 6.51: PostFilter の流れ図

式で用いられる添字は,表 6.1 で定義されているものに準拠する. また,以降の式では,特に必要のない場合は,時間フレームインデックス f を省略して表記する.

6.51 は,PostFilter ノードの流れ図である. 入力としては,GHDSS ノードからの分離音スペクトルと, BGNEstimator ノードの定常ノイズパワースペクトルが得られる. 出力には,音声が強調された分離音スペクトルと,分離音に混入しているノイズのパワースペクトルである.

処理の流れは

  1. ノイズ推定

  2. SNR 推定

  3. 音声存在確率推定

  4. ノイズ除去

となっている.

1) ノイズ推定:

\includegraphics[width=0.7\textwidth ]{fig/modules/PF-fc-noise.eps}
Figure 6.52: ノイズ推定の手順

ノイズ推定処理の流れを図 6.52 に示す. PostFilter ノードが対処するノイズは,
a) マイクロホンの接点などが要因となる定常ノイズ ,
b) 除去しきれなかった別の音源の音 (漏れノイズ),
c) 前フレームの残響,
の3つである.

最終的な分離音に含まれるノイズ λ(fki) は,

  λ(f,ki) = λsta(f,ki)+λleak(f,ki)+λrev(f1,ki)   (55)

として求められる. ただし,λsta(f,ki)λleak(f,ki)λrev(f1,ki) はそれぞれ, 定常ノイズ,漏れノイズ,前フレームの残響を表す.

6.3.7.5.1 1-a) MCRA 法による定常ノイズ推定

1-a) で用いる変数は 表6.41 に基づく.

Table 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(f1,ki)+(1αs)|Yn(ki)|2   (56)

次に,StmpSmin を更新する.

  Sminn(f,ki) = {min{Sminn(f1,ki),Sn(f,ki)}if  fnLmin{Stmpn(f1,ki),Sn(f,ki)}if  f=nL,   (57)
  Sminn(f,ki) = {min{Stmpn(f1,ki),Sn(f,ki)}if  fnLSn(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) = (αd1)In(ki)+1.   (61)

次に,分離音のパワースペクトルに含まれる漏れノイズを除去する.

  Sleakn(ki) = Np=1|Yp(ki)|2|Yn(ki)|2,   (62)
  S0n(ki) = |Yn(ki)|2qSleakn(ki),   (63)

ただし,S0n(ki)<Sfloor のとき,

  S0n(ki) = Sfloor   (64)

に値が変更される.

漏れノイズを除いたパワースペクトル S0n(f,ki) と, 前フレームの推定定常ノイズ λsta(f1,ki) または, BGNEstimator からの出力である bfλinit(f,ki) を混合することで, 現在のフレームの定常ノイズを求める.

  λstan(f,ki) = {αCd,n(ki)λstan(f1,ki)+(1αCd,n(ki)rS0n(f,ki)ifαCd,n(ki)λinitn(f,ki)+(1αCd,n(ki)rS0n(f,ki)if   (65)

6.3.7.5.2 1-b) 漏れノイズ推定

1-b) で用いる変数は 表6.42 に基づく.

Table 6.42: 変数の定義

変数

説明,対応するパラメータ

λleak(ki)

漏れノイズのパワースペクトル,各分離音の要素から成るベクトル.

αleak

全分離音パワーの合計に対する漏れ率. LEAK_FACTOR × OVER_CANCEL_FACTOR

Sn(f,ki)

式 (56) で求める平滑化パワースペクトル

いくつかのパラメータを次のように計算する.

  β = αleak1(αleak)2+αleak(1αleak)(N2)   (66)
  α = 1(N1)αleakβ   (67)

このパラメータを用いて,平滑化されたスペクトル S(ki) と, 式 (62) で求められた,他の分離音のパワーから自分の分離音のパワーを除いた パワースペクトル Sleakn(ki) を混合する.

  Zn(ki) = αSn(ki)+βSleakn(ki)   (68)

ただし,Zn(ki)<1 になる場合は,Zn(ki)=1 とする.

最終的な漏れノイズのパワースペクトル λleak(ki) は,

  λleakn = αleak(nnZn(ki))   (69)

として求める.

6.3.7.5.3 1-c) 残響推定

1-c) で用いる変数は 表6.43 に基づく.

Table 6.43: 変数の定義

変数

説明,対応するパラメータ

λrev(f,ki)

時間フレーム f での残響のパワースペクトル

ˆS(f1,ki)

前フレームの PostFilter の出力したノイズ除去後分離音スペクトル

γ

前フレーム残響パワーの減衰係数.パラメータ REVERB_DECAY_FACTOR,デフォルト 0.5

Δ

前フレーム分離音の減衰係数.パラメータ DIRECT_DECAY_FACTOR,デフォルト 0.2

残響のパワーは,前フレームの推定残響パワー λrev(f1,ki)=[λrev1(f1,ki),,λrevN(f1,ki)]T と, 前フレームの分離スペクトル ˆS(f1,ki)=[ˆS1(f1,ki),,ˆSN(f1,ki)]T から次のように計算される. ˆSn(f1,ki) は複素数であることに注意.

  λrevn(f,ki) = γ(λrevn(f1,ki)+Δ|ˆSn(f1,ki)|2)   (70)

2) SNR 推定:

\includegraphics[width=0.7\textwidth ]{fig/modules/PF-fc-SNR.eps}
Figure 6.53: SNR 推定の手順

SNR 推定の流れを図 6.53 に示す. SNR 推定は,
a) SNR の計算
b) ノイズ混入前の事前 SNR 推定
c) 音声含有率の推定
d) 最適ゲインの推定
から成る.

Table 6.44: 主な変数の定義

変数

説明,対応するパラメータ

Y(ki)

PostFilter ノードの入力である分離音の複素スペクトル

ˆS(ki)

PostFilter ノードの出力となる,整形された分離音複素スペクトル

λ(ki)

前段で推定されたノイズのパワースペクトル

γn(ki)

分離音 n の SNR

αpn(ki)

音声含有率

ξn(ki)

事前 SNR

GH1(ki)

分離音の SNR を向上させるための最適ゲイン

6.44 のベクトルの要素は,各分離音の値に対応する.

6.3.7.5.4 2-a) SNR の計算

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)

6.3.7.5.5 2-b) 音声含有率の推定

2-b) で用いる変数は,表6.45 に従う.

Table 6.45: 変数の定義

変数

説明,対応するパラメータ

αpmag

事前SNR係数.パラメータ VOICEP_PROB_FACTOR,デフォルト 0.9

αpmin

最小音声含有率.パラメータ MIN_VOICEP_PROB,デフォルト 0.05

音声含有率 αpn(f,ki) は,前フレームの事前 SNR ξn(f1,ki) を用いて次のように計算される.

  αpn(f,ki) = αpmag(ξn(f1,ki)ξn(f1,ki)+1)2+αpmin   (73)

6.3.7.5.6 2-c) ノイズ混入前の事前 SNR 推定

2-c) で用いる変数は,表6.46 に従う.

Table 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(f1,ki)|2λn(f1,ki)+(1a)ξn(f1,ki)   (75)

ただし,ξtmp は計算上の一時的な変数で,前フレームの推定 SNRγn(ki) と,事前 SNR ξn(ki) の内分値である. また,ξn(ki)>ξmax となる場合,ξn(ki)=ξmax と値を変更する.

6.3.7.5.7 2-d) 最適ゲインの推定

2-d) で用いる変数は,表6.47 に従う.

Table 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)ettdt}   (77)

として求める. ただし,

  GH1n(ki)=1ifvn(ki)<θminGH1n(ki)=1ifGH1n(ki)>1.   (78)

3) 音声存在確率推定:

\includegraphics[width=0.7\textwidth ]{fig/modules/PF-fc-VP.eps}
Figure 6.54: 音声存在確率推定の手順

音声存在確率推定の流れを図 6.54 に示す. 音声存在確率推定は,
a) 3種類の帯域ごとに事前 SNR の平滑化
b) 各帯域で,平滑化した SNR を元に,暫定的な音声確率を推定
c) 3つの暫定確率をもとに音声休止確率を推定
d) 最終的な音声存在確率を推定
から成る.

6.3.7.5.8 3-a) 事前 SNR の平滑化

3-a) で用いる変数を表6.48 にまとめる.

Table 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(f1,ki) で, 時間平滑化を行う.

  ζn(f,ki) = bζn(f1,ki)+(1b)ξn(f,ki)   (79)

周波数方向の平滑化は,その窓の大きさによって,frame,global,local の順に小さくなっていく.

6.3.7.5.9 3-b) 暫定音声確率を推定

3-b) で用いる変数を表6.49 に示す.

Table 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

6.3.7.5.10 3-c) 音声休止確率推定

3-c) で用いる変数を表6.50 に示す.

Table 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(1al+alPln(ki))(1ag+agPgn(ki))(1af+afPfn(ki)),   (89)

ただし,qn(ki)<qmin のとき,qn(ki)=qmin とし, qn(ki)>qmax のとき,qn(ki)=qmax とする.

6.3.7.5.11 3-d) 音声存在確率推定

音声存在確率 pn(ki) は,音声休止確率 qn(ki),事前 SNR ζn(ki), 式 (76) により導出された中間変数 vn(ki) を用いて次のように導出する.

  pn(ki) = {1+qn(ki)1qn(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)