分離音に入っている雑音を後処理で減らしたい

Problem

分離音に歪みが含まれている時, 音声強調によって認識性能を改善したい.

Solution

音声強調に関する以下のノード PostFilter ,HRLE ,WhiteNoiseAdder ,MFMGeneration とその周辺の設定について記述する.

この処理に関しては,状況により, PostFilter が無いときのほうが認識性能が良いときがある. PostFilter のパラメータを環境に対して適切に設定する必要がある. デフォルトのパラメータは HARK 開発チームの環境で合わせたものであるから, ユーザの環境で上手く動作する保証はない.

PostFilter のパラメータ数は非常に多く, 相互依存しているものも多い. そのため, 手動でのチューニングは非常に困難である.

解決方法の一つは, 組み合わせ最適化手法を用いることである. データセットを準備できるなら, 評価値として認識率やSNRを用いることで, Generic Algorithm や Evolutional Strategy などの最適化手法を適用すればよい. 用いるデータによっては, 環境に特化しすぎたパラメータを学習する可能性があるので, 注意が必要である.

PostFilter では,基本的に入力信号のパワーの大小関係を利用して, 定常ノイズ,残響,漏れのノイズを動的に推定し, それを減じることで,高精度な分離音を引き出すことを行う. 状況により性能が下がるのは,その減算をした時の音声の歪みが認識に 悪影響を及ぼすためである. よって,定常ノイズ,漏れ,残響の3種類の推定からの減算の影響を 小さくしたり大きくしたりすることで, PostFilter の影響の大小を変化させることができるため, 状況次第でパフォーマンスがあがることがある. PostFilter の影響を極力小さくするには以下のパラメータを0に 指定すれば実現できる.

逆に PostFilter の影響を大きくしたい場合はこのパラメータを1に近づければ良い.

PostFilter に比べ,HRLE のパラメータ数は非常に少ない. HRLE は入力分離音のパワーからヒストグラムを算出し,音声と雑音のパワー差を利用して音声強調をするモジュールである. 従って,ヒストグラムの設計が性能に大きく影響する. HRLE には LX, TIME_CONSTANT, NUM_BIN, MIN_LEVEL, STEP_LEVEL, の5つのパラメータがあるが,LX以外のパラメータはヒストグラムの細かさや考慮する時間幅を考えており, 前もって十分な値に設定されている. ただし,LXのみは,雑音と音声を切り分けるレベルを指定するもので,環境に依存して大きく変化する. LXを大きくすると,雑音とみなすレベルが大きくなり,雑音は抑圧されやすくなるものの, パワースペクトルを引きすぎてしまい,歪みが大きくなる可能性がある. 一方,小さなLXは,雑音を抑圧できない可能性がある. 環境によって適切なLXを設定する必要がある.

WN_LEVEL の値を調節する. 小さすぎると分離音で生成された歪みが十分に緩和できない. 大きすぎると歪み部分だけでなく,分離音自体が影響を受けてしまう.

THRESHOLD の値 0から1の範囲で値を変化させることで, 特徴量をマスクする閾値を変化させることができる. 1に近づくほど全ての特徴をマスクせずに0として扱ってしまうし, 0に近づくほと全ての特徴をマスクして1として扱ってしまうので 認識率が下がる.

Discussion

なし.

See Also

うまく分離できない