Vous êtes sur la page 1sur 5

Diseo de un Sistema de Reconocimiento de Voz en MATLAB

Jorge Avila, Yerelmis Torres Universidad Tecnolgica de Panam Panam, Panam


Avila450@hotmail.com Yatc01@hotmail.com

Resumen: Este artculo presenta el diseo de un sistema de reconocimiento de voz por medio de la programacin en MATLAB, en donde se establece como herramienta para su funcionamiento las propiedades de simetra y valor mximo de la correlacin cruzada. Este proyecto busca acercarnos a los conocimientos adquiridos en la teora, aplicando mtodos que posibilite crear un algoritmo que permita reconocer la seal que deseamos, al momento de capturarlas por el micrfono del computador. El aporte ms significativo es que de una manera sencilla podamos crear un programa que discierne automticamente al momento de adquirir los comandos de voz por el usuario. La aplicacin de tratamiento de las seales por medio de la funcin ventana de hanning, STFT (Short time Fourier Transform), la normalizacin del espectro y el anlisis mediante el espectrograma, son puntas de lanza para el rendimiento eficaz del sistema que se presenta, ya que el ruido y el manchado espectral juegan un papel significativo en el anlisis de las seales aperidicas.

pronunciamos tienen un comportamiento distinto en el anlisis frecuencial. Al analizar seales aperidicas, hay que tomar en cuenta el ruido blanco y el manchado espectral, que son factores que nos pueden perjudicar, al querer reconocer o diferenciar dos seales, es por eso que se deben abordar los mtodos ms convenientes que disminuyan estos efectos, para que el sistema tome la mejor decisin y el error disminuya. La correlacin cruzada nos da parmetros segn sus propiedades como la simetra y el corrimiento mximo al desplazar las seales en frecuencia, para saber si una seal es igual a la otra o no, ya que si no hay ningn corrimiento, se puede decir que la seal es simtrica. Cuando hay un gran corrimiento de la frecuencia despus de correlacionar, querr decir que no habr simetra. En este artculo, se contempla la teora de la correlacin cruzada, transformada de Fourier, specgram y la metodologa empleada para desarrollar este proyecto, con sus resultados obtenidos, recomendaciones y conclusiones.

II. OBJETIVOS DEL PROYECTO.


Este artculo pretende utilizar los conocimientos adquiridos en el curso de procesamiento digital de seales, para crear un programa en MATLAB que nos permita diferenciar seales, por medio de la teora de la correlacin cruzada. El propsito fundamental es fundamentar con conceptos bsicos y manejables el proceso de reconocimiento de voz bajo un sistema que emplea la correlacin y sus propiedades, que posibiliten establecer una forma sencilla de implementacin.

Palabras clave: MATLAB, STFT, ventana hanning,


specgram, correlacin cruzada.

I. INTRODUCCIN.
Los sistemas de reconocimiento de voz, o control por comandos de voz se ven ms comnmente en celulares, en la domtica, en autos, en los navegadores web y en ciertas aplicaciones industriales y militares. La evolucin del tratamiento de las seales de voz beneficia en gran medida a agilizar los procesos, siendo adems una herramienta atractiva y moderna para promocionar cualquier producto electrnico de la vida cotidiana del hombre. Poder accionar dispositivos con la voz era un tema de ciencia ficcin en el pasado, hoy en da es muy comn, gracias a los sistemas que nos permiten capturar y tratar las seales de manera digital. El anlisis de una seal en el dominio de la frecuencia posibilita, cambiar sus caractersticas y poder diferenciarlas unas de otras, ya que las palabras que

III. DESCRIPCIN DEL PROYECTO.


Se toman tres seales de voz por medio de comandos de MATLAB, las cuales dos sern de referencia y la tercera ser de opcin a seleccin de una de las dos previamente grabadas. Es muy importante saber que el espectro de cada persona es diferente y es por eso que cada vez que se corra el algoritmo es necesario grabar las dos seales de referencia y la tercera de seleccin.

