Welche Methode zur Unterscheidung verschiedener (musikalischer?) Töne ist anzuwenden?


12

Ich versuche zu recherchieren und herauszufinden, wie ich dieses Problem am besten bekämpfen kann. Es erstreckt sich über die Verarbeitung von Musik, Bildern und Signalen. Es gibt also unzählige Möglichkeiten, es zu betrachten. Ich wollte nach den besten Wegen fragen, wie ich es angehen kann, da das, was im reinen Sig-Proc-Bereich komplex erscheinen könnte, von Leuten, die Bilder oder Musik verarbeiten, einfach (und bereits gelöst) sein könnte. Wie auch immer, das Problem ist wie folgt:Bildbeschreibung hier eingeben

Wenn Sie mir die Handzeichnung des Problems verzeihen, können wir Folgendes sehen:

Aus der obigen Abbildung habe ich 3 verschiedene Arten von Signalen. Der erste ist ein Impuls, der in der Frequenz von auf und sich dann wiederholt. Es hat eine bestimmte Pulsdauer und eine bestimmte Pulswiederholungszeit.f1f4

Die zweite existiert nur bei , hat aber eine kürzere Pulslänge und eine schnellere Pulswiederholungsfrequenz.f1

Schließlich ist der dritte einfach ein Ton bei .f1

Das Problem ist, wie gehe ich dieses Problem an, so dass ich einen Klassifikator schreiben kann, der zwischen Signal-1, Signal-2 und Signal-3 unterscheiden kann. Das heißt, wenn Sie ihm eines der Signale zuführen, sollte es Ihnen sagen können, dass dieses Signal so und so ist. Welcher Klassifikator würde mir eine diagonale Verwirrungsmatrix geben?

Ein zusätzlicher Kontext und woran ich bisher gedacht habe:

Wie ich bereits sagte, überspannt dies eine Reihe von Feldern. Ich wollte mich erkundigen, welche Methoden möglicherweise bereits existieren, bevor ich mich hinsetze und damit in den Krieg ziehe. Ich möchte das Rad nicht versehentlich neu erfinden. Hier sind einige Gedanken, die ich aus verschiedenen Blickwinkeln hatte.

Signalverarbeitungsstandpunkt: Ich habe mir eine Cepstral-Analyse angesehen und dann möglicherweise die Gabor-Bandbreite des Cepstrums zum Unterscheiden von Signal-3 von den anderen 2 und dann den höchsten Peak des Cepstrums zum Unterscheiden von Signal-3 verwendet. 1 von Signal-2. Das ist meine aktuelle Lösung für die Signalverarbeitung.

Bildverarbeitungsstandpunkt: Hier denke ich, da ich tatsächlich Bilder gegenüber den Spektrogrammen erstellen KANN, kann ich vielleicht etwas aus diesem Bereich nutzen? Ich bin mit diesem Teil nicht sehr vertraut, aber wie sieht es aus, wenn Sie mit der Hough-Transformation eine "Linienerkennung" durchführen und dann die Linien "zählen" (was ist, wenn es sich nicht um Linien und Kleckse handelt?) Und von dort aus fortfahren? Natürlich könnten zu jedem Zeitpunkt, zu dem ich ein Spektrogramm aufnehme, alle Impulse, die Sie sehen, entlang der Zeitachse verschoben werden. Würde das also eine Rolle spielen? Nicht sicher...

Standpunkt der Musikverarbeitung: Eine Untergruppe der Signalverarbeitung, aber mir fällt auf, dass Signal-1 eine gewisse, vielleicht sich wiederholende (musikalische?) Qualität hat, die die Leute im Musik-Prozess ständig sehen und bereits gelöst haben Vielleicht Instrumente diskriminieren? Ich bin mir nicht sicher, aber mir ist der Gedanke gekommen. Vielleicht ist dieser Standpunkt der beste Weg, um es zu betrachten, einen Teil des Zeitbereichs zu nehmen und diese Schrittraten herauszuarbeiten? Auch dies ist nicht mein Fachgebiet, aber ich vermute sehr, dass dies etwas ist, was man vorher gesehen hat ... können wir alle 3 Signale als verschiedene Arten von Musikinstrumenten betrachten?

