Forums

Pulse detection

Started by teid...@gmail.com July 29, 2010
Hello,
I'm working in a undergraduate computer engineering project about recognition of bird species from their songs, and I would like to ask some help. To that end, one method I'm utilizing is splitting the songs into pulses, and identifying each pulse separately.

To that end, I need to identify, automatically (batch processing, it needs to be done in several files), pulses within an audio file. I did it manually using Audacity, with the Sound Finder tool, for a small collection of files, but now I need to do the same task to be done to thousands of files (and it might need to be done more than once). I was wondering if someone here knows a tool to do this, or if you could help me to develop a script to do it.

I did a search through some threads here, but I couldn't find much help, because most people with problems similar to mine need to find IF there was a pulse or IF there was a similarity between two audio files. I need to find WHERE (temporally) they appear, so I need to do this task in the time domain (not in the frequency domain).

Thanks in advance,

Teider.
What hardware do you plan on seeing this realized in/on?

If any.

Great project,
by the way.

At the very least, as a form of entertainment and great fun, I would
suggest downloading Pd, "Pure Data_extended" software. It is free and
it's a great way to realize dsp audio phenomenon (sic) real time.
What I mean to suggest by this, is that you can use syntax blocks that
are somewhat graphical, to quickly model all sorts of great aspects
pertaining to the fundamentals of digital audio sound synthesis....

So, here's what I'd like to contribute herein:

There's a few patches that I think would serve your project very well,
at least to get things moving in the research direction.

Lastly, and to reiterate; I really admire the premise for your project.

P.S.: After you download Pd Pure Data, follow the tutorial. After
you get the gist of the way the modular programming environment
operates, then go online and research the bonk~ function. It will
ultimately be a very useful function to have in your toolbox..... ...
anyhow... ... ..
Teider-

> I'm working in a undergraduate computer engineering project
> about recognition of bird species from their songs, and I
> would like to ask some help. To that end, one method I'm
> utilizing is splitting the songs into pulses, and identifying
> each pulse separately.
>
> To that end, I need to identify, automatically (batch
> processing, it needs to be done in several files), pulses
> within an audio file. I did it manually using Audacity, with
> the Sound Finder tool, for a small collection of files, but
> now I need to do the same task to be done to thousands of
> files (and it might need to be done more than once). I was
> wondering if someone here knows a tool to do this, or if
> you could help me to develop a script to do it.

1) What duration is a "pulse"? Your use of "pulse" when searching online tech forums could be confusing, as normally
that means a pre-defined excursion in the time domain (for example, a half-period of a square wave).

2) To automatically locate songbird "words", suggest to Google:

Audacity scripting

Another option would be to use MATLAB, and implement your own algorithm that reads and processes .wav files.

> I did a search through some threads here, but I couldn't find
> much help, because most people with problems similar to
> mine need to find IF there was a pulse or IF there was a
> similarity between two audio files. I need to find WHERE
> (temporally) they appear, so I need to do this task in the
> time domain (not in the frequency domain).

Your problem is not different from what 1000s of speech researchers do every day. You can locate and identify sound
by amplitude in either time or frequency domains, by frequency content in frequency domain, by envelope shape in time
domain. In either domain you can find temporal occurrence, for example if you perform an STFFT analysis then each
frequency domain frame corresponds to a small duration of time, with start and end points corresponding to indexes in
your .wav file.

-Jeff