Est-ce une interprétation correcte de l'étape DCT dans le calcul MFCC?


9

Ceci est la suite de la discussion ici . Je ferais un commentaire là-dessus, mais je n'ai pas 50 représentants, alors je pose une nouvelle question.

Voici comment je comprends l'étape DCT dans le processus de calcul du MFCC: La raison derrière cela est de séparer la corrélation dans les amplitudes log-spectrales (du banc de filtres) en raison du chevauchement des filtres. Essentiellement, le DCT lisse la représentation spectrale donnée par ces grandeurs log-spectrales.

Serait-il exact de dire que la ligne bleue dans l'image ci-dessous représente le spectre représenté par le vecteur des grandeurs log-spectrales, et la ligne rouge est ce vecteur une fois qu'il a été DCT?

Magnitudes log-spectrales if-DCT (c'est-à-dire MFCC) vs magnitudes log-spectrales simplement ???


où puis-je télécharger votre code pour le tester?
auraham

L'image ci-dessous? Aucune image dans le post.
Eric Platon

Réponses:


16

Commençons par le début. La méthode standard de calcul du cepstre est la suivante:

C(X(t))=F-1[Journal(F[X(t)])]

Dans le cas des coefficients MFCC, le cas est un peu différent, mais toujours similaire.

Après la préaccentuation et le fenêtrage, vous calculez la DFT de votre signal et appliquez la banque de filtres des filtres triangulaires qui se chevauchent, séparés en échelle de mel (bien que dans certains cas, l'échelle linéaire soit meilleure que mel):

entrez la description de l'image ici

En ce qui concerne la définition du cepstre, vous représentez maintenant l'enveloppe du spectre (spectre réduit) à l'échelle de fréquence de mel. Si vous représentez cela, alors vous verrez qu'il ressemble un peu à votre spectre de signal d'origine.

L'étape suivante consiste à calculer le logarithme des coefficients obtenus ci-dessus. Cela est dû au fait que le cepstre est censé être une transformation homomorphe qui sépare le signal de la réponse impulsionnelle du tractus vocal, etc. Comment?

Un signal de parole original s(t) est principalement convolué avec une réponse impulsionnelle h(t) du tractus vocal:

s^(t)=s(t)h(t)

Dans le domaine fréquentiel, la convolution est une multiplication des spectres:

S^(F)=S(F)H(F)

Journal(uneb)=Journal(une)+Journal(b)

Nous nous attendons également à ce que la réponse impulsionnelle ne change pas au fil du temps, elle peut donc être facilement éliminée en soustrayant la moyenne. Vous voyez maintenant pourquoi nous prenons les logarithmes de nos énergies de bande.

F-1ifft

entrez la description de l'image ici

Alors maintenant, vous voyez que maintenant il est assez difficile de comprendre à quoi ressemblait le spectre d'origine. De plus, nous ne prenons généralement que les 12 premiers MFCC, car les plus élevés décrivent des changements rapides dans les énergies logarithmiques, ce qui aggrave généralement le taux de reconnaissance. Donc, les raisons de faire du DCT étaient les suivantes:

  • À l'origine, vous devez effectuer l'IFFT, mais il est plus facile d'obtenir les coefficients réels de DCT. De plus, nous n'avons plus de spectre complet (tous les bacs de fréquences), mais des coefficients d'énergie dans les bancs de filtres mel, donc l'utilisation de l'IFFT est un peu exagérée.

  • Vous voyez sur la première figure que les banques de filtres se chevauchent, donc l'énergie des uns à côté des autres est répartie entre deux - DCT permet de les décorréler. N'oubliez pas que c'est une bonne propriété par exemple dans le cas des modèles de mélange gaussiens, où vous pouvez utiliser des matrices de covariance diagonale (pas de corrélation entre les autres coefficients), au lieu de pleines (tous les coefficients sont corrélés) - cela simplifie beaucoup les choses.

  • Une autre façon de décorréler les coefficients de fréquence du mel serait l'ACP (analyse en composantes principales), technique utilisée uniquement à cette fin. Pour notre chance, il a été prouvé que le DCT est une très bonne approximation de l'ACP en ce qui concerne la décorrélation des signaux, d'où un autre avantage de l'utilisation de la transformation cosinus discrète.


Quelques publications:

Hyoung-Gook Kim, Nicolas Moreau, Thomas Sikora - MPEG-7 Audio et au-delà: indexation et récupération de contenu audio


1
Pourquoi ne pouvons-nous pas prendre la valeur absolue des nombres complexes de l'IFFT? Si les nombres complexes sont beaucoup plus difficiles à gérer, pourquoi prenons-nous jamais l'IFFT lors du calcul d'un cepstre et pas seulement toujours le DCT? Merci pour l'explication. Ce chiffre était particulièrement utile.
acannon828

1
@ acannon828: Veuillez voir les 3 derniers points de ma réponse modifiée. J'espère que maintenant ça explique tout.
jojek

Excellente réponse .. Toute documentation que vous pourriez y joindre.
Bob Burt

1
@BobBurt: Voilà!
jojek

Merci pour le livre. La plupart des choses semblent expliquées dans celui-ci. Le livre couvre-t-il également la théorie sur les voies vocales - je ne semble pas être en mesure de trouver quoi que ce soit lié à cela.
Bob Burt

3

Plus qu'un lissage, le DCT réduit le nombre de dimensions nécessaires pour représenter le spectre. Le DCT est bon pour la réduction de dimensionnalité car il a tendance à compacter la plupart de l'énergie du spectre dans les premiers coefficients.


Merci. Cela m'a aidé à comprendre ce que @pichenettes voulait dire par réduction de dimensionnalité.
acannon828

3

La raison derrière cela est de séparer la corrélation dans les grandeurs log-spectrales (du banc de filtres) en raison du chevauchement des filtres. Essentiellement, le DCT lisse la représentation spectrale donnée par ces grandeurs log-spectrales.

Ceci est une erreur. Il existe une corrélation entre les grandeurs log-spectrales non seulement parce qu'elles se chevauchent, mais aussi parce qu'aucune séquence de nombres ne représente une série "significative" (comme dans, se produisant dans la parole et le son naturels) de magnitude log-spectrale. les grandeurs log-spectrales "significatives" ont tendance à être plutôt lisses, avec une diminution globale de l'énergie dans les fréquences plus élevées, etc. On dirait que la dimension de l'espace de tous les vecteurs de magnitude log-spectrale "significatives" est inférieure à 40 ou quel que soit le nombre de bandes que vous utilisez; et le DCT peut être considéré comme une réduction de dimensionnalité pour mapper les données à 40 canaux sur cet espace plus petit.

Essentiellement, le DCT lisse la représentation spectrale donnée par ces grandeurs log-spectrales.

Le DCT n'effectue aucun lissage. Vous voyez le lissage lors de la reconstruction à partir des données DCT - le lissage étant dû à la perte d'informations par le DCT et à la troncature des coefficients qui suit.

Mais les coefficients MFCC ne stockent pas le spectre lissé - il stocke une séquence de coefficients DCT non corrélés.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.