この記事でわかること
agateフィルタでノイズゲートを設定するコマンドthreshold・attack・release・rangeパラメータの意味と調整方法- ポッドキャスト・ボイスオーバーでの実用的な設定例
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
| パラメータ | 値 | 説明 |
|---|---|---|
threshold | 0.02 | ゲートが開く音量の閾値(0.0〜1.0) |
attack | 5 | ゲートが開くまでの時間(ms) |
release | 100 | ゲートが閉じるまでの時間(ms) |
range | 0.0 | ゲートが閉じたときの減衰量(0.0=完全ミュート、1.0=変化なし) |
パラメータ詳細
| パラメータ | 説明 | デフォルト | 範囲 |
|---|---|---|---|
level_in | 入力ゲイン(倍率) | 1 | 0.015625〜64 |
mode | ゲートの動作モード | downward | downward/upward |
range | ゲートが閉じたときの最小比率 | 0.06125 | 0.0〜1.0 |
threshold | ゲートを開く閾値 | 0.125 | 0.0〜1.0 |
ratio | 圧縮比率(range との相互作用) | 2 | 1〜9000 |
attack | アタック時間(ms) | 20 | 0.01〜9000 |
release | リリース時間(ms) | 250 | 0.01〜9000 |
makeup | メイクアップゲイン | 1 | 1〜64 |
knee | ニー幅(dB) | 2.828 | 1〜8 |
detection | 検出方式 | rms | peak/rms |
link | ステレオリンク | average | average/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程度を試してください。
関連フィルタ
silenceremove— 無音区間を物理削除loudnorm— ラウドネス正規化afade— 音声フェードイン・アウトacompressor— 音声コンプレッサー
関連リソース
長時間のエンコードや大量のバッチ処理を手元のPCで回すのが重い場合は、時間課金で使えるレンタルサーバーやVPSを検討する一案もあります。