この記事でわかること

  • 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 程度を試してください。

関連フィルタ


よくある質問

agate(オーディオゲート)って何?

一定音量以下の信号を抑制 / 削除するフィルタ。マイクのバックグラウンドノイズ除去、ナレーション収録のクリーンアップなどに使う。閾値以下では無音化、以上では通過。

threshold の設定値は?

バックグラウンドノイズより 5〜10dB 上、対象音声(声)より 10〜20dB 下が目安。スタジオ録音なら -50dB、屋外録音なら -30dB 程度。

attack と release は何を制御する?

attack = ゲートが開く速度(ノイズから音声に移行)、release = 閉じる速度(音声からノイズに戻る)。attack 1〜10ms、release 100〜500ms が一般的。

ゲートで言葉の冒頭が切れる

attack が遅すぎる。1〜5ms に下げてください。あるいは lookahead 指定で先読みさせる方式に切替。

ノイズリダクションとゲート、どっち使う?

相補的。ノイズリダクション(FFT ベース)は連続的なバックグラウンドノイズに、agate は不連続な「無音区間のノイズ」に効く。両方を chain することも多い。

関連リソース

よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。

FFmpeg チートシート