Jaka jest różnica między transformatą Fouriera a transformacją cosinus?

75

W rozpoznawaniu mowy interfejs użytkownika zazwyczaj przetwarza sygnał, aby umożliwić ekstrakcję funkcji ze strumienia audio. W tym procesie dwukrotnie stosowana jest dyskretna transformata Fouriera (DFT). Pierwszy raz jest po okienkowaniu; po zastosowaniu binowania Mel, a następnie kolejnej transformacji Fouriera.

Zauważyłem jednak, że w rozpoznawaniu mowy (na przykład domyślnym interfejsie CMU Sphinx ) powszechne jest użycie dyskretnej transformacji kosinusowej (DCT) zamiast DFT do drugiej operacji. Jaka jest różnica między tymi dwiema operacjami? Dlaczego miałbyś robić DFT za pierwszym razem, a potem DCT za drugim razem?

Nate Glenn
źródło
Kilka wyjaśniło różnicę między tymi dwoma procesami. Czy ktoś wie, dlaczego dft i dct są używane w różnych momentach do rozpoznawania mowy? Czy wynik pierwszego dft jest uważany za symetryczny? A może kompresja dct nadaje się do pakowania większej ilości informacji w pierwszych 13 punktach (przetwarzanie mowy na ogół wykorzystuje tylko te)?
Nate Glenn,
Czy twoje pytanie dotyczy cepstrum o częstotliwości Mel , które zostało zadane w innym pytaniu ?
rwong
Moje pytanie składało się z 2 części: różnicy między DCT i DFT i dlaczego DCT jest często używany do przetwarzania sygnału po zastosowaniu DFT i Mel Binning, zamiast innego DFT.
Nate Glenn,
dlaczego w przetwarzaniu obrazu nie używamy dyskretnej transformacji sinusowej zamiast dyskretnej transformacji kosinusowej?
Cześć rimondo, to dobre pytanie, ale opublikowałeś je jako odpowiedź. Powinieneś utworzyć nowe pytanie, aby je zadać.
Nate Glenn

Odpowiedzi:

48

Dyskretna transformata Fouriera (DFT) i dyskretna transformata kosinusowa (DCT) pełnią podobne funkcje: oba rozkładają wektor dyskretny o skończonej długości na sumę skalowanych i przesuniętych funkcji bazowych. Różnica między nimi to rodzaj funkcji bazowej używanej przez każdą transformację; DFT wykorzystuje zestaw złożonych harmonicznie funkcji wykładniczych, podczas gdy DCT używa tylko funkcji cosinusowych (o wartości rzeczywistej).

DFT jest szeroko stosowany w ogólnych aplikacjach do analizy spektralnej, które znajdują zastosowanie w szeregu pól. Jest również wykorzystywany jako element konstrukcyjny dla technik wykorzystujących właściwości reprezentacji w dziedzinie częstotliwości sygnałów, takich jak algorytmy szybkiego nakładania się i dodawania nakładania się szybkiego splotu.

DCT jest często używany w stratnych aplikacjach do kompresji danych, takich jak format obrazu JPEG. Właściwością DCT, która czyni go całkiem odpowiednim do kompresji, jest wysoki stopień „zagęszczenia widmowego”; na poziomie jakościowym reprezentacja DCT sygnału ma większą koncentrację energii w niewielkiej liczbie współczynników w porównaniu z innymi transformacjami, takimi jak DFT. Jest to pożądane w przypadku algorytmu kompresji; jeśli możesz w przybliżeniu reprezentować oryginalny sygnał (w dziedzinie czasu lub przestrzeni) przy użyciu stosunkowo małego zestawu współczynników DCT, możesz zmniejszyć swoje zapotrzebowanie na przechowywanie danych, przechowując tylko wyjścia DCT, które zawierają znaczne ilości energii.

Jason R.
źródło
4
@JasonR „na poziomie jakościowym reprezentacja DCT sygnału ma większą koncentrację energii w niewielkiej liczbie współczynników w porównaniu z innymi transformacjami, takimi jak DFT”. Hmmmm ... Nie jestem pewien, czy całkowicie się z tobą zgadzam - choćby dlatego, że DFT zawiera już cosinus, na który będzie rzutowany sygnał - w jaki sposób DFT może nie pokazywać tak dużej siły tej projekcji i DCT może? Dzięki.
Spacey
3
Jest to bardzo dobrze znana funkcja DCT, która tłumaczy jej zastosowanie w wielu algorytmach kompresji. Uważam, że ma to związek z warunkami brzegowymi przyjętymi przez DCT na krawędziach sygnału, które różnią się od DFT.
Jason R
23

Odkryłem, że niektóre szczegóły na wiki DCT (również udostępnione przez Pearsonartphoto) wskazują, że DCT dobrze nadaje się do aplikacji kompresujących. Pomocny jest koniec sekcji Nieformalny przegląd (pogrubienie jest moje).

W szczególności dobrze wiadomo, że wszelkie nieciągłości funkcji zmniejszają szybkość zbieżności szeregu Fouriera ... im gładsza jest funkcja, tym mniej elementów w jej DFT lub DCT jest wymaganych do jej dokładnego przedstawienia, a im bardziej można skompresować ... Jednak domyślna okresowość DFT oznacza, że ​​nieciągłości zwykle występują na granicach ... W przeciwieństwie do DCT, gdzie obie granice są nawet zawsze, daje ciągłe wydłużenie na granicach. Właśnie dlatego DCT ... ogólnie działają lepiej w przypadku kompresji sygnału niż DFT i DST. W praktyce zwykle do takich zastosowań preferowany jest DCT typu II, częściowo ze względu na wygodę obliczeniową.

