Zacznę od początku. Standardowy sposób obliczania cepstrum jest następujący:
C(x(t))=F−1[log(F[x(t)])]
W przypadku współczynników MFCC sprawa jest nieco inna, ale wciąż podobna.
Po wstępnym uwydatnieniu i okienkowaniu obliczasz DFT sygnału i stosujesz zestaw filtrów nakładających się trójkątnych filtrów, oddzielonych w skali mel (chociaż w niektórych przypadkach skala liniowa jest lepsza niż mel):
W odniesieniu do definicji cepstrum reprezentowałeś teraz obwiednię widma (widmo zredukowane) w skali częstotliwości mel. Jeśli to reprezentujesz, zobaczysz, że to trochę przypomina twoje pierwotne spektrum sygnału.
Następnym krokiem jest obliczenie logarytmu współczynników uzyskanych powyżej. Wynika to z faktu, że cepstrum ma być homomorficzną transformacją, która oddziela sygnał od odpowiedzi impulsowej dróg głosowych itp. Jak?
Oryginalny sygnał mowy s(t) jest w większości splecione z odpowiedzią impulsową h(t) układu głosowego:
s^( t ) = s ( t ) ⋆ h ( t )
Splot w dziedzinie częstotliwości jest zwielokrotnieniem widm:
S.^( f) = S( f) ⋅ H( f)
Można je podzielić na dwie części, w oparciu o następującą właściwość: log( a ⋅ b ) = log( a ) + log( b ).
Oczekujemy również, że odpowiedź impulsowa nie zmienia się w czasie, dlatego można ją łatwo usunąć, odejmując średnią. Teraz rozumiecie, dlaczego bierzemy logarytmy energii naszego zespołu.
Ostatnim krokiem w definicji cepstrum będzie odwrotna transformata Fouriera fa- 1. Problem polega na tym, że mamy tylko nasze log-energie, brak informacji o fazie, więc po zastosowaniu ifft
otrzymujemy współczynniki o złożonej wartości - niezbyt eleganckie, aby cały ten wysiłek był zwartą reprezentacją. Chociaż możemy wziąć dyskretną transformację kosinusową, która jest „uproszczoną” wersją FT i uzyskać wartościowe współczynniki! Tę procedurę można zwizualizować jako dopasowanie cosinusoidów do naszych współczynników energii logarytmicznej. Może pamiętasz, że cepstrum jest również nazywane „spektrum spektrum”? To jest właśnie ten krok - szukamy jakiejkolwiek częstotliwości w naszych współczynnikach obwiedni energii logarytmicznej.
Teraz widzisz, że teraz trudno zrozumieć, jak wyglądało oryginalne spektrum. Dodatkowo zwykle bierzemy tylko pierwsze 12 MFCC, ponieważ wyższe opisują szybkie zmiany energii logarytmicznej, co zwykle pogarsza wskaźnik rozpoznawania. Powody podjęcia DCT były następujące:
Pierwotnie musisz wykonać IFFT, ale łatwiej jest uzyskać rzeczywiste współczynniki z DCT. Ponadto nie mamy już pełnego spektrum (wszystkie przedziały częstotliwości), ale współczynniki energii w bankach filtrów mel, dlatego użycie IFFT jest nieco przesadne.
Na pierwszym rysunku widać, że banki filtrów nakładają się, więc energia z sąsiednich jest rozdzielana między dwa - DCT pozwala na ich korelację. Pamiętaj, że jest to dobra właściwość na przykład w przypadku modeli mieszanki Gaussa, w których można użyć diagonalnych macierzy kowariancji (brak korelacji między innymi współczynnikami), zamiast pełnych (wszystkie współczynniki są skorelowane) - to bardzo upraszcza.
Innym sposobem dekorelacji współczynników częstotliwości mel byłby PCA (Principal Component Analysis), technika stosowana wyłącznie w tym celu. Na nasze szczęście udowodniono, że DCT jest bardzo dobrym przybliżeniem PCA, jeśli chodzi o sygnały korelujące, stąd kolejna zaleta stosowania dyskretnej transformacji kosinusowej.
Trochę literatury:
Hyoung-Gook Kim, Nicolas Moreau, Thomas Sikora - MPEG-7 Audio and Beyond: Indeksowanie i wyszukiwanie treści audio