Extracting Audio from Video
There is a simple cross-platform tool for manipulating / accessing video & audio files called ffmpeg. I've linked you the documentation available for the whole toolkit, just so you can glance around and get a feel for what sort of wonders can be performed with it.
But, all you need to do is extract audio from your video file. You can do this with ffmpeg
and a pointed explanation of how to do exactly this, following this link. It's more of a tutorial / user's guide and less overwhelming than the documentation I linked above. You have two choices...
Extract the audio straight from the terminal:
$ ffmpeg -i C:/path/to/file/your-video-file.mp4 -vn -acodec copy your-audio-file.aac
Remember to change the file extensions depending on what video file extension you're working with.
Extract the audio from the terminal through Python:
import subprocess as subproc
command = "ffmpeg -i C:/path/to/file/your-video-file.mp4 -vn -acodec copy C:/path/to/your-audio-file.aac"
subproc.call(command, shell=True)
Removing Wind Noise By Analyzing FFT Data
Built-in tools for audio noise reduction / removal, like the Noise Removal Tool in Audacity, are all various implementation of the same concept: spectral subtraction. Spectral subtraction is so widely used because... it's relatively simple. All it takes is to compute the FFT of the audio signal in question, split the FFT into smaller "frames", identify the power level of the steady background noise within each frame, and then filter out that energy from the entire frame. Coming up with what filter, what frame size, and what energy level works best for your case is part of what makes each spectral subtraction technique different. So, there's no one, static solution for all audio files that I could show you - just analyze the magnitudes of your audio's FFT frame-by-frame and figure out what works best for your audio. In the end, you're left with whatever additional energy is present in the signal, which is usually the part of the interesting part of the audio.
If you don't know how to compute & view the FFT of a signal in Python, consult the Examples section of the numpy
documentation on the numpy.fft.fft
function.
Patching Together Reworked Audio with Original Video
Again, ``ffmpeg` is your friend here. This is as simple as a one line command:
ffmpeg -i your-video-file.mp4 -i your-audio-file.aac -c:v copy -c:a copy output.mp4
I hope that this approach helps give you the DSP experience you're looking for, while also solving the noise reduction problem you have with your current video. Good luck!