Smile Engineering Blog

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

Audacityの「ノイズ除去」を検証してみる

Audacityでノイズ除去」では AudacityのNoise Reductionを紹介しましたが、はたしてどんなアルゴリズムなのでしょうか。気になったので少し検証してみます。

Audacityソースコード

https://www.audacityteam.org/download/source/

Noise Reductionのソースを見ると、少なくともFFTは使われているみたいです。

audacity-minsrc-2.4.2/src/effects/NoiseReduction.cppのヘッダのコメント

  The first pass is done over just noise.  For each windowed sample
  of the sound, we take a FFT and then statistics are tabulated for
  each frequency band.

特定の周波数をノイズとして消してみる

周波数領域で帯域ごとにノイズを分析しているのならば、例えば1kHzの正弦波をノイズとしてプロファイルを取得した場合、1kHzと2kHzの正弦波を合成した信号では、ノイズ除去を行うと1kHzだけが消えて2kHzが残るのでしょうか?

1kHzの正弦波を生成

【ジェネレーター】➡【トーン】

まずノイズ音源として、Audacityで1kHzの正弦波を生成します。カーソルを波形の上に置き、Ctrl+スクロールで波形が拡大されます。

f:id:jspnet:20201017090409p:plain
1kHz正弦波

2kHzの正弦波を生成(トラックの追加)

【トラック】➡【新しく追加】➡【モノラルトラック】

次にトラックを追加して【トラック】➞【新しく追加】➞【モノラルトラック】、同様に2kHzの正弦波を生成します【ジェネレーター】➞【トーン】。

f:id:jspnet:20201017090550p:plain
2kHz正弦波

1kHzと2kHzの波形を合成

【トラック】➡【Mix】➡【新しいトラックにミックスして作成】

2つのトラックを選択して(Ctrl+A)、上記の手順で1kHzと2kHzの正弦波を合成します。

f:id:jspnet:20201017090721p:plain
1kHzと2kHzの正弦波を合成

周波数特性

【解析】➡【スペクトラム表示】(Audacityで周波数分析

1kHzと2kHzの正弦波を合成したトラックを選択して、スペクトラム表示をすると1kHzと2kHzの周波数特性が分かります。

f:id:jspnet:20201017090855p:plain
スペクトラム表示
ここまでが準備です。この音源から1kHzの信号だけ除去することができるか? 試してみます。

1kHzの正弦波でノイズプロファイルを取得

1kHzの正弦波のトラックを選択 ➡【エフェクト】➡【ノイズの除去】➡ステップ1【ノイズプロファイルの取得】

1kHzの正弦波をノイズとして、ステップ1【ノイズプロファイルの取得】を行います。 Audacityのノイズ除去はこちら(Audacityでノイズ除去

f:id:jspnet:20201017093116p:plain
Audacityのノイズ除去

ノイズの除去:デフォルトパラメータ(ノイズ除去=12dB, 感度=6, 周波数平滑化=3)

波形を選択 ➡【エフェクト】➡【ノイズの除去】➡ ステップ2【OK】

1kHzと2kHzの正弦波を合成したトラックを選択して、ステップ2のノイズの除去を行います。まだ1kHzの影響が残ってはいますが、周期的には2kHzに近くなってます。

f:id:jspnet:20201017093327p:plain
ノイズ除去:パラメータ=12dB

周波数特性を見る

【解析】➡【スペクトラム表示】

トラックの波形を選択してスペクトラム表示をすると、1kHzが約12dB減衰しているのが分かります。

f:id:jspnet:20201017093831p:plain
スペクトラム表示:ノイズ除去=12dB

ノイズの除去:パラメータを大きく(ノイズ除去=24dB, 感度=6, 周波数平滑化=3)

波形を選択 ➡【エフェクト】➡【ノイズの除去】➡ ステップ2【OK】

もう少しノイズ除去パラメータを大きくして24dBにすると、デフォルトパラメータの12dBに比べ原音に近い波形になります。

f:id:jspnet:20201017094019p:plain
ノイズ除去:パラメータ=24dB

周波数特性を見る

【解析】➡【スペクトラム表示】

トラックの波形を選択してスペクトラム表示を見ると、1kHzが約24dB減衰しているのが分かります。

f:id:jspnet:20201017095428p:plain
スペクトラム表示:ノイズ除去=24dB