How to derive a rate (e.g. water dripping) from an audio file

I want to learn how to go about analyzing some audio files I have acquired. Let's say the files contain some sort of repeating sound (e.g., water dripping), and I want to derive the pattern of the repeating sound. I use R for programming and analysis and have briefly introduced myself to the tuneR and seewave packages, but I am open to any answers about how such an analysis should be conducted.

To make my question more concrete, let's say I have a 2 hour audio file of water dripping and I would like to be able to select some point or interval in the file and know the drip rate. I will be pursuing further processing (e.g., finding times when the drip rate is most steady, fastest, slowest, etc.), but right now I am looking to learn how to get started with this task.

Specifics of my audio files:
.Wav files
Sampling rate: 44100 Hz
Bits: 16
Stereo


I briefly read about Fourier transforms, but due to my lack of knowledge and my rudimentary understanding of terminology, I am unclear if a Fourier transform would be appropriate starting place for this task. I also briefly read about subcarriers, envelopes, and autocorrelation, but it quickly became clear to me that I could benefit greatly from some guidance before I start investing too much time learning about and introducing myself to the incorrect topics.

• sounds like the same problem as "beat detection" in music. like deriving the rate of whacks on the kick drum or something else. Jan 3 '14 at 20:19

1 Answer

Beat detection is not what you are looking for.

Beat detection aims at looking for a periodic, sometimes implicit pulse in music signals. The events you are interested here are not periodic and every drip counts. What you are looking for is instead "Onset detection", to recognize each percussive event in the audio signal. There are ready to use software solution like aubio or sonic annotator to extract the timestamps at which percussive events occur in an audio file. From there, it is only a matter of running a sliding window over your output, count events within the window and divide by the duration of the window.

• After playing around a bit, it seems that I can detect drips very well using the Spectral Reflux transform. I'm starting to change the parameters to change the rate of detecting false positives and missing drips. Is it justifiable to use such a transform for this situation, or is it more standard/acceptable to use a different transform?
– Jota
Jan 5 '14 at 4:50
• Do you mean "spectral flux"? This is a useful metric for event detection; but are you correctly using the "onset detection" module? Jan 5 '14 at 9:52
• If you happen to be curious about seeing the Mazurka plugins for yourself, I obtained them at Mazurka's site. I've primarily been using this tutorial to guide me through Sonic Annotator.
– Jota
Feb 14 '14 at 16:13