Frage

Aktualisieren Diese Frage hatte zuvor den Titel „Geben Sie mir den Namen eines einfachen Algorithmus zur Erkennung von Signal-(Ton-)Mustern"

  1. Mein Ziel ist es, das Vorhandensein eines bestimmten Musters in einem verrauschten Signal zu erkennen.Ich möchte die Anwesenheit einer Insektenart erkennen und die Geräusche mit einem Mikrofon aufzeichnen.Ich habe den Klang des Insekts zuvor in einem digitalen Format aufgezeichnet.
  2. Ich versuche nicht, eine Spracherkennung durchzuführen.
  3. Ich verwende bereits die Faltung zwischen dem Eingangssignal und dem Muster, um deren Ähnlichkeitsgrad zu bestimmen.Aber ich denke, dass diese Technik eher für diskrete Zeit geeignet ist (d. h.digitale Kommunikation, bei der Signale in festen Abständen auftreten) und um ein Eingangssignal zwischen zwei vorgegebenen Mustern zu unterscheiden (ich habe nur ein Muster).
  4. Ich habe Angst davor, neuronale Netze zu verwenden, weil ich sie nie verwendet habe, und ich weiß nicht, ob ich diesen Code einbetten könnte.

Könnten Sie mir bitte andere Ansätze nennen oder versuchen, mich davon zu überzeugen, dass mein aktueller Ansatz immer noch eine gute Idee ist oder dass neuronale Netze ein machbarer Weg sein könnten?

Aktualisieren Ich habe bereits zwei gute Antworten, aber eine weitere wäre willkommen und würde sogar belohnt.

War es hilfreich?

Lösung

Ein Schritt aus der Faltung ist Dynamic Time Warping welche als Faltungsoperator gedacht werden kann dass dehnt und schrumpft ein Signal optimal ein anderes Spiel.

Vielleicht ein einfacher Ansatz wäre, eine FFT der Probe zu tun, und festzustellen, ob Ihr Insekt irgendwelche besonderen Frequenzen, die auf gefiltert werden können.

Auf der komplexeren Seite, aber nicht ganz ein neuronales Netz, sind SVM-Toolkits wie LIBSVM und svmlight dass Sie Ihre Daten an.

werfen

Unabhängig von dem Pfad, den Sie versuchen, würde ich Zeit mit der Erforschung der Natur des Klanges Ihres Insekt macht mit Tool wie FFT verbringen. Immerhin wird es einfacher Lehre ein Computer sein, den Ton zu klassifizieren, wenn Sie es selbst tun können.

Andere Tipps

Sound wie ein typisches eine Klasse Klassifikationsproblem dh wollen eine Sache in einem großen Pool von anderen Dingen suchen, um Sie kümmern sich nicht.

Was Sie tun möchten, ist eine Reihe von Funktionen oder Deskriptoren, die Sie für jedes kurzes Stück Ihrer RAW-Aufzeichnung berechnen können, die Sie dann gegen die Features, um Ihre saubere Aufzeichnung erzeugt mithalten können. Ich glaube nicht, Faltung neccessarily schlecht ist, obwohl es ziemlich geräuschempfindlich ist, so dass es nicht für Ihren Fall optimal sein könnte. Was könnte in der Tat in Ihrem Fall ist Muster auf einem binned Fourier-Transformation passend. Sie nehmen die fourier Ihres Signal umwandeln, können Ihnen eine Leistung vs Frequenzkurve (anstatt eine Leistung vs Zeit-Diagramm) gibt dann die Frequenz in Bänder aufteilen und nehmen Sie die mittlere Leistung für jedes Band als Merkmal. Wenn Ihre Daten meist weißes Rauschen enthalten entsprechen die Pater man von einem rohen Insekten Sound ähnlicher Länge erhalten werden sehr eng, das Muster Ihrer Referenz Sound. Dieser letzte Trick (mit etwas Windowing) Audiocaptcha ist und werden von Google et al zu knacken erfolgreich verwendet wurde, um ihre Websites für blinde.