Ich sollte auch hinzufügen, dass ich über eine anständige Menge an Trainingsdaten verfüge. Vielleicht kann ich mit einigen dieser Methoden eine Feature-Extraktion durchführen, mit der ich dann K-Nearest Neighbor verwenden kann , aber das ist nur ein Gedanke.

Wie auch immer, hier stehe ich gerade, jede Hilfe wird geschätzt.

Vielen Dank!

BEARBEITUNGEN AUF DER GRUNDLAGE VON KOMMENTAREN:

  • Ja, , , , sind alle im Voraus bekannt. (Einige Abweichungen, aber sehr wenig. Nehmen wir zum Beispiel an, wir wissen, dass = 400 kHz, aber es könnte bei 401,32 kHz eintreten. Der Abstand zu ist jedoch hoch, so dass im Vergleich 500 kHz betragen könnte.) Signal-1 wird IMMER auf diese 4 bekannten Frequenzen treten. Signal-2 hat IMMER 1 Frequenz.f1f2f3f4f1f2f2

  • Auch Pulswiederholraten und Pulslängen aller drei Signalklassen sind vorab bekannt. (Wieder etwas Abweichung, aber sehr wenig). Einige Einschränkungen, Pulswiederholungsraten und Pulslängen der Signale 1 und 2 sind immer bekannt, aber sie sind ein Bereich. Glücklicherweise überlappen sich diese Bereiche überhaupt nicht.

  • Die Eingabe ist eine kontinuierliche Zeitreihe, die in Echtzeit eingeht. Wir können jedoch davon ausgehen, dass sich die Signale 1, 2 und 3 gegenseitig ausschließen, da zu jedem Zeitpunkt nur eines von ihnen existiert. Wir können auch flexibel festlegen, wie viel Zeit Sie zu einem bestimmten Zeitpunkt für die Verarbeitung benötigen.

  • f1f2f3f4


Was wird dein Input sein? 1 / Ein kontinuierlicher Stream, in dem Sie das Auftreten von Signal 1/2/3 (Segmentierungs- + Klassifizierungsproblem) oder 2 / einzelne Samples mit nur einem Signaltyp trennen möchten, den Sie in die Kategorien 1/2/3 einteilen müssen? Sie beschreiben verschiedene Eigenschaften der Signale: PRT von Signal 1; Wiederholungsfrequenz von Signal 2; Frequenz von Signal 3; Werte von f1 / f2 / f3 / f4. Sind diese Parameter im Voraus bekannt oder variabel? Was ist die typische Dauer eines Segments, wenn Ihre Eingabe mehrere Vorkommen dieser zu segmentierenden Signale aufweist?
Pichenettes

Eine andere Frage: Aus Ihren Zeichnungen geht hervor, dass Sie es mit reinen Tönen zu tun haben (keine Harmonischen und kein Rauschen). Ist das der Fall oder sind die Daten viel schmutziger als Ihre Zeichnungen?
Pichenettes

@pichenettes Danke, ich habe die benötigten Informationen in einer Bearbeitung hinzugefügt.
Spacey

Wir würden uns freuen, wenn Sie Ihre Fortschritte verfolgen und Lösungen für diese Frage finden. Die Analyse hängt hauptsächlich von der zeitlichen Variabilität der untersuchten Geräusche ab. Wenn sie schneller als ein FFT-Fenster sind, benötigen Sie beispielsweise unter 256 Proben hochauflösende Spektrogramme. Je genauer das Spektrogramm ist, desto mehr Detailinformationen sehen Sie in Ihren Sounds. FFT ist wahrscheinlich in Ordnung. Danach müssen nur noch logische Operatoren hinzugefügt werden, um die Sounds mithilfe einfacher Pattern-Analyse-Routinen zu klassifizieren. Analysieren Sie die Dauer der Impulse, den Abstand zwischen ihnen, die Akkordcharakteristik des Ganzen usw.
com.prehensible

