Low Budget Beutenkamera und Mikrofon Setup mit RPi

Hallo Leute,
habe etwas gebastelt und in einen Schaukasten eine IR Kamera mit IR LED und ein Mikrofon eingebaut. Funktioniert erstmal ganz gut, die Beschreibung findet Ihr unter BeePhone Version 1.0 bei mir im Blog.

Die HW ist fertig, aber jetzt gehst an die SW und zur Frage, was mache ich nun mit den Daten? Wie stelle ich die zur Verfügung? Habt ihr Ideen? Bin noch etwas unschlüssig wie es jetzt weitergeht.

Grüsse,
Markus

2 Likes

Sehr schön, das gefällt mir!

Einleitung

Wir haben uns dazu tatsächlich schon einige Gedanken gemacht, wie wir mit Audiodaten umgehen wollen. Allerdings haben wir noch nichts Fertiges implementiert. Vielleicht schaffen wir es, im Spätsommer eine schöne API zur Verfügung zu stellen, mit der es so gut funktioniert wie bei den diskreten Meßdaten.

Wir wollen wie gewohnt einfach benutzbare technische Schnittstellen zur Verfügung stellen, machen uns aber auch Gedanken über eine entsprechende Benutzerschnittstelle.

Telemeta Projekt

An dieser Stelle könnte das Telemeta Projekt vielleicht umfassend weiterhelfen, dessen Beschreibung für unsere Zwecke ziemlich gut passt:

Telemeta is a free and open source collaborative multimedia asset management system (MAM) which introduces fast and secure methods to archive, backup, transcode, analyse, annotate and publish any digitalized video or audio file with extensive metadata. It is dedicated to collaborative media archiving projects, research laboratories and digital humanities - especially in ethno-musicological use cases - who need to easily organize and publish documented sound collections of audio files, CDs, digitalized vinyls and magnetic tapes over a strong database, through a smart and secure platform, in accordance with open web standards.

Siehe:

Ob das System wirklich gut zu unseren Anforderungen passt, müssen wir ausprobieren - sehr gerne gemeinsam! Falls das gut geht, würde es bzgl. Archivierung und Bereitstellung u.U. einiges an Arbeit sparen.

Erste Schritte

Für die ersten Schritte als Wrapper um “arecord” herum könnten Dir Teile des “OSBHLogger” …

… weiterhelfen - konkret:

… das sich um die robuste und reboot-sichere Aufzeichnung von Audiosamples konfigurierbarer Länge ("audio_length_s=300") kümmert. Wir hätten allerdings gerne den Zeitstempel im ISO8601 Format UTC im Dateinamen, à la:

$ date --rfc-3339=seconds --utc | sed -e 's/\s/T/'
2017-07-11T02:48:05+00:00

Also ab Zeile 53 ff. von AVrecord.sh in etwa wie folgt:

# Compute filename with timestamp
timestamp=$(date --rfc-3339=seconds --utc | sed -e 's/\s/T/')
wavfile=/home/pi/OSBHLogger/temp/${_LOGGERID}_${_LOCATION}_${timestamp}.wav

# Record audio
arecord -f dat -r 44100 -c 1 -D plughw:1,0 -d ${audio_length_s} ${wavfile}

P.S.: Langfristig wäre es schöner, wenn ein solcher Rekorder in Python mit besserer Konfigurierbarkeit eingesetzt werden könnte, einstweilen sollte das Bash Script aber locker reichen.

Ausblick

Eine Archivierung und Bereitstellung der Audiodaten auf der Plattform könnte zukünftig dann vielleicht so aussehen:

http --form POST https://swarm.hiveeyes.org/api/hiveeyes/testdrive/area-42/node-1/data audio@${wavfile}

Könntest Du uns vorab eine etwas längere Audiodatei zur Verfügung stellen? Vielleicht so 45 bis 60 Sekunden lang? Da uns das Analysieren von Audiodaten gerade so gut von der Hand geht, würden wir Deine Aufnahme da auch mal durchschicken…

Hi Andreas, danke vorab das du die Audiodatei analysiert. Im Blogeintrag ist jetzt eine 120 sec Audiodatei attached. Grüsse, Markus

Wunderbar, danke! Hier die Ergebnisse:

Audiodatei beschaffen

$ wget http://blog.hies.de/wp-content/uploads/2017/07/arecord-mhies-11-7-2017-120sec.wav

Sonagramm darstellen

$ sox arecord-mhies-11-7-2017-120sec.wav arecord-mhies-11-7-2017-120sec-resampled.wav remix 1,2 norm -3 sinc 30-1500 rate 3000
$ sox arecord-mhies-11-7-2017-120sec-resampled.wav -n spectrogram -h -m -p 3 -z 85 -y 768 -o arecord-mhies-11-7-2017-120sec-sonagram.png

Spektrale Leistungsdichte darstellen

$ xvfb-run audiohealth power --audiofile arecord-mhies-11-7-2017-120sec.wav --pngfile arecord-mhies-11-7-2017-120sec-power.png

==================
Peaks by frequency
==================
          55.37 Hz            587.00 RMS
         147.66 Hz            359.64 RMS
         246.09 Hz           1053.50 RMS
         344.53 Hz            888.79 RMS
        1125.88 Hz            108.60 RMS

==============
Peaks by power
==============
        1053.50 RMS            246.09 Hz
         888.79 RMS            344.53 Hz
         587.00 RMS             55.37 Hz
         359.64 RMS            147.66 Hz
         108.60 RMS           1125.88 Hz

========
Analysis
========
Colony has high activity. Reason: Frequency at 246.09375 Hz has a power of 1053.49682617 RMS, which is >= 1000 RMS.

Mit OSBH audio analyzer analysieren

$ audiohealth analyze --analyzer tools/osbh-audioanalyzer/bin/test --audiofile arecord-mhies-11-7-2017-120sec.wav

Duration: 122s
Strategy: lr-2.1

==================
Sequence of states
==================
active, active, active, active, active, active, active, active, active, active, active, active

===================
Compressed timeline
===================
  0s - 120s   active          ============

==============
Total duration
==============
       120s   active          ============

======
Result
======
The most common events (i.e. the events with the highest total duration) are:

     The colony is mostly in »ACTIVE« state, which is going on for 120 seconds.

@Jabors: Yet another audio sample from one of our members has been analyzed successfully using the current state of classifier parametrization.

Toller Beitrag der große Lust auf Fortsetzung weckt. Die Umsetzung ist spannend und genial.

Sehr cool, danke Andreas. Das muss ich jetzt erstmal verstehen und mich in die Audioanalyse einlesen.

@Andreas , wenn es nutzlich ist, kann ich gerne ein Skript schreiben und jede Stunde bsw ein Audiosample von 1 min ziehen und auf einen Server kopieren, dann könntest du mit Skript auf der Gegenseite kontinuierlich anslysieren. Hilft das?

Hi Markus,

genau, das ist der Plan:

Wenn das passiert, will ich dort natürlich auch gleich die automatische Analyse einbauen.

Das wird aber vermutlich leider noch ne Weile dauern, bis das implementiert ist. Zeichne doch derweil selbst auf, ja? Wenn wir die Dateinamen gut aufbauen (so wie angedeutet), dann können wir die Dateien ja auch retrospektiv einspielen.

Hi Markus,

Zusammen mit @clemens und @einsiedlerkrebs haben wir begonnen, einstweilen an der Agenda und an der Spezifikation für eine entsprechende Plattformimplementierung zu feilen: