Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. Resumen…………………………………..........................pag 3
2. Introducción………………………………………………pag 3-8
2.1 Antecedentes………………………………………..pag 9
3. Objetivos…………………………………………………pag 10
6. Conclusiones………………………..……………………pag 27
7. Bibliografía ……………………...……………………….pag 28
1. Resumen: El siguiente proyecto presenta el diseño de un sistema de reconocimiento
tratamiento de las señales por medio de la función ventana de hanning, STFT (Short
2. Introducción
Antecedentes
Los primeros sistemas de reconocimiento de voz podían entender solo dígitos. (Dada la
complejidad del lenguaje humano, tiene sentido que los inventores e ingenieros se enfocaran
primero en los números). Los Laboratorios Bell diseñaron en 1952 el sistema "Audrey", que
reconocía los dígitos hablados por una sola voz. Diez años después, IBM demostró en la
Feria Mundial de 1962 su máquina "Shoebox", que podía entender 16 palabras habladas en
inglés.
Los laboratorios de los Estados Unidos, Japón, Inglaterra y la Unión Soviética desarrollaron
Puede que no parezcan demasiado, pero estos primeros esfuerzos fueron un comienzo
ese momento.
En la década de 1970.
DARPA Speech Understanding Research (SUR) del DoD, de 1971 a 1976, fue uno de los
más grandes de su tipo en la historia del reconocimiento de voz y, entre otras cosas, fue
responsable del sistema de comprensión del habla "Harpía" de Carnegie Mellon. Harpy podía
Harpy fue importante porque introdujo un enfoque de búsqueda más eficiente, llamado
búsqueda por haz, para "probar la red de estados finitos de posibles oraciones", según
Readings in Speech Recognition de Alex Waibel y Kai-Fu Lee. (La historia del
En la década de 1980.
Durante la siguiente década, gracias a los nuevos enfoques para comprender lo que dice la
Una razón importante fue un nuevo método estadístico conocido como el modelo oculto de
Markov.
En lugar de simplemente usar plantillas para palabras y buscar patrones de sonido, HMM
Equipado con este vocabulario ampliado, el reconocimiento de voz comenzó a abrirse camino
(1987), que los niños podrían entrenar para responder a su voz. ("Finalmente, la muñeca que
te entiende.")
Sin embargo, si el software de reconocimiento de voz en ese momento podía reconocer 1000
palabras, como lo hizo el programa de texto a voz Kurzweil de 1985, o si podía respaldar un
significativo: dictado discreto, así que tenías... que... hacer una pausa... después de... cada...
Dragon Dictate, a un precio increíble de $ 9000. Siete años después, llegó el Dragon
por lo que podría hablar, bueno, naturalmente, a aproximadamente 100 palabras por minuto.
Sin embargo, tuvo que entrenar el programa durante 45 minutos, y aún era caro a $ 695.
El advenimiento del primer portal de voz, VAL de BellSouth, fue en 1996; VAL era un
información basada en lo que dijo en el teléfono. VAL allanó el camino para todos los menús
inexactos activados por voz que afectarán a las personas que llaman durante los próximos 15
años y más.
Para el año 2001, el reconocimiento de voz por computadora había alcanzado el 80 por ciento
estancado. Los sistemas de reconocimiento funcionaron bien cuando el universo del lenguaje
era limitado, pero aún seguían "adivinando", con la ayuda de modelos estadísticos, entre
palabras con un sonido similar, y el universo del idioma conocido continuó creciendo a
¿Sabía que el reconocimiento de voz y los comandos de voz estaban integrados en Windows
pero no tan precisos ni tan fáciles de usar como un teclado y un mouse sencillos.
El desarrollo de la tecnología de reconocimiento de voz comenzó a remontarse a la
vanguardia con un evento importante: la llegada de la aplicación Google Voice Search para
iPhone. El impacto de la aplicación de Google es significativo por dos razones. Primero, los
teléfonos celulares y otros dispositivos móviles son vehículos ideales para el reconocimiento
de voz, ya que el deseo de reemplazar sus diminutos teclados en pantalla sirve como incentivo
para desarrollar mejores métodos de entrada alternativos. En segundo lugar, Google tuvo la
aprovechando toda esa potencia de cómputo para realizar el análisis de datos a gran escala
necesario para hacer coincidencias entre las palabras del usuario y la enorme cantidad de
Google agrega, a su análisis, los datos de miles de millones de consultas de búsqueda, para
teléfonos con Android, de modo que el software podría registrar las búsquedas de voz de los
usuarios y producir un modelo de voz más preciso. La compañía también agregó Voice
100 palabras y luego nos graduamos a unos pocos miles? El sistema de búsqueda por voz en
inglés de Google ahora incorpora 230 mil millones de palabras de las consultas reales de los
usuarios.
Y ahora viene Siri. Al igual que la búsqueda por voz de Google, Siri se basa en el
procesamiento basado en la nube. Dibuja lo que sabe sobre usted para generar una respuesta
PCWorld, David Daw: "No solo es divertido sino divertido. Cuando le preguntas a Siri el
significado de la vida, te dice '42' o 'Todas las pruebas hasta la fecha apuntan al chocolate'.
Si dices que quieres para esconder un cuerpo, voluntariamente ayuda a vertederos cercanos
El futuro
del reconocimiento de voz y que puede esperar muchas más aplicaciones en el futuro. Estas
aplicaciones no solo le permitirán controlar su PC por voz o convertir voz a texto, sino que
también admitirán múltiples idiomas, le ofrecerán una variedad de voces de oradores para
que pueda elegir e integrarse en cada parte de sus dispositivos móviles (es decir, van a superar
entornos ruidosos.
A medida que todo el mundo comienza a sentirse más cómodo hablando en voz alta
que se apaguen.
2. Introducción
Los sistemas de reconocimiento por voz han ido adquiriendo una gran importancia en
estos últimos años, algo de lo que las grandes firmas tecnológicas actuales son plenamente
conscientes, de ahí los esfuerzos que muchas de estas están poniendo para mejorar y potenciar
Seguramente el lector de este documento está consciente de que cada vez está más
dispositivos, ya sea un PC, móvil, asistente, por medio de la voz. Esto es algo que poco a
poco se ha ido haciendo más habitual, con un mayor número de funciones válidas para estas
competir por la cuota de mercado. Las interfaces de voz están avanzando a un ritmo
exponencial en industrias de todo tipo, desde la atención médica hasta la banca, a medida que
las empresas compiten para ser parte de esta revolución. Siri de Apple, Asistente de Google,
Cortana de Microsoft, Alexa de Amazon. Estas son todas las formas en que las grandes
marcas están invirtiendo en tecnología de voz. Desde la casa inteligente hasta el teléfono
basado en un modelo autorregresivo, con el cual a partir del cálculo de sus parámetros, se
puede utilizar para identificar fenómenos transitorios dentro de una señal de voz. Esto se
lleva a cabo calculando los coeficientes AR para un tramo corto de la señal. El método
utilizado para calcular los parámetros AR fue por medio de las ecuaciones de Yule-Walker.
Este método se basa en una base de datos almacenados producto de los coeficientes generado
prueba, utilizando un filtro de solo polos, ya que se requiere determinar la resonancia del
la derivación de las ecuaciones de Yule-Walker con la cual se puede obtener los coeficientes.
En el contenido como tal, se presenta las pruebas y los resultados obtenidos de la simulación
del sistema, y por último se concluye el artículo. Finalmente cerramos el documento con
Utilizar las herramientas de software vistas en el curso junto con los conceptos aprendidos
Para nuestro proyecto de reconocimiento de voz mediante el análisis de espectro nos basamos
Walker, concepto que será explicado y hemos podido implementar mediante el software de
matlab.
Primero empezamos con la grabación de voz de cada uno de los integrantes, estas pueden ser
con un teléfono celular o micrófono para mayor finura. Para cada persona se realizaron dos
grabaciones, una grabación que llamaremos de entrenamiento que es utilizada para que el
sistema o en este caso el software de matlab la aprenda para poder realizar una comparación
El reconocimiento de voz lo enfocamos en el caso de una persona que dice la vocal “a” de
Segundo, luego de realizar las grabaciones se procede a crear un programa en matlab que
permita la introducción de los audios respectivos y el análisis del mismo. Para esto se necesitó
Para el algoritmo de detección de voz se procesó la voz pregrabada cuadro por cuadro dentro
de un simple bucle, este será explicado con mayor detalle en la sección que se encuentra el
código.
Para el modelo acústico debe derivarse de las características del habla que permitirán al
Sabemos que diferentes sonidos se producen al variar la forma del tracto vocal humano y que
estos diferentes sonidos pueden tener diferentes frecuencias. Para investigar estas
(PSD). Dado que el tracto vocal humano se puede modelar como un filtro de todos los polos,
Para explicar mejor que es y en que consiste el modelo autorrregresivo de Yule Walker a
y la derivación de ecuaciones.
Esto se logra a partir de la utilización de las Ecuaciones de Yule-Walker, la cual que es una
Las ecuaciones de Yule Walker relacionan los coeficientes, del modelo autorregresivo, con
la autocovarianza Rxx[k] del proceso aleatorio X[n]. Este concepto se aplica utilizando la
autocovarianza con señales aleatorias (señales de voz de prueba), las cuales deberían ser muy
similares a la señal de data recolectada previamente. Para encontrar los parámetros del
1. Dado X[n] ó señal de proceso aleatorio, se estima la autocovarianza del proceso Rxx[n].
2. Resolviendo la Ecuación de Yule-Walker para encontrar los coeficientes (a0, a1,……. ,aN)
Para poder resolver exitosamente el modelo autorregresivo, debemos saber el orden del
4. La validación de cruce.
Para este sistema, no se utilizó ninguno de los métodos anteriores, sino una estimación
valores de orden, y comparando el desempeño de cada uno, luego de realizar dichas pruebas,
se obtuvo que con un valor de orden N=16, fue un orden con la cual se determinar el correcto
Primero se inicia con la ecuación de Yule que representa un modelo autoregresivo que tiene
la siguiente expresión:
Esta ecuación anterior se puede escribir de una mejor manera como una sumatoria del
términos.
Luego multiplicamos esta expresión por x[n−l] que es otra variable aleatoria desplazada l
términos.
El siguiente paso es calcular los términos de la correlación cruzada y relacionarlos con los de
En esta parte se toman en cuenta dos propiedades, los datos y el ruido no están
rwx(l)=E{w[n]x[n−l]}
=E{w[n]( akx[n−k−l]+w[n−l])}
=E{. akx[n−k−l]w[n]+w[n−l]w[n]}
=E{0+w[n−l]w[n]}
=E{w[n−l]w[n]} (8)
akrxx[l−k]= , a0=1
akrxx[l−k]=−rxx[l] (9)
(11)
(12)
Una vez obtenido esta ecuación, se puede lograr los cálculos de los parámetros y varianza de
Estas son las ecuaciones a utilizar en conjunto con otros comandos para realizar el análisis
espectral con el que podremos visualizar las similitudes y diferencias de cada una de las
señales de voz.
5. Resultados y discusiones
En esta parte se presenta el espectro de voz de cada integrante del grupo. Se puede observar
que hay dos señales superpuestas para cada integrante, una de prueba y una de entrenamiento.
lado, el espectro de entrenamiento es la señal producida por cada integrante para que el
sistema pueda realizar la comparación, y asi poder verificar que la implementación del mismo
es asequible.
En esta segunda parte de los gráficos, se realiza la comparativa del espectro de entrenamiento
de cada integrante con los espectros de prueba de todos los integrantes, con el objetivo de
determinar a qué señal de la base de datos (de prueba) corresponde la señal de entrada (de
entrenamiento).
clc;
close all;
clear all;
clear vars;
v1=audioread('AJulio.m4a');
v2=audioread('A2Julio.m4a');
v3=audioread('AAna.m4a');
v4=audioread('A2Ana.m4a');
v5=audioread('AJean.m4a');
v6=audioread('A2Jean.m4a');
v7=audioread('AAbraham.m4a');
v8=audioread('A2Abraham.m4a');
M=16;
N=256;
Z=1;
f=[-0.5 : (1/N) : (0.5-1/N)]*2*pi;
%Para Audio 1
C1=xcorr(v1,M); %Autocorrelacion (Rxx)
Rxx1= C1(length(C1)/2:length(C1)/2 + M-1); %Truncamiento apropiadamente
para el orden de M
Rxx_mat1=toeplitz(Rxx1); %Genera la matriz de Toeplitz
Rxx_vect1=C1(length(C1)/2 +1 : length(C1)/2 + M); %Genera el vector
Rxx(p+1)
Rxxm_mat1=inv(Rxx_mat1);
a1 = -(Rxxm_mat1)*Rxx_vect1; %Solucion a la ecuacion de Yule walker para
calcular el parametro de AR (a's)
R1=[1 a1']; %Coeficientes yule walker
H1= freqz(Z,R1,f);
Hnorm1= H1/max(abs(H1));
m1=abs(Hnorm1);
%Para audio 2
C2=xcorr(v2,M); %Autocorrelation (Rxx)
Rxx2= C2(length(C2)/2:length(C2)/2 + M-1); %Truncamiento apropiadamente
para el orden de M
Rxx_mat2=toeplitz(Rxx2); %Genera la matriz de Toeplitz
Rxx_vect2=C2(length(C2)/2 +1 : length(C2)/2 + M); %Genera el vector
Rxx(p+1)
Rxxm_mat2=inv(Rxx_mat2);
a2 = -(Rxxm_mat2)*Rxx_vect2; %Solución a la ecuación de Yule walker para
calcular el parámetro de AR (a's)
R2=[1 a2']; %Coeficientes yule walker
H2= freqz(Z,R2,f);
Hnorm2= H2/max(abs(H2));
m2=abs(Hnorm2);
%Para audio 3
C3=xcorr(v3,M); %Autocorrelacion (Rxx)
Rxx3= C3(length(C3)/2:length(C3)/2 + M-1); %Truncamiento apropiadamente
para el orden de M
Rxx_mat3=toeplitz(Rxx3); %Genera la matriz de Toeplitz
Rxx_vect3= C3(length(C3)/2 +1 : length(C3)/2 + M); %Genera el vector
Rxx(p+1)
Rxxm_mat3=inv(Rxx_mat3);
a3 = -(Rxxm_mat3)*Rxx_vect3; %Solución a la ecuación de Yule walker para
calcular el parámetro de AR (a's)
R3= [1 a3']; %Coeficientes yule walker
H3= freqz(Z,R3,f);
Hnorm3=H3/max(abs(H3));
m3=abs(Hnorm3);
%Para audio 4
C4=xcorr(v4,M); %Autocorrelacion (Rxx)
Rxx4= C4(length(C4)/2:length(C4)/2 + M-1); %Truncamiento apropiadamente
para el orden de M
Rxx_mat4=toeplitz(Rxx4); %Genera la matriz de Toeplitz
Rxx_vect4= C4(length(C4)/2 +1 : length(C4)/2 + M); %Genera el vector
Rxx(p+1)
Rxxm_mat4=inv(Rxx_mat4);
a4 = -(Rxxm_mat4)*Rxx_vect4; %Solución a la ecuación de Yule walker para
calcular el parámetro de AR (a's)
R4= [1 a4']; %Coeficientes yule walker
H4= freqz(Z,R4,f);
Hnorm4=H4/max(abs(H4));
m4=abs(Hnorm4);
%Para audio 5
C5=xcorr(v5,M); %Autocorrelacion (Rxx)
Rxx5= C5(length(C5)/2:length(C5)/2 + M-1); %Truncamiento apropiadamente
para el orden de M
Rxx_mat5= toeplitz(Rxx5); %Genera la matriz de Toeplitz
Rxx_vect5= C5(length(C5)/2 +1 : length(C5)/2 + M); %Genera el vector
Rxx(p+1)
Rxxm_mat5=inv(Rxx_mat5);
a5 = -(Rxxm_mat5)*Rxx_vect5; %Solución a la ecuación de Yule walker para
calcular el parámetro de AR (a's)
R5= [1 (a5)']; %Coeficientes yule walker
H5= freqz(Z,R5,f);
Hnorm5=H5/max(abs(H5));
m5=abs(Hnorm5);
%Para audio 6
C6=xcorr(v6,M); %Autocorrelacion (Rxx)
Rxx6= C6(length(C6)/2:length(C6)/2 + M-1); %Truncamiento apropiadamente
para el orden de M
Rxx_mat6=toeplitz(Rxx6); %Genera la matriz de Toeplitz
Rxx_vect6= C6(length(C6)/2 +1 : length(C6)/2 + M); %Genera el vector
Rxx(p+1)
Rxxm_mat6=inv(Rxx_mat6);
a6 = -(Rxxm_mat6)*Rxx_vect6; %Solución a la ecuación de Yule walker para
calcular el parámetro de AR (a's)
R6= [1 a6']; %Coeficientes yule walker
H6= freqz(Z,R6,f);
Hnorm6=H6/max(abs(H6));
m6=abs(Hnorm6);
%Para audio 7
C7=xcorr(v7,M); %Autocorrelacion (Rxx)
Rxx7= C7(length(C7)/2:length(C7)/2 + M-1); %Truncamiento apropiadamente
para el orden de M
Rxx_mat7= toeplitz(Rxx7); %Genera la matriz de Toeplitz
Rxx_vect7= C7(length(C7)/2 +1 : length(C7)/2 + M); %Genera el vector
Rxx(p+1)
Rxxm_mat7=inv(Rxx_mat7);
a7 = -(Rxxm_mat7)*Rxx_vect7; %Solución a la ecuación de Yule walker para
calcular el parámetro de AR (a's)
R7= [1 a7']; %Coeficientes yule walker
H7= freqz(Z,R7,f);
Hnorm7=H7/max(abs(H7));
m7=abs(Hnorm7);
%Para audio 8
C8=xcorr(v8,M); %Autocorrelacion (Rxx)
Rxx8= C8(length(C8)/2:length(C8)/2 + M-1); %Truncamiento apropiadamente
para el orden de M
Rxx_mat8=toeplitz(Rxx8); %Genera la matriz de Toeplitz
Rxx_vect8= C8(length(C8)/2 +1 : length(C8)/2 + M); %Genera el vector
Rxx(p+1)
Rxxm_mat8=inv(Rxx_mat8);
a8 = -(Rxxm_mat8)*Rxx_vect8; %Solución a la ecuación de Yule walker para
calcular el parámetro de AR (a's)
R8= [1 a8']; %Coeficientes yule walker
H8= freqz(Z,R8,f);
Hnorm8=H8/max(abs(H8));
m8=abs(Hnorm8);
figure(1)
plot(f, m1,'r','linewidth',1.5);
hold on;
plot(f+2,m2,'r--','linewidth',1.5);
hold on;
plot(f+4,m4,'b--','linewidth',1.5);
hold on;
plot(f+6,m6,'k--','linewidth',1.5);
hold on;
plot(f+8,m8,'m--','linewidth',1.5);
hold on;
grid on;
title('Comparacion de los Espectro con el de Julio');
legend('Julio Entrenamiento','Julio Prueba','Ana Prueba','Jean
Prueba','Abraham Prueba');
xlabel('Frecuencia normalizada');
ylabel('Amplitud');
figure(2)
plot(f, m3,'b','linewidth',1.5);
hold on;
plot(f+2,m2,'r--','linewidth',1.5);
hold on;
plot(f+4,m4,'b--','linewidth',1.5);
hold on;
plot(f+6,m6,'k--','linewidth',1.5);
hold on;
plot(f+8,m8,'m--','linewidth',1.5);
hold on;
grid on;
title('Comparacion de los Espectro con el de Ana');
legend('Ana Entrenamiento','Julio Prueba','Ana Prueba','Jean
Prueba','Abraham Prueba');
xlabel('Frecuencia normalizada');
ylabel('Amplitud');
figure(3)
plot(f, m5,'k','linewidth',1.5);
hold on;
plot(f+2,m2,'r--','linewidth',1.5);
hold on;
plot(f+4,m4,'b--','linewidth',1.5);
hold on;
plot(f+6,m6,'k--','linewidth',1.5);
hold on;
plot(f+8,m8,'m--','linewidth',1.5);
hold on;
grid on;
title('Comparacion de los Espectro con el de Jean');
legend('Jean Entrenamiento','Julio Prueba','Ana Prueba','Jean
Prueba','Abraham Prueba');
xlabel('Frecuencia normalizada');
ylabel('Amplitud');
figure(4)
plot(f, m7,'m','linewidth',1.5);
hold on;
plot(f+2,m2,'r--','linewidth',1.5);
hold on;
plot(f+4,m4,'b--','linewidth',1.5);
hold on;
plot(f+6,m6,'k--','linewidth',1.5);
hold on;
plot(f+8,m8,'m--','linewidth',1.5);
hold on;
grid on;
title('Comparacion de los Espectrocon el de Abraham');
legend('Abraham Entrenamiento','Julio Prueba','Ana Prueba','Jean
Prueba','Abraham Prueba');
xlabel('Frecuencia normalizada');
ylabel('Amplitud');
figure(5)
plot(f, m1,'r','linewidth',1.5);
hold on;
plot(f,m2,'r--','linewidth',1.5);
hold on;
grid on;
xlabel('Frecuencia normalizada');
ylabel('Amplitud');
title('Espectro de Julio ');
legend('Entrenamiento','Prueba');
figure(6)
plot(f, m3,'b','linewidth',1.5);
hold on;
plot(f,m4,'b--','linewidth',1.5);
hold on;
grid on;
xlabel('Frecuencia normalizada');
ylabel('Amplitud');
title('Espectro de Ana ');
legend('Entrenamiento','Prueba');
figure(7)
plot(f, m5,'k','linewidth',1.5);
hold on;
plot(f,m6,'k--','linewidth',1.5);
hold on;
grid on;
xlabel('Frecuencia normalizada');
ylabel('Amplitud');
title('Espectro de Jean ');
legend('Entrenamiento','Prueba');
figure(8)
plot(f, m7,'m','linewidth',1.5);
hold on;
plot(f,m8,'m--','linewidth',1.5);
hold on;
grid on;
xlabel('Frecuencia normalizada');
ylabel('Amplitud');
title('Espectro de Abraham ');
legend('Entrenamiento','Prueba');
medio de las estimaciones de Yule Walker, lo que nos pareció muy útil e interesante, ya que
una aplicación inmediata, que consistió de realizar un reconocimiento de voz utilizando estos
una estimación más aproximada del orden de dicho modelo, por medio de métodos como lo
son AIC, BIC o validación de cruce. Sin embargo, es importante recalcar que los resultados
obtenidos fueron bastantes satisfactorios según nuestros análisis realizados en la sección del
cuerpo o contenido. Finalmente, para concluir consideramos que nuestro proyecto como tal
posee una gran importancia y repercusión para nuestra vida laboral, y esperamos pueda
servirnos para poder profundizar más en el tema y posiblemente hallarle aplicaciones para el
1. John G.Proakis, Dimitris G.Manolakis, Digital Signal Processing, Principles, Algorithms, and Applications,
2. Henrik V. Sorensen, C. Sidney Burrus, “Efficient Computation of the Short-Time Fast Fourier Transform”,
4. Gomez, J.C. Procesamiento digital de Señales de Voz. Apuntes: Modelos de producción de Voz.
http://www.eie.fceia.unr.edu.ar/%7Eprodivoz/apuntes_index.html