Las seales almacenadas temporalmente en variables, se les dar un tratamiento antes de hacer la correlacin cruzada, ya que este es un anlisis en frecuencia y hay muchos factores que pueden intervenir y afectar el sistema de reconocimiento. Primeramente se analizara con la funcin de MATLAB specgram, la cual permite obtener la potencia, con respecto al tiempo de las componentes espectrales de cada seal. En esta funcin se aplica tambin el mtodo de truncamiento de la seal por medio de la ventana de hanning, esto nos permite tratar de hacer peridica la seal aperidica, ya que la estamos truncando por pedazos, para luego aplicarle la transformada de Fourier, que en este caso ser llamada transformada corta de Fourier. La ventana nos atena los lbulos laterales de la fundamental, evitando el manchado espectral, al igual que reduce el ruido de la seal, suavizando el espectro y mejorando el anlisis de reconocimiento, dando mayor fiabilidad y exactitud a los componentes para diferenciar. Como la funcin specgram forma una matriz, y las filas corresponde a los pedazos de porcin de seal obtenidos por las ventanas, es necesario obtener la seal completa, es por eso que ahora le hacemos la traspuesta de la matriz 2X3, y sumamos las columnas, obteniendo la seal completa con la suma de los componentes o sus fundamentales. Teniendo las seales en el dominio de la frecuencia, se normalizan, para mejorar el anlisis y evitar que el ruido intervenga, es por ello que normalizamos a la misma magnitud de 1 mximo de potencia. Se aplica luego la correlacin cruzada de la primera seal de referencia con la tercera y luego la segunda con la tercera. Por ltimo se implementa el algoritmo de seleccin el cual nos dice si hay o no simetra en las seales y cual se corri menos o ms. Si la posicin de la frecuencia se corre mucho, la seal no es la que deseamos, y por lo contrario si es menor el corrimiento de una seal con respecto a la otra correlacionada, entonces si hay simetra y por ende es la seal deseada o la que dijimos por tercera vez. Aqu el mximo de la correlacin determina si hay sincrona entre las seales correlacionadas, si el mximo de una supera a la otra, entonces la que tiene la posicin mayor es la seal no deseada. Esto es muy importante saberlo para la implementacin del algoritmo de seleccin de la seal deseada. Los pasos en detalles que describen la estructuracin en la programacin del proyecto de reconocimiento de voz son los siguientes: 1. Inicializar las variables y colocar la frecuencia de muestreo fs = 16000 Hz. Utilice wavrecord para grabar 3 seales de voz. Tomar las dos primeras de referencia y la tercera como la seal deseada.

2. 3.

4. 5. 6.

Use la funcin spectrogram para procesar las seales almacenadas y obtener la matriz de cada una de las seales. Aplicar la traspuesta de la matriz a cada seal, utilizar la funcin suma, para sumar las columnas de la matriz y obtener el espectro en frecuencia de la seal, esto para cada seal. Normalizar los espectros de frecuencia, con el empleo de la normalizacin lineal. Hacer la correlacin cruzada para las tres seales almacenadas, las dos primeras por separado con respecto a la tercera. Crear un algoritmo de decisin el cual contemple el cambio de frecuencia o desplazamiento por la correlacin, en donde si mayor es el corrimiento de una seal con respecto a la otra correlacionada, menor simetra y por ende no es la palabra deseada.

IV. RESULTADOS.
Los primeros resultados arrojan la implementacin del espectrograma en MATLAB, la palabra encendido se nos muestra en la siguiente figura 1. Se define fs = 16000, Nfft = 1024, la longitud de la ventana de Hanning es 512, y la longitud de solapamiento es 380. Es necesario mencionar que la longitud de la ventana tiene que ser menor o igual que de la longitud de la STFT (Nfft) cuando se programa en MATLAB.

Figura 1: El espectrograma de la palabra grabada "encendido".

