Getting audio components from two audio streams to remove noise
So, you'd be inverting the phase of the noise signal, adjusting its amplification to match the level of the noise in the other clip, and then summing the two to obtain speech minus noise. You might find that adding EQ. to the noise signal as well as amplification might also help.

Any audio app that can mix two signals could do this, if you want a good free one Audacity is the most widely used. 

This technique is used in a electomechanical sense in a lip-ribbon microphone, commonly used in sports commentary.