きっかけ
8mm ビデオテープの映像を、キャプチャボードでダビングしていたとき。
ノイズゲートを適用しようとしたが、「ffmpeg ノイズゲート」で検索しても、なぜか思ったものが出てこなかったので記事作り。
ノイズゲートとは
簡単に言うと、音声データに対し「指定音量より小さい部分は、完全に音量 0 にする」こと。
例えば、普通に聞く分には無音に感じるが、波形とかで見てみると小さくノイズがのっている、以下 (メモリ 0.0~1.9) のような部分について。
ほとんど聞こえないので放っておいてもよいのですが、余計なデータを消せるに越したことはありません。そこでノイズゲートの出番です。
agate フィルタの適用
ffmpeg は、コマンドラインで動画ファイルや音声ファイルなどを色々やりくりできる万能なオープンソースソフトウェアです。多彩な映像・音声フィルタも搭載しており、先述のノイズゲートも実装されています。
ノイズゲートを適用するには、音声フィルタ agate
を使います。まずはパラメータをデフォルトのままでやってみましょう。
ffmpeg -i input.mp3 -af "agate" output.mp3
波形を見てみると?
いい感じに無音化されました。デフォルトのパラメータで割と十分そうです。
パラメータ調整
ただ、よく見てみると・・・?
必要な音が少し減衰している・・・!(とはいっても、集中して聞き比べないとわからないレベルではありますが。)
パラメータを調整してみましょう。agate
フィルタのパラメータはこちらの通り。
色々触ってみた結果、(この音声データでは) threshold
を 0.05
にするだけでようさそうでした。
ffmpeg -i input.mp3 -af "agate=threshold=0.05" output.mp3
余計な部分の無音化もされつつ、必要な音の減衰も気にならなくなりました。
ちなみに、パラメータを下手にいじるといびつな音になってしまいます。慣れていない、詳しくないうちは、デフォルトパラメータを基本にすることを推奨します。