Was ist die korrekte grafische Interpretation einer Reihe von MFCC-Vektoren?


7

Ich studiere Spracherkennung, insbesondere die Verwendung von MFCC zur Merkmalsextraktion. Alle Beispiele, die ich online gefunden habe, tendieren dazu, eine Reihe von MFCC grafisch darzustellen, die aus einer bestimmten Äußerung wie folgt extrahiert wurden (Grafik, die ich mit der Software erstellt habe, die ich schreibe):

MFFC-Vektoren nach Merkmal Wie Sie in der obigen Grafik sehen können:

  • Die x-Achse wird für jeden der MFC-Koeffizienten verwendet (in diesem Beispiel von 1 bis 12).
  • Die y-Achse wird für die Werte der Koeffizienten verwendet (in diesem Beispiel im Bereich von -12 bis 42).
  • Sie haben so viele Zeilen wie Frames oder Feature-Vektoren, die Sie extrahiert haben (140 in diesem Beispiel).

Das macht für mich nicht allzu viel Sinn, denn was wir hier sehen, ist die Überlagerung aller Merkmalsvektoren auf einmal, wobei Zeitinformationen verloren gehen. Es fällt mir schwer zu verstehen, wie nützlich diese Darstellung ist.

In meinen Gedanken würde ich die extrahierten Vektoren wie folgt darstellen (wieder ein von mir erzeugter Graph):

MFCC-Vektoren nach Frame

In der obigen Grafik:

  • Die x-Achse ist die Rahmen- oder Vektornummer (1 bis 140).
  • Die y-Achse sind die Koeffizientenwerte (wiederum von -12 bis 42 ungefähr).
  • Sie haben eine Zeile für jede Funktion (12).

Für mich sollte diese Darstellung nützlicher sein, da Sie die zeitliche Entwicklung der einzelnen Funktionen sehen können und dies meiner Meinung nach einen stärkeren Einfluss darauf haben sollte, wie Vergleichsalgorithmen auf gesprochene Wörter angewendet werden.

Vielleicht sind die beiden Darstellungen für verschiedene Zwecke gleichermaßen gültig und nützlich, ähnlich wie wenn Sie ein Signal im Zeitbereich oder im Frequenzbereich untersuchen müssen, aber im Fall der Spracherkennung würde ich die zeitliche Entwicklung jedes Einzelnen erwarten Merkmal, um aussagekräftiger zu sein als die Wertedichte für jedes Merkmal (und vielleicht irre ich mich völlig: P).

Also zwei Fragen in der Tat:

  1. Warum ist die erste Darstellung diejenige, die weit verbreitet zu sein scheint, und nicht die zweite?
  2. Wenn Sie zwei Sätze extrahierter MFCCs vergleichen möchten, z. B. mithilfe von Dynamic Time Warping - DTW, und sich auf dieses Thema beziehen, vergleichen Sie die Merkmalsvektoren (dh 140 Vektoren mit 12 Merkmalen) oder die Rahmen (12 Vektoren mit 140 Rahmen) )? (Mit anderen Worten, MxN oder NxM?)

Vielen Dank!


Du liegst völlig falsch. Einzelne Koeffizienten haben wenig Sinn, Sie müssen sie als Ganzes als 12-dimensionalen Vektor betrachten.
Nikolay Shmyrev

Möchtest du das näher erläutern? Warum die Ablehnung?
Jotadepicas

brillant, eine Frage ablehnen, weil derjenige, der fragt, (angeblich) falsch ist
Robert

Downvote, weil Sie Informationen aus dem Internet zitiert und den Link nicht angegeben haben, sodass es unmöglich ist, Ihnen die Absichten des ursprünglichen Autors zu erklären.
Nikolay Shmyrev

Laut stackoverflow.com/help/privileges/vote-down verwenden Sie Downvotes falsch, insbesondere "Es ist nicht als Ersatz für Kommunikation und Bearbeitung gedacht." und "Wenn etwas nicht stimmt, hinterlasse bitte einen Kommentar oder bearbeite den Beitrag, um ihn zu korrigieren." Übrigens wurden diese Grafiken von mir mit der Software erstellt, die ich gerade schreibe, und als Teil meiner Bemühungen, eine gute Frage zu schreiben, also keine Internetverbindung für diese. Wenn Sie sich auf die "Beispiele online" beziehen, die ich erwähne, kann ich Links hinzufügen, aber da dies der allgemein akzeptierte Ansatz ist, wie Sie anerkennen, sind Sie sich nicht sicher, ob er einen Unterschied macht.
Jotadepicas

