Qual è la differenza tra una trasformata di Fourier e una trasformata del coseno?


75

Nel riconoscimento vocale, il front-end generalmente esegue l'elaborazione del segnale per consentire l'estrazione delle funzioni dal flusso audio. Una trasformazione discreta di Fourier (DFT) viene applicata due volte in questo processo. La prima volta è dopo il windowing; dopo questo Melning viene applicato e poi un'altra trasformazione di Fourier.

Ho notato, tuttavia, che è comune nei riconoscitori vocali (il front-end predefinito in CMU Sphinx , ad esempio) utilizzare una trasformazione del coseno discreta (DCT) invece di un DFT per la seconda operazione. Qual è la differenza tra queste due operazioni? Perché dovresti fare DFT la prima volta e poi un DCT la seconda volta?


Quindi molti hanno spiegato la differenza tra i due processi. Qualcuno sa perché il dft e il dct sono usati in momenti diversi nel riconoscimento vocale? L'output del primo dft è considerato simmetrico? Oppure la compressione del dct è adatta per impacchettare più informazioni nei primi 13 punti (l'elaborazione del parlato generalmente usa solo quelli)?
Nate Glenn,

La tua domanda è correlata al ceppo a frequenza di mel , che è stato posto in un'altra domanda ?
rwong,

La mia domanda era di 2 parti: la differenza tra DCT e DFT e perché DCT viene spesso utilizzato per l'elaborazione del segnale dopo l'applicazione di DFT e Mel Binning, anziché un altro DFT.
Nate Glenn,

perché nell'elaborazione delle immagini non utilizziamo la trasformazione del seno discreta invece della trasformazione del coseno discreta?

Ciao rimondo, questa è una buona domanda ma l'hai pubblicata come risposta. Dovresti creare una nuova domanda da porre.
Nate Glenn,

Risposte:


48

La trasformata discreta di Fourier (DFT) e la trasformata discreta di coseno (DCT) svolgono funzioni simili: entrambi decompongono un vettore a tempo discreto di lunghezza finita in una somma di funzioni di base ridimensionate e spostate. La differenza tra i due è il tipo di funzione base utilizzata da ciascuna trasformazione; il DFT utilizza un insieme di funzioni esponenziali complesse correlate in modo armonico, mentre il DCT utilizza solo funzioni cosine (con valori reali).

Il DFT è ampiamente utilizzato per le applicazioni generali di analisi spettrale che si fanno strada in una vasta gamma di campi. Viene anche utilizzato come elemento di base per tecniche che sfruttano le proprietà della rappresentazione del dominio di frequenza dei segnali, come gli algoritmi di convoluzione rapida overlap-save e overlap-add.

Il DCT viene spesso utilizzato in applicazioni con compressione dei dati con perdita di dati, come il formato immagine JPEG. La proprietà del DCT che lo rende abbastanza adatto alla compressione è il suo alto grado di "compattazione spettrale"; a livello qualitativo, la rappresentazione DCT di un segnale tende a concentrare maggiormente la propria energia in un piccolo numero di coefficienti rispetto ad altre trasformazioni come la DFT. Questo è desiderabile per un algoritmo di compressione; se è possibile rappresentare approssimativamente il segnale originale (dominio temporale o spaziale) utilizzando un insieme relativamente piccolo di coefficienti DCT, è possibile ridurre i requisiti di archiviazione dei dati memorizzando solo le uscite DCT che contengono quantità significative di energia.


4
@JasonR "a livello qualitativo, la rappresentazione DCT di un segnale tende a concentrare maggiormente la sua energia in un piccolo numero di coefficienti rispetto ad altre trasformazioni come la DFT." Hmmmm ... Non sono sicuro di essere completamente d'accordo con te su questo - se non altro perché il DFT include già un coseno su cui verrà proiettato un segnale - come può un DFT quindi non mostrare la forza di quella proiezione e un DCT può? Grazie.
Spacey,

3
Questa è una caratteristica molto nota del DCT, che spiega il suo utilizzo in così tanti algoritmi di compressione. Credo che abbia a che fare con le condizioni al contorno assunte dal DCT ai bordi del segnale, che sono diverse dai DFT.
Jason R,

23

Ho scoperto che alcuni dei dettagli nel wiki DCT (anche condiviso da Pearsonartphoto) sottolineano che il DCT è adatto per le applicazioni di compressione. La fine della sezione Panoramica informale è utile (il grassetto è mio).

In particolare, è noto che eventuali discontinuità in una funzione riducono il tasso di convergenza della serie di Fourier ... più la funzione è fluida, meno termini sono necessari nella sua DFT o DCT per rappresentarla in modo accurato e più può essere compresso ... Tuttavia, la periodicità implicita del DFT significa che le discontinuità si verificano di solito ai confini ... Al contrario, un DCT in cui entrambi i confini sono anche produce sempre un'estensione continua ai confini. Questo è il motivo per cui i DCT ... generalmente offrono prestazioni migliori per la compressione del segnale rispetto ai DFT e DST. In pratica, un DCT di tipo II è generalmente preferito per tali applicazioni, in parte per motivi di convenienza computazionale.

