Documente Academic
Documente Profesional
Documente Cultură
(7)
Debido a que los trminos
) (
j i
S S P =
y
) (O P
se consideran constantes para todos los locutores, el trmino
trascendental para encontrar
) , / (
j j i
O S S P =
corresponde al valor de la verosimilitud definida por
) , / (
j j i
S S O P =
.
Clasificacin de Patrones usando HMM.
El proceso de VL basado en modelos ocultos de Markov (HMM) asume que cada secuencia de vectores de
observacin corresponde a palabras de un locutor determinado y que cada una de ellas es generada por un modelo
de Markov.
Un modelo de Markov consiste en una secuencia finita de estados conectados entre s por probabilidades de
transicin. Cada unidad temporal, que en este caso corresponde al frame, debe enfrentarse ante la posibilidad de
mantenerse en el estado actual o avanzar al siguiente. Cada estado x se caracteriza por una funcin de densidad de
probabilidad de observar un cierto frame O
t
. Esta funcin tambin se denomina probabilidad de salida o de emisin
y se denota por b
x
(o
t
). Considerando la topologa izquierda-derecha sin salto de estados de la Fig. 3, la probabilidad
de transicin desde el estado x al estado y es a
x,y
, donde y=x o y=x+1. Por definicin se tiene que a
x,x
+ a
x,x+1
= 1.
Figura 3. Topologa izquierda derecha sin salto de estado de un HMM.
Con las definiciones discutidas hasta ahora se tiene que el modelo de referencia del cliente es ) , , ( B A
j
= donde
A es la matriz de todas las transiciones de probabilidad, B es el conjunto de los parmetros de las probabilidades de
observacin, y son las probabilidades de que cada estado sea el primero.
En el modelo de Markov descrito en la Fig. 3 se puede identificar la secuencia de estados como:
{ } 8 , 7 , 7 , 6 , 5 , 5 , 4 , 4 , 3 , 2 , 2 , 1 = X generada por la secuencia de observacin O=[o
1
, o
2,
o
3
, ... o
12
]. La probabilidad
conjunta de que el vector de observacin O sea generado por el modelo
j
de la identidad clamada movindose a
travs de la secuencia X, es calculada como el producto entre las probabilidades de transicin y las probabilidades de
observacin. De esta forma, para la secuencia X mostrada en la Fig. 3 se tendr
) ( ) ( ) ( ) ( ) ( ) ( ) / , (
6 4 44 5 4 34 4 3 23 3 2 22 2 2 12 1 1
o b a o b a o b a o b a o b a o b X O P
j
=
(8)
En la prctica, slo la secuencia de observacin O es conocida y la secuencia de estados X correspondiente es oculta.
Este es el motivo por el cual estos modelos se denominan Modelos Ocultos de Markov. De esta forma, dado que X
es desconocido, la verosimilitud requerida es computada mediante la sumatoria de todas las posibles secuencias de
estados X = {x(1), x(2), x(3),.......,x(T)},
a
12 a
23
a a a a a 34 45 56 67 78
2 3 4 5 6 7
a
22 a
33
a
44
a
55 a
66
a
77
o2 o3 o4 o5 o6 o7 o8 o9 o10 o11
b (o ) 2 2 b (o ) 2 3 b (o ) 3 4 b (o ) 4 5 b (o ) 4 6 b (o ) 5 7 b (o ) 5 8 b (o ) 6
a
11
9 b (o ) 7 10 b (o ) 7 11
1
a
88
8
Modelo de Markov
o1
b (o ) 1 1
o12
b (o ) 8 12
19
=
=
T
t
t x t x t t x
X
j
a o b O P
1
) ( ) 1 ( ) (
todos
) ( ) / ( (9)
donde x(0)=1 corresponde al estado inicial del modelo de la Fig. 3. Una aproximacin para la verosimilitud definida
por la ecuacin 9, consiste en considerar solamente la secuencia de estados ms probable:
T
t
t x t x t t x
X
j
a o b Max O P
1
) ( ) 1 ( ) (
) ( ) / ( (10)
Si bien el clculo analtico de la ecuacin 10 no es posible, existen procedimientos recursivos que permiten calcular
esta expresin de manera eficiente. Uno de estos procedimientos corresponde al algoritmo de Viterbi, el cual
determina una secuencia de estados ptima y la respectiva verosimilitud. Por su parte, las matrices A y B son
determinadas con las elocuciones de entrenamiento del sistema utilizando el algoritmo de re-estimacin de Baum-
Welch (Deller et al., 1993).
La Probabilidad de Observacin (b
j
(o
t
)).
Los parmetros de los vectores de observacin (o
t
) asumen valores continuos y la probabilidad de observacin se
puede modelar con una funcin de densidad de probabilidad multivariable. Esta funcin de densidad de probabilidad
est constituida generalmente por una combinacin lineal de Gaussianas:
e
G
g
xg xg t xg t x
N x o c o b
=
=
1
,1 ) , ; ( ) ( (11)
donde N
e
corresponde al nmero de estados del HMM, G es el nmero de Gaussianas, c
x,g
es la ponderacin de las
Gaussianas, las cuales deben cumplir:
G g x c
x c
xg
G
g
xg
=
=
1 N ,1 0
N ,1 1
e
1
e
(12)
(.;,) Corresponde a una Gaussiana multivariable con vector de medias y una matriz de covarianza :
( ) ( )
=
t
T
t
o o
n
t
e o
1
2
1
) 2 (
1
) , ; ( (13)
El Algoritmo de Viterbi.
En la seccin 5.1 se mostr que la probabilidad conjunta de que el vector de observacin O sea generado por el
modelo
j
de la identidad clamada movindose a travs de la secuencia de estados X (o verosimilitud P(O,X/
j
) es
calculada como un producto entre las probabilidades de transicin y la probabilidad de observacin (ecuacin 9).
Dado que la secuencia de estados X no es conocida se debe calcular la secuencia ms probable, tal como se mostr
en la ecuacin 10. Para encontrar la secuencia ms probable, y por ende realizar la verificacin ms eficientemente,
se utiliza el algoritmo de decodificacin de Viterbi. En la figura 4 se muestra la grfica que representa al uso del
algoritmo de Viterbi operando sobre un modelo HMM de 8 estados con topologa izquierda derecha y sin salto de
estado.
20
Figura 4: Representacin grfica del algoritmo de Viterbi.
El algoritmo de Viterbi puede visualizarse como una solucin para encontrar el camino ptimo a travs de una
matriz que posee como eje vertical los estados del modelo HMM y como eje horizontal los frames en los que est
dividido la seal de voz. Cada punto negro mostrado en la figura representa el logaritmo de la probabilidad de
observar aquel frame en el instante correspondiente y cada arco entre dos puntos corresponde a la probabilidad de
transicin. Si X
)
= {x(1), x(2), x(3),.......,x(t)} es la secuencia ptima de estados obtenida para la secuencia de
vectores de observacin O = [o
1
, o
2
,......, o
t
], y adems se considera
y
(t) como la mxima probabilidad calculada a
lo largo de un camino, trazado hasta el tiempo t, y finalizada en el estado y, se tiene que:
[ ] ) / ... , ) ( , ),......., 2 ( ), 1 ( ( ) (
2 1 ) 1 ( c t t y
o o o y t x x x x P t = =
(14)
es mxima en funcin de las posibles secuencias de estados hasta t. Luego, la verosimilitud para el instante t+1 se
calcular usando los valores obtenidos de la ecuacin (1).
En el modelo GMM, la distribucin de las caractersticas de la seal de voz son modelas para cada
hablante por medio de la suma del producto de la mezcla de pesos por las componentes de densidad de
orden M de distribucin gaussiana de la seal de voz del hablante de la siguiente manera:
se cumpliendo
1
), ( ) ( =
=
M
i
i ib p p x x
1
1
=
=
M
i
i
p
(1)
donde x es un vector aleatorio de dimensin D (vector caracterstico), es el modelo del hablante, p
i
son la
mezcla de pesos, b
i
(x) son los componentes de densidad la cual esta formado por la media (
i
) y la matriz
de covarianza (
i
), para i = 1,2,3,.M., y cada componente de densidad es una funcin gaussiana de
variacin D dada de la siguiente forma:
) (
'
) (
2
1
exp
2 / 1
) 2 (
1
) (
1
2 /
i i i
D
i b x x x
(2)
Estado
1 2 3 5 6 7 8 9 10 4 Frame
a
a
ii
ij
j t
b (o )
21
El vector de la media
i
, matriz de covarianza
I
, y la mezcla de pesos p
i
de todas las componentes de
densidad determinan la Densidad de Mezclas Gaussiana total.
={ , ,p} es usado para representar el modelo del hablante. Para obtener un ptimo modelo
representativo para cada hablante es necesaria una buena estimacin de los parmetros de GMM, esto es,
llevar acabo un buen entrenamiento del modelo. Para realizar ste entrenamiento, un mtodo muy eficiente
es el de la estimacin de Mxima Probabilidad (Maximum-Likelihood (ML)). El cual se utiliza para
calcular la mxima probabilidad de GMM dado el vector caracterstico de la seal de voz con el que ser
entrenado, donde para un vector caracterstico de dimensin T, X=(x
1
,x
2
,,..x
T
) a ser entrenado, la
probabilidad de GMM puede ser escrita como:
=
=
T
t
p p
1
) ( ) ( x X
(3)
Sin embargo esta no es una funcin lineal de los parmetros del modelo ( ), por lo que no es posible
realizar la maximizacin directamente; por lo que se debe utilizar un algoritmo iterativo llamado Baum-
Welch. El algoritmo Baum-Welch es el algoritmo utilizado por HMM para estimar sus parmetros y tiene
el mismo principio bsico del algoritmo de Expectacin de Maximizacin (Expectation-Maximization
(EM)). La principal idea del algoritmo EM es como sigue: Se empieza con la inicializacin del modelo
( ), posteriormente, se calcula un nuevo modelo ( ) tal que ) ( )
_
( X P X P
r
. As, este nuevo modelo
(
r
), se convierte en el modelo inicial para la siguiente iteracin. Durante la estimacin del modelo GMM
los parmetros
i
,
i
y p
i
deben ser estimados. Las condiciones iniciales del modelo es obtenida usando el
algoritmo de Viterbi, para este fin tambin son usados los algoritmos de k-mean y binary split. Despus,
los parmetros de la media
i
, matriz de covarianza
2
i
, y la mezcla de pesos p
i
son calculados en
iteraciones consecutivas dadas por:
=
=
T
t
t i
i p
T
p
1
) , (
1
x
r
(4)
=
=
=
) , (
) , (
1
1
x
x x
r
r r
i p
i p
T
t
t t
T
t
i
(5)
2
1
1
2
) , (
) , (
i
t
T
t
t t
T
t
i
i p
i p
=
=
=
x
x x
r
r r
(6)
Donde la probabilidad a posteriori a la i-th clase es dada por:
22
=
=
) (
) (
) , (
1 t k k
M
k
t i i
t
x b p
x b p
x i p
(7)
Este proceso es repetido hasta llega a un umbral de convergencia establecido. Las variables que necesita
ser consideradas, el orden de las mezclas y los parmetros previos a la maximizacin de la probabilidad del
modelo GMM, pueden ser diferentes dependiendo del tipo de aplicacin.
Figure6. Modelo de Mezclas Gaussianas (Gaussian Mixture Model (GMM))
Programa para implementar el algoritmo Baum-Welch en Matlab.
clear all
for k=1:90
w(k)=cos(2*pi*k/90);
end
n=10;
A=zeros(n-1,n);
%B=[zeros(900,1)];
for i=1:2:n-1
23
for j=1:n
A(i,j)=1;
end
end
k=1;
for i=1:9
for j=1:10
c(k)=A(i,j);
k=k+1;
end
end
k=1;
i=1;
n=0;
kk=9;
a=1/25000;
b=1/25000;
h=1;
for l=1:2
for i=1:kk
j=1;
if (A(i,j)==0)
while (A(i,j)==0 & j<10)
24
if (h<=90)
B(k)=w(h);
h=h+20;
j=j+1;
k=k+1;
else
h=h-90;
B(k)=w(h);
h=h+20;
j=j+1;
k=k+1;
end
end
else
while(A(i,j)==1 & j<10)
if (h<=90)
B(k)=w(h);
h=h+9;
j=j+1;
k=k+1;
else
h=h-90;
B(k)=w(h);
h=h+9;
j=j+1;
k=k+1;
end
end
end
25
end
end
plot(B)
A=[21,4,7;6,9,5;3,4,1]
N=length(A);
suma=0;
for (i=1:N)
for (j=1:N)
suma=suma+A(i,j);
prom=suma/9;
end
end
A(2,2)=prom;
delta=1/20e6;
Xf=4e-6;
F=7e6;
T=4e-6;
X=(0:delta:Xf)
Y=cos(2*pi*(F/T)*X.^2);
A=length(X);
G=Y;
for i=1:A+30
G(A+i)=0;
end
for i=1:A
G(2*A+30+i)=Y(i);
end
yy=fliplr(Y);
w=conv(yy,G)
plot(w)
26
Programa con el cual se implementa el algoritmo de Baum-Welch en el DSP.
** File: baumwelch.c
**
Proposito: Estimar los parametros del algoritmo
**
#include <stdio.h>
#include "nrutil.h"
#include "hmm.h"
#include <math.h>
static char rcsid[] = "$Id: baumwelch.c,v 1.6 1999/04/24 15:58:43 kanungo Exp kanungo $";
#define DELTA 0.001
void BaumWelch(HMM *phmm, int T, int *O, double **alpha, double **beta,
double **gamma, int *pniter,
double *plogprobinit, double *plogprobfinal)
{
int i, j, k;
int t, l = 0;
double logprobf, logprobb, threshold;
double numeratorA, denominatorA;
double numeratorB, denominatorB;
double ***xi, *scale;
double delta, deltaprev, logprobprev;
deltaprev = 10e-70;
27
xi = AllocXi(T, phmm->N);
scale = dvector(1, T);
ForwardWithScale(phmm, T, O, alpha, scale, &logprobf);
*plogprobinit = logprobf; /* log P(O |intial model) */
BackwardWithScale(phmm, T, O, beta, scale, &logprobb);
ComputeGamma(phmm, T, alpha, beta, gamma);
ComputeXi(phmm, T, O, alpha, beta, xi);
logprobprev = logprobf;
do {
for (i = 1; i <= phmm->N; i++)
phmm->pi[i] = .001 + .999*gamma[1][i];
for (i = 1; i <= phmm->N; i++) {
denominatorA = 0.0;
for (t = 1; t <= T - 1; t++)
denominatorA += gamma[t][i];
for (j = 1; j <= phmm->N; j++) {
numeratorA = 0.0;
for (t = 1; t <= T - 1; t++)
numeratorA += xi[t][i][j];
phmm->A[i][j] = .001 +
.999*numeratorA/denominatorA;
}
denominatorB = denominatorA + gamma[T][i];
for (k = 1; k <= phmm->M; k++) {
numeratorB = 0.0;
28
for (t = 1; t <= T; t++) {
if (O[t] == k)
numeratorB += gamma[t][i];
}
phmm->B[i][k] = .001 +
.999*numeratorB/denominatorB;
}
}
ForwardWithScale(phmm, T, O, alpha, scale, &logprobf);
BackwardWithScale(phmm, T, O, beta, scale, &logprobb);
ComputeGamma(phmm, T, alpha, beta, gamma);
ComputeXi(phmm, T, O, alpha, beta, xi);
delta = logprobf - logprobprev;
logprobprev = logprobf;
l++;
}
while (delta > DELTA); /* if log probability does not
change much, exit */
*pniter = l;
*plogprobfinal = logprobf; /* log P(O|estimated model) */
FreeXi(xi, T, phmm->N);
free_dvector(scale, 1, T);
}
void ComputeGamma(HMM *phmm, int T, double **alpha, double **beta,
double **gamma)
{
29
int i, j;
int t;
double denominator;
for (t = 1; t <= T; t++) {
denominator = 0.0;
for (j = 1; j <= phmm->N; j++) {
gamma[t][j] = alpha[t][j]*beta[t][j];
denominator += gamma[t][j];
}
for (i = 1; i <= phmm->N; i++)
gamma[t][i] = gamma[t][i]/denominator;
}
}
void ComputeXi(HMM* phmm, int T, int *O, double **alpha, double **beta,
double ***xi)
{
int i, j;
int t;
double sum;
for (t = 1; t <= T - 1; t++) {
sum = 0.0;
for (i = 1; i <= phmm->N; i++)
for (j = 1; j <= phmm->N; j++) {
xi[t][i][j] = alpha[t][i]*beta[t+1][j]
*(phmm->A[i][j])
*(phmm->B[j][O[t+1]]);
sum += xi[t][i][j];
}
30
for (i = 1; i <= phmm->N; i++)
for (j = 1; j <= phmm->N; j++)
xi[t][i][j] /= sum;
}
}
double *** AllocXi(int T, int N)
{
int t;
double ***xi;
xi = (double ***) malloc(T*sizeof(double **));
xi --;
for (t = 1; t <= T; t++)
xi[t] = dmatrix(1, N, 1, N);
return xi;
}
void FreeXi(double *** xi, int T, int N)
{
int t;
for (t = 1; t <= T; t++)
free_dmatrix(xi[t], 1, N, 1, N);
xi ++;
free(xi);
}
31
Conclusiones.
La finalizacin del proyecto fue satisfactoria, ya que los resultados obtenidos fueron los esperados, ya que
el programa creado para utilizarse en Matlab realiza tantas iteraciones como sean requeridas, claro esta
que entre mayor sea el nmero de iteraciones el desempeo del programa se va haciendo ms lento, por lo
tanto el obtener un estado estacionario dentro del modelo de Markov, se pueden estimar los posibles
resultados, sin embargo se pierde exactitud en las estimaciones, por lo cual se tiene que desarrollar un
sistema alterno, el que tiene que determinar cual es el mejor nmero de iteraciones que se necesitan para
tener un modelo eficiente. Por lo que el programa hecho para Code composer se hace mas eficiente al
utilizar las opresiones de punto flotante que se realizan dentro del DSP, y a su parecido con las
instrucciones de Turbo C, adems de que su funcionalidad y desarrollo hacen que el ambiente poco
agradable en ocasiones de code composer se vuelva ms agradable, por otra parte se tuvo la oportunidad de
utilizar este programa en conjunto con otras aplicaciones para crear un sistema de reconocimiento de voz,
en el que su desempeo fue bastante aceptable, por lo que se obtiene un sistema optimo el cual gracias al
modelo de mezclas gaussianas tiene un grado de confiabilidad de 90% con un margen de error del 10%.
El modelo de mezclas gaussianas determina los parmetros de aproximacin con los coeficientes cepstrales
que se obtiene en una etapa anterior, por que Existen factores importantes que afectarn el desempeo de
los sistemas de MG, entre ellos se pueden nombrar: la cantidad de sesiones de entrenamiento que efecte
cada locutor; la duracin de las sesiones de verificacin; y la diferencia de condiciones entre las sesiones
de entrenamiento y verificacin. Por su parte, los parmetros seleccionados para establecer los modelos de
los clientes, as como el modelo general, deben ser robustos a las variaciones naturales del locutor. Entre
las caractersticas deseables de los parmetros se pueden nombrar: deben representar en gran medida las
caractersticas inter locutor y en pequea medida las caractersticas intra locutor; deben ser de fcil
extraccin; no deben variar bruscamente en el tiempo; se espera que sean independientes del estado de
salud y/o nimo del locutor; no deben ser conscientemente modificables; y deben ser robustos ante ruido
ambiental o canales de transmisin. La utilizacin de un conjunto adecuado de parmetros, escogido a
partir de estas caractersticas, elevar el desempeo de un sistema de MG. Los modelos ocultos de Markov
constituyen una representacin interesante de la seal de voz en un sistema de verificacin de texto
dependiente. La representacin de la probabilidad de salida con Gaussianas en conjunto con las
probabilidades de transicin descritas por una funcin de distribucin geomtrica y el algoritmo de de-
codificacin de Viterbi, generan un modelo de reconocimiento de patrones razonablemente representativo.
La normalizacin de la verosimilitud obtenida para un cliente mediante la verosimilitud obtenida del
modelo general muestra una reduccin significativa de la tasa de error de verificacin. La utilizacin de
32
esta tcnica ayuda tambin a reducir el problema asociado a variacin del lmite de decisin provocado por
las variaciones intra locutor.
La adicin de ruido ambiente o el ruido introducido por canales de transmisin sobre las seales de voz
utilizados por un sistema de MG, constituyen un problema de gran importancia y de difcil solucin. El
desempeo del sistema caer notablemente al operar en condiciones ruidosas y su diseo, tanto de su etapa
de entrenamiento como en el de test, debe considerar el ruido involucrado. Slo de esta forma el algoritmo
de MG ser robusto al operar en ambientes ruidosos y poco estables.
Bibliografa.
Atal, B. S. Automatic recognition of speaker from their voices. Proceedings of IEEE, 64 (4): 460-475, 1976.
Becerra Yoma, N., McInnes, F, R., Jack, M. A. Improving Performance of Spectral Subtraction in Speech
Recognition using a Model for Additive Noise. IEEE Transactions on speech and audio processing, Vol 6, No.6,
November, pp. 579-582, 1998.
Becerra Yoma, N.; Villar, M. Additive and Convolutional Noise Cancelling in Speaker Verification Using a
Stochastic Weighted Viterbi Algorithm. Session E36b Volume 4 pp. 2845 Eurospeech 2001 Scandinavia.
Becerra Yoma, N. & Villar, M. Speaker Verification in Noise Using a Stochastic Version of the Weighted Viterbi
Algorithm, Programado para publicacin en IEEE Transactions on speech and audio processing, Marzo 2002.
Berouti, M., Schwartz, R., Makhoul, J. Enhancement of speech corrupted by acoustic noise. Proceedings of the
IEEE Conference on Acoustics, speech and signal processing, (4): 208-211, 1979.
Claes, T., Xie, F., Van Compernolle, D. Spectral estimation and normalization for robust speech recognition.
Proceedings of the IEEE International conference on signal processing, 1997-2000, 1996.
Deller, J. R., Proakis, J. G., Hansen, J.H.L. Discrete time processing of speech signal. New York: MacMillan,
1993.
Doddington, G.R. Speaker Recognition Identifying people by their Voices, Proceedings of IEEE, 73(11): 1651-
1664, 1985.
33
Forsyth, M. Semi-continuous Hidden Markov Models for Automatic Speaker Verification PhD. Thesis, The
University of Edinburgh, United Kingdom, 1995.
Furui, S. Cepstral analysis technique for automatic speaker verification. IEEE Transactions on acoustic, speech
and signal processing, 29 (2): 254-277, 1981.
Furui, S. An overview of speaker recognition technology. In: ESCA Workshop on Automatic Speaker
Recognition, Identification and Verification, pp. 1-9, 1994.
Furui, S. Recent advances in speaker recognition, Pattern Recognition Letters, 18: 859-872, 1997.
Hermansky, H., Morgan, N., Bayya, A., Kohn, P. Compensation for the effect of the communication channel in
auditory-like analysis of speech (RASTA-PLP). Proceedings of the Eurospeech, pp 1367-1370, 1991.
Higgins, A., Bahler.,L., Porter, J. Speaker Verifiaction Using Randomized Phrase Prompting. Digital Signal
Processing, 1:89-106, 1991.
Lamel, L. An improved end-point detector for isolated word recognition. IEEE Transactions on acoustic, speech
and signal processing. 29 (4): 777-785, 1981.
LDC, http://www.ldc.upenn.edu, Yoho database, 1994
Matsui, T. & Furui, S. Concatenated phoneme models for text-variable speaker recognition. Proceedings of the
IEEE International conference on acoustic, speech and signal processings, Minneapolis, 2:391-394, 1993.
Openshaw, J.P., Sun, S.P., Mason, J.S. A comparison of composite features under degraded speech in speaker
recognition. Proceedings of the IEEE international conference on acoustics, speech and signal processing, 2:371-
374, 1993.
Sambur, M. R. Selection of acoustic features for speaker identification. IEEE Transactions on acoustics, speech
and signal processing, 23 (2): 176-182, 1975.
Savoji, M. H. A robust algorithm for accurate endpointing of speech signals. Speech Communication. 8: 45-60,
1989.
Soong, F. K. & Rosenberg, A. E. On the use of instantaneous and transitional spectral information in speaker
recognition. IEEE Transactions on acoustic speech and signal processing, 36(6): 871-879, 1988.
Vasegui, S. V. & Milner, B. P. Noise compensation methods for Hidden Markov Model speech recognition in
adverse environments. IEEE Transactions on speech and audio Processing, 5 (1): 11-21, 1997.
34