Antworten:


10

MFCCs werden immer verwendet, indem sie in den Klassifikator eingespeist werden. Dies kann Frame für Frame ( 12x1Vektor) oder durch Verketten ( 12xN) erfolgen - genau wie bei einem Spektrogramm.

Daher müssen Sie für DTW die Klassifizierung durchführen, indem Sie den Abstand zwischen 12D-Vektoren berechnen. Es ist eine dynamische Zeit Warping, so muss die Differenz zwischen den Bildern in berechnen Zeitdomäne, nicht zwischen den Proben in einer „Single - Feature - Domain“.

Hier ist eine grafische Darstellung davon:

Geben Sie hier die Bildbeschreibung ein


Nur ein Nachtrag zum MFCC-Plotten. Es macht keinen Sinn, das Liniendiagramm aller zusammen gestapelten MFCC-Vektoren zu betrachten (erstes Bild), und es ist nicht wirklich nützlich, die zeitliche Entwicklung aller MFCCs zu betrachten (zweites Bild). Für MFCCs gibt es kein Konzept für die richtige grafische Darstellung, es sei denn, Sie möchten etwas Bestimmtes erreichen.

Zunächst kann eine Verteilung (Histogramm) jedes MFCC aufgezeichnet werden, um die typischen Werte usw. zu ermitteln. Insbesondere wenn Sie ein GMM-Modell für ein Signal trainiert haben, können Sie die Verteilung der Testprobe und die Überlagerung mit einem PDF von GMM darstellen in dieser Dimension.

Der zweite Ansatz wäre, die MFCCs ähnlich wie ein Spektrogramm zu zeichnen (wie im obigen Bild gezeigt). Man könnte es für eine "schöne Darstellung" verwenden oder die allgemeinen Trends und Muster sehen. Aber es ist fast unmöglich zu sagen, welches Signal sich hinter einer solchen Darstellung verbirgt.

Hier ist zum Beispiel ein MFCC-Diagramm eines sehr einfachen Signals. Welches Signal ist das? Wenn Sie bereit sind, bewegen Sie den Mauszeiger über das gelbe Feld.

Geben Sie hier die Bildbeschreibung ein

Exponentieller Sinus-Sweep! Geben Sie hier die Bildbeschreibung ein

War es leicht zu sagen? Beim Betrachten des Spektrogramms war dies definitiv sofort offensichtlich. Vielleicht gibt es nur wenige Leute, die es erraten haben, seit sie zuvor mit solchen Beispielen gespielt haben. Nun etwas komplizierteres:

Geben Sie hier die Bildbeschreibung ein

Bereit?

Zwitschernde Vögel - hier können Sie zuhören Geben Sie hier die Bildbeschreibung ein

Ich denke kaum, dass diese MFCC-Darstellung von Nutzen ist, außer den Raum zu füllen. Jetzt mögen nur wenige Leute das Signal anhand eines Spektrogramms erraten, aber es ist unmöglich, dies anhand von MFCCs zu tun.

Wenn Ihnen also jemand sagt, dass er anhand der "dekorrelierten Kosinusanpassungen der logarithmischen Energien in dreieckigen Filterbänken im Frequenzbereich" sagen kann, was mit dem Signal passiert, dann ist er entweder ein Lügner (mit einem Prior von 99,9%.) oder einen Computer. Sehr selten gibt es Fälle, in denen die Betrachtung von MFCC-Rohwerten nützlich ist - wie Debugging und Überprüfung der Integrität (sind Koeffizienten, die für stationäre Signale konstant sind).


1
Vielen Dank für eine so umfassende (und unterhaltsame: P) Antwort. Genau die Art von Anleitung, nach der ich gesucht habe, und IMO ein Beispiel für qualitativ hochwertigen Inhalt.
Jotadepicas

@jotadepicas: Keine Sorge. Wenn dies Ihre Frage beantwortet, markieren Sie sie bitte als akzeptiert (mit einem Häkchen), damit sie nicht zur Hauptseite zurückkehrt.
Jojek

Sicher! Ich neige dazu, Fragen für ein oder zwei Tage offen zu lassen, falls andere Antworten auftauchen, und dann die beste als akzeptiert zu markieren. Höchstwahrscheinlich Ihre: D. Danke noch einmal!
Jotadepicas
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.