Inoltre, potresti trovare utile anche questa risposta (da math.stackexchange.com). Afferma:

Le trasformazioni di coseno non sono altro che scorciatoie per calcolare la trasformata di Fourier di una sequenza con simmetria speciale (ad esempio se la sequenza rappresenta campioni da una funzione pari).


19

Il motivo per cui vedi la trasformazione di Fourier applicata due volte nel processo di estrazione delle caratteristiche è che le caratteristiche si basano su un concetto chiamato cepstrum. Cepstrum è un gioco sullo spettro di parole - essenzialmente l'idea è di trasformare un segnale in dominio di frequenza mediante trasformata di Fourier, e quindi eseguire un'altra trasformazione come se lo spettro di frequenze fosse un segnale.

Mentre lo spettro di frequenza descrive l'ampiezza e la fase di ciascuna banda di frequenza, il cepstrum caratterizza le variazioni tra le bande di frequenza. Le caratteristiche derivate dal cepstrum sono state trovate per descrivere meglio il parlato rispetto a quelle prese direttamente dallo spettro delle frequenze.

Ci sono un paio di definizioni leggermente diverse. Originariamente la trasformazione di cepstrum era definita come trasformata di Fourier -> logaritmo complesso -> trasformata di Fourier [1]. Un'altra definizione è trasformata di Fourier -> logaritmo complesso -> trasformata inversa di Fourier [2]. La motivazione di quest'ultima definizione sta nella sua capacità di separare i segnali contorti (il linguaggio umano è spesso modellato come la convoluzione di un'eccitazione e un tratto vocale).

Una scelta popolare che si è rivelata efficace nei sistemi di riconoscimento vocale è quella di applicare un banco di filtri non lineare nel dominio della frequenza (il mel binning a cui ti riferisci) [3]. Il particolare algoritmo è definito come trasformata di Fourier -> quadrato di magnitudine -> banco filtro mel -> logaritmo reale -> trasformata coseno discreta.

Qui DCT può essere selezionato come seconda trasformazione, perché per input con valori reali, la parte reale del DFT è una specie di DCT. Il motivo per cui si preferisce DCT è che l'output è approssimativamente decorrelato. Le funzionalità decorrelate possono essere modellate in modo efficiente come una distribuzione gaussiana con una matrice di covarianza diagonale.

[1] Bogert, B., Healy, M. e Tukey, J. (1963). The Quefrency Alanysis of Time Series for Echoes: Cepstrum, Pseudo-Autocovarianza, Cross-Cepstrum e Saphe Cracking. In Atti del simposio sull'analisi delle serie storiche, p. 209-243.

[2] Oppenheim, A. e Schafer, R. (1968). Analisi omomorfa del discorso. In Transazioni IEEE su audio ed elettroacustica 16, p. 221-226.

[3] Davis, S. e Mermelstein, P. (1980). Confronto di rappresentazioni parametriche per il riconoscimento di parole monosillabiche in frasi parlate continuamente. In IEEE Transactions on Acoustics, Speech and Signal Processing 28, p. 357-366.


Ri. PCA nell'estrazione di funzionalità: un vero PCA sarebbe inutile qui perché sarebbe dipendente dai dati! Se si calcola il PCA dei coefficienti di log della frequenza di mel da un set di dati, e poi da un altro, si troverà una base diversa, il che significherebbe che se il PCA fosse usato nel processo di estrazione delle caratteristiche, le caratteristiche estratte su un segnale non "significano lo stesso" delle caratteristiche estratte sull'altro segnale. Ora fai questo esperimento: calcola il PCA su un set di log Mel coef. estratto da 10 ore dell'audio più vario. La base che troverai è incredibilmente simile alla base DCT.
Pichenettes,

3
In altre parole: per essere utile nell'applicazione di riconoscimento, la trasformazione della decorrelazione alla fine del processo di estrazione delle caratteristiche deve essere una sorta di compromesso adatto all '"audio" in generale, piuttosto che ai dati specifici. Si scopre che la base DCT è molto vicina a ciò che si ottiene quando si esegue un PCA su un ampio set di audio!
Pichenettes,

Recentemente ho visto PCA utilizzato alla fine del processo di estrazione delle funzionalità in un sistema vocale sperimentale. Tale sistema calcolava la proiezione PCA dai dati di allenamento e successivamente utilizzava la stessa base.
Seppo Enarvi,

8

La differenza tra una trasformata discreta di Fourier e una trasformata discreta di coseno è che il DCT usa solo numeri reali, mentre una trasformata di Fourier può usare numeri complessi. L'uso più comune di un DCT è la compressione. È equivalente a una FFT del doppio della lunghezza.


1
È comunque possibile concepire il DCT / DST di una sequenza complessa, in cui si prende separatamente il DCT / DST delle parti reali e immaginarie.

quindi possiamo dire che se calcolo DFT ottengo DCT gratuitamente, tutto ciò che devo fare è rimuovere le parti immaginarie del vettore. Per favore correggimi se sbaglio.
Marek,

1
È un po 'più complesso di così, ma è possibile convertire abbastanza facilmente tra FFT e DCT.
PearsonArtPhoto,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.