Audio Recording System and Software


I use a recording system assembled from a few old USB based components and a new Raspberry Pi Zero controller:

  • Raspberry Pi Zero
  • Belkin Powered four port USB hub
  • Turtle Beach Advantage USB sound card
  • 2 GB USB thumb drive
  • Linksys USB Wifi adaptor

At present, the system is powered by 120 volt AC through the USB hub.  Everything is installed inside a Carlton Electrical box as shown here:


The USB upstream data port is connected to the single USB port on the Raspberry Pi Zero controller.  The Raspberry Pi Zero is powered through a dedicated USB power port connected to one of the downstream data ports on the USB hub.

You may also notice the hardware cloth cage around the microphone.  My experience at OARDC was that the microphone invites the curiosity of a whole host of wild creatures including insects, birds, mice, raccoons, and deer.  I am grateful to the OARDC for the loan of the enclosure, a couple of sound cards with microphones, and the opportunity to have worked there.


The audio recording is made using the Linux/ALSA command line recorder arecord called from a shell script.  The script builds the date & time encoded filename, calls the recorder, and records the 30 second wav file to the thumb drive.  It then tries to copy the recording to a Linux server in the house.  If it succeeds, the file is removed from the thumb drive.  The script runs as a cron job every 30 minutes with the standard output and standard error information directed to a log file.  After the last recording of the day is made, I have a Python script scan the log file and send me a report.

A couple of minutes after the audio file arrives on the server, a Python script reads the file and generates the 30 second spectrogram, the Power Spectral Density for the 30 seconds, and builds the daily and monthly spectrograms.  The graphics and audio files are uploaded for display on the this website and the wav file is archived into the proper folder in the station/year/month/day directory tree on the server.