Given two audio streams, I'd like to remove the audio in one stream that also exists in another. In this particular case the 1st stream contains everything mixed, and the 2nd stream contains just the background noise which also exists in the 1st stream. Is there a reasonable way to go about "subtracting" this background audio track from the 1st audio track?
Ideally using ffmpeg, but open to anything. I've naively tried inverting the background channel and mixing it with the first channel with this ffmpeg filter: aeval=val(0)|-val(1)
but that doesn't work. I assume that's because the background is mixed at a different level. (I'm also assuming they're exactly in phase)
Any other ideas?
For reference, here's ffmpeg showcqt
filter on each channel side by side. You can see how the 2nd column seems to "contain" all of the audio in the first column, plus some more. (and mixed at different levels)