Streaming bioacoustic recorder

The goal of this project is to produce a low cost board than can be deployed remotely and left unattended for long periods of time.

The board should record environmental data (temperature, humidity, etc) and audio. This will be uploaded in periodic batches, or (ideally) be streamed in real time over the public internet.

There are some off the shelf solutions which do some or all of these things, but I’ve found them too expensive to be deployed at scale, particularly when it comes to localised citizen science groups or grassroots movements. Examples of these are:

I have built a couple of variations on SoundCamp’s streamboxes, both as described and using Pi Zeros with microphone HATs. When looking into how to incorporate these in my PhD research (using sound to increase the impact of grassroots environmental campaigns), it became apparent that they’re simply too expensive, or don’t have some of the functionality needed. So I decided to build my own - I’m a software engineer, so how hard could it be? :slight_smile:

A couple of months ago I quickly put together a block diagram for a potential board, and when discussing it with a friend who has done something similar it was obvious I was missing a lot of things. But I have a rudimentary knowledge of electronics and some hazy memories from uni :slight_smile: I am actively relearning things from first principles.

My goal for this topic is to document this process in the open, and to seek help from the community - I am incredibly grateful for any help.

I’ll start with that first block diagram - my main concern at this point was to have different planes for the digital and analog parts, I am aware that power and RF introduce a lot of noise. This is even more important when I need relatively clean audio that can be processed for species identification, acoustic complexity indexes, etc. So this will certainly be the hardest part of this project (and it goes without saying that none of this is set in stone at this point).

Do you have some ideas around the sound requirements?

Raw PCM samples need a lot of bandwidth. Audio compression needs a lot of CPU.

Transmitting either in bulk needs a lot of power which will impact battery life, using perhaps 10x, 100x or 1,000x what would be needed for a system with just the other sensors.

One option is to push the processing to the nodes themselves and then only pull back the results or the segments of interest. What are the processing requirements tho’? Are you thinking along the lines of modern AI / Neural net models or something more traditional using multiple microphones and Fourier analysis techniques? If you need (S)DRAM then that significantly increases the power requirements due to the refresh cycles. Without SDRAM you’re limited to a few KiB or very small number of MiBs of RAM.

Options for comms include 5G, Lora and LoraWAN. Depending on the audience you might be able to do something simpler with amateur radio but that would limit who could participate quite considerably. What kind of distance do you need to cover in the first hop? Could you do something in the 433MHz or 418MHz ISM bands to get something to an uplink somewhere else in the field and then backhaul it from there? Then things like provisioning mains or solar electricity and ADSL / broadband once per field start to become options.

Local storage is not too much of a problem: I have 32GB SD Cards in the BENNEBOX (my anaerobic digester sensor logger based around Atmel’s AVR) and it’s hard to fill them up or even manage that much storage in a useful way. But for your use case there’s enough space for several days of uncompressed PCM audio.

How long do the devices need to run in the field without human interaction?