Module Mel Frequency Cepstrum Coefficients (MFCC)
PACT
Mathieu FONTAINE
mathieu.fontaine@telecom-paris.fr
2022-2023
Inspiré des slides de Gaël Richard
We will consider historical audio source separation technique
e.g. no deep learning extensions or nonnegative matrix factorization
the Handbook for that course is available on the moodle (PAM/Audio_source_separation)
Attentes du module
Comprendre les MFCC
Implémentation à la main des MFCC avec la librairie Python
Application au projet PACT (pourquoi ce module est adapté etc.)
Résultats avec la méthode implémentée + comparaison avec version de librosa
Livrable
Code de votre groupe en Python avec quelques résultats.
Plan
I - Transformée de Fourier usuels
II - Echelles perceptive audiofréquence
III - Mel frequency cepstral coefficients
I - Transformée de Fourier usuels
La transformée de Fourier discrète
Soit un signal discret $x_0,\dots,x_{N-1}$. Sa transformée de Fourier (discrète) est:
$$
X(f) = \sum_{n=0}^{N-1}x_ne^{-i\frac{2\pi f n}{N}}
$$
On obtient une représentation fréquentielle du signal
Complexité algorithmique : $O(N^2)$
Il existe une version édulcorée qui réduit la complexité $O(N^2)$ en $O(N\log(N))\\$ (cf. Cooley-Tukey FFT algorithm )
Figure : champ d'une Baleine. On remarque l'activité dans les basses fréquences.
On emploiera la FFT dans la suite.
Transformée en cosinus discrète (DCT)
Ne prend en compte que le cosinus de l'exponentielle complexe
Utile en image (information plus complète sur les basses fréquences)
$$
X(f) = \sum_{n=0}^{N-1}x_n\cos[\frac{\pi}{N}(n+\frac{1}{2})f] \qquad\qquad\qquad \texttt{(DCT-II)}
$$
Transformée de Fourier à Court Terme (TFCT)
Découpage d'un signal en plusieurs séquences
multiplication par un fenêtrage (Pourquoi ? cf. poly OASIS )
FFT sur chacune des séquences
TFCT d'un signal de parole (selon Laroche)
On obtient un signal "temps-fréquence" $X(f,t)$
Spectrogramme de puissance
Module au carré des coefficients
$$
S(f,t) = |X(f,t)|^2 \qquad\qquad\qquad \texttt{(Spectrogramme de Puissance)}
$$
Pour une meilleure représentation, on calcule le log du SP.
Figure : Log-Spectrogramme d'un signal de parole.
II - Echelle perceptive audiofréquence
Motivation
Prendre une échelle adaptée à la perception de l'oreille humaine
Echelle de Bark
Basée sur les bandes critiques telles qu'elles sont perçues par l'oreille
Proche de l'échelle log
Figure: Echelle de Bark.
Echelle de Mel, Filtrage en échelle de Mel
Approximation de la sensation psychologique de hauteur d'un son (Tonie)
$$
\text{mel}(f) = 1000\log_{2}(1+\frac{f}{1000}) \qquad\qquad \texttt{(relation mel-fréquence)}
$$
Figure: Filtre de mel.
Naturellement, on utilisera cette échelle pour parler des MFCC.
III - Mel Frequency Cepestral coefficient
Motivations
Bandes de Mel : représentation perceptuelle de l'oreille humaine
Coefficients souhaité : faire ressortir des informations clés d'un signal audio (fréquence fondamentale, résonnance etc.)
Le deuxième point est addressé par les coefficients cepstraux
Représentation Cepstrale motivée par le signal de parole
Modélisation d'un modèle source filtre de la parole
$s(t) = g(t) \ast h(t)$
avec $\ast$ la convolution, $g$ le signal glottique et $h$ le filtre représentant le conduit vocal.
La FFT transforme la convolution en produit.
On applique alors le module pour obtenir le spectre
On calcule le spectre et on fait la FFT inverse pour revenir dans le domaine temporelle
Les coefficients obtenues sont les cepstres.
$c(\tau) := FFT^{-1}\log|S(f)| = FFT^{-1}\log|G(f)| + FFT^{-1}\log|H(f)| $
Plus généralement, si on fait la transformée discrète d'un signal que l'on note $X(0), \dots, X(N-1)$ ses coefficients on obtient
les coefficients spectraux :
$$c_n = \frac{1}{N}\sum_{f=0}^{F-1}\log|X(f)|e^{\frac{2i\pi f n}{N}}$$
Exemple sur la prononciation du mot "razor"
basses fréquences $\rightarrow$ conduit vocal
haute-fréquence $\rightarrow$ signal glottique
"pick-picking" : approximation de la fondamentale de chaque phonème
Furui2001 : spectre de TFCT à gauche, ceptre à droite $c(\tau)$ où $\tau$ est la Quéfrence
Paramétrisation en "Mel-Frequency Cepstral Coefficients" (1/4)
Algo qu'on décompose ici en trois étapes :
Procédé calcul en MFCC
Paramétrisation en "Mel-Frequency Cepstral Coefficients" (2/4)
Algo qu'on décompose ici en trois étapes :
TFCT avec une fenêtre à déterminer (regardez dans la littérature)
Procédé calcul en MFCC
Paramétrisation en "Mel-Frequency Cepstral Coefficients" (3/4)
Algo qu'on décompose ici en trois étapes :
TFCT avec une fenêtre à déterminer
Filtrage par un banc de filtre MEL + DCT-II inverse pour chaque trame temporelle
$$
\tilde{c}_n = \sum_{f=1}^{F}(\log \tilde{S}_f)\cos[n(f-0.5)\frac{\pi}{F}]
$$
Procédé calcul en MFCC
Paramétrisation en "Mel-Frequency Cepstral Coefficients" (4/4)
Algo qu'on décompose ici en trois étapes :
TFCT avec une fenêtre à déterminer
Filtrage par un banc de filtre MEL + DCT-II inverse pour chaque trame temporelle
$$
\tilde{c}_n = \sum_{f=1}^{F}(\log \tilde{S}_f)\cos[n(f-0.5)\frac{\pi}{F}]
$$
Si sélection classique de 13 coefficients de MEL, on prend également la dérivée première et seconde
Procédé calcul en MFCC
En pratique, on ne prend pas $c_0$ qui est proportionnel à l'énergie du signal.
Les paramètres sont à choisir en explorant la littérature (
ici par exemple)