Dies ist eine Zusammenfassung des Inhalts von Audiosignalverarbeitung für Musikanwendungen, den ich bei Coursera aufgenommen habe. Ich denke, es wird ein Tor sein, wenn Sie einen Schritt weiter gehen möchten, als nur einen Titel zu spielen.
Grob gesagt soll die Sprachanalyse klarstellen, "aus welcher Frequenz der Ton besteht, den Sie hören". Dies nennt man Spektralanalyse. Sobald dies aufgedeckt ist, können Sie:
Wie oben erwähnt, ist es bei erfolgreicher Zerlegung (Analyse) möglich, einen Klang zu erzeugen, indem das Gegenteil synthetisiert wird. Mit anderen Worten, Musikanalyse ist ein Prozess der ** Zerlegung-> Analyse-> (Umwandlung / Filterung) -> Rekonstruktion ** als Ganzes (man kann sagen, dass es sich um einen Stahlalchemisten handelt).
Der erste Schritt in der Sprachanalyse beginnt mit dem Ausdruck von Sprache als Funktion.
Ich denke, es ist in meiner Erinnerung, dass der Graph der Dreiecksfunktion einer Schallwelle ähnelt. Dies wird verwendet, um den Ton als Funktion auszudrücken. Die Winkelgeschwindigkeit von $ \ omega $ ist, wie der Name schon sagt, der Winkel, der sich pro Zeiteinheit (1 Sekunde) bewegt. Die Winkeleinheit ist Bogenmaß (für diejenigen, die Bogenmaß sagen, siehe hier), im Fall von Bogenmaß $ 2 \ pi $ macht eine Runde, dh einen Zyklus. Wenn Sie also $ \ omega $, dessen Einheit das Bogenmaß ist, durch $ 2 \ pi $ dividieren, erhalten Sie $ f $ pro Sekunde, dh Hz.
Der zu beachtende Punkt ist $ n
Die Einführung ist länger geworden, aber die folgende Abbildung zeigt diese Funktion mit den tatsächlichen Parametern. Wenn Sie es als Geräusch hören, entsteht ein Geräusch wie bei einem Hörtest.
CC by MTG(Basicmathematics-Sinewaveplot)
Es ist jedoch schwierig zu handhaben, daher werden wir die Euler-Formel verwenden, um sie in eine Exponentialfunktion umzuwandeln.
Die Euler-Formel zeigt die Beziehung zwischen dem komplexen Exponenten und der Dreiecksfunktion $ e ^ {j \ phi} = cos \ phi + jsin \ phi $ (siehe Abbildung unten) und durch Anwendung dieser die Dreiecksfunktion Es ist möglich, die Darstellung in eine Darstellung eines komplexen Exponenten umzuwandeln.
CC by MTG(Basicmathematics-Euler'sformula)
Als Vorteil der Verwendung des komplexen Exponentialausdrucks kann die Amplitude $ A $ leicht als absoluter Wert der komplexen Zahl ausgedrückt werden, und die Anfangsphase $ \ phi $ kann leicht als Abweichungswinkel ausgedrückt werden.
CC by MTG(Basicmathematics-Complexnumbers)
Die bisherige Geschichte kann wie folgt zusammengefasst werden.
Nachdem der Klang ausgedrückt werden kann, werde ich erklären, wie dieser Klang zerlegt und rekonstruiert wird.
Aus der Schlussfolgerung ist es die Fourier-Transformation, die die Stimme zerlegt, und die inverse Fourier-Transformation, die sie rekonstruiert. Da jedoch die vom Computer verarbeitete Zeit wie oben erläutert diskret ist, wird sie als diskrete Fourier-Transformation / inverse Transformation bezeichnet.
Lassen Sie uns zunächst sehen, wie die diskrete Fourier-Transformation (DFT) definiert wird, die die Zerlegung durchführt.
Die Essenz der Fourier-Transformation besteht darin, die Aufteilung $ X [k] $ herauszufinden, wie viel Schall jede Frequenz $ k $ in den erhaltenen $ N $ Samples $ x [n] $ enthalten ist. Hierbei ist jedoch zu beachten, dass $ k $ keine einfache Frequenz ist. Die Obergrenze der Frequenz, die untersucht werden kann, wird durch die Abtastfrequenz $ f_s $ bestimmt. Wenn jedoch nur $ N $ daraus abgetastet wird, wird sie alle $ f_s / N $ (= diskret) geprüft. Dieses $ f_s / N $ ist die Einheit von k, daher ist die Beziehung zwischen $ k $ und der Frequenz $ f_k = f_s k / N $, wie oben beschrieben. Der Punkt ist, dass die Feinheit der zu untersuchenden Frequenz von der Anzahl der Proben abhängt.
Wenn Sie diese beiden Punkte nicht berücksichtigen, werden Sie durch die Einheitenumrechnung verwirrt. Der Teil $ e ^ {-j2 \ pi kn / N} $ in DFT bewirkt, dass alles andere als die gewünschte Frequenz $ k $ von $ x [n] $ ([Die diskrete Fourier-Transformation 2 von 2]] gelöscht wird. (https://github.com/MTG/sms-tools/blob/master/lectures/02-DFT/2T2-DFT-2.odp), [Verallgemeinerungen der Euler-Identität](http://en.wikipedia.org/ Siehe wiki / Euler's_identity)), Sie können nur $ k $ erhalten, indem Sie $ x [n] $ damit multiplizieren. Indem wir dies jedes Mal für $ n $ berechnen und die Summe nehmen, berechnen wir die Summe der $ k $ -Komponenten, die jedes Mal in $ n $ enthalten sind, dh wie viel Frequenz $ k $ im gesamten Sound enthalten ist. Du kannst es schaffen.
Die folgende Abbildung zeigt, was tatsächlich berechnet und aufgezeichnet wurde.
CC by MTG(TheDiscreteFourierTransform1of2)
Die erste Stufe zeigt den tatsächlichen Klang, die zweite und dritte Stufe zeigen das DFT-Ergebnis, die zweite Stufe ist die Amplitude und die dritte Stufe ist der Anfangsphasendiagramm. In der zweiten Reihe ist die vertikale Achse die Intensität der in ein Digibel umgerechneten Amplitude, und die horizontale Achse ist Hz, was angibt, welche Tonhöhe und wie stark der Schall ist (dies wird als Magnitudenspektrum bezeichnet). ). In der dritten Reihe ist die vertikale Achse die Anfangsphase (Winkelgeschwindigkeit) und die horizontale Achse ist Hz, was angibt, welcher Ton zu welchem Zeitpunkt zu klingen beginnt (dies wird als Phasenspektrum bezeichnet).
Hier werde ich einige verwandte Themen zusammenfassen.
CC by MTG(TheDiscreteFourierTransform2of2DFTofrealsinusoid)
Da wir die negative Seite nicht brauchen, beschäftigen wir uns normalerweise nur mit 0 oder mehr Teilen (positive Hälfte).
CC by MTG(FourierTransformproperty2of2Phaseunwrapping)
CC by MTG(FourierTransformproperty2of2Zero-padding)
Das Durchführen einer DFT und das Klären der Größe und Phase ist der Prozess, der der "Schallzerlegung" entspricht.
Die inverse diskrete Fourier-Transformation (IDFT) wird verwendet, um den Originalton unter Verwendung der Größe und Phase zu rekonstruieren, die als Ergebnis der DFT erhalten werden.
Dies ist die umgekehrte Operation von DFT und synthetisiert die Stimme neu.
Verwenden Sie bei der tatsächlichen Berechnung die Hochgeschwindigkeits-Fourier-Transformation / Inverse-Transformation (FFT / IFFT), die DFT / IDFT beschleunigt. Gehen Sie wie folgt vor, um FFT zu verwenden:
FFT / IFFT ist in scipy implementiert und kann einfach damit implementiert werden.
Die obige Erklärung lässt sich schneller in den Code einlesen. Lesen Sie daher auch den Code.
MTG/sms-tools/software/models/dftModel.py
Ich denke, Sie können jetzt die Stimme zerlegen und rekonstruieren. So wie es ist, wird der Originalton einfach rekonstruiert, daher möchte ich etwas weiter darauf eingehen, wie die Zerlegungsergebnisse von hier aus analysiert werden, und schließlich die Teile betrachten, die sich auf die Konvertierung und Filterung beziehen.
Ein typisches Lied hat eine Länge von mehreren Minuten, und wenn es auf FFT angewendet wird, werden die Klänge, die zu verschiedenen Zeitpunkten im Lied klingeln, gemischt, und die Größe und Phase werden unübersichtlich und die Eigenschaften werden schwer zu erfassen. Ich werde am Ende. Daher wird das Lied in feste Längen unterteilt, und für jede Teilungseinheit wird eine diskrete Fourier-Transformation durchgeführt. Indem Sie diese anordnen, können Sie die Änderung der Größe / Phase in Zeitreihen erfassen. Diese Methode wird als Kurzzeit-Fourier-Transformation (STFT) bezeichnet.
Dies ist ein Bild der Verschiebung des Analysebereichs der Größe N um H (siehe Abbildung unten).
CC by MTG(TheShort-TimeFourierTransform(1of2))
$ w $ heißt Fensterfunktion. Der Grund für die Anwendung einer solchen Sache ist, dass angenommen wird, dass der ausgeschnittene Teil der Größe N ein "periodisches Signal" ist. In der Realität ist dies jedoch nicht der Fall, sodass der erste Teil mit einer Funktion angewendet wird, die am Ende gegen 0 konvergiert, damit es so aussieht, als wäre es ein periodisches Signal. Die Funktion hierfür heißt Fensterfunktion.
Sie mögen sich fragen, ob es in Ordnung ist, so etwas anzuwenden, aber im Gegenteil, wenn Sie die Fensterfunktion nicht anwenden, wird die Annahme eines "periodischen Signals" gebrochen. Wenn Sie also die Stimme rekonstruieren, wird Rauschen erzeugt. Es wird so klingen, als wäre es enthalten.
Insbesondere ist die Fensterfunktion wie folgt (das Folgende ist ein einfaches rechteckiges Fenster).
CC by MTG(TheShort-TimeFourierTransform(1of2)Analysiswindow)
Es nimmt am Peak den Wert 1 an und hat die Form eines einzelnen Peaks, der um ihn herum abfällt. Unter Berücksichtigung der Größe wird dies wie in der obigen Abbildung gezeigt. Der Peak wird als Hauptkeule bezeichnet, und der Peak neben dem Peak wird als Nebenkeule bezeichnet. Da es vorzuziehen ist, dass die Fensterfunktion nur die Zielfrequenz durchlässt, ist die Auswirkung auf andere Klänge (kleine Töne) als die Hauptkeule umso stärker, je schmaler die Hauptkeule ist, je höher die Frequenzauflösung und je niedriger die Nebenkeule außer der Hauptkeule ist. Wird reduziert. Es gibt einen Kompromiss zwischen der Enge des Hauptlappens und des unteren Nebenlappens, und es ist notwendig, sie je nach Situation richtig zu verwenden. Wählen Sie im Allgemeinen die mit niedriger Nebenkeule, wenn sowohl laute als auch leise Töne enthalten sind, und wählen Sie die mit schmaler Hauptkeule, wenn sie in eine bestimmte Lautstärke passt, wobei der Auflösung Vorrang eingeräumt wird. (Ersteres ist oft Blackman / Blackman-Harris und letzteres ist oft Hamming / Hanning).
Referenz
Window function Windowing
Understanding FFT Windows Choosing a Windowing Function
Sinusoidal model
Das Sinusmodell besteht darin, sich einen komplexen Klang als eine Reihe einfacher Klänge (Sinus) einer bestimmten Frequenz vorzustellen. Im folgenden Modell wird der Ton zum Zeitpunkt n durch R Töne bestimmter Frequenzen dargestellt.
Wenn es auf dieses Modell angewendet werden kann, scheint es möglich zu sein, komplexe Klänge aus einfachen Klängen zu rekonstruieren. Wie finden Sie heraus, aus welcher Frequenz ein Sound besteht? Der Hinweis darauf ist immer noch das Spektrum.
Die Spektralanalyse zeigt, dass Geräusche mit unterschiedlichen Frequenzen als Spitzenwerte erfasst werden, wie unten gezeigt.
Week 5: Sinusoidal model, Theory lecture 1: Sinusoidal model 1
Daher scheint es, dass die Frequenzen, aus denen der Ton besteht, gut identifiziert werden können, indem die folgenden Schritte befolgt werden.
Gehen Sie zunächst von "1. Erstellen Sie ein Betragsspektrum, damit Spitzen gut erkannt werden können". Der Punkt hierfür ist die Fenstergröße, und es muss so eingestellt werden, dass mehrere Frequenzkomponenten in das Fenster passen.
Week 5: Sinusoidal model, Theory lecture 1: Sinusoidal model 1
Wie in [oben] gezeigt (http://qiita.com/icoxfog417/items/d376200407e97ce29ee5#%E5%88%86%E8%A7%A3dftdiscrete-fourier-transform), liegt die nachweisbare Frequenz in $ f_s / N $ -Einheiten. Daher sollte dies weniger sein als die Differenz zwischen den beiden Frequenzen, die Sie erkennen möchten (da Sie sonst die beiden Frequenzen nicht zerlegen können).
Als allererstes
Ein Beispiel für eine Mischung der obigen 440/490 ist wie folgt.
Week 5: Sinusoidal model, Theory lecture 1: Sinusoidal model 1
Nun, ich weiß nicht wirklich, wie hoch die Klangfrequenz ist (440 und 490!). Also werde ich etwa 100 bis 2000 Hz hinzufügen und mich für ein M entscheiden, das über die gesamte Frequenz dazwischen gut funktioniert. (Gefällt mir. Die horizontale Achse ist die Frequenz und die vertikale Achse ist k (M = k * 100 +) 1) Da k = 21 bei jeder Frequenz stabil ist, wird 2101 als M) verwendet.
Harmonic model Sinusoidal plus residual model(Stochastic model)
**A3: Fourier Properties Part-4: Suppressing frequency components using Zitiert aus dem DFT-Modell **
Week8 - Sound transformations
Week9 - Sound and music description
Week10 - Concluding topics
Recommended Posts