In short
We are doing a UNI project and want to build a device to log date/time when a wall mounted phone rings. We want feedback and alternatives on how we could go about building the logger and programming it to to what we need. What we need in the end is a dataset showing when and how often the phone rings.
Background
The sound is a phone connected to the front gate and has a standard “ring-ring-ring” sound. The device could be located directly on top of one of the phones which are the sound sources on each floor at the customer's site. The phones are centrally located and will have people moving and talking in close proximity.
Edit: The phone is not used for anything else but the front gate.
We have in-team experience with RaspberryPi, Python and common front-end languages and access to university and customer resources if we would need them.
Requirements
- Must not be equipped or configured as a listening device (because of risk capturing sensitive discussions)
- Should be able to log without maintenance for at least three weeks
- Should have high accuracy in logs: a log when someone talks or walks by is a false positive
- Should be cost effective in hardware
- Could use RaspberryPi or similar
- Should NOT simply record sounds, sound levels,
Research
I found a related thread “Detect tap with pyaudio from live mic” where they discuss reading and comparing 0,05 sec blocks to start record audio when someone taps the mic. In our scenario the sound difference will probably not be as distinct as taps on a mic but this might be a suitable approach.
Another post we found was this on detecting if specific sounds. We could get a clean copy of the sound but I can't help but feel like there probably is an easier way to do it.
This post about detecting a specific sound is about MLS or sine sweepsis not really what we want to do as the audio we want to detect is not arbitrary but a fixed “ring-ring-ring” sound.
We have not found Audacity to be able to detect specific sounds.
Perhaps a contact microphone could be used to minimize the unwanted noise? The device will be right on top of the source, but since its a phone it could cause false positives if somebody uses the phone? We might be able to dedicate one of the phones to be purely data collection and make it off limits for regular use.
We appreciate any and all feedback to help us with this project. Thanks in advance.
Update 1
We came up with a shortcut that would cut down on the programming required. What if we measure the current sent to the phones speaker? It would require us to open up the phone and place some cables on the speaker element but it should be quite easy. We are planning some initial testing early next week.
Update 2
We were not allowed to open the phone case as they were owned by the landlord. With that said we are looking into using Arduino to handle the sensors.
Final update
In the end we opted to go with a RaspberryPi (We found a 3B we could use, not minding that it would be a bit overpowered) and a SparkFun sound detector to communicate using the GPIO pins over I2C. We stubled upon some issues that could be hw fault in RPi or sensor alternatively lack of knowledge from our side. This being just a sub-project and not of very great consequence in our case we dropped it to focus on more pressing matters. Kinda sucks because of the lost hours but you got to prioritize.
Happy hacking