Bei der Spracherkennung führt das Front-End im Allgemeinen eine Signalverarbeitung durch, um eine Merkmalsextraktion aus dem Audiostream zu ermöglichen. Eine diskrete Fourier-Transformation (DFT) wird dabei zweimal angewendet. Das erste Mal ist nach dem Fenster; Danach wird Mel-Binning angewendet und dann eine weitere Fourier-Transformation.
Ich habe jedoch festgestellt, dass es in Spracherkennern (dem Standard-Front-End in CMU Sphinx zum Beispiel) üblich ist, für die zweite Operation eine diskrete Cosinustransformation (DCT) anstelle einer DFT zu verwenden. Was ist der Unterschied zwischen diesen beiden Operationen? Warum machst du das erste Mal DFT und dann das zweite Mal DCT?
Antworten:
Die diskrete Fourier-Transformation (DFT) und die diskrete Kosinustransformation (DCT) führen ähnliche Funktionen aus: Beide zerlegen einen zeitdiskreten Vektor mit endlicher Länge in eine Summe von skalierten und verschobenen Basisfunktionen. Der Unterschied zwischen den beiden ist die Art der Basisfunktion, die von jeder Transformation verwendet wird. Die DFT verwendet eine Reihe harmonisch zusammengehöriger komplexer Exponentialfunktionen, während die DCT nur (reelle) Kosinusfunktionen verwendet.
Die DFT wird häufig für allgemeine Spektralanalyseanwendungen verwendet, die in eine Reihe von Bereichen Einzug halten. Es wird auch als Baustein für Techniken verwendet, die die Eigenschaften der Frequenzdomänendarstellung von Signalen nutzen, z. B. die schnellen Faltungsalgorithmen "Überlappung speichern" und "Überlappung hinzufügen".
Die DCT wird häufig in verlustbehafteten Datenkomprimierungsanwendungen wie dem JPEG-Bildformat verwendet. Die Eigenschaft der DCT, die sie für die Komprimierung gut geeignet macht, ist ihr hoher Grad an "spektraler Verdichtung"; Auf qualitativer Ebene konzentriert sich bei der DCT-Darstellung eines Signals im Vergleich zu anderen Transformationen wie der DFT ein größerer Teil seiner Energie auf eine kleine Anzahl von Koeffizienten. Dies ist für einen Kompressionsalgorithmus wünschenswert; Wenn Sie das ursprüngliche (zeit- oder raumbezogene) Signal mit einem relativ kleinen Satz von DCT-Koeffizienten näherungsweise darstellen können, können Sie Ihren Datenspeicherbedarf reduzieren, indem Sie nur die DCT-Ausgänge speichern, die erhebliche Energiemengen enthalten.
quelle
Ich fand heraus, dass einige Details im DCT-Wiki (auch von Pearsonartphoto geteilt) darauf hinweisen, dass das DCT gut für Kompressionsanwendungen geeignet ist. Das Ende des Abschnitts Informelle Übersicht ist hilfreich (Fettdruck ist meins).
Außerdem ist diese Antwort möglicherweise auch nützlich (von math.stackexchange.com). Es sagt aus:
quelle
Der Grund, warum die Fouriertransformation beim Merkmalsextrahierungsprozess zweimal angewendet wird, besteht darin, dass die Merkmale auf einem Konzept namens Cepstrum basieren. Cepstrum ist ein Spiel mit dem Wortspektrum - im Wesentlichen besteht die Idee darin, ein Signal durch Fouriertransformation in einen Frequenzbereich zu transformieren und dann eine weitere Transformation durchzuführen, als ob das Frequenzspektrum ein Signal wäre.
Während das Frequenzspektrum die Amplitude und Phase jedes Frequenzbandes beschreibt, kennzeichnet Cepstrum Variationen zwischen den Frequenzbändern. Von Cepstrum abgeleitete Merkmale beschreiben Sprache besser als Merkmale, die direkt aus dem Frequenzspektrum entnommen wurden.
Es gibt ein paar leicht unterschiedliche Definitionen. Ursprünglich wurde die Cepstrumtransformation als Fouriertransformation -> komplexer Logarithmus -> Fouriertransformation definiert [1]. Eine andere Definition ist Fouriertransformation -> komplexer Logarithmus -> inverse Fouriertransformation [2]. Die Motivation für die letztere Definition liegt in der Fähigkeit, gefaltete Signale zu trennen (menschliche Sprache wird häufig als die Faltung einer Erregung und eines Stimmtrakts modelliert).
Eine beliebte Wahl, die sich in Spracherkennungssystemen als gut erwiesen hat, ist die Anwendung einer nichtlinearen Filterbank im Frequenzbereich (das Mel Binning, auf das Sie sich beziehen) [3]. Der spezielle Algorithmus ist definiert als Fourier-Transformation -> Betragsquadrat -> Mel-Filterbank -> Realer Logarithmus -> Diskrete Cosinustransformation.
Hier kann DCT als zweite Transformation ausgewählt werden, da der Realteil der DFT für eine reelle Eingabe eine Art DCT ist. Der Grund, warum DCT bevorzugt wird, ist, dass die Ausgabe ungefähr dekorreliert ist. Dekorrelierte Merkmale können effizient als Gaußsche Verteilung mit einer diagonalen Kovarianzmatrix modelliert werden.
[1] B. Bogert, M. Healy und J. Tukey (1963). Die Frequenz-Alanysis von Zeitreihen für Echos: Cepstrum, Pseudo-Autokovarianz, Cross-Cepstrum und Saphe-Cracking. In den Proceedings des Symposiums zur Zeitreihenanalyse, p. 209-243.
[2] Oppenheim, A. und Schafer, R. (1968). Homomorphe Analyse der Sprache. In IEEE Transactions on Audio and Electroacoustics 16, p. 221-226.
[3] Davis, S. und Mermelstein, P. (1980). Vergleich parametrischer Darstellungen für die einsilbige Worterkennung in kontinuierlich gesprochenen Sätzen. In IEEE-Transaktionen zu Akustik, Sprach- und Signalverarbeitung 28, S. 29. 357-366.
quelle
Der Unterschied zwischen einer diskreten Fourier-Transformation und einer diskreten Cosinus-Transformation besteht darin, dass die DCT nur reelle Zahlen verwendet, während eine Fourier-Transformation komplexe Zahlen verwenden kann. Die häufigste Verwendung einer DCT ist die Komprimierung. Dies entspricht einer doppelt so langen FFT.
quelle