Detecting wind noise [closed]
Asked Answered
P

4

18

I want to develop an app for detecting wind according the audio stream.
I need some expert thoughts here, just to give me guide lines or some links, I know this is not easy task but I am planning to put a lot of effort here.

My plan is to detect some common patterns in the stream, and if the values are close to this common patterns of the wind noise I will notify that match is found, if the values are closer to the known pattern great, I can be sure that the wind is detected, if the values doesn't match with the patterns then I guess there is no so much wind....

That is my plan at first, but I need to learn how this things are done. Is there some open project already doing this ? Or is there someone who is doing research on this topics ?

The reason I write on this forum is because I do not know how to google it, the things I found was not I was looking for. I really do not know how to start developing this kind of algorithm.

EDIT 1 :
I tried to record a wind, and when I open the saved audio file for me it was just a bunch of numbers :). I do not even see in what format should I save this, is wave good enough ? Should I use something else, or what if I convert the wind noise audio file in mp3 : is this gonna help with parsing ?

Well I got many questions, that is because I do not know from where to read more about this kind of topic. I tag my question with guidlines so I hope someone will help me.

There must be something that is detectable, cause the wind noise is so common, there must be somehow to detect this, we need only someone to give me tips, someone who is familiar with this topic.

Preexist answered 14/11, 2011 at 10:52 Comment(6)
Have you already recorded some wind noise samples? How do they look? I mean the time series, the power spectra...Mealie
Wind is silent by itself. It is the interaction with other elements that makes noise: leaves, houses, oboes, microphones... So you have first to narrow your environment.Portillo
you might want to look on dsp.stackexchange.com tooCartagena
@mouviciel: not quite.. a microphone alone can pick up the "sound" of the wind.Bombacaceous
@yi_H - How do you distinguish between the sound of the wind and the sound made by moving air on the asperities of the device?Portillo
@mouviciel: no idea what "asperity" is.. but the mike typically picks up the low (real) harmonics of the wind, not that high pitched sound you are familiar with.Bombacaceous
M
4

I just came across this post I have recently made a library which can detect wind noise in recordings.

I made a model of wind noise and created a database of examples and then trained a Machine Learning algorithm to detect and meter the wind level in a perceptually weighted way.

The C++/C code is here if it is of use to anyone!

Mier answered 26/6, 2014 at 13:8 Comment(5)
Can you tell us a little more about your project? I'd like to know how the code is licensed (is it open source, which license?) The question also asks for some guidance about how to implement this. What general approach did you take?Legman
Hi my project is called the good recording project, it is a research project at the University of Salford, UK www.goodrecording.net. We are looking at ways to automatically determine the quality of audio, particularly in user generated content. The code is open source, it is licensed under the MIT License. The approach I used was to make a model of wind noise, add the noise to many examples of speech music and soundscapes, then extract audio features (MFCCs) and train a random forest classifier with the quantised signal to noise ratio as the class label.Mier
I have created an API that makes use of this software package in the background: tinydrop.io/documentation/#wind-detectionMeissner
@Mier I have added your software to my API for detecting bad audio - I hope that's in the spirit of your research project :) tinydrop.io/documentation/#wind-detectionMeissner
I need to use it in an android project and detect wind nose level, is it possible?Castano
R
3

The science for your problem is called "pattern classification", especially the subfield of "audio pattern classification". The task is abstracted as classifying a sound recording into two classes (wind and not wind). You seem to have no strong background in signal processing yet, so let me insert one central warning: Pattern classification is not as easy as it looks at first. Humans excel at pattern classification. Computers don't.

A good first approach is often to compute the correlation of the Fourier transform of your signal and a sample. Don't know how much that will depend on wind speed, however.

You might want to have a look at the bag-of-frames approach, it was used successfully to classify ambient noise.

Receptacle answered 14/11, 2011 at 11:35 Comment(0)
B
2

As @thiton mentioned this is an example of audio pattern classification.

Main characteristics for wind: it's a shaped (band/hp filtered) white noise with small semi-random fluctuations in amplitude and pitch. At least that's how most synthesizers reproduce it and it sounds quite convincing.

You have to check the spectral content and change in the wavefile, so you'll need FFT. Input format doesn't really matter, but obviously raw material (wav) is better.

Once you got that you should detect that it's close to some kind of colored noise and then perhaps extract series of pitch and amplitude and try to use classic pattern classification algorithm for that data set. I think supervised learning could work here.

Bombacaceous answered 14/11, 2011 at 12:9 Comment(0)
E
1

This is actually a hard problem to solve.

Assuming you have only a single microphone data. The raw data you get when you open an audio file (time-domain signal) has some, but not a lot of information for this kind of processing. You need to go into the frequency domain using FFTs and look at the statistics of the the frequency bins and use that to build a classifier using SVM or Random Forests.

With all due respect to @Karoly-Horvath, I would also not use any recordings that has undergone compression, such as mp3. Audio compression algorithms always distorts the higher frequencies, which as it turns out, is an important feature in detecting wind now. If possible, get the raw PCM data from a mic. You also need to make sure your recording is sampled at at least 24kHz so you have information of the signal up to 12kHz.

Finally - the wind shape in the frequency domain is not a simple filtered white noise. The characteristics is that it usually has high energy in the low frequencies (a rumbling type of sound) with sheering and flapping sounds in the high frequencies. The high frequency energy is quite transient, so if your FFT size is too big, you will miss this important feature.

If you have 2 microphone data, then this gets a little bit easier. Wind, when recorded, is a local phenomenon. Sure, in recordings, you can hear the rustling of leaves or the sound of chimes caused by the wind. But that is not wind-noise and should not be filtered out.

The actual annoying wind noise you hear in a recording is the air hitting the membrane of your microphone. That effect is a local event - and can be exploited if you have 2 microphones. It can be exploited because the event is local to each individual mic and is not correlated with the other mic. Of course, where the 2 mics are placed in relations to each other is also important. They have to be reasonably close to each other (say, within 8 inches).

A time-domain correlation can then be used to determine the presence of wind noise. (All the other recorded sound are correlated with each other because the mics are fairly close to each other, so a high correlation means no wind, low correlation means wind). If you are going with this approach, your input audio file need not be uncompressed. A reasonable compression algorithm won't affect this.

I hope this overview helps.

Eyespot answered 27/1, 2015 at 21:25 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.