Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistema de Seguridad Por Reconocimiento de Voz (Tesis de Ingenieria ESIME)
Sistema de Seguridad Por Reconocimiento de Voz (Tesis de Ingenieria ESIME)
TESIS
Que para Obtener el Ttulo de:
Ingeniero en Comunicaciones y Electrnica
PRESENTAN
Prez Badillo Eyra Oxana
Poceros Martnez Fernando
Villalobos Ponce Jos Alexis
ASESORES
M. en C. Jimnez Hernndez Mario
Ing. Patricia Lorena Ramrez Rangel
Mxico, D.F., Septiembre 2013
RESUMEN
RESUMEN
El presente trabajo de tesis se basa en un sistema de reconocimiento de voz que permite
que el usuario grabe una palabra por medio de un micrfono y sta sea reconocida en la
base de datos existente en ese momento. Este tipo de proyectos han sido aceptados
usando metodologas desde la comparacin de plantillas hasta anlisis de espectros en
hogares desde que se tuvo la necesidad de mejorar la seguridad del hogar.
Para poder comprobar que el sistema fuera confiable se hicieron 2 tipos de pruebas; Una
entre los usuarios del hogar tratando de acceder uno con el usuario del otro y otra donde
personas ajenas a las almacenadas en la Base de Datos trataran de acceder. Se pudo
comprobar que el sistema de reconocimiento por voz es confiable haciendo uso de
diferentes mtodos, los cuales limiten la posibilidad de error de identificacin ya sea
entre usuarios almacenados o no, la dificultad ms grande de este proyecto se debi a
que si el usuario cambia su tono de voz el sistema podra no reconocerlo, esto se debe a
que si el usuario dice su contrasea en estado de ebriedad, de tristeza o felicidad su voz
cambia y por consiguiente tambien los parmetros LPC.
INDICE
NDICE
Resumen
ndice
ndice de Figuras
ndice de Tablas
Objetivo General
Objetivos Especficos
Planteamiento del problema
Hiptesis
Justificacin
Pg.
I
II
IV
V
1
1
1
2
2
3
3
3
4
5
6
8
10
11
12
12
12
13
17
18
20
21
21
22
22
22
24
24
25
25
26
II
INDICE
2.4.8. Calculo de la Distancia
2.4.9. Toma de Decisin
26
27
28
31
31
32
32
32
33
33
34
34
34
35
36
38
40
40
46
46
48
49
49
51
53
54
55
57
59
60
Conclusiones
Bibliografa y/o Referencias
Anexos
Anexo1
Programa Completo
Anexo 2
Diagrama de Conexin
Glosario
63
65
66
66
72
73
III
INDICE DE FIGURAS
NDICE DE FIGURAS
Figura 1.1.
Figura 1.2.
Figura 1.3.
Figura 2.1.
Figura 2.2.
Figura 2.3.
Figura 2.4.
Figura 2.5.
Figura 2.6.
Figura 2.7.
Figura 2.8.
Figura 2.9.
Figura 2.10.
Figura 2.11.
Figura 2.12.
Figura 2.13.
Figura 2.14.
Figura 2.15.
Figura 2.16.
Figura 2.17.
Figura 3.1.
Figura 3.2.
Figura 3.3.
Figura 3.4.
Figura 4.1.
Figura 4.2.
Figura 4.3.
Figura 4.4.
Figura 4.5.
Figura 4.6.
Figura 4.7.
Figura 4.8.
Figura 4.9.
Figura 4.10.
Figura 4.11.
Figura 4.12.
Figura 4.13.
Figura 4.14.
Figura 5.1.
6
7
11
13
14
15
16
16
18
21
22
22
23
24
24
25
25
26
26
27
28
29
29
30
32
41
41
42
42
43
43
44
45
45
46
46
47
47
61
IV
INDICE DE TABLAS
NDICE DE TABLAS
Tabla 5.1.
Tabla 5.2.
Tabla 5.3.
Tabla 5.4.
Tabla 5.5.
Tabla 5.6.
Tabla 5.7.
Tabla 5.8.
Tabla 5.9.
Tabla 5.10.
Tabla 5.11.
Tabla 5.12.
Tabla 5.13.
Tabla 5.14.
Tabla 5.15.
Tabla 5.16.
Tabla 5.17.
Tabla 5.18.
Tabla 5.19.
Tabla 5.20.
Tabla 5.21.
Tabla 5.22.
Tabla 5.23.
Tabla 5.24.
48
48
49
49
50
50
51
51
52
53
53
54
55
55
55
55
56
57
57
58
58
61
62
62
OBJETIVOS
OBJETIVO GENERAL
Disear un sistema de seguridad para el hogar que funcione en base al reconocimiento
de voz.
OBJETIVOS ESPECFICOS
a) Aplicar mtodos acsticos, matemticos y fsicos de la voz para identificar y reconocer
a los dueos del hogar.
b) Analizar la transmisin, aplicacin y manipulacin de las seales de voz para poderlas
utilizar en el sistema de seguridad
c) Aplicar un software que funcione como interfaz con el usuario y que adems realice
las comparaciones y clculos necesarios para el reconocimiento de voz, en este caso se
us MATLAB.
OBJETIVOS
HIPOTESIS
Al implementar un sistema de seguridad en el hogar por reconocimiento de voz en
MATLAB la seguridad ser mejor, eficaz y barata a largo plazo haciendo uso de los
mtodos de cuantificacin de la seal de voz con ayuda de los coeficientes LPC y
Cepstrum.
Se har uso del software MATLAB para desarrollar e implementar el reconocedor de voz,
debido a que se est familiarizado con l y es mejor y ms preciso que otros.
JUSTIFICACION
Debido a la inseguridad actual que se presenta en la Ciudad de Mxico se realizara un
sistema de seguridad para el hogar utilizando la voz, con la finalidad de proponer a los
habitantes de la Ciudad un sistema capaz de resguardar su hogar.
Principios 1970's:
Se produce el 1er Producto de reconocimiento de voz, el VIP100de
ThresholdTechnology Inc. (utilizaba un vocabulario pequeo, dependiente del locutor, y
reconoca palabras discretas). Gana el U.S. NationalAward en 1972.
Luego:
Nace el inters de ARPA del U.S. Department of Defense, y gracias al lanzamiento de
grandes proyectos de investigacin y financiamiento por parte del gobierno se precipita
la poca de la inteligencia artificial.
El proyecto financiado por ARPA busca el reconocimiento de habla continua, de
vocabulario grande. Impulsa que los investigadores se enfoquen al entendimiento del
habla.
Los sistemas empiezan a incorporar mdulos de:
80's a 90's:
Surgen los sistemas de vocabulario amplio, que ahora son la norma. (Ms de1000
palabras). Adicionalmente bajan los precios de estos sistemas.
Empresas importantes actualmente:
Philips
Lernout&Hauspie
SensoryCircuits
DragonSystems
Speechworks
Vocalis
Dialogic
Novell
Microsoft
NEC, Siemens, Intel (apoyo / soporte tcnico), entre otros.
[3]
1.3.1.
Articulacin
Garganta: Contiene las cuerdas vocales, cuya vibracin produce los fonemas
"hablados".
Puntos de articulacin
Dientes
Puente alveolar (puente seo atrs de los dientes superiores)
Paladar duro
Paladar suave o velum
Articuladores
Labios
Lengua
[1]
Frecuencia y amplitud
Todos los sonidos causan movimientos entre las molculas del aire. Algunos sonidos,
tales como los que produce una cuerda de guitarra, producen patrones regulares y
prolongados de movimiento del aire. Los patrones de sonidos ms simples son los
sonidos puros (pure tones), y se pueden representar grficamente por una onda sinoidal.
Frecuencia: Nmero de vibraciones (ciclos) del tono por segundo 100 por segundo = 100
ciclos/segundo = 100 Hz.
Tonos altos = Mayor frecuencia
Tonos bajos = Menor frecuencia
El volumen de un sonido refleja la cantidad de aire que es forzada a moverse. Se
describe y representa como amplitud de la onda y se mide en decibeles dB.
[2]
Resonancia
La resonancia se define comnmente como la habilidad que tiene una fuente vibrante de
sonido de causar que otro objeto vibre gracias a ella.
La mayora de los sonidos incluyendo del habla tienen una frecuencia dominante llamada
frecuencia fundamental tambin conocida como pitch (tono) que se combina con
frecuencias secundarias en el habla, la frecuencia fundamental es la velocidad a la que
vibran las cuerdas vocales al producir un fonema sonoro.
[1]
10
11
12
Adaptacin de Velocidad
Robustez
13
Muestreo
14
Cuantizacin
Cuantizacin uniforme
Cuantizacin no uniforme
Cuantizacin logartmica
Cuantizacin vectorial
15
Cuantificacin uniforme
Cuantificacin no uniforme
16
Cuantificacin logartmica
Las seales de voz pueden tener un rango dinmico superior a los 60 dB, por lo que
para conseguir una alta calidad de voz se deben usar un elevado nmero de niveles de
reconstruccin. Sin embargo, interesa que la resolucin del cuantificador sea mayor en
las partes de la seal de menor amplitud que en las de mayor amplitud. Por tanto, en la
cuantificacin lineal se desperdician niveles de reconstruccin y, consecuentemente,
ancho de banda. Esto se puede mejorar incrementando la distancia entre los niveles de
reconstruccin conforme aumenta la amplitud de la seal.
Para evitar desperdicio de niveles de reconstruccin y de ancho de banda se utiliza un
mtodo sencillo para mejorar el incremento de la distancia entre los niveles de
reconstruccin conforme aumenta la amplitud de la seal. Para conseguir esto se hace
pasar la seal por un compresor logartmico antes de la cuantificacin. Esta seal
comprimida puede ser cuantificada uniformemente. A la salida del sistema la seal pasa
por un expansor. A esta tcnica se le llama compresin.
Cuantificacin vectorial
[8]
17
Medicin de caractersticas.
18
R(t) T(t)
Se busca una funcin de alineamiento w(t) que mapee R y las partes correspondientes
de T.
El criterio de correspondencia es la minimizacin de una medida de distancia D(T,R)
Por lo tanto se busca una w(t) tal que mstica d(T(t), R(W(t))) funcin de ponderacin
deriva de w(t)
D(T,R)= min INTEGRAL
dw(t)
Se buscan una alineacin en tiempo "optima" a travs de una curva que relacione el eje
de tiempo m de R al eje de tiempo del patrn T.
m=w(n)
Restricciones w(I)=1
W(NT)=NR
Para determinar el tipo de la alineacin se propusieron diversas tcnicas:
1.
2.
3.
4.
Se debe encontrar una medida que indique qu tan similares con los patrones R y T.
Para ello es necesario alinearlos de alguna forma.
[5,8]
Reglas de decisin
El candidato con la menor distancia o una lista ordenada por distancias (de menos a
mayor) Se usa cuando se tienen varios patrones de referencia para cada cantidad R.
19
( )
( )
( )
[5]
20
21
Muestreo
El muestreo es para transformar una seal analgica o seal contina a una seal digital
o discreta, es decir de la seal original (analgica) se toman muestras cada determinado
tiempo y se hace una copia de su valor en tiempos definidos, de esta forma surge la
frecuencia de muestreo que es la cantidad de muestras que se tienen de una seal en
una unidad de tiempo y se mide en Hz (ciclos por segundo).
22
Resolucin o Cuantificacin
[4]
[3,4]
23
2.4.3. Pre-procesamiento
[3]
24
[8]
2.4.6. Segmentacin
La segmentacin consiste en cortar la seal en segmentos de anlisis. La seal de voz
es asumida como estacionaria en estos segmentos.
Durante la segmentacin los segmentos son guardados cada uno como la columna de
una matriz, para el posterior procesamiento de la seal de voz.
Para el proceso una ventana de Hamming de 30ms es aplicada a la seal de voz,
enfatizada previamente con el filtro de pre-nfasis. Con un desplazamiento tpico 10ms
entre cada ventaneo.
[9]
25
[9]
(2.5)
Figura 2.16. Formula que muestra el clculo realizado para obtener las distancias
26
En el algoritmo primero se define el tamao del mayor vector, y se calcula con la formula
anterior la distancia entre el vector de la palabra a reconocer y cada uno de los vectores
de referencia en la base de datos, luego se hacen las condiciones para obtener la menor
distancia, con lo cual se encuentra la palabra identificada en la base de datos.
Figura 2.17. Diagrama que muestra el proceso para obtener y comparar las distancias
27
28
29
30
Primeramente para la base de datos se realizan 5 grabaciones del usuario, las cuales se
hicieron con un micrfono y en formato .WAV a travs de MATLAB a 22 KHz de
muestreo y 16 bits de resolucin.
Posteriormente se hizo el filtro que elimina el ruido y aumentaba su energa para que las
grabaciones sean parecidas a sus parmetros (Normalizacin).
Al tener las 5 muestras sin ruido y normalizadas se obtiene el promedio de estas para
tener una nica seal promediada con la seal de voz del usuario.
Los coeficientes LPC se obtienen con una funcin dentro de MATLAB, el nmero de
coeficientes que se utilizan son 25, dado por la siguiente ecuacin:
(
.(3.1)
Con esto se obtienen vectores de 25 coeficientes LPC para cada una de las seales, que
se comparan en distancia para obtener la relacin entre la seal grabada y las 3 seales
guardadas en la base de datos.
La medida de la distancia se realiza elemento por elemento uno a uno, entre la seal de
voz grabada y alguna de la de la base de datos.
Al final de la medicin de las distancias se suman los coeficientes que tengan menos del
rango dado por el programa para dar el nmero exacto de coeficientes LPC en que se
parecen las seales.
Este procedimiento se realiza 3 veces comparando la seal grabada con cada una de las
bases de datos.
La toma de decisin se hace en base a que la seal grabada debe tener como mnimo
cierto nmero de coeficientes LPC, que se parecen a la seal almacenada en la base de
datos de ese usuario, si alguna de esas relaciones supera ese mnimo se da por hecho
que la voz grabada es de ese usuario, por lo cual el programa reconoce a la persona y le
31
4.2. Micrfono
Las caractersticas principales del Micrfono, con el cual la adquisicin de la seal de
voz es posible, son las siguientes:
Programa:
%Programa de Grabaciones de la Base de Datos
Fs = 22050;
% Frecuencia de Muestreo
s = wavrecord(2*Fs, Fs, 1);
wavwrite(s,Fs,16,'F1.wav')
% Guarda .wav seal grabada
32
Programa:
%Programa de Grabaciones de la Base de Datos (Normalizacin y eliminacin de ruido)
Fs = 22050;
s = wavrecord(2*Fs, Fs, 1);
wavwrite(s,Fs,16,'F1.wav')
lon = length(s);
d = max(abs(s));
s = s/d;
prom = sum(s.*s)/lon;
umbral = 0.02;
y = [0];
% Frecuencia de Muestreo
% Guarda .wav seal grabada
% Longitud del vector
% Obtiene el valor ms Grande
% Normaliza la seal
% Promedio seal entera
% 2% de la energa promedio
for i = 1:400:lon-400
% Ventaneo cada 10ms
seg = s(i:i+399);
% Segmentos
e = sum(seg.*seg)/400;
% Promedio de cada segmento
% Si el promedio energtico es mayor que la seal completa por el valor umbral
if( e> umbral*prom)
% Almacena en (y) sino es eliminado como espacio en blanco
y = [y;seg(1:end)];
end;
end;
% Guarda .wav seal normalizada y sin ruido
wavwrite(y,Fs,16,'F1b.wav')
plot(y)
% Grafica seal Normalizada
sound(y,22050)
% Reproduce Seal Normalizada
4.3.3. Promedio
Se procede a grabar 5 veces el comando a reconocer lo cual genera 5 grabaciones
distintas, las cuales se deben promediar para obtener una sola seal que caracterizara el
comando grabado.
Una vez ms se debe Normalizar a la seal.
33
4.4. Desarrollo
4.4.1. Adquisicin
La adquisicin de la seal ocurre dentro del programa en la funcin de GRABAR en l se
adquieren seales de voz en archivos WAV con Frecuencia de muestreo de 22Khz, a 16
bits de resolucin, mono canal y duracin de 2 segundos.
34
% Frecuencia de Muestreo
% Guarda .wav seal grabada
d = max(abs(s));
s = s/d;
prom = sum(s.*s)/lon;
umbral = 0.02;
y = [0];
% Frecuencia de Muestreo
% Guarda .wav seal grabada
% Longitud del vector
for i = 1:400:lon-400
% Ventaneo cada 10ms
seg = s(i:i+399);
% Segmentos
e = sum(seg.*seg)/400;
% Promedio de cada segmento
% Si el promedio energtico es mayor que la seal completa por el valor umbral
if( e> umbral*prom)
% Almacena en (y) sino es eliminado como espacio en blanco
y = [y;seg(1:end)];
end;
end;
% Guarda .wav seal normalizada y sin ruido
wavwrite(y,Fs,16,'Limpia.wav')
plot(y)
% Grafica seal Normalizada
sound(y,22050)
% Reproduce Seal Normalizada
35
[4]
36
d2(z)=1;
% Coloca un 0 en el vector si es lejano a Oxana
else d1(z)=0;
end
end
% Contador que almacena el nmero de coeficientes que se parecen
cont0=0;
for i = 1:25
% Suma todos los valores de la cadena
cont0 = d0(i)+cont0;
end
cont0
cont1=0;
for j = 1:25
cont1 = d1(j)+cont1;
end
cont1
cont2=0;
for x = 1:25
cont2 = d2(x)+cont2;
end
cont2
37
38
39
40
41
Figura 4.4. Inicio de la GUI con su ventana lateral izquierda de seleccin de objetos
Una vez tenindola la plantilla de la GUIDE se ajusta el tamao, se colocan los botones,
graficas, textos, imgenes, graficas, etc. Con los diferentes botones que se tienen al lado
izquierdo de la pantalla, cuando se selecciona el botn y se coloca en el lugar que se
requiere, se ajusta el tamao y color de este.
42
43
44
Botn Cerrar Sesin: Este botn se ocupa para cerrar la sesin y volver al inicio
de la interfaz una vez que el usuario reconocido ha realizado alguna accin, este
botn limpia las variables utilizadas y reinicia el programa general.
Botn Salir: El botn salir apaga y cierra la interfaz borrando todas las variables
utilizas.
45
Men Funciones Del Sistema: Dentro de este men, estn las opciones de
Abrir Puerta, Cerrar Puerta, Apagar Luz y Cerrar Luz, se pueden agregar ms
opciones depende de las necesidades del usuario, su funcin es indicarle al
programa que es lo que el usuario desea hacer.
Figura 4.11. Men de Funciones del Sistema que despliega las acciones que se puede
realizar
Figura 4.12. Ventana que aparece despus de seleccionar la Accin de Abrir Puerta
4.5. Implementacin
Para la implementacin de sistema de reconocimiento de voz, se fabric una maqueta
que simulara un Hogar, la cual tendra una puerta y un foco.
Se realizaron algunos circuitos para poder hacer que la puerta se moviera con ayuda de
un motor elctrico y que el foco se prendiera y apagara, estos circuitos se pueden
encontrar dentro de Anexos en Anexo 2.
Para la conexin entre la computadora (la interfaz grfica) y los circuitos de la maqueta
se utiliz la tarjeta de adquisicin de datos de National Instruments la cual puede ser
reconocida por MATLAB.
46
47
Cont 0
11
13
12
11
10
9
Cont 1
20
18
19
21
15
19
Cont 2
9
13
9
10
12
12
Cont 0
14
14
12
10
9
11
Cont 1
19
18
18
22
12
19
Cont 2
11
12
8
9
13
12
48
Cont 0
17
18
16
17
10
17
Cont 1
19
18
18
22
12
19
Cont 2
14
16
10
17
19
12
El lugar que se escogi para las pruebas generales fue en donde se obtuvieron mejores
resultados, en este caso en lugares con niveles de ruido entre 62.8-69.4 dBA.
Cont 0
12
14
14
10
9
11
13
9
10
11
11
14
9
9
11
12
10
12
14
14
11.45
Cont 1
19
18
18
22
12
19
17
19
19
19
13
19
21
17
19
17
13
16
18
15
17.5
Cont 2
11
13
8
11
13
12
18
10
7
9
8
11
11
12
12
12
9
11
10
9
10.85
49
Cont 0
9
9
13
12
11
9
13
11
9
14
8
12
10
8
14
10
10
11
10
8
10.55
Cont 1
11
12
13
14
17
9
16
11
14
15
10
8
8
10
18
15
8
10
11
13
12.15
Cont 2
8
6
9
9
9
9
8
9
9
10
6
10
9
4
9
9
10
10
11
9
8.65
Cont 0
14
12
12
14
16
Cont 1
18
14
16
12
16
Cont 2
10
9
8
13
10
Oxana
13
13
10
Oxana
Oxana
Oxana
Oxana
Oxana
Oxana
17
12
15
14
13
14
16
12
18
14
16
10
9
9
7
12
9
11
Oxana
Oxana
13
12
15
20
12
12
Oxana
11
19
11
Oxana
Oxana
19
15
18
17
10
12
Oxana
Oxana
10
6
14
19
11
11
Oxana
Promedio
15
13.35
13
15.5
8
10.2
50
Cont 0
Cont 1
Cont 2
Alexis
Alexis
14
18
11
9
12
9
Alexis
Alexis
15
18
15
15
6
9
Alexis
Alexis
14
18
17
13
11
11
Alexis
17
12
Alexis
Alexis
Alexis
19
15
18
17
13
13
8
6
9
Alexis
Alexis
10
16
8
13
7
8
Alexis
Alexis
14
13
8
12
8
7
Alexis
15
15
Alexis
Alexis
14
14
15
14
13
6
Alexis
Alexis
16
13
13
13
8
10
Alexis
19
15
Promedio
15.5
13.05
8.55
Cont 0
17
Cont 1
13
Cont 2
11
Fernando
16
10
Fernando
Fernando
14
14
12
8
12
10
Fernando
Fernando
17
12
13
10
8
9
Fernando
Fernando
Fernando
Fernando
Fernando
11
14
11
15
15
10
13
6
8
9
10
12
11
10
11
51
14
16
17
14
13
12
13
14
12
12
9
10
Fernando
13
10
11
Fernando
Fernando
15
14
11
12
12
10
Fernando
12
10
Fernando
Promedio
11
14.1
9
10.8
12
10.1
Cont 0
Cont 1
Cont 2
Oxana
15
14
10
Oxana
Oxana
14
17
14
15
6
13
Oxana
Oxana
16
20
11
10
7
8
Oxana
14
14
10
Oxana
Oxana
15
17
12
16
11
12
Oxana
Oxana
14
14
17
15
11
9
Oxana
Oxana
15
15
10
17
11
12
Oxana
Oxana
Oxana
18
15
15
18
13
17
11
10
11
Oxana
Oxana
13
14
14
10
11
9
Oxana
13
14
Oxana
Oxana
Promedio
12
11
14.85
12
11
13.7
10
9
10
Con los Resultados Obtenidos, se determin que el Usuario Fernando era reconocido de
cualquier forma cuando se grababa su nombre teniendo unas incidencias con el Usuario
Alexis, por otro lado cuando se grababa el nombre de otro usuario el reconocedor
relacionaba su voz aunque el comando fuera errneo.
52
Cont 0
11
10
12
16
11
14
9
11
16
11
13
11
10
12
12
13
12
11
11
13
11.95
Cont 1
13
19
17
18
15
18
16
15
20
16
17
15
20
13
18
17
20
15
16
18
16.8
Cont 2
12
11
12
12
9
12
13
15
11
11
14
14
13
12
7
10
9
12
11
14
11.7
Cont 0
9
Cont 1
9
Cont 2
10
Fernando
Fernando
Fernando
10
11
8
13
11
10
8
7
8
Fernando
Fernando
Fernando
Fernando
Fernando
Fernando
Fernando
Fernando
Fernando
Fernando
Fernando
Fernando
Fernando
Fernando
Fernando
Fernando
Promedio
10
12
9
11
9
10
8
11
5
9
10
13
6
8
11
7
9.35
11
14
9
12
16
17
10
17
7
10
12
14
10
10
10
11
11.65
6
10
12
10
8
11
5
7
7
6
6
8
8
10
10
7
8.2
53
Cont 0
8
Cont 1
14
Cont 2
10
Oxana
Oxana
9
10
12
11
11
10
Oxana
Oxana
15
9
12
11
11
15
Oxana
Oxana
10
8
13
11
11
9
Oxana
14
10
Oxana
Oxana
Oxana
Oxana
10
9
11
10
13
8
16
12
12
8
14
11
Oxana
Oxana
Oxana
Oxana
Oxana
Oxana
Oxana
9
9
12
4
10
8
8
12
11
14
13
15
12
10
11
10
11
11
8
11
11
Oxana
Promedio
7
9.25
16
12.5
8
10.65
Con los Resultados Obtenidos, se determin que el Usuario Oxana era reconocido de
cualquier forma cuando se grababa su nombre teniendo unas incidencias con el Usuario
Fernando, por otro lado cuando se grababa el nombre de otro usuario el reconocedor
relacionaba su voz aunque el comando fuera errneo.
Alexis
Los promedios que se obtuvieron se utilizaron para obtener el rango que debera de
tener cada contador para el reconocimiento adecuado del individuo y se obtuvo que para
el usuario Alexis: Cont0 estar entre 13 y 15, Cont1 estar entre 16 y 25 mientras que
Cont2 estar entre 9 y 13.
54
Cont 0
11.45
10.55
13.35
Cont 1
17.5
12.15
15.5
Cont 2
10.85
8.65
10.2
Fernando
Se obtuvo que para el usuario Fernando: Cont0 estar entre 11 y 25, Cont1 estar entre
9 y 11 mientras que Cont2 estar entre 7 y 10.
Tabla 5.14. Promedios Obtenidos para Fernando
Palabra
Alexis
Fernando
Oxana
Cont 0
15.5
14.1
14.85
Cont 1
13.05
10.8
13.7
Cont 2
8.55
10.1
10
Oxana
Se obtuvo que para el usuario Oxana: Cont0 estar entre 7 y 10, Cont1 estar entre 11
y 16 mientras que Cont2 estar entre 7 y 14.
Tabla 5.15. Promedios Obtenidos para Oxana
Palabra
Alexis
Fernando
Oxana
Cont 1
11.95
9.35
9.25
Cont 2
16.8
11.65
12.5
Cont 3
11.7
8.2
10.65
Id. Oxana
Id. Fernando
Id. Alexis
No identificado
X
X
X
X
X
X
X
X
55
X
X
X
X
X
X
X
X
X
X
Id. Oxana
Id. Fernando
Id. Alexis
No identificado
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
56
Id. Oxana
Id. Fernando
Id. Alexis
No identificado
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Id. Oxana
Id. Fernando
Id. Alexis
No identificado
X
X
X
X
X
X
X
X
X
X
X
X
X
57
X
X
X
X
X
Id. Oxana
Id. Fernando
Id. Alexis
No identificado
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Id. Oxana
Id. Fernando
Id. Alexis
No identificado
X
X
X
X
X
X
X
X
X
X
X
X
58
X
X
X
X
X
X
El sistema ser seguro porque los coeficientes que se utilizaran en el software no podrn
ser alterados por ninguna persona, debido a que cada uno contiene sus propios
coeficientes inalterables en una base de datos establecida por el diseador en la captura
de voz.
59
60
cuenta
simple
Numero de archivos:
45
Cuenta total
499
medio
complejo
6
5
6
10
10
18
15
450
10
61
Costo
1200
4000 -11000
2500
Depende del rea, lugar y la
complejidad del diseo y
construccin
500
1000
Total aproximado:
$ 20,000
62
CONCLUSIONES
CONCLUSIONES
La seguridad de un hogar es la principal preocupacin como habitante de la Cd. de
Mxico, Un sistema de seguridad por reconocimiento de voz puede no solo aumentarla
si no tambin tener la tranquilidad de saber quin acceda al hogar.
En un sistema de reconocimiento de voz, la toma de decisin es difcil debido a factores
como la similitud de las palabras, el nivel de ruido del lugar donde se realizan las
grabaciones y los estados de nimo del usuario.
El sistema de seguridad por voz ser ms confiable ya que pasara por diversos mtodos
siendo el ms importante la prediccin lineal, obtencin de parmetros llamados
coeficientes LPC/Cepstrum y condiciones implementadas por el programador,
disminuyendo la probabilidad de error al reconocer al usuario; Aunque un aspecto
importante a considerar y que el programador no puede corregir es si el usuario dice la
palabra en un tono de extrema alegra o extrema tristeza ya que esto modifica las
caractersticas de su voz afectando los coeficientes LPC como a su vez lo hara si el
usuario est en estado alcohlico o inconveniente.
Para corregir este problema se propuso tener ms bases de datos del mismo usuario
pero en diferentes estados de nimo, as el usuario antes de identificarse podra indicar
su estado de nimo y el programa relacionara su grabacin en el momento, con la base
de datos asignada para ese usuario en ese estado de nimo (Comparacin de
coeficientes LPC en diferentes estados de nimo), esto podra facilitar en gran medida el
acceso a otros usuarios es por esa razn por la cual que no se implement esta
solucin, y se opt por que el usuario grabara de forma correcta y como lo realizo en las
grabaciones cuando se dise su base de datos.
La seguridad por voz ir en aumento al paso de las diferentes etapas del sistema como
filtrado, normalizacin, obtencin de parmetros y pitch, tecnologas que vallan
mejorando la confiabilidad y velocidad en la toma de decisin. Estas a su vez ayudaran
en la implementacin de sistemas de seguridad eficientes.
La opcin de usar MATLAB como herramienta principal permiti realizar una interfaz
para un sistema de reconocimiento de voz de uso fcil, eficaz y con capacidad de
ejecutar operaciones de procesamiento de seales llamada GUI.
El sistema de Reconocimiento de voz ampliar en gran medida la seguridad del hogar y
ser la base de futuras implementaciones de seguridad total automatizada para el hogar,
incluyendo control de ventanas, luces, puertas, plomera, instalaciones de gas, etc.
Haciendo de este un proyecto base de Domtica.
Se aprendi que para realizar un reconocedor de voz, se necesitan muchas partes tanto
software como hardware que realicen cada una de sus funciones de manera adecuada,
siendo el software el de mayor importancia, gracias a este se pueden programar los
algoritmos para poder reconocer al usuario, pero el hardware tambin tiene su
63
CONCLUSIONES
importancia debido a que al usar un micrfono mejor se puede obtener una mejor calidad
en la seal adquirida y por lo tanto dejar que el software se encargue slo del
procesamiento de la seal y no tenga que desperdiciar tiempo en limpiarla, filtrarla y
normalizarla.
Se tuvieron algunos problemas durante la realizacin del proyecto, los cuales fueron los
siguientes:
El problema relacionado con la comparacin entre la seal de voz adquirida y la base de
datos de cada usuario (Coeficientes LPC), debido a que se tena un alto procesamiento
de datos que se tuvo que limitar para el rpido funcionamiento de este.
La solucin para este problema fue colocar contadores que indicaran el nmero de
coeficientes LPC que se parecieron a los coeficientes LPC grabados en la Base de datos
de cada usuario y el nmero ms cercano al mximo de Coeficientes LPC ser el
usuario identificado, para el software es ms fcil comparar un nmero contra otro, que
un vector de miles de nmeros contra otro vector de miles de nmeros, no se
comprometi la integridad o seguridad del reconocimiento slo se agiliz el
procesamiento del software para que al usuario le pareciera ms agradable y fluido.
Otro problema que se encontr fue que al aumentar la cantidad de usuarios el programa
sera ms extenso y la similitud entre cada usuario y sus coeficientes LPC podra
converger en un punto, causando esto fallas en el sistema.
Este problema se pudo solucionar programando los lmites de relacin de cada contador
en relacin con los dems hacindolos ms estrictos para que el software no pueda dar
acceso a algn usuario si no lo ha reconocido de manera adecuada.
De esta manera se pudieron solucionar los problemas que surgieron durante la
realizacin del proyecto, los cuales funcionaron correctamente y no han presentado
fallas o alteraciones que afecten el desempeo del proyecto.
64
Cassidy,
Steve.Techniques
in
Speech
Acoustics,
65
ANEXOS
ANEXOS
Anexo 1. Programa Completo
% INICIO DE LA GUI (NO EDITAR)
functionvarargout = recvoc(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @recvoc_OpeningFcn, ...
'gui_OutputFcn', @recvoc_OutputFcn, ...
'gui_LayoutFcn', [] ,...
'gui_Callback', []);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
ifnargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% INICIALIZA LA GUI
functionrecvoc_OpeningFcn(hObject, eventdata, handles, varargin)
ID=0;
saveID.mat;
handles.output = hObject;
guidata(hObject, handles);
% SALIDAS DE LA GUI
functionvarargout = recvoc_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
% BOTON GRABAR
functiongrabar_Callback(hObject, eventdata, handles)
Fs = 22050;
s = wavrecord(2*Fs, Fs, 1);
wavwrite(s,Fs,16,'Prueba.wav')
lon = length(s);
d = max(abs(s));
s = s/d;
prom = sum(s.*s)/lon;
% Frecuencia de Muestreo
% Guarda .wav seal grabada
% Longitud del vector
% Obtiene el valor ms Grande
% Normaliza la seal
% Promedio seal entera
66
ANEXOS
umbral = 0.02;
y = [0];
for i = 1:400:lon-400
seg = s(i:i+399);
e = sum(seg.*seg)/400;
if( e> umbral*prom)
seal completa por el valor umbral
y = [y;seg(1:end)];
espacio en blanco
end;
end;
% 2% de la energa promedio
% BOTON IDENTIFICAR
functionIdentificar_Callback(hObject, eventdata, handles)
% Lee el archivo De Promedio Fernando
[k0,Fs,bits] = wavread('FProm.wav');
% Lee el archivo De Promedio Alexis
[k1,Fs,bits] = wavread('AProm.wav');
% Lee el archivo De Promedio Oxana
[k2,Fs,bits] = wavread('EProm.wav');
% Lee el archivo que se grabo en la GUI
[kx,Fs,bits] = wavread('Limpia.wav');
loadID.mat;
% Obtiene el numero de Coeficientes
num = (Fs/1024)+3;
% Obtiene los coeficientes del filtro LPC de Fer
W0 = lpc(k0,num);
% Obtiene los coeficientes del filtro LPC de Alexis
W1 = lpc(k1,num);
% Obtiene los coeficientes del filtro LPC de Oxana
W2 = lpc(k2,num);
% Obtiene los coeficientes del filtro LPC de La Grabacin de GUI
Wx = lpc(kx,num);
67
ANEXOS
% Vector que contendr las distancias entre Fer y la grabacin
d0=0;
for z=1:25
% Obtiene la distancia cuadrtica media
d0(z)=sqrt((W0(z)-Wx(z))*(W0(z)-Wx(z)));
if d0(z)<= 0.15
% Coloca un 1 en el vector si es prximo a Fer
d0(z)=1;
% Coloca un 0 en el vector si es lejano a Fer
else d0(z)=0;
end
end
% Vector que contendr las distancias entre Alexis y la grabacin
d1=0;
for z=1:25
% Obtiene la distancia cuadrtica media
d1(z)=sqrt((W1(z)-Wx(z))*(W1(z)-Wx(z)));
if d1(z)<= 0.15
% Coloca un 1 en el vector si es prximo a Alexis
d1(z)=1;
% Coloca un 0 en el vector si es lejano a Alexis
else d1(z)=0;
end
end
% Vector que contendr las distancias entre Oxana y la grabacin
d2=0;
for z=1:25
% Obtiene la distancia cuadrtica media
d2(z)=sqrt((W2(z)-Wx(z))*(W2(z)-Wx(z)));
if d2(z)<= 0.15
% Coloca un 1 en el vector si es prximo a Oxana
d2(z)=1;
% Coloca un 0 en el vector si es lejano a Oxana
else d2(z)=0;
end
end
% Contador que almacena el numero de coeficientes que se parecen
cont0=0;
for i = 1:25
% Suma todos los valores de la cadena
cont0 = d0(i)+cont0;
end
cont0
cont1=0;
for j = 1:25
cont1 = d1(j)+cont1;
end
68
ANEXOS
cont1
cont2=0;
for x = 1:25
cont2 = d2(x)+cont2;
end
cont2
if (cont0 > 17)
op = length(k0);
% Prediccin de la Seal por filtro
predic = filter([0 -W0(2:end)],1,k0);
error = k0 - predic;
% Error
% Vector de Autocorrelacion
Rsw = xcorr(k0);
R = Rsw(op:op+num);
% Obtencin R(0)
G = sqrt(sum(W0.*R'));
% Obtencin G
% Obtencin de la envolvente H(z)
envolvente = abs(G./fft(W0,op));
% Transformada de Fourier de la seal original
SW = abs(fft(k0,op));
semilogy(SW(1:(op/2)),'g');
holdon;
semilogy(envolvente(1:(op/2)),'b');
holdoff;
title('Usuario Fernando Poceros','Fontname','Trebuchet
MS','Fontangle','Italic','Fontweight','Bold','Fontsize',20,'color',[1 1 1])
xlabel('Frecuencia','Fontname','Trebuchet
MS','Fontangle','Italic','Fontweight','Bold','Fontsize',15,'color',[1 1 1])
ylabel('Nivel de
voz','Fontname','Dotum','Fontangle','Italic','Fontweight','Bold','Fontsize',15,'color',[1 1 1])
msgbox('Identificado: Fer');
ID=1;
saveID.mat;
elseif (cont1 > 17)
op = length(k1);
% Prediccin de la Seal por filtro
predic = filter([0 -W1(2:end)],1,k1);
error = k1 - predic;
% Error
% Vector de Autocorrelacion
Rsw = xcorr(k1);
R = Rsw(op:op+num);
% Obtencin R(0)
G = sqrt(sum(W1.*R'));
% Obtencin G
% Obtencin de la envolvente H(z)
envolvente = abs(G./fft(W1,op));
% Transformada de Fourier de la seal original
SW = abs(fft(k1,op));
semilogy(SW(1:(op/2)),'g');
holdon;
semilogy(envolvente(1:(op/2)),'b');
holdoff;
69
ANEXOS
title('Usuario Alexis Villalobos','Fontname','Trebuchet
MS','Fontangle','Italic','Fontweight','Bold','Fontsize',20,'color',[1 1 1])
xlabel('Frecuencia','Fontname','Trebuchet
MS','Fontangle','Italic','Fontweight','Bold','Fontsize',15,'color',[1 1 1])
ylabel('Nivel de
voz','Fontname','Dotum','Fontangle','Italic','Fontweight','Bold','Fontsize',15,'color',[1 1 1])
msgbox('Identificado: Alexis');
ID=2;
saveID.mat;
elseif (cont2 > 17)
op = length(k2);
% Prediccin de la Seal por filtro
predic = filter([0 -W2(2:end)],1,k2);
error = k2 - predic;
% Error
% Vector de Autocorrelacion
Rsw = xcorr(k2);
R = Rsw(op:op+num);
% Obtencin R(0)
G = sqrt(sum(W2.*R'));
% Obtencin G
% Obtencin de la envolvente H(z)
envolvente = abs(G./fft(W2,op));
% Transformada de Fourier de la seal original
SW = abs(fft(k2,op));
semilogy(SW(1:(op/2)),'g');
holdon;
semilogy(envolvente(1:(op/2)),'b');
holdoff;
title('UsuarioEyraOxana','Fontname','Trebuchet
MS','Fontangle','Italic','Fontweight','Bold','Fontsize',20,'color',[1 1 1])
xlabel('Frecuencia','Fontname','Trebuchet
MS','Fontangle','Italic','Fontweight','Bold','Fontsize',15,'color',[1 1 1])
ylabel('Nivel de
voz','Fontname','Dotum','Fontangle','Italic','Fontweight','Bold','Fontsize',15,'color',[1 1 1])
msgbox('Identificado: Oxana');
ID=3;
saveID.mat;
elsemsgbox('No Identificado!!!!!');
end
70
ANEXOS
ans=questdlg('Desea salir del programa?','SALIR','Si','No','No');
ifstrcmp(ans,'No')
guidata(hObject, handles);
return;
end
clear,clc,closeall
% GRAFICA DE TRABAJO
functionGrafica_CreateFcn(hObject, eventdata, handles)
handles.Grafica=1:1:882;
handles.h = plot(handles.Grafica,zeros(882,1));
title('Grafica de Voz','Fontname','Trebuchet
MS','Fontangle','Italic','Fontweight','Bold','Fontsize',20,'color',[1 1 1])
xlabel('Tiempo','Fontname','Trebuchet
MS','Fontangle','Italic','Fontweight','Bold','Fontsize',15,'color',[1 1 1])
ylabel('Nivel de
voz','Fontname','Dotum','Fontangle','Italic','Fontweight','Bold','Fontsize',15,'color',[1 1 1])
71
ANEXOS
Anexo 2. Diagrama de Conexin
72
GLOSARIO
GLOSARIO
Algoritmo: Conjunto ordenado y finito de operaciones que permite hallar la solucin de
un problema.
Amplitud: Distancia entre los puntos ms alto y ms bajo de la onda, determina la
intensidad. Es una medida de la variacin mxima del desplazamiento u otra magnitud
fsica que vara peridica o cuasi-peridicamente en el tiempo.
Armnico: En una onda peridica, cualquiera de sus componentes sinusoidales, cuya
frecuencia sea un mltiplo entero de la frecuencia fundamental.
Espectro: Distribucin de la intensidad de una radiacin en funcin de una magnitud
caracterstica, como la longitud de onda, la energa, la frecuencia o la masa.
Filtro: Dispositivo que elimina o selecciona ciertas frecuencias de un espectro elctrico,
acstico, ptico o mecnico, como las vibraciones.
Fonemas: Sonido de la voz
Frecuencia: Nmero de veces que se repite un proceso peridico por unidad de tiempo.
Impedancia: Relacin entre la tensin alterna aplicada a un circuito y la intensidad de la
corriente producida. Se mide en ohm.
Interfaz: Conexin fsica y funcional entre dos aparatos o sistemas independientes.
Ntido: Limpio, terso, claro, puro.
Normalizar: Es el proceso de elaborar, aplicar y mejorar las normas que se aplican a
distintas actividades cientficas, industriales o econmicas con el fin de ordenarlas y
mejorarlas. La normalizacin persigue fundamentalmente tres objetivos:
Simplificacin: se trata de reducir los modelos para quedarse nicamente con los
ms necesarios.
73
GLOSARIO
Segmento: Porcin o parte cortada o separada de una cosa, de un elemento geomtrico
o de un todo.
Sensibilidad: Capacidad de respuesta a muy pequeas excitaciones, estmulos o
causas.
Silencio: El silencio surge cuando no hay sonidos perceptibles, pero en realidad es un
estado mental, porque siempre suena algo, aunque sea muy levemente.
Sonido: Sensacin producida en el rgano del odo por el movimiento vibratorio de los
cuerpos, transmitido por un medio elstico, como el aire.
Timbre: Calidad de los sonidos, que diferencia a los del mismo tono y depende de la
forma y naturaleza de los elementos que entran en vibracin.
Tono: Cualidad de los sonidos, dependiente de su frecuencia, que permite ordenarlos de
graves a agudos.
Transductor: Dispositivo que transforma el efecto de una causa fsica, como la presin,
la temperatura, la dilatacin, la humedad, etc., en otro tipo de seal, normalmente
elctrica.
Ventanas de Haming: En procesamiento de seales, una ventana de Haming es un
zoom de una seal de longitud voluntariamente limitada.
74