Projet 3 : Reconnaissance du locuteur par l`algorithme EM 1

publicité
Ecole Polytechnique
Année 2004-2005
February 28, 2005
Projet 3 : Reconnaissance du locuteur par l’algorithme EM
Responsable: Randal Douc ([email protected]).
1
Préliminaires
Le but de ce projet consistera à identifier un locuteur à partir d’un échantillon
de parole en utilisant une méthode liée à l’algorithme EM. Commencez par
récupérer les échantillons disponibles à l’adresse:
http://www.cmap.polytechnique.fr/∼douc/Page/Teaching/Stat/locuteur.html
La démarche générale de ce projet est la suivante:
• Les signaux audio “.wav” sont prétraités de manière à associer à des
intervalles de temps (de l’ordre de quelques dizaines de millisecondes)
du signal un petit nombre p de paramètres significatifs (de l’ordre
de la dizaine). On associe donc à un signal “x.wav” un ensemble de
vecteurs xn1 = (x1 , ..., xn ), chaque xi étant élément de Rp (ces notations seront utilisées systématiquement, c’est à dire que aN
1 désigne
le vecteur (a1 , ..., aN )). Les (xi ) sont appelés coefficients cepstraux du
signal audio.
• On considère les xn1 comme des observations i.i.d. dont la densité est
modélisée par un mélange de gaussienne.
• L’algorithme EM est utilisé pour obtenir une approximation des paramètres du mélange qui maximisent la vraisemblance pour une observation xn1 . Ceci constitue la phase d’apprentissage.
• Les paramètres du mélange obtenus pour chaque locuteur sont utilisés
pour reconnaitre un locuteur à partir d’un nouvel échantillon. C’est la
phase de test.
Les échantillons audio que vous récupérez sont constitués de deux échantillons par locuteur, un pour la phase d’apprentissage, un pour la phase de
test. Les échantillons fournis sont de même taille, bien que généralement
l’échantillon pour l’apprentissage soit nettement plus long que celui utilisé
pour le test.
1
2
Prétraitement
La première étape consiste à extraire les coefficients cepstraux du signal.
Cette étape est déjà traitée et il vous suffit dans un premier temps d’aller
dans le répertoire DataCeps pour récupérer les coefficients cepstraux de
chaque locuteur (à l’aide de la commande scilab read). Pour la suite du
projet, nous ne retiendrons pas la première coordonnée des vecteurs des
cepstres xi . Cette coordonnée est reliée à la puissance du signal sonore étudié
et n’est pas pertinente pour l’identification du locuteur. Il vous faut ainsi
supprimer la première colonne de la matrice obtenue. On obtient alors une
série de vecteurs xn1 , chaque vecteur étant de taille p (p = 12 dans les
échantillons obtenus à partir de la page web).
3
Modèle et notations
Les xn1 sont donc vus comme n observations i.i.d. de variables X1n de densité
gθ , définie par:
K
X
∀x ∈ Rp , gθ (x) =
αk φµk ,Ak (x),
k=1
où l’on a introduit les notations suivantes:
PK
K
K
K
• Le paramètre θ = (α1K , µK
1 , A1 ) avec α1 ∈ [0, 1] ,
k=1 αk = 1,
p )K et les A sont des matrices symétriques positives.
µK
∈
(R
k
1
• φµ,A est la densité associée à la loi d’un vecteur normal de dimension
p de moyenne µ et de matrice de variance-covariance A:
1
1
p
T
−1
√
∀x ∈ R , φµ,A (x) =
exp − (x − µ) (A) (x − µ)
2
(2π)p/2 detA
Les α1K seront appelés poids du mélange. Un locuteur sera identifié par une
valeur particulière de θ.
4
Algorithme EM
On remarque que la fonction fθ : Rp × {1, . . . , K} → R définie par:
fθ (x, y) = αy φµy ,Ay (x)
est une densité jointe par rapport à la mesure produit naturelle sur Rp ×
{1, . . . , K}, c’est à dire la mesure produite de la mesure de Lebesgue sur Rp
2
et de la mesure ponctuelle sur {1, . . . , K}. On peut donc joindre les variables
Y1n aux X1n telles que la suite de variables (Xi , Yi ), i = 1, . . . , n soient des
variables i.i.d de densité jointe fθ (x, y).
4.1. Quelle est la loi de Y1n ? Montrer que la loi marginale pour X1n est
bien la loi associée à un échantillon i.i.d. de variables ayant pour densité gθ . Ecrire la vraisemblance jointe fθ (X1n , Y1n ) et la vraisemblance
marginale fθ (X1n ).
L’estimateur du maximum de vraisemblance θM V pour ce modèle associé
aux observations xn1 est défini par
θM V = argmaxθ log (fθ (X1n ))
Comme il n’y a pas de formule explicite pour θM V , nous vous proposons
d’utiliser une procédure itérative appelé algorithme EM (en Anglais: Expectation Maximisation, parce qu’il y a une partie où l’on prend une espérance
et une autre où l’on maximise):
θ[t + 1] = argmaxθ
Eθ[t] (log fθ (X1n , Y1n )|X1n = xn1 )
(1)
L’itération de cet algorithme produit, sous de bonnes hypothèses, une convergence de θ[t] (lorsque t → ∞) vers l’estimateur du maximum de vraisemblance θM V . Nous n’étudierons pas les propriétés théoriques de cet estimateur (qui sont plus détaillées dans le Projet 5) mais nous nous contenterons
de l’appliquer dans notre situation.
5
Relation de récurrence sur les coefficients pour
une itération
Nous supposerons dans toute la suite que les matrices AK
1 sont diagonales.
La matrice Ai est ainsi entièrement caractérisée par les coefficients de sa
diagonale que nous noterons σi . Ainsi, σi est un vecteur de (R+ )p .
K
Nous notons maintenant θ = (α1K , µK
1 , σ1 ) et θ[t] les paramètres obtenus
par t itérations de la relation (1).
5.1. Montrer que pour tout i = 1, . . . , n,
αk [t]φµk ,σk (xi )
Eθ[t] (1k (Yi )|X1n = xn1 ) = PK
.
l=1 αl [t]φµl ,σl (xi )
Nous noterons cette valeur pθ[t] (k|xi ).
3
5.2. En notant que la maximisation en α peut se faire indépendamment
des autres paramètres, montrer que
n
αk [t + 1] =
1X
pθ[t] (k|xi )
n
i=1
5.3. Montrer ensuite que
Pn
xi pθ[t] (k|xi )
µk [t + 1] = Pi=1
.
n
i=1 pθ[t] (k|xi )
5.4. Rappelons que σk [t + 1] ∈ (R+ )p et notons σk [t + 1](j) son j-ème
coefficient. De même, notons xi (j) ( et µk [t](j)) le j-ème coefficient de
xi ( et µk [t]). Montrer alors que pour tout j = 1, . . . , p,
Pn
pθ[t] (k|xi )(xi (j) − µk [t](j))2
Pn
σk [t + 1](j) = i=1
,
i=1 pθ[t] (k|xi )
Puis que:
σk [t + 1](j) =
6
Pn
2
i=1 pθ[t] (k|xi )(xi (j))
Pn
i=1 pθ[t] (k|xi )
− (µk [t](j))2 .
Programmation d’une itération
On écrira les fonctions demandées en laissant la possibilité de changer le
nombre K de classe du mélange. On pourra commencer à tester le modèle
avec K = 5. En reprenant les formules de la section précédente, programmez
une fonction Scilab qui, à partir des observations xn1 et de paramètre initial
θ0 , calcule le paramètre θ1 obtenu après une itération de l’algorithme EM.
Afin de simplifier l’écriture de ce programme, vous commencerez par programmer une fonction gauseval permettant l’évaluation de densités gaussiennes. La synthaxe de cette fonction est:
dens=gauseval(X,mu,sigma);
où
• X est le vecteur des observations; la ligne i0 contient le vecteur xi0 .
Cette matrice est donc de taille n × p.
• mu est la matrice des moyennes du mélange; la ligne k0 contient le
vecteur µk0 . Cette matrice est donc de taille K × p.
4
• sigma est la matrice des diagonales des covariances du modèle; la ligne
i0 contient le vecteur des éléments diagonaux de la matrice Ak0 . Cette
matrice est donc de taille K × p.
• dens est une matrice dont la ligne i0 contient le vecteur (dens(i0 , 1), ...,
dens(i0 , K)), où dens(i, k) = φηk (xi ), avec ηk = (µk , Ak ). Cette matrice est donc de taille n × K.
Cette fonction “gauseval”doit vous permettre de calculer facilement les
termes dont vous avez besoin lors d’une itération de l’algorithme EM.
7
Le problème de l’initialisation
Vous êtes maintenant en mesure de calculer les coefficients de votre mélange
en partant d’un choix initial de coefficients et en effectuant plusieurs itérations
de l’algorithme EM. Ce choix initial est délicat, et nous adopterons une
approche simple: les moyennes initiales seront prises égales à certains des
vecteurs d’observation choisis aléatoirement uniformément sur l’ensemble
des vecteurs correspondant à un locuteur. Les eléments des diagonales des
matrices de covariance seront choisis égaux (et valant par exemple 0.5).
8
Application
8.1. Programmez une procedure qui, étant donné un paramètre θ et un
vecteur d’observations xn1 , calcule la vraisemblance correspondant à
gθ .
8.2. Choisissez un locuteur particulier, et appliquez lui l’algorithme EM.
8.3. Vérifiez (numériquement) la convergence de la vraisemblance lors de
l’application de EM.
8.4. Vérifiez que, pour un vecteur xn1 correspondant au locuteur “a”, la
vraisemblance associée à gθ est supérieure avec les paramètres de ce
locuteur qu’avec les paramètres des autres locuteurs.
9
Phases d’apprentissage et de test
Pour chacun des locuteurs dont vous disposez d’un échantillon de voix, calculez les paramètres du mélange correspondant. Vous disposez maintenant
5
de M échantillons de voix, auxquels vous avez associé les paramètres d’un
mélange de gaussienne (gθ1 , ..., gθM ). Sélectionnez un échantillon test au
hasard et choisissez le modèle ayant la vraisemblance la plus forte. Conclusions ? Etudiez l’effet des différents paramètres (K, initialisation, nombre
d’itérations de EM) sur les résultats d’identification. Vous pouvez aussi construire vos propres échantillons une dizaine de secondes en enregistrant en
format .wav pour l’apprentissage (et un peu moins pour le test) et en effectuant au préalable le prétraitement pour extraire les coefficients cepstraux
(dans ce cas, il faut regarder sur la page web, les instructions pour effectuer
ce prétraitement.)
Vous pourrez éventuellement avoir besoin des fonctions Scilab suivantes:
list, strcat, read.
6
Téléchargement