Está en la página 1de 28

Índice

1. Resumen…………………………………..........................pag 3

2. Introducción………………………………………………pag 3-8

2.1 Antecedentes………………………………………..pag 9

3. Objetivos…………………………………………………pag 10

4. Método a seguir………………………………………..…pag 12-17

5. Resultados y discusiones…………………………………pag 17-26

6. Conclusiones………………………..……………………pag 27

7. Bibliografía ……………………...……………………….pag 28
1. Resumen: El siguiente proyecto presenta el diseño de un sistema de reconocimiento

de voz por medio de la programación en MATLAB, se utiliza como método para su

funcionamiento las propiedades de simetría y valor máximo de la correlación cruzada.

El mismo busca implementar los conocimientos adquiridos en la teoría, para ello se

ha aplicado algoritmos que permita reconocer la señal que deseamos, al momento de

capturarlas por el micrófono del computador. La parte más importante, es que, se

puede, de una manera sencilla crear un programa que discierne automáticamente al

momento de adquirir los comandos de voz por el usuario. La aplicación de

tratamiento de las señales por medio de la función ventana de hanning, STFT (Short

time Fourier Transform).

2. Introducción

Antecedentes

Desde la década de 1950 hasta la década de 1960.

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

otro hardware dedicado al reconocimiento de los sonidos hablados, expandiendo la

tecnología de reconocimiento de voz para admitir cuatro vocales y nueve consonantes.

Puede que no parezcan demasiado, pero estos primeros esfuerzos fueron un comienzo

impresionante, especialmente cuando se considera cuán primitivas eran las computadoras en

ese momento.

En la década de 1970.

La tecnología de reconocimiento de voz dio grandes pasos en la década de 1970, gracias al

interés y el financiamiento del Departamento de Defensa de los Estados Unidos. El programa

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

entender 1011 palabras, aproximadamente el vocabulario de un niño promedio de tres años.

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

reconocimiento de voz está muy ligada a los avances en la metodología de búsqueda y la

tecnología, ya que la entrada de Google al reconocimiento de voz en dispositivos móviles se

demostró hace unos años).

Los años 70 también marcaron algunos otros hitos importantes en la tecnología de

reconocimiento de voz, incluida la fundación de la primera compañía comercial de


reconocimiento de voz, Threshold Technology, así como la introducción de Bell Laboratories

de un sistema que podría interpretar las voces de varias personas.

En la década de 1980.

Durante la siguiente década, gracias a los nuevos enfoques para comprender lo que dice la

gente, el vocabulario de reconocimiento de voz saltó de unos pocos cientos de palabras a

varios miles de palabras y tuvo el potencial de reconocer un número ilimitado de palabras.

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

consideró la probabilidad de que los sonidos desconocidos sean palabras.

Equipado con este vocabulario ampliado, el reconocimiento de voz comenzó a abrirse camino

en aplicaciones comerciales para empresas e industrias especializadas (por ejemplo, uso

médico). Incluso entró en la casa, en la forma de la muñeca Julie de Worlds of Wonder

