Count the number of times the phone rings before its answered I have a dataset of phone recordings that I'd like to do some characteristic-level analysis on.  The audio is sampled at 44khz stereo, with each channel containing the signal from one party in a conversation.

I would like to start by counting the number of time the call rings before the phone is picked up.  I believe this to be simple, but am a little lost, so any pointers in the right direction would be much appreciated.  I believe I need some sort of a matched filter, or maybe a bandwidth filter.  The signal is generally clean -- I have attached a couple of graphs of the signal.

General solutions are appreciated, but I will be doing this in python so anything specific to that would be extra appreciated.

Additionally, if you have other ideas for extracting features using signal characteristics, I'm all ears (eyes).
If you can identify one phone ring, then you can extract it and use it to construct a matched filter. The beginning of the wiki article is math heavy, but check out the example section. Additionally, Matlab has a page describing the matched filter from one of their toolboxes. You should really give it a try; it works like magic.

In the time domain, the matched filter is a cross-correlation of the signal against a known pattern (which is in this case a recording of the ringing). As a cross correlation it can efficiently be implemented using a DFT. The output of the matched filter is a time series.

The time series output will have a series of peaks whose locations correspond to the beginning of each ring. All you need to do is count the number of peaks which exceed some threshold.

If the rings could be different but you are guaranteed that they're selected from a finite set of rings (imagine different phone carriers or something) then you could use a bank of matched filters.