Electronic – Infant cry detector

amplifieraudiodetector

I want to use an electret microphone to detect infant cry. I came up with this design:
crying detection circuit

According to those papers:

Values of C1 and C3 were calculated to create a band pass filter with a bandwidth of 250Hz-550Hz (capacitances are taken from E24 value series so the band is not 100% precise).

Voltage divider consisting of R1 and R2, outputs 1.65V threshold Voltage for NE5532. I want to output of amplifier to oscillate around this value (Vt). The output of the amplifier will be fed to MCP3008 – that's why voltage can't be higher than 3.3V.

R5 resistor is used to drive transistor inside the microphone.

R3 and R4 need to be changed (I don't think I will need a gain of 21 but I still did not get my microphone for testing).

I chose NE5532 because of its low-noise amplification, I think it will be better for this kind of task but, it might be an overkill and LM358 will do the job just fine.

Will this circuit work as described it?

As I mentioned before, the output is connected to ADC, which is connected to raspberry pi. Based on voltage level, raspberry pi will e.g. rise alarm.

Best Answer

Andy aka has given you some good advice on the amplifier. I'll let that stand.

I'm going to address the "detecting the baby" part.

You've got a fairly powerful processor in the Pi. You can use it to do some signal processing to get a more reliable detection than just the "loudness" from your "baby bandpass." You could, for example, implement a better bandpass in software than you could ever build in hardware. There's, of course, much more that you could do. A better bandpass is just a start.

For now, your plan has the Pi doing things that can be done just as easily (and poorly) in hardware. It doesn't take a computer to detect a sound crosses a loudness threshold. A comparator can do that, and it is loads cheaper and easier to do.

What I would suggest is the you get GNU Radio, Python, Numpy, and SciPy installed on your Pi.

GNU Radio makes interfacing with soundcards easy. You can use the "GNU Radio Companion" to assemble processing flows like drawing a flow chart in a GUI.

If you find you can't get what you want with the standard filters and things built into GNU Radio, then you can use a Python program block in GNU Radio to do more advanced processing with Numpy and SciPy - as well as having all the programming abilities of Python available.

You can build your cry detector in the GNU Radio Companion GUI, then export it as a Python program that can run outside of the GNU Radio GUI.


The filter you have implemented in your amplifier is rather weak. Sounds outside of its designed pass band will still get through - somewhat weakened, but they'll still be present. The filters available in GNU Radio can reduce the out of band sounds much better.

The flexibility of a program lets you do things like automatically adapt to the noise level of the room, or only trigger when you've detected a cry signal over some length of time.