(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

vocabulario de 5000 palabras, como lo hizo el sistema de IBM, quedaba un obstáculo

significativo: dictado discreto, así que tenías... que... hacer una pausa... después de... cada...

y... cada... palabra.


En la década de 1990.

En 1990, Dragon lanzó el primer producto de reconocimiento de voz para el consumidor,

Dragon Dictate, a un precio increíble de $ 9000. Siete años después, llegó el Dragon

NaturallySpeaking, que había mejorado mucho. La aplicación reconoció el habla continua,

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

sistema de reconocimiento de voz interactivo por marcación que debía proporcionarle

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.

En la década del 2000.

Para el año 2001, el reconocimiento de voz por computadora había alcanzado el 80 por ciento

de precisión y, cerca del final de la década, el progreso de la tecnología parecía haberse

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

medida que crecía Internet.

¿Sabía que el reconocimiento de voz y los comandos de voz estaban integrados en Windows

Vista y Mac OS X? Muchos usuarios de computadoras no sabían que esas características

existían. Los comandos de voz de Windows Speech Recognition y OS X eran interesantes,

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

capacidad de descargar el procesamiento de su aplicación a sus centros de datos en la nube,

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

ejemplos de habla humana.

En resumen, el cuello de botella con el reconocimiento de voz siempre ha sido la

disponibilidad de datos y la capacidad de procesarlos de manera eficiente. La aplicación de

Google agrega, a su análisis, los datos de miles de millones de consultas de búsqueda, para

predecir mejor lo que probablemente esté diciendo.

En 2010, Google agregó "reconocimiento personalizado" a la búsqueda por voz en los

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

Search a su navegador Chrome a mediados de 2011. ¿Recuerdas cómo empezamos con 10 a

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

contextual, y responde a su entrada de voz con personalidad. (Como lo señala mi colega de

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

y fundiciones de metal ".

El reconocimiento de voz ha ido de la utilidad al entretenimiento. El niño parece todo crecido.

El futuro

La explosión de aplicaciones de reconocimiento de voz indica que ha llegado el momento

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

las deficiencias de Siri).

La calidad de las aplicaciones de reconocimiento de voz también mejorará. Por ejemplo,

Sensory's Trulyhandsfree Voice Control puede escucharlo y comprenderlo, incluso en

entornos ruidosos.

A medida que todo el mundo comienza a sentirse más cómodo hablando en voz alta

a sus dispositivos móviles, la tecnología de reconocimiento de voz probablemente se

extenderá a otros tipos de dispositivos. No es difícil imaginar un futuro cercano cuando


mandemos a nuestras cafeteras, hablemos con nuestras impresoras y les digamos a las luces

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

el uso de sus métodos.

Seguramente el lector de este documento está consciente de que cada vez está más

extendida a costumbre de, en determinadas ocasiones, comunicarnos con nuestros

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

«órdenes» y que, como todo hace indicar, va a continuar creciendo.

Marcas como Amazon, Google y Facebook están impulsando esta tendencia al

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

inteligente, existen numerosas aplicaciones de esta tecnología.

En este proyecto se realiza una simulación de un sistema de reconocimiento de voz

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

de la señal de entrenamiento, a partir de la cual se puede estimar su relación con la señal de

prueba, utilizando un filtro de solo polos, ya que se requiere determinar la resonancia del

espectro. En la sección de método seguir se presentan la estimación de estos coeficientes y

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

nuestra conclusión acerca del proyecto.


3. Objetivos

Implementar un sistema de reconocimiento de voz sencillo para cuatro personas mediante

el análisis espectral con el algoritmo autorregresivo de Yule-Walker.

Utilizar las herramientas de software vistas en el curso junto con los conceptos aprendidos

para simular un sistema de reconocimiento de voz.

Describir matemáticamente un modelo autoregresivo, que represente un proceso aleatorio.

Investigar teoría y métodos sobre el reconocimiento de voz para simular un sistema.


4. Método a seguir

Para nuestro proyecto de reconocimiento de voz mediante el análisis de espectro nos basamos

en técnicas de autocorrelación y método autorregresivo a partir de los coeficientes de Yule

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

con la segunda grabación que vendría siendo la prueba.

El reconocimiento de voz lo enfocamos en el caso de una persona que dice la vocal “a” de

manera repetitiva pareciendo un eco de unos segundos de duración.

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ó

desarrollar un algoritmo de detección de voz y un modelo acústico.

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

sistema distinguir entre las diferentes palabras de cada persona.

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

características de frecuencia, examinamos las estimaciones de densidad espectral de potencia

(PSD). Dado que el tracto vocal humano se puede modelar como un filtro de todos los polos,

usamos la técnica de estimación espectral paramétrica de Yule-Walker de Signal Processing

Toolbox para calcular estos PSD.

Para explicar mejor que es y en que consiste el modelo autorrregresivo de Yule Walker a

continuación hablaremos de dos temas de vital importancia: la estimación de los coeficientes

y la derivación de ecuaciones.

Estimación de los coeficientes

Un modelo auto regresivo tiene la siguiente forma:

w[n]= X [n] +a1x[n -1] +a2x[n -2] + …… + an x[n-N] (1)

La forma de describir un modelo autorregresivo es estimando los coeficientes de la ecuación

a1, a2, ………, aN.

Esto se logra a partir de la utilización de las Ecuaciones de Yule-Walker, la cual que es una

forma matemática sencilla de obtenerlos, especialmente cuando el orden aumenta demasiado,


ya que solo es necesario dominar matemáticamente cálculos utilizando matrices, y mediante

el apoyo de matlab se facilita estos cálculos.

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

data recolectada (señales de voz de entrenamiento pre-grabadas), y con la cual se realiza 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

modelo autorregresivo utilizando las ecuaciones de Yule-Walker se debe hacer lo siguiente:

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)

y la varianza σ^2 de Rxx[n].

Orden del modelo autorregresivo

Para poder resolver exitosamente el modelo autorregresivo, debemos saber el orden del

modelo, existen distintos formas de encontrar el orden del modelo:

1. Utilizando la función de autocorrelación y la función de autocorrelación parcial.

2. El criterio de información Akaike.

3. El criterio de información Bayesian.

4. La validación de cruce.
Para este sistema, no se utilizó ninguno de los métodos anteriores, sino una estimación

aproximada de nuestro modelo autorregresivo de reconocimiento de voz, asignando distintos

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

funcionamiento de nuestro sistema para lograr resultados aceptables para el reconocimiento

de voz, debido a que los archivos de audio poseen igual orden.

Derivación de las ecuaciones

La derivación de las ecuaciones de Yule-Walker [2] son obtenidas de la siguiente forma:

Primero se inicia con la ecuación de Yule que representa un modelo autoregresivo que tiene

la siguiente expresión:

x[n]+a1x[n−1]+a2x[n−2]+…+ aNx[n−N]=w[n] (2)

