Mel-Spektrogramm in Spektrogramm konvertieren

8

Ich habe eine Reihe von Songs, für die ich die STFT (Short-Time Fourier Transform) extrahiert und das MagnitudenspektrumUm das Mel-Spektrogramm unter Verwendung einer Mel-Filterbank-Matrix zu berechnen , ist . Ich möchte wissen, ob es eine Methode gibt, um diesen Prozess umzukehren, dh vom Mel-Spektrogramm zurück zum Spektrogramm zu konvertieren. Ich habe das Mel-Spektrogramm etwas verkleinert und das Mel-Spektrogramm aus niedrigeren Dimensionen rekonstruiert. Jetzt möchte ich das Audiosignal aus dem rekonstruierten Mel-Spektrogramm regenerieren, also rekonstruiere ich zuerst das Spektrogramm und dann das Audiosignal.M X = log ( M × | S | )|S|MX=log(M×|S|)

Das Problem ist, dass die Mel-Filterbank-Matrix keine quadratische Matrix ist, da wir die Anzahl der Frequenzbereiche reduzieren, so dass die Umkehrung von nicht wie folgt verwendet werden kann: . Gibt es also eine Möglichkeit, das inverse Mapping zu generieren, wie beispielsweise eine inverse Übertragungsfunktion, die von nach konvertiert werden kann ?S = M - 1 exp ( X ) X SMS^=M1exp(X)XS

user76170
quelle
Dies ist nur möglich, wenn Sie ein sehr starkes Vorbild dafür haben, wie Ihre Quellen geklungen haben. Ohne vorherige Informationen zu Ihren Quellen gibt es tatsächlich viele verschiedene Spektren, die in denselben Satz von Mel-Frequenzkoeffizienten "kollabiert" werden können.
Pichenettes
@pichenettes: Wie rekonstruiere ich dann das ursprüngliche Lied? Ich hoffe, Sie haben das Problem verstanden. Ich habe ein Mel-Spektrogramm und eine rekonstruierte Version davon aus niedrigeren Dimensionen. Anstatt zu berichten, dass "der Fehler" in Bezug auf numerische Zahlen war, kann ich das rekonstruierte Mel-Spektrogramm auf irgendeine Weise "hören", dann kann ich das nach der Verringerung der Dimensionalität sagen, indem ich weniger Komponenten behalte und die Mel rekonstruiere -Spektrogramm, so klingt das Audio.
user76170
2
Im allgemeinen Fall ist das einfach nicht möglich. Es ist, als hätte man 5 Zahlen und fragt, wie man die Zahlen aus ihrer Summe "rekonstruiert".
Pichenettes
Wir wollen ein Sprachsteuerungssystem auf dem Matlab erstellen, wissen aber nicht, wie wir das tun können. Wir haben Sprachdaten, aber wie können wir diese Daten in das Matlab einfügen. zB (acht1.mel .... acht.mel) Dateien. Wir wollen diese Audio-Englisch-Nummernerkennung in Matlab. 1-Muss ich ".mel-waw" -Dateien konvertieren? 2-Welche kann ich Codes verwenden? Wenn Sie uns helfen, würden wir uns

Antworten:

5

Sowohl ein Magnitudenspektrogramm als auch eine Mel-Filterbank sind verlustbehaftete Prozesse. Wichtige Informationen, die zur Rekonstruktion des Originals benötigt werden, gehen verloren. Daher müssen Sie zurückgehen und die Original-Audio-Samples verwenden, um die Rekonstruktion durchzuführen, indem Sie einen Zeit- oder Frequenzbereichsfilter bestimmen, der Ihrer Dimensionsreduktion entspricht.

Sie können Annahmen über die verlorenen Informationen treffen, aber diese Annahmen selbst klingen normalerweise ungenau, künstlich und / oder roboterhaft. Oder Sie können nur speziell synthetisierte Eingaben verwenden, bei denen die Annahmen aufgrund des Entwurfs dieser Eingabe korrekt sind.

hotpaw2
quelle
Gibt es eine äquivalente umgekehrte Transformation für die Mel Fiter Bank? Ich verstehe, dass es ein verlustreicher Prozess ist. und wir können nicht finden, da M nicht quadratisch ist. Es ist jedoch möglich, diesen Schritt zu überspringen und PCA direkt mit dem Betragsspektrogramm | M | durchzuführen ? Speichern Sie auch die Phaseninformationen. Rekonstruieren Sie dann | M |, kombinieren Sie die Phaseninformationen und erhalten Sie das ursprüngliche Audio zurück? M1
user76170
1

Wie bereits erwähnt, ist es im Allgemeinen nicht möglich, genau zu arbeiten. Wenn Sie beispielsweise eine 2D-Darstellung einer 3D-Szene außerhalb eines Autos haben, können Sie im Prinzip nicht sagen, ob es sich um einen sehr dünnen Cartoon handelt, der einem Auto ähnelt, oder ob es sich um ein Foto eines echten Autos handelt, aber wenn Sie davon ausgehen, dass niemand versucht hat, sich zu täuschen Sie können einige Annahmen über reale Daten treffen. Auf diese Weise funktionieren generative Modelle für maschinelles Lernen.

In Bezug auf die inverse Transformation können Sie die Transposition der Filterbank als Annäherung an die inverse Transformation verwenden, da die meisten Filter orthogonal sind (ihr inneres Produkt ist Null). Die Skalierung der Daten ist jedoch falsch, wie Sie leicht überprüfen können. Sie können einige Statistiken über die ursprüngliche STFT verwenden, die aus einem großen Datensatz ex pro Kanal (Frequenz) extrahiert wurden, und den normalisieren , um die 'richtige' Skala zu erhalten. Wenn Sie nur aus dem Betragssignal ein vollständiges Spektrogramm erstellen möchten, können Sie den Griffin-Lin-Algorithmus verwenden, um eine Annäherung vorzunehmen. Sie können etwas wie WaveNet oder Parallel Wavenet verwenden, um es robuster zu machen, da bestätigt wurde, dass es mit Sprachsignalen und anderen Audiosignalen recht gut funktioniert.M.T.M.x

Marek G.
quelle
1

Heutzutage wäre es am einfachsten, sie librosafür diese Aufgabe zu verwenden. Es hat die Funktion mel_to_stft , die genau das tut, was Sie wollen.

Wie andere erwähnt haben, ist diese Rekonstruktion verlustbehaftet und es kann nur eine ungefähre Lösung gefunden werden. In librosa wird der Algorithmus für nicht negative Lease-Quadrate verwendet .

Beachten Sie Folgendes: Wenn Sie die Mel-Energien mit Ihrem eigenen Algorithmus extrahiert haben, müssen Sie sicherstellen, dass die Frequenzverzerrung ähnlich ist. Andernfalls erhalten Sie Audio, das disharmonisch klingt (vorausgesetzt, Sie möchten die später synthetisieren Wellenform von der STFT). In librosa gibt es zwei Warping-Funktionen, die Sie durch Angabe der zweiten verwenden können htk=True.

jojek
quelle