Es ist einfach, die Hauptharmonische zu finden, indem Sie einfach den Spitzenwert jeder x-Linie überprüfen. Anschließend erhalten Sie eine Grafik, die Sie mit der Programmierung der Mustersignaturanalyse analysieren können. Dieser Vorgang läuft genauso ab, als würden Sie sie rhetorisch analysieren Zeichnen Sie die Regeln der besten Unterscheidungsmerkmale, die Sie beim Vergleichen und Klassifizieren von Zahlenverläufen bewusst verwenden.
com.prehensible

Antworten:


7

Schritt 1

S(m,k)mk

Schritt 2

Berechnen Sie für jeden STFT-Frame die dominante Grundfrequenz mit etwas wie YIN zusammen mit einem "Tonhöhenvertrauens" -Indikator, z. B. der von YIN berechneten Tiefe des DMF-"Einbruchs".

f(m)mv(m)m

r0

e(m)m

Schritt 3

MMM=50

Extrahieren Sie die folgenden Funktionen:

  • σf(k)(f(m))m[k-M,k+M],v(m)>τ
  • σv(k)(v(m))m[k-M,k+M]
  • σe(k)(e(m))m[k-M,k+M]

σfσvσe

σfσvσeσfσvσeσfσvσe

Berechnen Sie diese drei Merkmale anhand Ihrer Trainingsdaten und trainieren Sie einen naiven Bayes-Klassifikator (nur eine Reihe von Gauß-Verteilungen). Abhängig davon, wie gut Ihre Daten sind, können Sie sogar mit Klassifizierern davonkommen und handdefinierte Schwellenwerte für die Features verwenden, obwohl ich dies nicht empfehle.

Schritt 4

M

Wenn Ihre Daten und Ihr Klassifikator gut sind, sehen Sie etwa Folgendes:

1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3

Dies begrenzt die Start- und Endzeit sowie den Typ jedes Signals ziemlich gut.

Wenn Ihre Daten verrauscht sind, müssen falsche, falsch klassifizierte Frames vorliegen:

1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 3, 1, 1, 1, 3, 3, 2, 3, 3, 3

Wenn Sie viel Mist sehen, wie im zweiten Fall, verwenden Sie einen Modusfilter für die Daten in Umgebungen mit 3 oder 5 Erkennungen. oder verwenden Sie HMMs.

Nachricht mit nach Hause nehmen

Worauf Sie Ihre Erkennung stützen möchten, ist kein Spektralmerkmal, sondern eine aggregierte zeitliche Statistik der Spektralmerkmale über Fenster, die im selben Maßstab liegen wie Ihre Signaldauer. Dieses Problem erfordert eine Verarbeitung auf zwei Zeitskalen: dem STFT-Frame, auf dem Sie sehr lokale Signaleigenschaften (Amplitude, dominante Tonhöhe, Tonhöhenstärke) berechnen, und größeren Fenstern, in denen Sie die zeitliche Variabilität dieser Signaleigenschaften untersuchen.


Beachten Sie, dass Sie auch die Spracherkennung verwenden können, wenn Sie HTK oder ähnliches verwenden möchten ... Akustisches Modell: 4 Telefone P1, P2, P3, P4 (Ton bei F1, Ton bei F2, Ton bei F3, Ton bei F4) ) + 1 Symbol S für Stille. 1 oder 2 Gaußsche pro Telefon. Wortmodell W1 für Signal 1: (P1 S P2 S P3 S P4 S) +. Wortmodell W2 für Signal 2: (P1 S) +. Wortmodell W3 für Signal 3: (P1) +. Satzmodell: (W1 | W2 | W3) *. Die einzige Einschränkung ist, dass Sie, wenn Sie eine Spracherkennungs-Toolbox verwenden, das Feature-Extraktions-Front-End optimieren müssen, da MFCCs zu niedrig aufgelöst und tonhöhenunabhängig sind, um f1 / f2 / f3 / f4 voneinander zu unterscheiden.
Pichenettes