Ponadto może się okazać, że ta odpowiedź jest również przydatna (z math.stackexchange.com). W Stanach:

Transformaty kosinusowe są jedynie skrótami do obliczania transformaty Fouriera sekwencji o specjalnej symetrii (np. Jeśli sekwencja reprezentuje próbki z funkcji parzystej).

jakiś robot
źródło
19

Powodem, dla którego widzisz transformację Fouriera zastosowaną dwa razy w procesie ekstrakcji cech, jest to, że cechy są oparte na koncepcji zwanej cepstrum. Cepstrum jest grą w spektrum słów - zasadniczo chodzi o przekształcenie sygnału do dziedziny częstotliwości za pomocą transformaty Fouriera, a następnie wykonanie kolejnej transformacji tak, jakby widmo częstotliwości było sygnałem.

Podczas gdy widmo częstotliwości opisuje amplitudę i fazę każdego pasma częstotliwości, cepstrum charakteryzuje różnice między pasmami częstotliwości. Odkryto, że cechy pochodzące z cepstrum lepiej opisują mowę niż cechy zaczerpnięte bezpośrednio ze spektrum częstotliwości.

Istnieje kilka nieco różnych definicji. Pierwotnie transformacja cepstrum została zdefiniowana jako transformata Fouriera -> logarytm złożony -> transformata Fouriera [1]. Inną definicją jest transformata Fouriera -> logarytm złożony -> odwrotna transformata Fouriera [2]. Motywacją dla tej drugiej definicji jest jej zdolność do oddzielania skręconych sygnałów (mowa ludzka jest często modelowana jako splot wzbudzenia i układu głosowego).

Popularnym wyborem, który okazał się skuteczny w systemach rozpoznawania mowy, jest zastosowanie nieliniowego banku filtrów w dziedzinie częstotliwości (binowanie mel, o którym mówisz) [3]. Konkretny algorytm jest zdefiniowany jako transformata Fouriera -> kwadrat wielkości -> bank filtrów Mel -> logarytm rzeczywisty -> dyskretna transformacja kosinusowa.

Tutaj DCT można wybrać jako drugą transformację, ponieważ dla danych wejściowych o wartości rzeczywistej rzeczywista część DFT jest rodzajem DCT. Powodem, dla którego preferowane jest DCT, jest to, że wyjście jest w przybliżeniu skorelowane. Cechy związane z dekoracją można skutecznie modelować jako rozkład Gaussa z ukośną macierzą kowariancji.

[1] Bogert, B., Healy, M., i Tukey, J. (1963). Kwerenda Alanyzy szeregów czasowych dla ech: cepstrum, pseudoautokowariancja, krzyżowanie cepstrum i pękanie saphe. W Proceedings of Symposium on Time Series Analysis, str. 209–243.

[2] Oppenheim, A., i Schafer, R. (1968). Homomorficzna analiza mowy. W IEEE Transactions on Audio and Electroacoustics 16, s. 1. 221–226.

[3] Davis, S. i Mermelstein, P. (1980). Porównanie reprezentacji parametrycznych dla rozpoznawania słów monosyllabicznych w zdaniach o ciągłym wypowiadaniu się. W IEEE Transactions on Acoustics, Speech and Signal Processing 28, s. 1. 357-366.

Seppo Enarvi
źródło
Re. PCA w ekstrakcji funkcji: prawdziwy PCA byłby tutaj bezcelowy, ponieważ byłby zależny od danych! Jeśli obliczysz PCA współczynników dziennika częstotliwości mel z jednego zestawu danych, a następnie z drugiego, znajdziesz inną podstawę - co oznaczałoby, że jeśli PCA zostanie użyte w procesie ekstrakcji cech, cechy wyodrębnione na jednym sygnale nie „t” oznacza to samo ”, co funkcje wyodrębnione na drugim sygnale. Teraz wykonaj ten eksperyment: oblicz PCA na zbiorze logarytmicznym Coef Mel. wyodrębnione z 10 godzin najbardziej zróżnicowanego dźwięku. Podstawa, którą znajdziesz, jest niesamowicie podobna do podstawy DCT.
pikenety
3
Innymi słowy: transformacja dekorelacji na końcu procesu wyodrębniania funkcji, aby była użyteczna w aplikacji do rozpoznawania, musi być rodzajem kompromisu odpowiedniego do „dźwięku” w ogóle, a nie do danych. Okazuje się, że podstawa DCT jest bardzo zbliżona do tego, co dostajesz, gdy uruchamiasz PCA na dużym zestawie audio!
pikenety
Niedawno widziałem PCA zastosowane pod koniec procesu wyodrębniania funkcji w eksperymentalnym systemie mowy. System ten obliczył projekcję PCA na podstawie danych treningowych i wykorzystał tę samą podstawę później.
Seppo Enarvi
8

Różnica między dyskretną transformacją Fouriera i dyskretną transformacją kosinusową polega na tym, że DCT używa tylko liczb rzeczywistych, podczas gdy transformacja Fouriera może wykorzystywać liczby zespolone. Najczęstszym zastosowaniem DCT jest kompresja. Jest to równoważne FFT o podwójnej długości.

PearsonArtPhoto
źródło
1
Można jednak wyobrazić sobie DCT / DST o złożonej sekwencji, w której osobno bierze się DCT / DST części rzeczywistych i urojonych.
więc możemy powiedzieć, że jeśli obliczę DFT, otrzymam DCT za darmo, wszystko, co muszę zrobić, to usunąć wyimaginowane części wektora. Proszę popraw mnie jeżeli się mylę.
Marek
1
Jest to nieco bardziej skomplikowane, ale można dość łatwo konwertować między FFT i DCT.
PearsonArtPhoto