Forum: PC-Programmierung Rufe in einer Tonaufnahme finden


von Uhu U. (uhu)


Angehängte Dateien:

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?

: Bearbeitet durch User
von Peter (Gast)


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)

von oszi40 (Gast)


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.

von Sebastian S. (amateur)


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?

von Uhu U. (uhu)


Angehängte Dateien:

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?

: Bearbeitet durch User
von Klaus2 (Gast)


Lesenswert?

Sind es Uhu-Rufe?

Klaus.

von Uhu U. (uhu)


Lesenswert?

Nein, das ist ein Wachtelkönig.

von Uhu U. (uhu)


Lesenswert?

Mit kürzerer FFT gleichen sich die Spektren der Rufe immer mehr dem der 
Pausen an - kein Wunder, denn im Hintergrund rufen weitere.

von Vlad T. (vlad_tepesch)


Lesenswert?

hatten wir das nicht schon mal kopfkratz

von Possetitjel (Gast)


Lesenswert?

Vlad Tepesch schrieb:

> hatten wir das nicht schon mal

Ja, hatten wir.

von Uhu U. (uhu)


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.

von F. F. (foldi)


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.

von Uhu U. (uhu)


Lesenswert?

F. Fo schrieb:
> Dazu musst du dann eigentlich nur nach diesem Muster
> suchen und wenn der Vergleich eine Übereinstimmung gibt, dann hast du
> deinen Ruf identifiziert.

Du meinst per Kreuzkorrelation?

von F. F. (foldi)


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.

: Bearbeitet durch User
von Abdul K. (ehydra) Benutzerseite


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.

von Paul B. (paul_baumann)


Lesenswert?

Klaus2 schrieb:
> Sind es Uhu-Rufe?

Uhu Uhuhu schrieb:
> Nein, das ist ein Wachtelkönig.

Na, wenigstens kein Unkenrufe....
MfG Paul

von mbmbmm (Gast)


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.

von Uhu U. (uhu)


Lesenswert?

mbmbmm schrieb:
> gibt es irgendwelche hardware beschränkungen?

Das ist kein kommerzielles Projekt und soll auf einem PC halbwegs 
vernünftig laufen...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.