@pichenettes Danke Pichenettes, das ist eine sehr gute Antwort - ich habe jedoch ein paar Follow-ups: 1) Was ist YIN, das Sie erwähnen, und was ist DMF? Ich konnte über Google nichts auf ihnen finden. 2) Was genau ist "Tonhöhenvertrauen" als Maß? 3) Sie erwähnen, dass Sie die Autokorrelation verwenden können, um das Tonhöhenvertrauen zu finden - Autokorrelation von was, dem Zeitbereichsrahmen oder der STFT des Rahmens? (Ich verstehe das wahrscheinlich nicht, weil ich nicht weiß, was Sie Pechvertrauen bedeuten). (Fortsetzung ...)
Spacey

@pichenettes (Forts.) 4) Bezüglich der Features, die existieren, nur PRO WINDOW ja? Sie berechnen also drei Stds pro Fenster mit (in diesem Fall) 101 Frames? In diesem Fall, wenn es Zeit zum Trainieren ist, wurde mein 3-D-Punkt aus 3 Std. Über 101 Rahmen erstellt, richtig? 5) In Schritt 4, wenn Sie die Nummer 1,1,1,2,2 usw. haben, entspricht jede Nummer, wie Sie DIESES Fenster richtig klassifiziert haben? Die erste '1' war die Klassifizierung eines Fensters aus Frames -50 bis 50 und die zweite '1' aus einem Fenster aus Frames -49 bis 51, richtig? (Fenster wird jedes Mal um 1 Frame verschoben)
Spacey

@pichenettes 6) Abschließend hätte ich erwähnen sollen, dass dies als 'Alarm' verwendet werden soll, damit, wenn entweder Signal-1 oder Signal-2 vorhanden ist, ich einen Alarm zum Klingeln bekomme, aber dann sollte nichts los sein, wenn es gibt nichts da - Sollte es nicht einen Schwellenwert geben, der übereinstimmt, bevor es überhaupt zu klassifizieren beginnt, damit Sie keine falschen Positiven über nichts erhalten? (nur Hintergrundgeräusche zum Beispiel). (Ich lerne gerade etwas über den Naive Bayes-Klassifikator, weiß also nicht, ob er mehrere Klassen umfasst). 7) Vielen Dank im Voraus! TAUSEND UND EINE UPVOTES FÜR SIE! :-)
Spacey

1
1 / YIN ist ein klassischer Tonhöhenerkennungsalgorithmus für Sprach- und Musiksignale. recherche.ircam.fr/equipes/pcm/cheveign/pss/2002_JASA_YIN.pdf . DMF ist die "Differenzgrößenfunktion", die Größe, die mit Algorithmen wie YIN für die Tonhöhenschätzung berechnet wird. 2 / Ein Tonhöhenerkennungsalgorithmus wie YIN liefert die Schätzung der Grundfrequenz und einen "Konfidenzwert", der angibt, wie wahrscheinlich es ist, dass die zurückgegebene Tonhöhe die richtige Antwort ist. Bei verrauschten Signalen oder Signalen mit mehreren Tonhöhen ist dies niedrig, bei einer reinen Sinuswelle ist dies sehr hoch.
Pichenettes

3

Ein alternativer Ansatz könnten vier Überlagerungsdetektoren sein: Multiplizieren Sie das Eingangssignal mit einem lokalen Oszillator mit 4 Frequenzen und filtern Sie die resultierenden Ausgänge mit einem Tiefpass. Jede Ausgabe repräsentiert eine vertikale Linie in Ihrem Bild. Sie erhalten die Ausgabe bei jeder der 4 Frequenzen als Funktion der Zeit. Mit dem Tiefpassfilter können Sie einstellen, wie viel Frequenzabweichung Sie zulassen möchten und wie schnell sich die Ausgänge ändern sollen, dh wie scharf die Kanten sind.

Dies funktioniert auch dann, wenn das Signal ziemlich verrauscht ist.


Ich habe über diese Methode nachgedacht - sehen Sie irgendwelche Vorteile dieser Methode (Abmischen und LPF'ing) gegenüber der Arbeit direkt am Passtand mit einem Spektrogramm usw.?
Spacey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.