#!/usr/bin/env python3
"""Сводит очищенную речь и настоящую музыку с sidechain ducking."""
from __future__ import annotations
import argparse, subprocess

def main():
    ap=argparse.ArgumentParser(); ap.add_argument('voice'); ap.add_argument('music'); ap.add_argument('output'); ap.add_argument('--music-gain',type=float,default=0.34); args=ap.parse_args()
    flt=(f"[0:a]highpass=f=75,lowpass=f=16000,afftdn=nf=-28,"
         "equalizer=f=240:t=q:w=1.1:g=-1.5,equalizer=f=3200:t=q:w=1.0:g=1.5,"
         "acompressor=threshold=-20dB:ratio=3:attack=10:release=130:makeup=2,"
         "loudnorm=I=-16:TP=-1.5:LRA=7[voice];"
         f"[1:a]volume={args.music_gain},afade=t=in:st=0:d=1.2[music];"
         "[music][voice]sidechaincompress=threshold=0.025:ratio=8:attack=25:release=320[ducked];"
         "[voice][ducked]amix=inputs=2:weights='1 1':normalize=0,alimiter=limit=0.92[out]")
    cmd=['ffmpeg','-y','-i',args.voice,'-stream_loop','-1','-i',args.music,'-filter_complex',flt,'-map','[out]','-shortest','-ar','48000','-ac','2',args.output]
    subprocess.run(cmd,check=True)
if __name__=='__main__': main()
