3
$\begingroup$

I've some video footage where wind noise is drowning out background noise I want to be clear.

Is it possible to do some DSP to remove/attenuate this wind noise in order to hear the engine noise?

I am not well versed in DSP, but my initial assumption would be;

  1. Extract audio from video file

  2. Calculate FFT of audio file so as to analyse the frequencies at which wind is present

  3. Design and implement a filter which removes unwanted noise from audio file

  4. Modify original movie file by replacing the existing audio with the "cleaned" audio

Any help appreciated.

$\endgroup$
3
  • $\begingroup$ If the video is recorded entirely while you're driving your motorcycle, then I'd presume that the wind is a constant source of noise throughout the video. In this case, I'd suggest reading through this answer to find some of the options you have for reducing that noise from your video. The Audacity Noise Removal tool is your simplest bet, but it only works if the portion of the recording you select is all noisy. If your entire recording is noisy, then you can select the whole recording and remove the noise in one simple click :) $\endgroup$ Jun 2, 2016 at 20:10
  • $\begingroup$ Thanks for the link Vladislav Martin, i'll check out Audacity tomorrow. I was kind of hoping to get a little DSP experience using something like Python so I may continue to investigate this further. So if anyone has any thoughts to add in that regard please feel free to comment $\endgroup$
    – MarkMark
    Jun 2, 2016 at 21:09
  • $\begingroup$ Ah! Well, in that case you should look into designing your own spectral subtraction algorithm. If you want to learn more about this, here is a very thorough but digestible treatment of spectral subtraction. This StackOverflow answer give a more condensed explanation of what that is. The built-in Audacity tool I made reference tool is just one implementation of a spectral subtraction algorithm :) $\endgroup$ Jun 2, 2016 at 22:36

1 Answer 1

3
$\begingroup$

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...

  1. 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.

  1. 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!

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.