Escolar Documentos
Profissional Documentos
Cultura Documentos
Facultad de Ingeniería
Escuela de Ingeniería Mecánica Eléctrica
FACULTAD DE INGENIERÍA
TRABAJO DE GRADUACIÓN
II
UNIVERSIDAD DE SAN CARLOS DE GUATEMALA
FACULTAD DE INGENIERÍA
III
IV
V
VI
VII
VIII
DEDICATORIA
Dedico este trabajo a todas las personas que nunca han dejado de creer,
a las que han hecho historia con su lucha, a las que siempre han estado y a las
que siempre estarán.
IX
AGRADECIMIENTOS A:
X
ÍNDICE GENERAL
2. RECONOCIMIENTO DE VOZ
2.1. Planteamiento del problema………………………………………. 27
2.2. Modelado de la voz………………………………………………… 27
I
2.3. Obtención de información mediante micrófono……………….. 31
2.4. Preprocesado……………………………………………………… 32
2.4.1. Muestreo y cuantificación………………………………..... 32
2.4.2. Eliminación del ruido………………………………………. 35
2.4.3. Filtro de Pre-Énfasis ………………………………………. 36
2.4.4. Segmentación.……………………………………………… 36
2.5. Extracción de características…………………………………… 37
2.5.1. Predicción lineal……………………………………………. 38
2.5.2. Cepstrum……………………………………………………. 41
2.6. Medidas de distancia…………………………………………….. 46
CONCLUSIONES………………………………………………………………. 53
RECOMENDACIONES………………………………………………………… 55
BIBLIOGRAFÍA………………………………………………………………… 57
APÉNDICE……………………………………………………………………… 63
II
ÍNDICE DE ILUSTRACIONES
FIGURAS
1. Patrón omnidireccional………………………………………………... 4
2. Patrón bidireccional………………………………………………........ 5
3. Patrón cardioide………………………………………………………... 5
4. Patrón hipercardioide………………………………………………….. 6
5. Aparato Fonatorio Humano………………………………………........ 10
6. Corte esquemático de la laringe según un plano horizontal………. 11
7. Modelado acústico del tracto vocal………………………………….. 28
8. Modelo de producción de voz………………………………………… 29
9. Modelo de producción de voz basado en LPC……………………... 40
10. Modelo de la técnica Homomórfica………………………………...... 42
11. Modelo Coeficientes Cepstrales……………………………………… 43
12. Diagrama esquemático del Sistema de Reconocimiento de Voz… 47
13. Interfaz gráfica……………………………………………………......... 49
14. Entorno gráfico modo de grabación…………………………………. 50
15. Entorno gráfico modo de reconocimiento…………………………… 51
TABLAS
I. Resumen de la clasificación acústica de los sonidos……………… 13
II. Formantes vocálicos………………………………………………....... 14
III. Valores de Parámetros para el reconocimiento de voz…………… 37
III
IV
RESUMEN
V
VI
OBJETIVOS
General
Específicos
VII
VIII
INTRODUCCIÓN
IX
X
1. SISTEMA DE RECONOCIMIENTO DE VOZ
1.1.1 Micrófono
1
En función de esta respuesta en frecuencia o fidelidad se elabora la llamada
Curva de respuesta de un micrófono, que es la representación gráfica del nivel
obtenido en la captación de sonidos de igual intensidad, pero de distinta
frecuencia.
- Bidireccionales: captan tanto el sonido que llega por su parte frontal, como
por su parte posterior.
2
5. Rango dinámico: se puede definir de dos maneras:
Las dos maneras son validas, por lo que generalmente los fabricantes
incluyen la referencia de salida máxima y la referencia de nivel de pico en las
especificaciones del micrófono. Para aclarar mejor esta característica nos
referiremos a los siguientes dos términos.
3
Si el micrófono es de alta impedancia y se tiene un cable largo se produce
una pérdida muy grande. Si se tiene una impedancia baja se puede utilizar un
cable muy largo y no se pierde tanto la señal. Por último, se puede bajar la
resistencia para evitar pérdidas en altas frecuencias.
1. La Directividad
4
Micrófono bidireccional: en este caso el diagrama polar muestra como
captan por la parte frontal y la lateral (veáse figura 2), como ejemplo tenemos el
micrófono de gradiente de presión.
5
Figura 4. Patrón hipercardioide
2. El Transductor
6
o Micrófono Dinámico: trabajan por medio de inducción electromagnética, la
vibración del diafragma provoca el movimiento de una bobina móvil o cinta
corrugada ancladas a un imán permanente que genera un campo magnético
que a su vez genera una tensión eléctrica, que es la señal de salida. Esta señal
eléctrica es análoga. Hay dos tipos básicos:
Micrófono de bobina móvil o dinámico
Micrófono de cinta
o Micrófono de carbón
o Micrófono de cristal
o Micrófono de cerámica
3. La Utilidad
7
2. Micrófonos de estudio: no tienen protección contra la manipulación, pero
están situados en una posición fija y protegido con gomas de las vibraciones.
1.1.2. MATLAB
El lenguaje esta construido por código llamado M-code que puede ser
fácilmente ejecutado en la ventana de comandos. Con lo cual se pueden crear
funciones, etc. Pero la razón principal para la elección de este lenguaje de
programación son las herramientas que proporciona para el procesamiento de
señales, y el conjunto de funciones para el procesamiento digital.
8
Además, para crear entornos gráficos se puede utilizar el GUIDE de
MATLAB, que provee herramientas para crear GUIs, ‘Graphical User Interface’,
con lo cual se puede crear la forma del entorno grafico así como asociar
funciones a los elementos del GUI. MATLAB también incluye funciones para
manipular archivos.
9
1.1.3. Señal de voz
La voz humana se produce por medio del aparato fonatorio. Este esta
formado por los pulmones como fuente de energía, en forma de flujo de aire, la
laringe que contiene las cuerdas vocales, la faringe, las cavidades oral y nasal y
una serie de elementos articulatorios: los labios, los dientes, el alveolo, el
paladar, el velo del paladar y la lengua(véase figura 5).
Fuente: http://www.eie.fceia.unr.edu.ar/~acustica/biblio/biblio.htm#4a
10
Figura 6. Corte esquemático de la laringe según un plano horizontal.
11
Varios de los elementos de la cavidad supraglotica se controlan a voluntad,
permitiendo modificar dentro de márgenes muy amplios los sonidos producidos
por las cuerdas vocales o agregar partes distintivas a estos, y hasta producir
sonidos propios. Esto se efectúa con dos mecanismos principales: el filtrado y la
articulación.
12
Dada la anterior explicación es necesaria una clasificación acústica, como la
que se resume en la tabla I.
Fuente: http://liceu.uab.es/~joaquim/phonetics/fon_anal_acus/fon_acust.html
1.1.3.2. Formantes
Los formantes son elementos que sirven para distinguir componentes del
habla humana, principalmente, las vocales y sonidos sonantes. El formante con
la frecuencia más baja se llama F1, el segundo F2, el tercero F3, etc.
Normalmente sólo los dos primeros son necesarios para caracterizar una vocal,
aunque la pueden caracterizar más formantes. Generalmente, los formantes
posteriores determinan propiedades acústicas como el timbre.
13
No todos los sonidos se componen de formantes definidos. Solamente
aparecen en sonantes, que incluyen los sonidos pulmonares: vocales,
aproximantes y nasales. Las nasales tienen un formante adicional F3, en torno
a los 1500 Hz.
Aquí están algunos anchos de banda entre los cuales se localizan las
vocales:
Formantes Vocálicos
Vocal Región principal
formantica
/u/ 200 a 400 Hz
/o/ 400 a 600 Hz
Fuente: http://es.wikipedia.org/wiki/Formante
14
1.2 Procesamiento digital de señales
Ecuación 1
j 2k
X k X e j
2k X e N
N
15
Como la transformada de Fourier es periódica en ω con período 2 , la
resultante secuencia es periódica en k con periodo N. La secuencia de
muestras es periódica dado a que los N puntos están igualmente espaciados
iniciando desde cero. Por lo que la misma secuencia se repite mientras k varia
en el rango de 0 k N 1 .
Ecuación 2
x ^ [ n] x[n rN ] x[n]
r
[n rN ]
r
Ecuación 3
x ^ [n],0 n N 1
x[ n]
0, otherwise.
16
Alternativamente, dada la secuencia de los coeficientes de Fourier X[k], se
puede encontrar x^[n] y utilizar la ecuación anterior para obtener x[n]. Cuando
las series de Fourier son utilizadas de este modo para representar secuencias
de duración finita, es llamada la transformada discreta de Fourier.
Ecuación 4
2k
k para 0 k N 1
N
Ecuación 5
N 1
2k
X[k] = X(ejω)|ω= ωk= = x[n]e 2nk / N
para 0 k N 1
N n 0
17
Es importante notar una cosa, siendo M la duración de la señal x[n] y N el
período de x^[n], si M N entonces la señal x[n] puede ser recuperada a partir
de x^[n] y el exceso de número de puntos en un período de x^[n] son iguales a
cero. Por otro lado, si M ≥ N sucede un traslape al formarse la extensión
periódica, entonces se dice que ocurre time-aliasing.
A partir de x[n] o x^[n] se puede obtener una o la otra según las ecuaciones
anteriores, pero la distinción entre una y la otra se hacen más evidentes cuando
se analizan las propiedades de la DTF. Como la DTF consiste en muestras de
la transformada de Fourier, las propiedades de linealidad, periodicidad y
simetría de la transformada de Fourier son ciertas también para la DTF.
Además para todas las expresiones de las propiedades dadas se especifican
los rangos, para x[n] de 0 n N 1 y para X[k] de 0 k N 1 , y ambas son
cero fuera de estos rangos. A continuación se resumen estas propiedades.
Ecuación 6
N 1
X [k ] x[n]e j 2kn / N para 0 k N 1 (DTF)
n 0
Ecuación 7
1 N 1
x[n] X [k ]e j 2kn / N para 0 n N 1 (IDTF)
N k 0
18
2. Extensión Periódica:
Ecuación 8
x^ [n] x[n mN ]
m 0
3. Linealidad:
Ecuación 9
4. Periodicidad:
Ecuación 10
X[k] = X[k+N]
Ecuación 11
X[k]=XR[k] + j XI[k]
Entonces,
Ecuación 12
2
X [k ] X R2 [k ] X I2 [k ]
Ecuación 13
Arg X [k ] arctan X I [k ] / X R [k ]
19
6. Transformada de Fourier de una secuencia con retraso:
Ecuación 14
j 2kn0
Ecuación 15
Una convolución lineal de h[n] y x[n] resulta cuando las secuencias DTF de
Ny-puntos son computadas para h[n] y x[n], donde Ny es la duración de y[n]. De
otro modo, una convolución circular resulta.
Ecuación 16
Ecuación 17
N 1
y[n] h[k ]x[n k ] para todo n.
k 0
20
Denotamos la ecuación anterior como la convolución lineal. Se sabe que la
transformada de Fourier es útil para convertir una operación de convolución en
una multiplicación.
Ecuación 18
N 1
y ^ [ n] h^ [ k ] x ^ [ n k ] para 0 n N 1
k 0
O mejor dicho,
Ecuación 19
21
1.2.3. Transformada Rápida de Fourier
Ecuación 20
N
X (k ) x( j ) N( j 1)(k 1)
j 1
Ecuación 21
1N
x( j ) X (k ) N ( j 1)( k 1) donde N e ( 2i ) / N
N k 1
22
1.2.4. Ventaneo
Ecuación 22
1,0 n N
wn
0, otherwise
Pero hay que considerar las discontinuidades que esto produce en los
extremos de la señal, las distorsiones, por otro lado el parámetro de la amplitud
se ve siempre un poco afectado.
23
2. Ventana Hanning: se define como
Ecuación 23
Ecuación 24
Ecuación 25
k 1 k 1
w[k ] 0.42 0.5 cos(2 ( )) 0.08 cos(4 ( )), k 1,..., n
n 1 n 1
Los efectos en el dominio del tiempo para esta ventana no son muy
diferentes de los anteriores, son los efectos en dominio de la frecuencia con los
que hay que tener especial cuidado.
24
Para notar la diferencia en la eficiencia de cada una de las ventanas se hace
la siguiente comparación:
25
26
2. RECONOCIMIENTO DE VOZ
27
En este caso, la tensión de las cuerdas afecta la frecuencia de la señal de
voz por lo que la señal de control será parecida a la portadora en una
modulación. Por otro lado, el tono de voz no es necesario para saber la
información que se esta transmitiendo. Generalmente los modelos suelen
formarse utilizando un filtro, para separar las partes trascendentales de la señal
de voz.
Fuente: www.pas.deusto.es/recursos/
28
A continuación se muestra el diagrama del modelo en tiempo discreto del
sistema de producción de voz:
Fuente: http://www.ee.columbia.edu/~dpwe/e6820/lectures/E6820-L05-speechmodels.pdf
29
Modelo de radiación: describe la impedancia de radiación vista por la
presión de aire cuando abandona los labios, que puede ser razonablemente
aproximada por una ecuación en diferencias de primer orden, o
equivalentemente por una función de transferencia de la forma
Ecuación 26
R( z ) (1 z 1 )
30
Sonidos Sordos o no Tonales: en ellos las cuerdas vocales no vibran y
existen restricciones importantes al paso del aire, por lo que son de amplitud
menor y de naturaleza más ruidosa. Por lo que son de baja energía,
componente frecuencial uniforme y cierta aleatoriedad. Matemáticamente son
modelables como ruido blanco.
Hay dos factores importantes durante este proceso. Primero esta la taza de
muestreo o que tan seguido los valores de voltaje son grabados. Segundo, son
los bits por segundo, o que tan exactamente los valores son grabados. Un
tercero podría ser el número de canales (mono o estereo), pero para las
aplicaciones de reconocimiento de voz un canal mono es suficiente. La mayoría
de aplicaciones vienen con valores pre-determinados, para desarrollo del
código se debería de cambiar los parámetros para ver lo que mejor funciona en
el algoritmo.
31
Dado a que el habla es relativamente de bajas frecuencias (entre 100Hz-
8kHz), una frecuencia de muestreo de 16000 muestras/seg provee una mayor
exactitud en la adquisición de la información, la frecuencia de nyquist.
2.4. Preprocesado
32
Teorema de nyquist:
Entonces x(t) esta únicamente determinada por sus muestras x[n] = x(nT), n
2
= 0, 1, 2,… si s 2 N .
T
La frecuencia N es comúnmente referida como la frecuencia de Nyquist, y
Cuantificación:
33
Se conoce como error de cuantificación (o ruido), a la diferencia entre la
señal de entrada (sin cuantificar) y la señal de salida (ya cuantificada), interesa
que el ruido sea lo más bajo posible. Para conseguir esto y según sea la
aplicación a desarrollar, se pueden usar distintas técnicas de cuantificación:
Cuantificación uniforme
Cuantificación logarítmica
Cuantificación no uniforme
Cuantificación vectorial
Cuantificación uniforme:
En los cuantificadores uniformes o lineales la distancia entre los niveles de
reconstrucción es siempre la misma, la mayoría usan un número de niveles que
es una potencia de 2. No hacen ninguna suposición acerca de la señal a
cuantificar, de allí que no proporcionen los mejores resultados. Pero son los
mas fáciles y menos costosos a implementar.
Cuantificación logarítmica:
Para evitar desperdicio de niveles de reconstrucción y de ancho de banda se
utiliza un método sencillo para mejorar el incremento de la distancia entre los
niveles de reconstrucción conforme aumenta la amplitud de la señal. Para
conseguir esto se hace pasar la señal por un compresor logarítmico antes de la
cuantificación. Esta señal comprimida puede ser cuantificada uniformemente. A
la salida del sistema la señal pasa por un expansor. A esta técnica se le llama
compresión.
34
Cuantificación no uniforme:
Este cuantificador utiliza la función de la distribución de probabilidad,
conociendo esto se puede ajustar los niveles de reconstrucción a la distribución
de forma que se minimice el error cuadrático medio.
Cuantificación vectorial:
Este método cuantifica los datos en bloques de N muestras. En este tipo de
cuantificación, el bloque de N muestras se trata como un vector N-dimensional.
Ecuación 30
Wn
2
En x[k ] w[n k ]
k 1
Ecuación 31
2
1 N
E avg x[k ]
N k 1
35
2.4.3. Filtro de Pre-Énfasis
2.4.4. Segmentación
36
Se realiza el algoritmo en base a las siguientes fórmulas:
Ecuación 33
Qn x[k ]w[n k ]
k
Para los valores de los parámetros que hacen falta para la implementación
del algoritmo, se utiliza la siguiente tabla:
37
Hay que tener en cuenta que el número de parámetros debe ser reducido,
para no saturar la base de datos, ya que mientras más parámetros tenga la
representación menos fiables son los resultados y mas costosa la
implementación.
38
El modelo recibe este nombre porque pretende extrapolar el valor de la
siguiente muestra de voz s(n) como la suma ponderada de muestras pasadas
s(n-1), s(n-2),…, s(n-K):
Ecuación 35
p
s ( n) k s ( n k )
k 1
La del tipo todo polo. Una interpretación de esta ecuación, que es una
versión simplificada, esta dada en la figura 9.
39
Figura 9. Modelo de producción de voz basado en LPC
Fuente: www.pas.deusto.es/recursos/
40
Suponiendo que en cada cuadro hay m1p muestras, y definiendo lo
siguiente:
Ecuación 40
= [ 1 2 … p ]T
Ecuación 41
s (n 1) s ( n p)
s (n)
s (n 1) s (n) s (n p 1) 1
p
s ( n m ) s (n m 1) s (n m 1 p)
2.5.2. Cepstrum
41
Desde el principio de la década de los 70 los sistemas homo mórficos han
tenido una gran importancia en los sistemas de reconocimiento de voz. Estos
sistemas homo mórficos son una clase de sistemas no lineales que obedecen a
un principio de superposición. De estos los sistemas lineales son un caso
especial.
42
El proceso anterior se puede describir con un diagrama (véase figura 11).
43
Partiendo del análisis de predicción lineal también es posible obtener la
expresión de los coeficientes cepstrales asociados:
Ecuación 46
c(0) log(1) 0
Ecuación 47
i 1
j
c(i) (i ) (1 ) ( j )c(i j ) 1 i Nc
j 1 i
44
Características:
los coeficientes polinomiales de primer orden que están representados por bt(i),
donde t es el número de segmento e i es el índice de los coeficientes
cepstrales. Como el valor de p es escogido como 10, la representación
resultante es una función del tiempo de 20 elementos de características.
45
2.6 Medida de distancia
46
3. PROGRAMA DE RECONOCIMIENTO DE VOZ
47
3.2. Resultados de evaluación
48
3.3. Programa
El programa tiene una interfaz grafica, muy fácil de utilizar. Con una base de
datos de prueba de 4 nombres, esta base de datos puede ser aumentada en
cualquier cantidad. Los nombres en la base de datos son:
- Geno
- Flavio
- Rosa
- Andres
49
Grabación
En este cuadro nos aparece la opción de grabar la palabra para ingresarla al
reconocedor de voz, cuando la palabra es grabada aparece un cuadro de
mensaje indicando que la grabación ha sido terminada. Por otra parte en el
plano aparece una gráfica en el tiempo (eje X) y en amplitud (eje Y), de la señal
de voz grabada por el usuario (véase figura 14).
Salir
Este botón nos permite salir completamente del Sistema de Reconocimiento
de Voz.
50
Reconocimiento
El cuadro de reconocimiento brinda los resultados del sistema, con un
cuadro de mensaje indicando cual palabra ha sido reconocida y la palabra
grabada es reproducida. Además, nos da una representación gráfica en el
plano con la información del espectro de frecuencias de la señal del usuario
reconocido (véase figura 14).
51
52
CONCLUSIONES
53
54
RECOMENDACIONES
55
56
BIBLIOGRAFÍA
57
58
BIBLIOGRAFÍA ELECTRÓNICA
5. Micrófono
http://es.wikipedia.org/wiki/Micr%C3%B3fono
6. Formante
http://es.wikipedia.org/wiki/Formante
9. Speech Modeling
http://www.ee.columbia.edu/~dpwe/e6820/lectures/E6820-L05-
speechmodels.pdf
59
11. Cepstrum
http://en.wikipedia.org/wiki/Cepstrum
17. Mathworks
www.mathworks.com
60
APÉNDICE
CÓDIGO UTILIZADO
% BASE DE DATOS
clc
Fs=11025;
y0=wavrecord(1*Fs,Fs,1)';
soundsc(y0);
word0=['geno'];
y0=chop_silencio(y0);
z0=enfasis(y0);
seg0=segmentos(z0);
c0=cepstrum(seg0);
f0=features(c0);
save geno.mat word0 f0 y0;
y1=wavrecord(1*Fs,Fs,1)';
soundsc(y1);
word1=['rosa'];
y1=chop_silencio(y1);
z1=enfasis(y1);
seg1=segmentos(z1);
c1=cepstrum(seg1);
f1=features(c1);
save rosa.mat word1 f1 y1;
y2=wavrecord(1*Fs,Fs,1)';
soundsc(y2);
word2=['flavio'];
y2=chop_silencio(y2);
z2=enfasis(y2);
seg2=segmentos(z2);
c2=cepstrum(seg2);
61
f2=features(c2);
save flavio.mat word2 f2 y2;
y3=wavrecord(1*Fs,Fs,1)';
soundsc(y3);
word3=['andres'];
y3=chop_silencio(y3);
z3=enfasis(y3);
seg3=segmentos(z3);
c3=cepstrum(seg3);
f3=features(c3);
save andres.mat word3 f3 y3;
function y = chop_silencio(s)
len = length(s); % length del vector
avg_e = sum(s.*s)/len; %promedio señal entera
THRES = 0.2;
y = [0];
for i = 1:80:len-80 % cada 10ms
seg = s(i:i+79); % segmentos
e = sum(seg.*seg)/80; % promedio de cada segmento
if( e> THRES*avg_e) % si el promedio energetico es mayor que la señal
%completa por el valor umbral
y=[y,seg(1:end)]; % almacena en y sino es eliminado como espacio en
blanco
end;
end;
function [y]=enfasis(x)
b=[1 -0.95];
y=filter(b,1,x);
62
% FUNCIÓN SEGMENTACIÓN
%segmentos
%segmenta la señal en tramas de 30ms
%[segs]=segmentos(y)
function [segs]=segmentos(y)
len = length(y); %longitud del vector
num_segments = floor(len/80) -2; % redondeamos el numero de
segmentos
segs = zeros(num_segments,240); % matriz de segmentos
num_segments x 240
win = hamming(240)'; % ventana hamming de 240 puntos(30ms)
win=coeficients (numero de muestras en el analisis )
for i = 0:num_segments-1
inicio = i*80+1;
segs(i+1,1:240) = (y(inicio:inicio+239).*win); %multiplicamos por la
ventana %hamming
end;
% FUNCIÓN CEPSTRUM
%
% (EXTRACCIÓN DE LOS COEFICIENTES CEPSTRALES)
%cepstrum
%Encuentra los coeficientes cepstrales de cada segmento
%[cc]=cepstrum(seg)
63
r = rceps(segs(i,:));
c(i,:)= r(1:10);
end
%
% normalizacion de los coeficientes cepstrales
sum_c = sum(c);
avg_c = sum_c/M;
%
%sustrayendole el minimo, solo las que estan arriba del promedio los
%fonemas
for i=1:M
c(i,:)= c(i,:)-avg_c; % smoothened spectrum
end
function ftr=features(c)
[M,N] = size(c);
ftr = zeros(M-8,20);
for i = 1:M-8
%caracteristicas de orden cero (coeficientes cepstrales)
ftr(i,1:10)=c(i,1:10);
%caracteristicas de primer orden
b = zeros(1,10);
for j = 0:8 % aqui se sacan los coeficientes polinomiales para cada
segmento
b = b+ p1(j+1,:).*c(i+j,:); % numerador de la ecuacion
end;
ftr(i,11:20)=b/sum_p1; % dividiendolo en el denominador
end; %se obtienen los valores de b
64
% FUNCIÓN DE DISTANCIA
%distancia
%
%[dist]=distancia(ftr_a,ftr_b)
% INICIALIZACION
65
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++
% PROGRAMA PRINCIPAL
load 'handel';
wavwrite(y,'handel');
rec=reconociendovoz(y0);
handles.voz_grabada=y;
handles.feature_datos=rec
handles.feature_f0=f0;
handles.feature_f1=f1;
handles.feature_f2=f2;
handles.feature_f3=f3;
handles.feature_y0=y0;
handles.feature_y1=y1;
handles.feature_y2=y2;
handles.feature_y3=y3;
handles.output = hObject;
66
varargout{1} = handles.output;
handles.voz_grabada = y;
handles.feature_datos=rec1
plot(y);
msgbox('Grabacion terminada');
guidata(hObject, handles);
%load rec.mat;
%handles.feature_voz=f;
% --- Executes on button press in identificar.
function identificar_Callback(hObject, eventdata, handles)
% hObject handle to identificar (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
rec1=handles.feature_datos;
y0=handles.feature_y0;
y1=handles.feature_y1;
y2=handles.feature_y2;
y3=handles.feature_y3;
f0=handles.feature_f0;
f1=handles.feature_f1;
f2=handles.feature_f2;
f3=handles.feature_f3;
67
d1=distancia(f0,rec1)
d2=distancia(f1,rec1)
d3=distancia(f2,rec1)
d4=distancia(f3,rec1)
if (d1 < d2) & (d1 < d3) & (d1 < d4)
plot(abs(fft(y0)));
soundsc(y0);
msgbox('Usted dijo: Geno');
else if (d2 < d1) & (d2 < d3)& (d2 < d4)
plot(abs(fft(y1)));
soundsc(y1);
msgbox('Identificado: Rosa')
else if (d3 < d1) & (d3 < d2) & (d3 < d4)
plot(abs(fft(y2)));
soundsc(y2);
msgbox('Identificado: Flavio');
else if (d4 < d1) & (d4 < d2) & (d4 < d3)
plot(abs(fft(y3)));
soundsc(y3);
msgbox('Identificado: Andres');
end
end
end
end
% FUNCIÓN RECONOCIENDOVOZ
function rec=reconociendovoz(y)
% load data
y=chop_silencio(y);
z=enfasis(y);
seg=segmentos(z);
c=cepstrum(seg);
f=features(c);
rec=f;
save('rec.mat','f','y');
68