Mikrofon auslesen und Daten analysieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
majinv
User
Beiträge: 42
Registriert: Mittwoch 14. April 2010, 13:21

Mittwoch 14. April 2010, 13:33

Hallo zusammen,

ich möchte mithilfe eines mikrofons, wie auch sonst :P, rausfinden was für geräusche gerade in meiner umgebung sind.
zb. wenn eine person redet, bzw. mehrere personen sich unterhalten.

Derzeit nutze ich audioop http://docs.python.org/library/audioop.html um mein
microfon auszulesen. Zurück bekomme ich für jeden Ton ein Byte zurückgeliefert, welches
folgende Form hat: 2247483647, das ist zb. das "lauteste" was ich aus meinem mic rausbekommen habe.
Spaßeshalber hab ich mir nun mit hilfe von pygame (wahscheinlich ineffektiv, aber derzeit ausreichend) ein Fenster geschrieben, in dem ich mir anzeigen lasse, wie laut es gerade derzeit ist. Ich hab dafür das derzeit lauteste Byte einfach als obegrenze genommen und dann durch das derzeit gehörte byte geteilt um auf kleine werte zu kommen und mir anzeigen zu lassen. Wie gesagt nur ne spielerei.

Die eigentliche Frage ist nun, wie finde ich anhand meiner rohdaten heraus, was ich gerade vor mir habe?
Ich beschäftige mich nun seit mehreren Wochen damit und mir ist schon mehrfach die
fft über den weg gelaufen, aber wenn ich das richtig verstanden habe, dann funktioniert die nur auf arrays, ich aber möchte das zur laufzeit machen, daher wird das mit arrays ein bisschen schwierig ;-)

vllt hat ja schon jmd etwas ähnliches gemacht und kann mir einen tipp geben?
Trichter
User
Beiträge: 45
Registriert: Montag 20. April 2009, 10:21

Mittwoch 14. April 2010, 14:23

Mit FFT kannst du z. B. ein akustisches Signal (also eine Schallwelle) in die einzelnen Frequenzen zerlegen. Dazu brauchst du natürlich erstmal eine Welle und die besteht nunmal nicht nur aus einem Datenpunkt, sondern aus mehreren (sozusagen einem array).

Eine Möglichkeit wäre es die Geräusche eine Weile aufzunehmen (vermutlich reichen da Bruchteile von Sekunden) und diese Geräusche dann per FFT zu analysieren.
Wenn du dann ein paar verschiedene Geräusche so analysiert hast kannst du vielleicht die charakteristischen Frequenzen, die bei sprechenden Menschen oder vorbeifahrenden Autos etc. auftreten erkennen und dann gezielt danach suchen.
majinv
User
Beiträge: 42
Registriert: Mittwoch 14. April 2010, 13:21

Mittwoch 14. April 2010, 16:02

achso, wie bei datenströmen?
das es nicht wirklich live ist, was geschrieben wird, sondern um 1 oder 2 sekunden verzögert...
darüber hab ich noch gar nicht nachgedacht... danke :D
Antworten