A partir de la figura 1, el eje X es el eje de tiempo y el eje Y es el eje de frecuencia. La resolucin del color representa el gradiente de la distribucin de energa. Significa el color ms profundo es el de ms alta de distribucin de energa en esa zona. Como siguiente punto se obtiene la normalizacin del espectro para todas las seales analizadas.

Figura 2: Valores absolutos del espectro FFT sin normalizacin.

diferentes, lo cual no es muy recomendable al realizar el anlisis en frecuencia, ya que puede introducir ruido indeseado. Analicemos que la primera y tercera grafica tiene un espectro muy similar en la primera fila. La segunda fila de las grficas corresponde a la normalizacin de los espectros lo cual mejora el anlisis, facilitndolo y evitando errores al sistema de reconocimiento de voz, por la estandarizacin de la potencia. Vemos que en el eje x de las grficas en la figura 4 muestra un rango de frecuencias, estas no son frecuencias reales o que corresponden al espectro original, estas frecuencias corresponde al anlisis por medio de la STFT y no tiene que ver con la frecuencia correspondiente al espectro original. Se procede a efectuar la correlacin de la seales de referencia con la tercera, obteniendo la siguiente respuesta en frecuencia. Las palabras dichas fueron encender y apagar.

Figura 3: Valores absolutos del espectro FFT con normalizacin.

En la figura 2 el espectro no es normalizado, esto afecta ya que complica ms el anlisis porque cada seal tiene una magnitud de potencia diferente, y es mejor estandarizar a 1, como vemos en la figura 3, ya que eliminamos ruido.

Figura 5: Las grficas de las correlaciones cruzadas encender-apagar.

Se observa en la figura 5, que la primera grafica de la izquierda es encender, la cual es mucho ms simtrica que la de la derecha que es apagar. Esto se debe a que la tercera palabra o la deseada fue encender, por ende va tener mayor simetra en ambos lados de la fundamental.

Figura 4: Graficas de salida del espectrograma y de la normalizacin.

La figura 4 muestra las tres seales grabadas respectivamente, en la primera columna se muestra la seal de la palabra encender, la segunda columna de la palabra apagar y la tercera columna es la palabra deseada, en este caso encender. La primera fila de las grficas corresponde a la salida del specgram, en donde se obtiene la potencia del espectro, vemos que las magnitudes de potencia son

Obtenemos tambin como resultado el cambio o corrimiento en frecuencia, el cual solo corresponde al efectuar lo correlacin cruzada, observamos que la posicin de la seal de encendido no cambia como lo hace la de apagado, ms que todo cambia la posicin mxima de la correlacin cruzada. Teniendo en cuenta que si una seal tiene una posicin mayor con respecto a la otra, entonces no corresponder a la seal deseada. En este caso el algoritmo escoge la seal encender porque su mxima correlacin es menor que la seal de apagar.

recorrindo todo su espectro. El solapamiento entre las ventanas es muy importante ya que beneficia en la resolucin de la STFT, por ende es bueno que sea grande.

VI. CONCLUSIONES Y RECOMENDACIONES.


