Problem
分離音に歪みが含まれている時, 音声強調によって認識性能を改善したい.
Solution
音声強調に関する以下のノード PostFilter ,HRLE ,WhiteNoiseAdder ,MFMGeneration とその周辺の設定について記述する.
この処理に関しては,状況により, PostFilter が無いときのほうが認識性能が良いときがある. PostFilter のパラメータを環境に対して適切に設定する必要がある. デフォルトのパラメータは HARK 開発チームの環境で合わせたものであるから, ユーザの環境で上手く動作する保証はない.
PostFilter のパラメータ数は非常に多く, 相互依存しているものも多い. そのため, 手動でのチューニングは非常に困難である.
解決方法の一つは, 組み合わせ最適化手法を用いることである. データセットを準備できるなら, 評価値として認識率やSNRを用いることで, Generic Algorithm や Evolutional Strategy などの最適化手法を適用すればよい. 用いるデータによっては, 環境に特化しすぎたパラメータを学習する可能性があるので, 注意が必要である.
PostFilter では,基本的に入力信号のパワーの大小関係を利用して, 定常ノイズ,残響,漏れのノイズを動的に推定し, それを減じることで,高精度な分離音を引き出すことを行う. 状況により性能が下がるのは,その減算をした時の音声の歪みが認識に 悪影響を及ぼすためである. よって,定常ノイズ,漏れ,残響の3種類の推定からの減算の影響を 小さくしたり大きくしたりすることで, PostFilter の影響の大小を変化させることができるため, 状況次第でパフォーマンスがあがることがある. PostFilter の影響を極力小さくするには以下のパラメータを0に 指定すれば実現できる.
漏れ : LEAK_FACTOR = 0
残響 : REVERB_LEVEL = 0
定常ノイズ : LEAK_FACTOR = 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