ubuntuusers.de

Musteerkennung in mp3-Datei

Status: Ungelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

Scherz

Anmeldungsdatum:
14. März 2015

Beiträge: 135

Hallo,

ich habe eine kurze mp3-Datei (z. B. 2 Sekunden) mit einem Muster, z. B. ein Trampeln des Nachbarn. Dazu habe ich 10 Stunden mp3-Datei mit möglicherweise ähnlichen Geräuschen. Nun möchte ich automatisiert nach diesem Muster suchen mit dem Ergebnis, das Geräusch war vermutlich 2:03:03, 2:03:04, 2:03:05 und 4:06:34 zu hören, damit ich nicht die ganze Aufnahme abhören muss.

Habt Ihre eine Idee, wie ich das angehen könnte?

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4371

In Audacity öffnen, vielleicht sieht man die Muster dann schon im Frequenzverlauf.

Scherz

(Themenstarter)

Anmeldungsdatum:
14. März 2015

Beiträge: 135

In Audacity sind die Muster zwar erkennbar, aber sehr schwer findbar aufgrund der Dateigröße. Besser wäre ein Automatismus.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6468

Wohnort: Hamburg

... z. B. ein Trampeln des Nachbarn.

Theoretisch wäre das wohl machbar, ist praktisch aber kompliziert. "Trampeln" hört sich nach tiefen Frequenzen an. Wenn da auch noch andere Frequenzen in den Aufnahmen vorhanden sind, können diese das gesuchte Muster verfälschen. Man müsste die Suche also auf den gewünschten Frequenzbereich einschränken. Diesen zu selektieren und zu treffen ist da eine zusätzliche Herausforderung (Komplikation).

Das ist also nicht ganz einfach, außer der Pegel ist sehr hoch. Ist wohl eher etwas für die Kriminaltechnik, womit ich mich leider nicht wirklich auskenne.

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4371

https://medium.com/@almeidneto/sound-pattern-recognition-with-python-9aff69edce5d

Da gehts um wav-Dateien, eventuell vorher konvertieren, oder erweitern.

Scherz

(Themenstarter)

Anmeldungsdatum:
14. März 2015

Beiträge: 135

verdooft schrieb:

https://medium.com/@almeidneto/sound-pattern-recognition-with-python-9aff69edce5d

Da gehts um wav-Dateien, eventuell vorher konvertieren, oder erweitern.

Genau so sehen meine Signale aus. Leider fehlen mir die Programmierkenntnisse. Ich kann nur fertige Programme bedienen.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11237

Wohnort: München

Scherz schrieb:

Leider fehlen mir die Programmierkenntnisse.

Programmieren kann man lernen - alles eine Frage dessen, wie viel Zeit man sich erhofft dadurch einzusparen: https://xkcd.com/1205

Mit Audacity könntest du z.B. die Label Sounds Funktion nutzen - da gibst du einen maximalen Lautstärkewert und die minimale Dauer für "Stille" (in dem Fall die akzeptable Umgebungslautstärke) an und kannst Labels an den Positionen setzen lassen, an denen es lautere Schallereignisse gibt. Die markierten Audioabschnitte kannst du dann anhören und Klassifizieren (also sinnvoll Beschriften) und danach in eine Datei exportieren: https://manual.audacityteam.org/man/importing_and_exporting_labels.html

Gloster

Anmeldungsdatum:
9. April 2020

Beiträge: 417

@Scherz,

schau dir mal "Shazam" an, eine Android-Anwendung zur Erkennung von Musik-Titeln.

Es ist erstaunlich, dass diese SW schon nach ein paar Takten den Titel erkennt.

Die verwenden ein sogenanntes "Fingerprint-Verfahren".

Vielleicht gibt es dazu nähere Beschreibungen, anhand welcher Algorithmen bzw. Vorgaben Sie "Stützpunkte" definieren um einen Titel anhand ihrer

Datenbank-Einträge zu erkennen.

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 2173

Wohnort: dahoam

Dakuan schrieb:

... z. B. ein Trampeln des Nachbarn.

Theoretisch wäre das wohl machbar, ist praktisch aber kompliziert. "Trampeln" hört sich nach tiefen Frequenzen an. Wenn da auch noch andere Frequenzen in den Aufnahmen vorhanden sind, können diese das gesuchte Muster verfälschen. Man müsste die Suche also auf den gewünschten Frequenzbereich einschränken. Diesen zu selektieren und zu treffen ist da eine zusätzliche Herausforderung (Komplikation).

