この記事でわかること
sidechaincompressフィルタでオーディオダッキング(Audio Ducking)を実現する方法- サイドチェインコンプレッサーの仕組みとパラメータの意味
- ナレーションに連動してBGMを自動で下げる設定例
- attack/release パラメータで自然なダッキング効果を作る方法
テスト済みバージョン: FFmpeg 6.1で確認済み
対象 OS: Windows / macOS / Linux
オーディオダッキングとは
ナレーションや音声(ボイス)が入ったとき、BGMの音量を自動的に下げる技術です。映像作品、ポッドキャスト、解説動画などで広く使われています。FFmpegでは sidechaincompress フィルタで実現できます。
基本的な仕組み
ナレーション(サイドチェイン信号)
↓ 音量が上がる
コンプレッサーが BGM を圧縮
↓
BGM の音量が自動で下がる
sidechaincompress は2つの音声入力を受け取ります:
- 主信号(BGM):圧縮される対象
- サイドチェイン信号(ナレーション):圧縮のトリガー
基本コマンド
ナレーション付き動画と 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.125 | 0.01〜0.05 |
ratio | 圧縮比率(例: 4 = 4:1圧縮) | 2 | 3〜8 |
attack | コンプレッサーが反応するまでの時間(ms) | 20 | 100〜300 |
release | コンプレッサーが元に戻るまでの時間(ms) | 250 | 500〜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 チートシートです。手元に置いておくと調べる時間を短縮できます。
関連記事
- 音量の正規化(loudnorm/LUFS)
- 音量の検出と調整(volumedetect/volume)
- 音声フォーマット変換
動作確認: 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 まで下げてもマイルドになります。