Pyroomacousticsを使って雑音抑圧(スペクトルサブトラクション法)のバッチ処理を試してみた

概要

Pyroomacousticsというパッケージに同梱のJupyter notebook(下記リンク)を参考に、スペクトルサブトラクション法に基づく雑音抑圧をバッチ処理的にやってみただけである。ノートブックのほぼコピペなので新しいところはない。
nbviewer.jupyter.org

Pyroomacousticsのインストールは以下。

pip install pyroomacoustics

音声ファイルや雑音ファイルは以下からダウンロードできる。
pyroomacoustics/notebooks at master · LCAV/pyroomacoustics · GitHub

Pythonスクリプト

雑音入の音声を用意し、推定した雑音抑圧フィルタをSTFTスペクトルに乗算することで処理を実現する。処理後のSTFTスペクトルは音声へと逆変換され、結果をファイルに保存するという流れである。
gist.github.com

結果
  • 元の音声

soundcloud.com

  • 雑音入りの音声

soundcloud.com

  • 雑音抑圧後の音声

soundcloud.com



「元の雑音」は抑圧できていることが分かる。

考察

雑音抑圧後にも残る(むしろ新たに発生する)雑音は「ミュージカルノイズ」と呼ばれる。スクリプト中の db_reduc の数値を大きくすると、元の雑音はより抑圧できるが、ミュージカルノイズも増える。雑音抑圧レベルとミュージカルノイズのレベルはトレードオフ関係にあるといえる。

雑音抑圧前後のスペクトログラムの表示は今後の予定。