Durch die Art und Weise, weil Sie Ihr RAW-Audiosignal digital ist (sonst Verarbeitung mit einem Computer nicht funktioniert ;-)) Faltung geeignet ist. Sie sollten die Faltung zwischen dem Referenzsignal und einer Probe von gleicher Länge aus dem Roh-Eingang führen von jeder Probe zu starten. Also, wenn Ihr Referenzsignallänge N hat, und Ihre RAW-Probe hat eine Länge M, wobei M> = N, dann sollten Sie M-N + 1 = P Faltungen zwischen Referenzsignal und P Proben von Ihrem Roh-Eingang ab 1 durchführen .. P. Die beste Möglichkeit für den Standort des Referenzschalls in der rohen Probe wird die Probe mit dem höchsten Faltungs Score. Beachten Sie, dass diese irrsinnig Zeit wird sehr schnell verbrauchen.

Fourier basierte Matching-Transformation, wie ich oben mit 50% überlappenden Proben aus Rohdaten der doppelten Länge der Referenzprobe zumindest würde schneller erklärt werden (wenn auch nicht notwendigerweise besser)

Einige weitere Informationen benötigt.

Wenn Sie verrauschten Signal sagen, was ist das Hintergrundrauschen? Ist es, in erster Näherung, stationär (im statistischen Sinne, das heißt konstant) oder ist es nicht-stationär (d wahrscheinlich andere Geräusche, wie andere Tier-Anrufe usw. enthalten?)

Wenn das Hintergrundrauschen nicht stationär dann die beste Wahl sein könnte, etwas zu verwenden, genannt Unabhängige Komponentenanalyse , die eine gegebene Klanggemisch in seine Bestandteile Quellen zu trennen versucht, Sie müssten nicht einmal die Originalaufnahme des Insekts selbst. Viele ICA-Software wird aus der Wikipedia-Seite verlinkt sind.

(Edit: ICA ist ein Fall von Blinde Quellentrennung ( BSS), gibt es viele andere Möglichkeiten der BSS tun und es könnte für die, wie auch die Suche helfen.)

Wenn jedoch das Hintergrundrauschen stationär dann das Problem ist viel einfacher (wenn auch immer noch sehr schwer):

In diesem Fall ist der Ansatz, den ich verwenden würde, ist wie folgt. Analysieren Sie den Amplitudenspektrum eines Bits von dem Lärm und dem Amplitudenspektrum des Insekten Anruf. Wenn man Glück hat das Insekt Aufruf ist im Allgemeinen kann sein, in einem anderen Frequenzband auf das Rauschen. Wenn so filtert, das ankommende Signal mit geeigneten Hoch-, Tief-, oder Bandpassfilter.

Sie können dann versuchen, Abschnitte des gefilterten Signals zu vergleichen, die „mehr Energie“ als der Durchschnitt mit Ihrem (gefiltert) Insekten Aufruf enthalten. Möglicherweise durch die Bildähnlichkeitsalgorithmen vorgeschlagen von A. Rex verwendet wird.

Bearbeiten : Da Ihr Hintergrund-Rauschen nicht stationär, dann kann ich nur vorschlagen, dass die Suche nach blind Source Separation von nicht-Gauß-Quellen können Sie einige weitere Algorithmen führen. Ich habe Angst, dass die Antwort ist, dass es kein einfacher Algorithmus, der das tut, was Sie wollen.

Wenn ich Sie beginnen würde, ein wenig darüber zu lesen -Window-Funktionen wie Hamming-Fenster, dies ist ein guter Ausgangspunkt für die Geräuscherkennung. (Dies ist natürlich, kombiniert mit Fourier Transformation )

Sie können ein Matched Filter versuchen. Aber ich habe nie ein verwendet wird, habe ich gute Dinge gehört.

Auch, wenn auch nicht einfach, denke ich, ein Hidden-Markov-Modell (HMM, ich weiß, Sie sagten keine Spracherkennung, aber hören Sie mich!) Für Sie die besten Ergebnisse liefern würde. Auch hier habe tatsächlich ein, aber es gibt ich nie überall verfügbare Implementierungen Open Source verwendet. Sie müßten nur um es trainieren Sie Ihren exisiting „saubere“ Insekten Aufzeichnung verwenden. Hier ist eine Open-Source-Implementierung. Allgemeine Hidden-Markov-Modell-Bibliothek

