この記事でわかること

  • agate フィルタでノイズゲートを設定するコマンド
  • thresholdattackreleaserange パラメータの意味と調整方法
  • ポッドキャスト・ボイスオーバーでの実用的な設定例
  • silenceremove との使い分け

テスト済みバージョン: FFmpeg 6.1(ubuntu-latest / CI検証済み)
対象 OS: Windows / macOS / Linux


ノイズゲートとは

ノイズゲートは、音量が一定の閾値(threshold)を下回った場合に自動的に音量を下げる(またはミュートする)エフェクトです。

  • 声や楽器が鳴っている間 → 音を通過させる(ゲートが開く)
  • 無音または小さいノイズしかない間 → ゲートを閉じて音を遮断または減衰させる

マイクのヒスノイズ、エアコンの音、会場の環境音など「常時鳴っているノイズ」を消すのに効果的です。


基本コマンド

ノイズゲートを適用する

ffmpeg -i input.mp3 -af "agate=threshold=0.02:attack=5:release=100:range=0.0" output.mp3
パラメータ説明
threshold0.02ゲートが開く音量の閾値(0.0〜1.0)
attack5ゲートが開くまでの時間(ms)
release100ゲートが閉じるまでの時間(ms)
range0.0ゲートが閉じたときの減衰量(0.0=完全ミュート、1.0=変化なし)

パラメータ詳細

パラメータ説明デフォルト範囲
level_in入力ゲイン(倍率)10.015625〜64
modeゲートの動作モードdownwarddownward/upward
rangeゲートが閉じたときの最小比率0.061250.0〜1.0
thresholdゲートを開く閾値0.1250.0〜1.0
ratio圧縮比率(range との相互作用)21〜9000
attackアタック時間(ms)200.01〜9000
releaseリリース時間(ms)2500.01〜9000
makeupメイクアップゲイン11〜64
kneeニー幅(dB)2.8281〜8
detection検出方式rmspeak/rms
linkステレオリンクaverageaverage/maximum

ポッドキャスト・ボイスオーバー向け設定

ffmpeg -i voice_recording.mp3 \
  -af "agate=threshold=0.015:attack=5:release=200:range=0.0" \
  output_clean.mp3

解説:

  • threshold=0.015 — 声のレベルに応じて調整(小さい声なら 0.01、大きい声なら 0.025 程度)
  • attack=5 — ゲートが開くまで 5ms(短すぎると語頭が切れる)
  • release=200 — 語尾後 200ms でゲートを閉じる(長めにすると自然)
  • range=0.0 — ゲートが閉じたときは完全ミュート

ノイズレベルを測定してからthresholdを設定する

最適な threshold を設定するには、まず音声の無音部分のノイズレベルを確認します。

ffmpeg -i input.mp3 -af "astats=metadata=1:reset=1,ametadata=print:key=lavfi.astats.Overall.RMS_level" -f null - 2>&1 | grep RMS

出力された RMS レベル(dBFS)を確認し、ノイズのレベルよりも声のレベルとの中間値を threshold に設定します。


入力ゲインと組み合わせる

ffmpeg -i input.mp3 \
  -af "agate=threshold=0.02:attack=5:release=150:range=0.0:level_in=1.5" \
  output.mp3

level_in=1.5 で入力を 1.5 倍に増幅してからゲート処理します。小さいマイク入力に効果的です。


silenceremove との使い分け

フィルタ動作適した用途
agate無音時の音量を減衰させる(完全削除はしない)リアルタイム処理、自然な仕上がり
silenceremove無音区間を物理的に削除する編集後のトリミング、ポッドキャスト短縮

会話や音楽の流れを保ちたいなら agate、無駄な無音を完全に削除したいなら silenceremove を使います。


複数フィルタとの組み合わせ

ノイズゲート → ノーマライズのパイプライン

ffmpeg -i input.mp3 \
  -af "agate=threshold=0.02:attack=5:release=150:range=0.0, \
       loudnorm=I=-16:TP=-1.5:LRA=11" \
  output.mp3

ノイズゲートでバックグラウンドノイズを除去し、loudnorm で音量を適切なレベルに揃えます。


動画ファイルの音声トラックに適用する

ffmpeg -i input.mp4 \
  -af "agate=threshold=0.02:attack=5:release=150:range=0.0" \
  -c:v copy \
  output.mp4

-c:v copy で映像をそのままコピーし、音声だけを処理します。


注意点

  • threshold はリニア値(0.0〜1.0)です。dBFS との変換: threshold = 10^(dBFS/20) 。例えば -40dBFS は約 0.01
  • attack が短すぎると語頭の子音(「さ」「た」など)が切れます。5〜20ms が適切です。
  • release が短すぎると語尾の自然な残響も削除されます。100〜300ms が一般的です。
  • range=0.0 は完全ミュートです。完全な無音が不自然に感じる場合は range=0.02 程度を試してください。

関連フィルタ

関連リソース

長時間のエンコードや大量のバッチ処理を手元のPCで回すのが重い場合は、時間課金で使えるレンタルサーバーやVPSを検討する一案もあります。

お名前.comの高性能VPS