@Marcus und ich wollen ein paar Schritte in Richtung Analyse von Audio-Daten mit Machine Learning gehen. Wir wollen in einem ersten Schritt schauen, ob man weisellose Völker von weiselrichtigen unterscheiden kann.
Datenmaterial
Als Datenmaterial haben wir hier schon Sound Samples and Basic Analysis Hive with Queen vs. Queenless allerdings als MP3-Dateien
Datenaufbereitung
Später wollen wir die FFT-Analyse auf dem Node machen und nur die Daten der FFT per Funk übertragen. Hier ein Beispiel:
Beispiel FFT-Output der Arduino Sound bzw. I2S-Lib
310864 167084 434716 974262 787796 113511 240794 46340 146542 46340 92681 0 65535 0 103621 0 80264 0 46340 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46340 46340 0 0 0 0 0 46340 0 0 0 0 0 0 0 0 0 0 0
222243 80264 507639 894992 711903 167084 113511 0 92681 0 46340 0 0 0 46340 0 0 0 46340 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
387716 92681 509750 897388 705844 139022 217358 113511 65535 46340 46340 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 196607 340535 910455 789157 131071 240794 92681 167084 46340 113511 0 113511 0 65535 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
442064 146542 468020 892589 693567 113511 217358 113511 46340 0 46340 0 0 46340 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
217358 46340 472586 832848 693567 179477 131071 65535 122606 0 65535 0 46340 0 46340 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46340 0 0 0 0 0 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
434716 222243 395937 936041 762868 113511 217358 46340 80264 0 80264 0 65535 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0
173391 167084 379317 910455 772658 131071 240794 65535 139022 0 103621 0 80264 0 80264 0 80264 0 46340 0 46340 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46340 0 0 0 0 0 0 0 0 0 0 0
296726 212360 337367 939476 778196 80264 258015 80264 103621 0 80264 0 46340 0 80264 0 65535 0 46340 0 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46340 0 0 0 65535 46340 46340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
289399 167084 439628 869433 714913 113511 253819 113511 80264 46340 65535 0 65535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Generierung der FFT-Roh-Daten von Audio-Daten
Nun ist die Frage, wie wir die Daten so wie oben von einer MP3- oder WAV-Datei bekommen. Ein paar Fundstücke:
-
-stat Option in sox
audio - Get a spectrum of frequencies from WAV/RIFF using linux command line - Stack Overflow -
Python / SciPy
Performing a Fast Fourier Transform (FFT) on a Sound File - dummies und
http://www.cbcity.de/die-fft-mit-python-einfach-erklaert -
Was von Adafruit
Software | FFT: Fun with Fourier Transforms | Adafruit Learning System