El mtodo empleado para el reconocimiento de voz es eficaz al pronunciar palabras que no estn muy cercanas espectralmente, es por eso que palabras que suenan casi igual ponen en desventaja nuestra aplicacin con la correlacin cruzada. La correlacin cruzada desplaza las seales hasta alcanzar un valor mximo o valor de correlacin, el cual se considera como el valor de correlacin entre las seales o tambin como la medida de sincronizacin entre dos seales. Es interesante el tratamiento previo de la seal, ya que al eliminar el ruido y el manchado espectral, podemos obtener una mejor representacin de la transformada rpida de Fourier y por ende mejor resolucin, brindando la seguridad de que el sistema podr reconocer la palabra deseada. Aspectos como la normalizacin son muy importante, ya que la estandarizacin de la potencia, mejora el desempeo y evita que el ruido afecte al momento de realizar el anlisis, porque pudiera ocurrir que entre ninguna de las tres seales analizadas haya una similitud, y por ende ninguna podr tener simetra espectral. Como encender y apagar son palabras de espectros muy diferentes, es muy fcil para el sistema reconocer que hay una diferencia grande en la correlacin, y la respuesta ser la apropiada. La utilidad de las ventanas como la de hanning que es de forma cosenoidal positiva, permite atenuar los lbulos armnicos, que puedan intervenir en el anlisis y solo resaltando las frecuencias fundamentales. Si las seales de referencia y la deseada son grabadas por personas diferentes el sistema no podr realizar bien la decisin, ya que habr mucha diferencia entre las tres seales, por eso recomendamos aumentar la inmunidad al ruido y encontrar las caractersticas comunes de la voz de cada persona, para crear un programa ms general. El reconocimiento de voz no solo se basa en la teora de correlacin, existen otros mtodos de filtrado digital y anlisis de componentes ms especializados que brindan una solucin un poco ms elaborada y contemplando ms variables como la cercana entre las pronunciaciones y dems aspectos relevantes como la mejor supresin del ruido. Algo importante sera crear una base de datos de seales de voz, para diferentes palabras, permitiendo crear algoritmos ms avanzados, para el mejor modelado de las seales y tener ms informacin sobre las componentes frecuenciales de cada palabra, usando diferentes personas y buscando patrones que permita crear una identificacin ms acertada en el reconocimiento de voz.

Figura 6: Las grficas de las correlaciones cruzadas encender-apagar.

En la figura 6 se obtiene la correlacin cruzada de la palabra encender a la izquierda y apagar a la derecha, en este caso la palabra deseada fue apagar, por ende tendr mejor simetra en la correlacin de apagar.

La diferencia del cambio de frecuencia es grande ya que la seal de encender su mxima posicin de la correlacin se encuentra en la posicin 8, mientras que la de apagar se encuentra en 1, esto nos da como resultado que la palabra que escoge el algoritmo a desplegar es apagar, ya que el mximo de la correlacin de apagar es menor que la de encender.

V. DISCUSIN.
Al analizar los resultados y el comportamiento del sistema de reconocimiento de voz fijado, es importante modular bien la voz ya que en algunas ocasiones, el sistema no poda hacer la diferenciacin, porque la posicin mxima de la correlacin no era mayor a dos o estaban muy cercanas, por ende el sistema no poda dictar una sentencia. La diferencia de posicin o cambio de frecuencia en la correlacin es un factor determinante al momento de que el sistema nos muestre una respuesta apropiada, palabras muy parecidas en el espectro pueden afectar al momento de hacer una seleccin por parte del algoritmo, ya que solo la investigacin contempla la correlacin con palabras de pronunciacin muy diferente. Al multiplicar cada una de las seales por medio de una funcin ventana, permite aplicar la transformada corta de Fourier y obtener una mejor representacin espectral, ya que la ventana va truncando por pedazos la seal,

VII. REFERENCIAS BIBLIOGRFICAS.


[1] John G.Proakis, Dimitris G.Manolakis, Digital Signal Processing, Principles, Algorithms, and Applications, 4th edition,Pearson Education inc., Upper Saddle River. [2] Luis Buera, Antonio Miguel, Eduardo Lleida, Oscar Saz, Alfonso Oretega, Robust Speech Recognition with On -line Unsupervised Acoustic Feature Compensation, Communication Technologies Group (GTC),13A, University of Zaragoza, Spain. [3] Henrik V. Sorensen, C. Sidney Burrus, Efficient Computation of the Short-Time Fast Fourier Transform, Electrical and Computer Engineering Department, Rice University, Houston. [4] Fredric J. Harris,Member, IEEE, On the Use of Windows for Harmonic Analysis with the Discrete Fourier transform, Proceedings of the IEEE, VOL 66, No.1, JANUARY, 1978. [5] Joseph W. Picone, senior member, IEEE Signal Modeling Techniques in Speech Recognition.