Rufe in einer Tonaufnahme finden

OP #4067427
Lesenswert?

Ich habe Tonaufnahmen, in denen Rufe vorkommen, die sich mehr oder 
weniger stark vom Hintergrund abheben und deren Amplitude außerdem noch 
durch die Aufnahmebedingungen sehr unterschiedlich sein kann.

Die Rufe gehen durch einen zweistufigen (digitalen) Tiefpass und 
anschließend wird im Filter-Output das Maximum jedes Rufelementes 
gesucht, um die Länge der einzelnen Elemente zu messen.

Im zweiten Anhang sind im Filter-Output die Maxima durche einen Puls 
markiert. Die 4 Peaks außerhalb den beiden Rufen kommen von 
Hintergrundgeräuschen, die den Schwellwert überschreiten.

Bisher habe ich versucht, die Rufe mit Amplitudenschwellwerten im 
Filtersignal zu erkennen - das ist aber keine sehr tolle Lösung, weil 
Aufnahmeparameter in die Erkennung eingehen. Mir wäre am liebsten, wenn 
ich die Rufe irgendwie im Frequenzbereich erkennen könnte - entweder vor 
oder nach dem Filter.

Kann man das so hinbekommen, dass die Eingangsamplitude nicht mehr 
darüber entscheidet, ob ein Maximum im Ruf erkannt wird, aber Störungen 
aus dem Hintergrund kein Fehlsignal erzeugen?
Angehängte Dateien:
Gast #4067446
Lesenswert?

Sagt dir FFT oder DFT was? Vielleicht ist es sinnvoll das Signal nicht 
nur im Zeitbereich anzuschauen (was du bisher machst). Schau dir doch 
das Signal mal im Frequenzbereich (aka Spektrum) an. (z.B 
Wasserfalldigaramm plotten lassen)
Gast #4067466
Lesenswert?

Das untere Bild sieht nach Sprachkompression aus. Evtl. kann man die 
zyklischen charakteristischen Merkmale auswerten. Sprache und Musik 
sollte im Oszillogramm leicht zu unterscheiden sein? Sprache ist selten 
im 3/4-Takt.
#4067471
Lesenswert?

Ich würde es mit einer Spektralanalyse versuchen. Entweder positiv, 
indem Du "reine" Rufe analysierst und anschließend suchst oder Negativ, 
indem Du das "normale" Signal betrachtest und nach charakteristischen 
Änderungen suchst.

Richtig gut geht das aber nur mit richtig viel Rechenpower oder im Film.

Das Problem ist nämlich: Was ist normal, oder wie charakterisierst Du 
einen Ruf?
OP #4067493
Lesenswert?

oszi40 schrieb:
> Das untere Bild sieht nach Sprachkompression aus.

Nein, mit Sprachkompression hat das nichts zu tun. Das Signal entsteht 
durch zweifache Filterung über einen Tiefpass aus dem gleichgerichteten 
Eingabesignal.

Sebastian S. schrieb:
> Richtig gut geht das aber nur mit richtig viel Rechenpower oder im Film.

Den Verdacht habe ich auch... Deswegen scheidet FFT eigentlich fast aus.

> Das Problem ist nämlich: Was ist normal, oder wie charakterisierst Du
> einen Ruf?

Der Ruf ist ziemlich simpel und uniform und im Oszillogramm springt er 
geradezu ins Auge - aber wie sag ichs meinem Computer, außer zu Fuß?

Einfach noch einen viel tieffrequenteren Tiefpass über den Filteroutput 
lassen, evtl. mit irgend einer nichtlinearen Verstärkung vorher, die für 
einen steilen Anstieg sorgt?
Angehängte Dateien:
OP #4067546
Lesenswert?

Vlad Tepesch schrieb:
> hatten wir das nicht schon mal *kopfkratz*

Nicht ganz. Damals ging es nur um die Elementerkennung - die läuft jetzt 
ganz gut, wenn ich die Pausen zwischen den Rufen manuell ausnulle. Davon 
will ich weg kommen und wenn möglich irgendwas bauen, was unter dem 
Strich die Pausen ignoriert.

Letztlich bin ich nur an den Zeiten zwischen den Maxima der einzelnen 
Rufelemente interessiert und die Pausen sollen keinen Dreck beitragen.
#4067550
Lesenswert?

Meines Erachtens musst du den ganzen Ruf betrachten und zwar in der 
Frequenzfolge und da spielt dann die Amplitude gar keine Rolle mehr, 
sondern nur noch, ob die Frequenz in einem gewissen Muster und 
Zeitrahmen abläuft. Dazu musst du dann eigentlich nur nach diesem Muster 
suchen und wenn der Vergleich eine Übereinstimmung gibt, dann hast du 
deinen Ruf identifiziert.
#4067559
Lesenswert?

Eher die Autokorrelation.
Vor allem, je nachdem wie genau man das hin bekommt, könntest du sogar 
den einen vom anderen Wachtelkönig unterscheiden.
Du musst halt nur ein gutes Vergleichssignal haben.

Aber ich bin da wirklich noch nicht fit und beschäftige mich erst seit 
einigen Monaten damit und das eher theoretisch.
Persönliche Seite #4068019
Lesenswert?

Der Vogel ruft doch sicherlich immer eine Sequenz und nicht einzelne 
Rufe. Da würde ich das Problem ähnlich sehen dem wie man die abundzu 
Pulse von Avalanche Photodioden bewertet. Also ein Zähler oder 
retriggerbarer Monoflop in Software. Einzelne Pulse in einem bestimmten 
Zeitrahmen werden so unterdrückt.
Ansonsten läuft es natürlich auf eine Mustererkennung hinaus.
Gast #4068542
Lesenswert?

gibt es irgendwelche hardware beschränkungen? vielleicht würde ja auch 
eine Support Vector Machine funktionieren wenn du die Amplitudenspektren 
in einen Vektor schiebst und die SVM ein bisschen lernen lässt. 
Vielleicht muss die Auflösung der FFT ja dann auch garnicht mehr so hoch 
sein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren