Robin2:
I need to think more about it.
Perhaps your focus should be on the interval between beeps rather than the number of them.
Suppose your ISR just records millis()
ISR(INT0_vect)
{
beepTime = millis();
}
And then your regular code checks from time to time (could be 10 times per second)
lastBeepInterval = millis() - beepTime;
if lastBeepInterval is longer than your preset maximum period it means there were no useful beeps. And you could have a second preset test period that detects for a much shorter interval meaning a high rate of beeps.
I hope that makes sense.
...R