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?
Odpowiedzi:
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.
źródło
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).
Ponadto może się okazać, że ta odpowiedź jest również przydatna (z math.stackexchange.com). W Stanach:
źródło
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.
źródło
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.
źródło