Zwar ist dies nicht mein Fachgebiet, aber mein erster Gedanke ist ein RLS-Algorithmus - es führt Autokorrelation. Es ist ähnlich wie die Faltungsfilter Sie jetzt verwenden, aber ein wenig weiter fortgeschritten. Kalman-Filter sind eine Erweiterung dieses - es verwendet wird, ein Signal von mehreren verrauschten Messungen zu regenerieren, so ist es wahrscheinlich in diesem Fall nicht sinnvoll. Ich würde nicht ohne Weiteres neuronale Netze ablehnen - sie sind bei dieser Art der Sache sehr nützlich (vorausgesetzt man sich richtig trainieren).

Das Nachdenken über diese mehr in der Tiefe würde ich wahrscheinlich eine FFT empfehlen verwenden. Die Chancen stehen gut das Signal für Sie suchen sehr bandbegrenzt ist, und Sie würden wahrscheinlich mehr Glück mit einem Bandpassfilter haben auf den Daten einer FFT dann und schließlich auf diese Daten, um Ihre einfache Faltungsfilter anstelle der Zeitbereichsdaten Punkte. Oder beides tun und zweimal die Daten haben. Ich bin nicht schwer in Mathe so ich kann nicht‘Sie sagen, wenn Sie signifikant (nicht linear abhängig) Ergebnisse mit dieser Methode erhalten werden, aber das einzige, was Sie verlieren, ist Zeit.

Sie können interessiert sein in einem der MA Toolbox , eine Matlab Implementierung von Ähnlichkeitsmaßes (n).

ich persönlich dieses Papier gefunden, Allgemeine Klang Klassifizierung und Ähnlichkeit in MPEG-7 , interessant. Allerdings könnte es hinter einem paywall sein (ich weiß nicht) und es könnte nicht so nützlich sein in der Praxis.

Die GPL-ed Rahmen Marsyas hat ein Tool für maschinelles Lernen Klassifikation mit der Bezeichnung Kea. Meine Vermutung ist, dass dies wahrscheinlich nicht das tut, was Sie wollen, oder ist zu viel Aufwand zu anschließen.

sonst Meine einzige Idee ist, Fourier-Transformationen zu nehmen, effektiv Ihre Sounds in Graustufenbilder zu verwandeln. Dann eine Verwendung der vielen Bildähnlichkeitsalgorithmen rel="nofollow.

A Naiver Bayes-Klassifikator Hier kann es sich lohnen, die Klangbeispiele in solche zu klassifizieren, die die für Sie interessante Spezies enthalten, und solche, in denen dies nicht der Fall ist.Bei komplexen Phänomenen funktioniert es recht gut;Ich habe es einmal verwendet, um zu entscheiden, ob ein bestimmter Millimeterwellen-RADAR-Datensatz ein Hindernis wie ein Gestrüpp, eine Panzerfalle usw. enthielt.Was die Aufteilung Ihrer kontinuierlichen Daten in diskrete Abschnitte für den Bayes'schen Klassifikator angeht, können Sie einfach entlang des kontinuierlichen Datensatzes gleiten und Abschnitte abbrechen, die der Länge Ihrer Insektenprobe entsprechen.Wenn die Probe, mit der Sie vergleichen, beispielsweise 2 Sekunden lang ist, können Sie den Diskriminator mit 0–2 Sekunden, 0,5–2,5 Sekunden, 1–3 Sekunden usw. füttern.Sie müssen den Diskriminator trainieren, aber das ist eine allgemeine Anforderung jeder auf maschinellem Lernen basierenden Lösung.

Solche Ansätze sind im Grunde der einzige Weg, wenn Ihre Insektenart keinen einzigen, relativ deutlichen Laut hat, nach dem Sie suchen.Kreuzkorrelation/Faltung ist von begrenztem Nutzen, wenn Sie nach etwas suchen, das komplexer ist als ein einzelner Ton, der möglicherweise eine höhere oder niedrigere Lautstärke hat.

Es gibt naive Bayes-Klassifikator-Implementierungen für mehrere Sprachen, wie z NBC.

Sie können wollen ein Wiener Ansatz filtern.

Google: FastICA Algorithmus. Einige verwenden ICA und Blinde-Source-Signaltrennung verschaltbare. Der Autor des Algorithmus hat ein fantastisches Buch über ICA, die 60 rund $ 40- auf Amazon verwendet $ ist.

Goertzel - Sie können es entweder für eine einfache Mustererkennung und für komplizierte Frequenzen Trennung. Sie können die Probe von meine Implementierung in C #

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top