日曜開発者のブログ -87ページ目

日曜開発者のブログ

日曜プログラマーが自作ソフトを細々と公開していくブログです。一般化調和解析(GHA)を応用したノイズ除去ソフトを公開しました。

GHAを用いたノイズ除去では、再合成した信号のフレーム間に発生する波形の不連続による聴感上のクリック音をどのように解消するかが一つの課題です。


現在公開しているVersion 1.3 までのGHA Denoiserではこの問題に対し、不連続を解消するように一つのフレーム内の信号をまとめてシフトするシフトスムーシングと、ラグランジュの多項式を用いたラグランジュスムーシングを提供してきました。


しかし、これらのスムーシング手法は幅が0.1秒程度未満の短いフレームに対しては有効ではありませんでした。このため、筆者自身がノイズ除去を行うときには0.5秒の窓幅を採用してきましたが、それでもクリック音が十分に解消されないケースがしばしばありました。


そこで、理論的な根拠は不明ですが、なんなとくスペクトルが滑らかに推移すればいいのではないかと思いつき、フレーム境界付近にごく短い推移区間を設定し、隣接する二つのフレームのそれぞれで定義される正弦波の和で構成される関数を、その推移区間で比率を滑らかに変えながらミックスするという、外挿スムーシングを提案、実装してみました。


結果は非常に良好で、少なくとも窓幅が0.1秒のケースに対してはほぼ完全にクリック音が消えました。この機能は次回リリースするGHA Denoiser version 1.4で公開する予定です。


外挿スムーシングにより、窓幅を短くする事が可能になり、時間方向の解像度を上げることができるようになりましたが、さらに数値計算上のコスト削減ができる可能性があります。

窓幅を短くした場合に計算コストの削減に繋がる要因は二つあります。第一に、滑降シンプレックス法で残差エネルギーを計算する時にデータ点数が少ないほうが演算量が減って速く計算できます。第二に、窓幅が短い方がGHAの正弦波逐次抽出において残差エネルギーが速く小さくなるので、結果として一つのフレームに対するGHAの反復回数が少なくなります。


他方、窓幅を短くした場合に計算コスト増加につながる要因もあり、それは窓幅が小さくなればフレームの数が増えるということです。最終的にはこれらの要因のバランスで決まるわけですが、筆者がこれまで試したところでは、よい感触を得ています。


外挿スムーシングの導入により、窓幅を短くする事ができ、そしてそれにより計算コストが下がれば、リーズナブルな計算機環境でGHA Denoiserが使えるようになる事が期待されます。