Esta ecuación anterior se puede escribir de una mejor manera como una sumatoria del

producto de los coeficientes del modelo AR con la variable aleatoria desplazada en k

términos.

akx[n−k]=w[n], a0=1 (3)

Luego multiplicamos esta expresión por x[n−l] que es otra variable aleatoria desplazada l

términos.

akE{x[n−k]x[n−l]}=E{w[n]x[n−l]}, a0=1 (4)

Obteniendo como resultado dos expresiones conocidas, la de la izquierda equivale a la auto-

correlación y la de la derecha la correlación cruzada.


(5)

akrxx[l−k]= rwx[l], a0=1 (6)

El siguiente paso es calcular los términos de la correlación cruzada y relacionarlos con los de

la auto-correlación. La expresión x[n−l] se puede obtener de la ecuación (1) del modelo

autoregresivo dando como resultado:

x[n−l]= akx[n−k−l]+w[n−l] (7)

En esta parte se toman en cuenta dos propiedades, los datos y el ruido no están

correlacionados y la autocorrelación del ruido es cero en todos los rezagos, excepto en el

desfase 0, donde su valor es igual a 𝜎 2 .

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)

Las ecuaciones obtenidas se pueden representar en una matriz de la siguiente forma:


(10)

Una forma de representar la matriz obtenida es la siguiente:

(11)

Despejando el coeficiente a se puede obtener

(12)

Una vez obtenido esta ecuación, se puede lograr los cálculos de los parámetros y varianza de

ruido, estimando valores para ak utilizando la ecuación (8) y estableciendo l=0.

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

I. Espectros de individuales de los integrantes del grupo.

Figura 1. Espectro de voz de Abraham

Figura 2. Espectro de voz de Ana


Figura 3. Espectro de voz de Jean

Figura 4. Espectro de voz de Julio

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.

El espectro de prueba es la señal almacenada en la base de datos que se utilizará como


referencia para determinar el grado de similitud entre los distintos espectros de voz. Por otro

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.

II. Comparativa de los espectros de cada integrante con el resto.

Figura 5. Comparación de todos los espectros de prueba con el espectro de entrenamiento


de Abraham.
Figura 6. Comparación de todos los espectros de prueba con el espectro de entrenamiento
de Ana

Figura 7. Comparación de todos los espectros de prueba con el espectro de entrenamiento


de Jean
Figura 8. Comparación de todos los espectros de prueba con el espectro de entrenamiento
de Julio

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).

III. Código de Matlab

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);

% %comparación de coeficientes de Julio con los otros espectros


a(1)=sum(abs(Hnorm1- Hnorm2));
a(2)=sum(abs(Hnorm1- Hnorm4));
a(3)=sum(abs(Hnorm1- Hnorm6));
a(4)=sum(abs(Hnorm1- Hnorm8));

% %comparación de coeficientes de Ana con los otros espectros


b(1)=sum(abs(Hnorm3- Hnorm2));
b(2)=sum(abs(Hnorm3- Hnorm4));
b(3)=sum(abs(Hnorm3- Hnorm6));
b(4)=sum(abs(Hnorm3- Hnorm8));

% %comparación de coeficientes de Jean con los otros espectros


c(1)=sum(abs(Hnorm5- Hnorm2));
c(2)=sum(abs(Hnorm5- Hnorm4));
c(3)=sum(abs(Hnorm5- Hnorm6));
c(4)=sum(abs(Hnorm5- Hnorm8));

% %comparación de coeficientes de Abraham con los otros espectros


d(1)=sum(abs(Hnorm7- Hnorm2));
d(2)=sum(abs(Hnorm7- Hnorm4));
d(3)=sum(abs(Hnorm7- Hnorm6));
d(4)=sum(abs(Hnorm7- 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');

Comparacion =[a; b; c; d];


display(Comparacion);
6. Conclusiones

En este proyecto se implementó y probó el modelo autorregresivo de forma eficiente por

medio de las estimaciones de Yule Walker, lo que nos pareció muy útil e interesante, ya que

en la experiencia tuvimos la oportunidad de además de comprender los modelos, hallarles

una aplicación inmediata, que consistió de realizar un reconocimiento de voz utilizando estos

modelos matemáticos. Evidentemente si se necesita un sistema de reconocimiento de voz

más robusto se puede mejorar el desempeño de nuestro modelo autorregresivo realizando

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

futuro y soluciones a problemas de nuestro país aplicando los conceptos aprendidos.


7. REFERENCIAS BIBLIOGRÁFICAS.

1. John G.Proakis, Dimitris G.Manolakis, Digital Signal Processing, Principles, Algorithms, and Applications,

4th edition,Pearson Education inc., Upper Saddle River.

2. Henrik V. Sorensen, C. Sidney Burrus, “Efficient Computation of the Short-Time Fast Fourier Transform”,

Electrical and Computer Engineering Department, Rice University, Houston.

3. MATLAB 7.0. Help

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

También podría gustarte