この記事でわかること

  • sidechaincompress フィルタでオーディオダッキング(Audio Ducking)を実現する方法
  • サイドチェインコンプレッサーの仕組みとパラメータの意味
  • ナレーションに連動してBGMを自動で下げる設定例
  • attack/release パラメータで自然なダッキング効果を作る方法

テスト済みバージョン: FFmpeg 6.1で確認済み
対象 OS: Windows / macOS / Linux


オーディオダッキングとは

ナレーションや音声(ボイス)が入ったとき、BGMの音量を自動的に下げる技術です。映像作品、ポッドキャスト、解説動画などで広く使われています。FFmpegでは sidechaincompress フィルタで実現できます。


基本的な仕組み

ナレーション(サイドチェイン信号)
       ↓ 音量が上がる
コンプレッサーが BGM を圧縮

BGM の音量が自動で下がる

sidechaincompress は2つの音声入力を受け取ります:

  1. 主信号(BGM):圧縮される対象
  2. サイドチェイン信号(ナレーション):圧縮のトリガー

基本コマンド

ナレーション付き動画と BGM ファイルを使ったダッキング:

ffmpeg -i input.mp4 -i input.mp3 \
  -filter_complex "[0:a]aformat=fltp:44100:stereo[bg];[1:a]aformat=fltp:44100:stereo[voice];[bg][voice]sidechaincompress=threshold=0.02:ratio=4:attack=200:release=1000[ducked]" \
  -map 0:v -map "[ducked]" -c:v copy output_ducked.mp4

この例では input.mp4 の音声をBGM、input.mp3 をナレーションとして使い、ナレーション発声時にBGMを下げます。


パラメータの説明

パラメータ説明デフォルト推奨範囲
threshold圧縮を開始するサイドチェイン信号のレベル0.1250.01〜0.05
ratio圧縮比率(例: 4 = 4:1圧縮)23〜8
attackコンプレッサーが反応するまでの時間(ms)20100〜300
releaseコンプレッサーが元に戻るまでの時間(ms)250500〜2000
makeupコンプレッサー後の音量補正(dB)1
kneeニー幅(ソフトニーの滑らかさ)2.82843

threshold の調整

ナレーションの音量に合わせて threshold を調整します。値が小さいほど弱い音声でも反応します:

ffmpeg -i input.mp4 -i input.mp3 \
  -filter_complex "[0:a]aformat=fltp:44100:stereo[bg];[1:a]aformat=fltp:44100:stereo[voice];[bg][voice]sidechaincompress=threshold=0.05:ratio=4:attack=200:release=1000[ducked]" \
  -map 0:v -map "[ducked]" -c:v copy output.mp4

自然なダッキング効果のための設定

attack と release を調整することで、ダッキングの「ふわっ」とした自然な動作を作れます。

ゆっくりとしたダッキング(自然な感じ)

ffmpeg -i input.mp4 -i input.mp3 \
  -filter_complex "[0:a]aformat=fltp:44100:stereo[bg];[1:a]aformat=fltp:44100:stereo[voice];[bg][voice]sidechaincompress=threshold=0.02:ratio=6:attack=300:release=1500[ducked]" \
  -map 0:v -map "[ducked]" -c:v copy output_natural.mp4

素早く反応するダッキング(タイトな感じ)

ffmpeg -i input.mp4 -i input.mp3 \
  -filter_complex "[0:a]aformat=fltp:44100:stereo[bg];[1:a]aformat=fltp:44100:stereo[voice];[bg][voice]sidechaincompress=threshold=0.02:ratio=8:attack=50:release=500[ducked]" \
  -map 0:v -map "[ducked]" -c:v copy output_tight.mp4

BGM の音量を事前に調整してからダッキング

BGMが大きすぎる場合、事前に音量を下げてからダッキングを適用します:

ffmpeg -i input.mp4 -i input.mp3 \
  -filter_complex "[0:a]volume=0.5,aformat=fltp:44100:stereo[bg];[1:a]aformat=fltp:44100:stereo[voice];[bg][voice]sidechaincompress=threshold=0.02:ratio=4:attack=200:release=1000[ducked]" \
  -map 0:v -map "[ducked]" -c:v copy output.mp4

ナレーションと BGM を最終的にミックスする

ダッキング後にナレーション音声を加えて最終的なミックスを作る:

ffmpeg -i input.mp4 -i input.mp3 \
  -filter_complex "[0:a]aformat=fltp:44100:stereo[bg];[1:a]aformat=fltp:44100:stereo[voice];[bg][voice]sidechaincompress=threshold=0.02:ratio=4:attack=200:release=1000[ducked];[ducked][voice]amix=inputs=2:duration=longest[out]" \
  -map 0:v -map "[out]" -c:v copy output_mixed.mp4

この例では BGM のダッキング後、ナレーションと最終ミックスします。


注意事項

サイドチェインコンプレッサーはサンプルレートと音声フォーマットが一致している必要があります。aformat フィルタで統一するのが確実です。

注意: 両入力のサンプルレートが異なる場合、aformat で統一してください。
例: aformat=fltp:44100:stereo

関連リソース

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

FFmpeg チートシート

関連記事


動作確認: ffmpeg 6.1 / Ubuntu 24.04 (GitHub Actions runner)
一次ソース: ffmpeg.org/ffmpeg-filters.html#sidechaincompress


よくある質問

サイドチェーンコンプレッションって何?

別の信号(ナレーション)が大きくなった時に、対象の信号(BGM)を自動で下げるコンプレッサ。FFmpeg では sidechaincompress で実装できます。

スレッショルドとレシオの初期値は?

ポッドキャストならスレッショルド -25dB / レシオ 8:1 から。アタック 5ms / リリース 200ms にすれば、文と文の間で BGM が自然に戻ります。

BGM の音量を下げるだけと比べて何が違う?

ナレーション系では明確に優位 — 一律に音量を下げると間(ま)の BGM まで小さくなって寂しくなる。ダッキングは話してる時だけ下がるのでメリハリが残ります。

声 1 + BGM 2 つでもダッキングできる?

はい。BGM 2 つそれぞれに sidechaincompress を適用(同じ声をサイドチェーン入力として)してから、ダッキング後の出力を合成します。

ポンピング(不自然な音量変動)が出る

アタック・リリースが速すぎ。アタックを 10〜20ms、リリースを 300〜500ms に。レシオを 4:1 まで下げてもマイルドになります。