Hohe Ausschläge bei Tiefen Frequenzen suchen, die aber nur selten auftauchen ... also

  • erst Tiefbass aufsetzen und dann nach hohen Amplituden suchen.

  • oder im Frequenzbild (FFT) nach hohen Ausschlägen bei tiefen Frequenzen schauen. Problem hier ist, dass diese Muster ja nicht regelmäßig auftauchen, deshalb im Frequenzbild womöglich nicht einfach zu erkennen sind ... müsstest Du mal ausprobieren.

Tools, mit denen man das automatisiert suchen kann, kann ich keine empfehlen, aber vielleicht kannst Du Dich ja hier etwas austoben: https://www.linuxlinks.com/best-free-open-source-audio-analyzers/

$0.02

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6468

Wohnort: Hamburg

@dirkolus Ich denke, wenn man schon eine FFT macht, kann man sich den Tiefpass sparen. Und dass die Muster nicht regelmäßig auftauchen, sollte kein Problem sein.

Die nächste Idee, nach meinem ersten Post, war ein Vorgehen nach der klassischen Methode. Korrelation (die beiden Bilder sind interessant). So etwas habe ich selber aber noch nicht gemacht. Der Algorithmus ist aber der selbe, wie für FIR Filter, nur die Parameter sind anders. Damit hätte ich aber einige Kopfschmerzen. Ein "Trampelmuster" könnte recht lang sein, was bedeutet, dass man recht viele Samples speichern muss. Möglicherweise sollte man vorher die Abtastrate reduzieren um die Prozessorlast zu verringern. Außerdem weiß ich nicht, ob man eine konstante Musterlänge voraussetzen kann. Das Ergebnis dieser Methode wäre ein Maß wie gut das Eingangssignal mit dem gespeicherten Muster übereinstimmt.

Für den TS wäre natürlich ein Audacity Plugin ideal, aber so eines kenne ich nicht.

Da ich kein Python spreche, weiß ich auch nicht, ob die von verdooft verlinkte Methode nicht einfacher oder hier überhaupt anwendbar ist.

Allerdings weiß ich auch nicht, wie es hier mit Nebengeräuschen aussieht. Ich hatte damals bei meinen Experimenten nur versucht Morsezeichen aus einem verrauschten Spektrum herauszufiltern (siehe Anhang). Aber das war eine einzelne Frequenz und kein Muster.

Letztendlich denke ich, das dies ein Thema für das Mikrocontroller Forum ist, falls man so etwas selber Programmieren möchte.

In Deinem Link kann ich aus den Beschreibungen nichts herauslesen, was unser Problem lösen könnte. Aber da sind einige Programme bei, die die hier benötigten Features höchstwahrscheinlich auch verwenden.

Bilder

shinichi

Anmeldungsdatum:
14. März 2008

Beiträge: 735

Wohnort: Lausitz + Honshu

Vlt. ist das ja was: https://github.com/craigfrancis/audio-detect

Das sucht zwar anscheinend nur öfter wiederkehrende Töne in einer Audiodatei, aber das kann man vlt. trotzdem nutzen, wenn man den zu suchenden Ton mehrmals an den Anfang (oder das Ende) der zu suchenden Datei schneidet und dann den Algorithmus über die zusammengebundene neue Datei suchen lässt. Er sollte dann nicht nur die reingeschnittenen gleichen Töne am Anfang (oder) Ende anzeigen, sondern auch das eventuelle Ziel irtgendwo anders in der Datei. Wäre vlt. einen Versuch wert, um vlt. auch nur Anhaltspunkte zu finden, die man dann manuell im Spektrum dann selber besichtigt.

Ansonsten ist da wohl der Audiofingerabdruck der Weg. Man kann sich seine eigene kleine Fingerabdruckdatenbank anlegen (also die Datei, in der was gesucht werden soll als einziges "Lied") und dann den Fingerabdruck des Tonschnipsels da drin suchen lassen. Könnte halt auch funktionieren. Da gibts ne kleine Anleitung, wie sowas angeblich mit Python-tool irgendwie geht. https://ourcodeworld.com/articles/read/973/creating-your-own-shazam-identify-songs-with-python-through-audio-fingerprinting-in-ubuntu-18-04

Antworten |