Ich habe eine Reihe von Songs, für die ich das Magnitudenspektrogramm mithilfe eines Hamming-Fensters mit 50% Überlappung extrahiert habe. Nach dem Extrahieren des Spektrogramms führte ich eine Dimensionsreduktion mit der Hauptkomponentenanalyse (PCA) durch. Nachdem ich es auf niedrigere Dimensionen reduziert hatte, rekonstruierte ich die Spektrogramme aus niedrigeren Dimensionen. Es würde also jetzt ein Fehler zwischen dem ursprünglichen Spektrogramm und dem rekonstruierten Spektrogramm auftreten. Ich möchte dieses Spektrogramm wieder in das Audiosignal umwandeln und es wiedergeben, damit ich wissen kann, wie das Audiosignal klingt, wenn es aus niedrigeren Dimensionen rekonstruiert wird.
Gibt es irgendeine Funktion in Matlab? kann man ein Betragsspektrogramm in ein Audiosignal umwandeln ??
quelle
Antworten:
Wenn das Spektrogramm als die Größe von Fourier-Transformationen kurzer Zeit aus überlappenden Fenstern berechnet wurde , enthält das Spektrogramm implizit einige Phaseninformationen.
Die folgenden Iterationen erledigen den Job:
STFT ISFTS ist das Spektrogramm, ist die vorwärtskurzzeitige Fouriertransformation, ist die Fouriertransformation.stft isft
quelle
Es fiel mir schwer, die Antwort von @edouard zu verstehen, die das Richtige tut. Vergleichen Sie mit /signals//a/3410/9031 , mit dem ich meine Rekonstruktion implementiert habe.
Beachten Sie, dass die imaginäre Zahl und das rekonstruierte Signal bei der Iteration . Beginnen Sie damit, dass ein zufälliger Vektor der Länge des Audiosignals ist. Für mich waren ein paar Iterationen ausreichend, um ein Ergebnis zu erzielen, das in Ordnung klang. Der absolute Fehler zum Originalsignal war dennoch recht hoch. Auch das aus dem rekonstruierten Signal erzeugte Spektrogramm I hatte, obwohl es im Allgemeinen die gleichen Strukturen aufwies, ganz unterschiedliche Größen.x n n th x 0ich xn nth x0
quelle
Sie können das rekonstruierte Spektrogramm gegenüber dem ursprünglichen Spektrogramm verwenden, um einen Filter zu entwerfen, dessen Magnitudenantwort ein Spektrogramm in das andere transformiert. Sie können diesen Filter dann auf die ursprünglichen Zeitbereichsdaten oder auf die ursprünglichen FFTs anwenden, um eine schnelle Faltungsfilterung für das Hinzufügen / Speichern von Überlappungen zu erzielen.
quelle
Verwenden Sie den Griffin-Lim-Algorithmus, um das Audiosignal aus dem Spektrogramm zu invertieren, wenn Sie sich keine Gedanken über die Komplexität der Berechnung machen.
quelle