Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations KootK on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Automatic extraction of signals from many audio files

Status
Not open for further replies.

kosmyc

Mechanical
Dec 8, 2015
3
Hi, this is my first post! I work as a water engineer but part of my job is product development.

So, I have a set of many audio files (1000+, will be larger when the project is commercial) which are around 2 minutes in length with around 10s of signal I care about and the rest is noise. I have a pretty good idea of what I’d like to do but not entirely sure of how to do it.

I'd like to take a FFT of the noise profile and subtract this from the waveform of the entire signal to attenuate the noise. Then extract the part of the file I'm interested in based off the differential in amplitude of the signal against the background noise. I'd then like to take this information and run an FFT on this part of the signal and normalise each of the different signals about a common peak frequency. Once this has been done I'd like to analyse add up the bins of the signal between 1kHz to 5kHz and output as a single number.

This is the initial stage of my project but I need to extract the signals before I can start playing with them :) Any help would be much appreciated!

Cheers
 
Replies continue below

Recommended for you

"I'd like to take a FFT of the noise profile and subtract this from the waveform of the entire signal to attenuate the noise."

If the noise is 'white', then its spectrum will be flat. So you might not gain much by taking the FFT of it.

"...based off the differential in amplitude of the signal against the background noise."

In radio, that's called a squelch.

 
Running an FFT will help you determine what frequency components are in the original signal, but come time to remove those unwanted components you'll need some form of filter (the FFT itself is not a filter, just a "frequency binner"). If you already know the frequencies of interest (it sounds like you have some frequency spikes you care about), then just filter those out and "count" them.

Dan - Owner
URL]
 
Sounds like a project I did in matlab. Take one second of data from audio file. Find strongest frequency. Filter out all other frequencies. Repeat until entire file is filtered.
 

VE1BLL, the noise profile is not flat, it always tends to be a pink noise spectrum, but can vary between the different data sets. Hence why I want to take a sample of the noise and subtract the FFT of the noise spectrum from the entire signal.
 
I should probably clarify, I'm trying to detect weather or not an orifice releasing air is clogged or not with the spectrum of the audio from a working orifice tending to be in the 1kHz to 5/6kHz region. The thing I'm really having trouble with is differentiating the part of the signal I want from the rest of the data captured.
 
A bandpass filter will be the first step to get rid of the bulk of extraneous info. I'd probably look for spikes/shifts in the spectrum that correspond to a dirty orifice (a new "whistle" tune, if you will)... another case is when the frequencies stay the same but the amplitude changes (a "whistle" lowers in volume). In those cases, you need to determine what amounts to a significant enough shift to be detectable with a minumum of false positives/negatives. Unless you're lucky, there will be a range for both known good and known bad orifices.

Dan - Owner
URL]
 
Remember that noise is random, so you can't subtract the noise from one data set from another data set. A FFT is just an analysis of the noise, not really a model of the noise.

Z
 
If what you are attempting makes sense then Matlab or its free equivalent octave or their possible replacements scilab or python are probably the tools of choice. I suspect your main challenge will be characterising good vs bad signals,this may be an application for machine learning.

Cheers

Greg Locock


New here? Try reading these, they might help FAQ731-376
 
If you added an actual whistle to the orifice, detection of no flow might get easier.


Mike Halloran
Pembroke Pines, FL, USA
 
Have you made any progress on this? I'll send you my matlab code for signal finding and filtering if you want.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor