LoginSignup
0
0

ffmpeg でノイズゲート (指定より小さい音を除去) を適用したい

Posted at

きっかけ

8mm ビデオテープの映像を、キャプチャボードでダビングしていたとき。

ノイズゲートを適用しようとしたが、「ffmpeg ノイズゲート」で検索しても、なぜか思ったものが出てこなかったので記事作り。

ノイズゲートとは

簡単に言うと、音声データに対し「指定音量より小さい部分は、完全に音量 0 にする」こと。

例えば、普通に聞く分には無音に感じるが、波形とかで見てみると小さくノイズがのっている、以下 (メモリ 0.0~1.9) のような部分について。

noise-gate-none.gif

ほとんど聞こえないので放っておいてもよいのですが、余計なデータを消せるに越したことはありません。そこでノイズゲートの出番です。

agate フィルタの適用

ffmpeg は、コマンドラインで動画ファイルや音声ファイルなどを色々やりくりできる万能なオープンソースソフトウェアです。多彩な映像・音声フィルタも搭載しており、先述のノイズゲートも実装されています。

ノイズゲートを適用するには、音声フィルタ agate を使います。まずはパラメータをデフォルトのままでやってみましょう。

ffmpeg -i input.mp3 -af "agate" output.mp3

波形を見てみると?

noise-gate-def.gif

いい感じに無音化されました。デフォルトのパラメータで割と十分そうです。

パラメータ調整

ただ、よく見てみると・・・?

noise-gate-compare.gif

必要な音が少し減衰している・・・!(とはいっても、集中して聞き比べないとわからないレベルではありますが。)

パラメータを調整してみましょう。agate フィルタのパラメータはこちらの通り。

色々触ってみた結果、(この音声データでは) threshold0.05 にするだけでようさそうでした。

ffmpeg -i input.mp3 -af "agate=threshold=0.05" output.mp3

noise-gate-thr.gif

余計な部分の無音化もされつつ、必要な音の減衰も気にならなくなりました。

ちなみに、パラメータを下手にいじるといびつな音になってしまいます。慣れていない、詳しくないうちは、デフォルトパラメータを基本にすることを推奨します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0