Lasciate che cominci dall'inizio. Il modo standard di calcolare il porcospino è il seguente:
C(x(t))=F−1[log(F[x(t)])]
Nel caso dei coefficienti MFCC, il caso è un po 'diverso, ma comunque simile.
Dopo la pre-enfasi e il windowing, si calcola il DFT del segnale e si applica il banco di filtri dei filtri triangolari sovrapposti, separati in scala mel (sebbene in alcuni casi la scala lineare sia migliore di mel):
Rispetto alla definizione di ceppo, ora rappresentavi l'inviluppo dello spettro (spettro ridotto) in scala di frequenza mel. Se lo rappresenti, vedrai che in qualche modo assomiglia allo spettro del segnale originale.
Il prossimo passo è calcolare il logaritmo dei coefficienti ottenuti sopra. Ciò è dovuto al fatto che il cepstrum dovrebbe essere una trasformazione omomorfa che separa il segnale dalla risposta all'impulso del tratto vocale, ecc. Come?
s(t)h(t)
s^(t)=s(t)⋆h(t)
Nella frequenza la convoluzione è una moltiplicazione di spettri:
S^(f)=S(f)⋅H(f)
log(a⋅b)=log(a)+log(b)
Ci aspettiamo anche che la risposta all'impulso non cambi nel tempo, quindi può essere facilmente rimossa sottraendo la media. Ora capisci perché prendiamo i logaritmi delle energie della nostra band.
F−1ifft
Quindi ora vedi che ora è piuttosto difficile capire come fosse lo spettro originale. Inoltre, di solito prendiamo solo i primi 12 MFCC, poiché quelli più alti descrivono rapidi cambiamenti nelle energie di log, il che di solito sta peggiorando il tasso di riconoscimento. Quindi i motivi per fare DCT erano i seguenti:
Inizialmente è necessario eseguire IFFT, ma è più facile ottenere i coefficienti a valore reale da DCT. Inoltre, non abbiamo più uno spettro completo (tutti i bin di frequenza), ma i coefficienti di energia all'interno dei banchi di filtri mel, quindi l'utilizzo di IFFT è un po 'eccessivo.
Si vede nella prima figura che i banchi di filtri si sovrappongono, quindi l'energia proveniente da uno accanto all'altro si sta diffondendo tra due: DCT consente di decorrelarli. Ricorda che questa è una buona proprietà, ad esempio nel caso di modelli di miscele gaussiane, in cui puoi usare matrici di covarianza diagonale (nessuna correlazione tra altri coefficienti), invece di quelle complete (tutti i coefficienti sono correlati) - questo semplifica molto le cose.
Un altro modo di decorrelare i coefficienti di frequenza mel sarebbe la PCA (Principal Component Analysis), tecnica utilizzata esclusivamente per questo scopo. Per nostra fortuna è stato dimostrato che DCT è un'ottima approssimazione della PCA quando si tratta di segnali di decorrelazione, quindi un altro vantaggio dell'utilizzo della Trasformazione discreta del coseno.
Qualche letteratura:
Hyoung-Gook Kim, Nicolas Moreau, Thomas Sikora - MPEG-7 Audio and Beyond: indicizzazione e recupero di contenuti audio