53
UNIVERSIDAD AUT~NOMA METROPOLITANA lztapaiapa DIVISI~N DE CIENCIAS BÁSICAS E INGENIER~A Reconocimiento de comandos verbales que para obtener el título de INGENIERO BIOMÉDICO presentan: . * .. ,. & ",, . - ' - .- . . SERGIO ARTURO SIERRA ROJAS FABIAN ARMENT LONSO i"p Asesor de proyecto: México, D.F. 2000

DIVISI~N DE CIENCIAS BÁSICAS E INGENIER~A148.206.53.84/tesiuami/UAM3619.pdf · 5-1 6-1 A- 1 A-2 . El presente trabajo ... adquiridos a través de la formación académica. ... promover

  • Upload
    duongtu

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

UNIVERSIDAD AUT~NOMA METROPOLITANA lztapaiapa

D I V I S I ~ N DE CIENCIAS BÁSICAS E INGENIER~A

Reconocimiento de comandos verbales

que para obtener el título de

INGENIERO BIOMÉDICO

presentan: . *

.. ,. & ",, . - ' - . - . .

SERGIO ARTURO SIERRA ROJAS

FABIAN ARMENT LONSO i"p

Asesor de proyecto:

México, D.F. 2000

UNIDAD: IZTAPALAPA

DIVISION: CIENCIAS BASICAS E INGENIERIA

CARRERA: ING. BIOMEDICA

ESPECIALIZACION: INSTRUMENTACION MEDICA ELECTRONICA

MATERIA: PROYECTO DE INGENIERIA BIOMEDICA

TITULO: RECONOCIMIENTO DE COMANDOS VERBALES

FECHA:

ALUMNOS: ARMENTA ALONSO FABIAN SIERRA ROJAS SERGIO ARTURO 92323036

ASESOR: ING. DONACIANO JIMENEZ

FIRMA DE ACEPTACION DEL ASESOR

OBJETIVO

CAPITULO 1

CAPITULO 2

CAPITULO 3 -n 7

I i ,~

I CAPITULO 4

6,.

f l CAPITULO 5

CAPITULO 6

APENDICE I

APENDICE I1

2 2 5 9 6 2

Descripción general

Subsistema de adquisición

Reconocimiento de voz

Descripción del sistema de reconocimiento propuesto

Integración

Resultados y conclusiones

Análisis y Adquisiciones

Programa de Adquisición

I

I

I

1-1

2-1

3-1

4-1

5-1

6-1

A- 1

A-2

El presente trabajo plantea un sistema de adquisición de señales analógicas con el fin de controlar algún dispositivo eléctrico o electrónico haciendo uso de los conocimientos adquiridos a través de la formación académica.

OBJETIVO

l . Desarrollar una interfaz que sea capaz de digitalizar señales analógicas por medio de un convertidor analógico digital y dispositivos de control.

2. Desarrollar un programa capaz de realizar la discriminación de las palabras de control del resto del vocabulario usual.

3. A partir de comandos verbales la interfaz, en conjunto con el programa, deberán ser capaces de discriminar dichas palabras del resto del vocabulario mostrando una respuesta específica para cada una de las palabras de control.

El dispositivo completo debe cumplir con ser una interfaz económica, versátil y eficaz para poder adaptarse a cualquier equipo que pueda auxiliar a personas con impedimentos fisicos.

Se pensó en este trabajo por la falta de información sobre el mismo tema, además de promover entre las futuras generaciones la profundización del mismo.

Este proyecto fue pensado para la aplicación de la interfaz en usuarios con problemas y/o impedimentos motores.

Por lo tanto, este trabajo está dirigido a las personas interesadas en desarrollar el tema y, de alguna manera, desarrollar la tecnología para personas con impedimentos motores que necesiten algún dispositivo auxiliar.

La idea principal es procesar digitalmente una señal analógica de voz, seleccionar diversos comandos para la discriminación del resto del vocabulario, la discriminación de las señales, y, con los parámetros correctos, dar una salida específica para cada una de las palabras de control.

CAPÍTULO I

DESCRIPCIóN GENERAL

El equipo utilizado para realizar dicha interfaz en una computadora compatible IBM PC con un puerto periférico disponible para efectuar las conexiones necesarias en el bus de datos.

La interfaz debe constar de un puerto paralelo para realizar las decodificaciones necesarias, además de controlar el convertidor analógico digital y los dispositivos necesarios para el correcto funcionamiento de la tarjeta de expansión.

Además, debe constar con un micrófono para la captura de la señal de voz y una etapa de amplificación suficiente para que la señal analógica adquirida sea fácil de trabajar.

El subsistema entrada-salida de una computadora proporciona un modo eficiente de comunicación entre el sistema central y el ambiente exterior. Los programas y los datos deben entrarse a la computadora para el procesamiento y los resultados de la computadora deben registrarse o exhibirse par el usuario.

Se decidió utilizar un sistema compatible con IBM PC para que el trabajo realizado en el presente proyecto de investigación se aplique a estas computadoras. Otra razón importante es que existe una gran variedad en lenguajes de programación para la PC. Uno de los lenguajes de programación más populares y de más fácil manejo en el C+, lenguaje que actualmente cuenta con la facilidad de crear archivos ejecutables desde el sistema operativo de la PC. Esto lo hace igualmente poderoso que cualquier compilador existente en el mercado, pero cuenta con la ventaja de que una gran cantidad de personas lo sabe utilizar, característica que no se da con otro tipo de compiladores.

Una ventaja más es la facilidad para diseñar e interconectar una tarjeta de interfaz al sistema PC, puesto que la computadora cuenta con conectores especiales, así como un área específica de direcciones lógicas para poder direccionar las tarjetas prototipo que comprende desde la dirección 200H hasta la 20EH.

Como se puede observar, la conexión a este bus de expansión logra una interacción directa con el microprocesador. Por medio de esta expansión se pueden conectar todo tipo de dispositivos de entrada-salida y además tener acceso a las líneas de alimentación de voltaje, con las cuales se podrán alimentar los circuitos que conformarán el sistema de reconocimiento de voz. Debido a estas características se decidió realizar el diseño en base a estos conectores de expansión.

Una de las características especiales del bus de expansión es que maneja 8 o 16 bits de datos. Sin embargo, fisicamente el bus de 8 bits es diferente al de 16 bits. Como los conectores de 8 bits se encuentran en prácticamente todos los modelos de computadoras, las facilidades técnicas para el manejo de 8 bits son muchas, y como uno de los objetivos de

esta proyecto de investigación es realizar una interfaz económica y de diseño sencillo, flexible y funcional, se decidió realizar la interfaz en base al conector de 8 bits.

Se podría pensar que con 8 bits se tendrían errores implícitos en el proceso de la conversión de una magnitud considerable; sin embargo, dentro de un rango de voltaje de O a 5 volts de señal analógica existirían 256 subdivisiones dentro de este rango de voltaje. Esto se traduce a que el máximo error de cuantificación implícito dentro de una conversión será de 9.76 milivolts, lo que representa el 0.195% en error de la señal digitalizada. Desde otro punto de vista, la señal digitalizada es el 99.8% de la señal analógica original en el peor de los casos en el proceso de digitalización.

En este momento es oportuno hacer un resumen de las características generales que se definieron para poder proponer un diagrama a bloques del sistema:

l . Uso de computadora compatible con IBM PC 2. Uso del lenguaje C+ (compilador) 3. Utilización del conector de expansión de 8 bits 4. Elección de una dirección lógica entre 200H y 2EOH 5. Diseño del sistema en base al conector de expansión

Es muy importante resaltar que el diseño del sistema de adquisición de datos se hará en base al bus de expansión, por lo tanto es importante también nombrar las características principales del conector:

1 . 2. 3. 4. 5. 6. 7. 8.

8 líneas de datos 20 líneas de direcciones lógicas 6 líneas de petición de interrupción 4 canales de acceso directo a memoria 4 líneas de habilitación de lectura y escritura señales de control varias 2 señales de reloj 8 líneas de alimentación y tierra

De esta manera se puede plantear un diagrama a bloques del sistema de adquisición de datos.

L

a 0

En este diagrama a bloques se distinguen cinco circuitos y tres buses principales: entre los circuitos de la parte analógico, se encuentra el circuito de amplificación de micrófono que tendrá la función de adaptar el nivel de salida del mismo, que es de entre 10 y 50 milivolts, al rango de operación del convertidor analógico-digital que es de O a 5 volts.

El siguiente circuito es el convertidor analógico-digital, que será de 8 bits y deberá ser manejado por las señales de control del microprocesador.

La parte de interfaz entre la computadora y el convertidor será a través de un sistema de puertos de entrada-salida, y será preferentemente de la misma familia de circuitos de INTEL para cumplir con la premisa de hacer a la interfaz lo más sencilla y versátil posible.

Para poder manejar estos puertos se necesita decodificar una dirección lógica que envía el microprocesador antes de mandar o recibir datos, es por esto que se necesita un circuito decodificador de direcciones, estará direccionando todo el tiempo el sistema de reconocimiento de voz.

El último bloque marcado como pP se refiere a una computadora compatible con IBM.

El sistema completo se compondrá entonces de:

l . Computadora compatible 2. Una interfaz de entrada-salida con los circuitos mencionados anteriormente 3. Un programa de adquisición y procesamiento de datos

El programa deberá ser capaz de procesar los datos de comandos verbales. Estos comandos serán específicamente tres palabras: derecha, izquierda, alto. De manera que al reconocer estos comandos se podrán implantar rutinas que controlen periféricos conectados al puerto de entrada-salida del sistema de reconocimiento.

CAPÍTULO 11

SUBSISTEMA DE ADQUISICION DE DATOS

Tomando como base el diagrama del sistema a bloques, podrán elegir los circuitos que conformarán el subsistema de adquisición de datos, sin olvidar que dichos circuitos deben ser económicos y de fácil adquisición. Cada uno de estos circuitos se eligió por su fácil conexión los buses del microprocesador 8088. La lista es la siguiente:

1) Convertidor analógico-digital tipo ADC0804 de National 2) Interfaz programable de periféricos INTEL 8255 3) Decodificador de 3 a 8 líneas tipo 74LS 138 de Texas I. 4) Doblé amplificador operacional tipo LF353 de National S. 5) Regulador de voltaje positivo tipo LM317 de National S. 6) Regulador de voltaje negativo tipo LM337 de National S.

Las características más importantes de cada uno de estos circuitos se describirán a continuación.

DESCRIPCION DEL CONVERTIDOR ADC 0804

Convertidores A D compatibles con microprocesador, ADC0801, ADC0802, ADC0803, ADC0804 y ADC 0805 (National Semiconductor). Estos circuitos integrados son convertidores analógico-digitales de 8 bits de tecnología CMOS que utilizan el método de aproximaciones sucesivas y una escala de resistencias diferenciales similar a los productos tipo 256R para la conversión.

Los convertidores están diseñados para permitir la operación conjunta con los microprocesadores 280 , N8C800, 8080, etc. El voltaje de referencia de entrada puede ser ajustado para codificar cualquier voltaje analógico pequeño con todos los bits de resolución.

CARACTERISTICAS.

1. Compatible con é1 microprocesador 8080 y sus derivaciones. No necesita acoplamiento

2. Fácil conexión con todos los microprocesadores; también opera automáticamente. 3. Entrada analógica diferencial 4. Trabaja con 2.V de referencia 5. Generador de reloj integrado 6. Desde OV hasta 5V de rango de entrada con una sola fuente de 5 volts. 7. No requiere ajuste del cero

lógico. El tiempo de acceso es de 135 ns.

ESPECIFICACIONES

Resolución 3 bits Error total 114 LSB, +/- 112 LSB y +/- 1 LSB. Tiempo de conversión 100 us Rango de operación 4.5 Vdc A 6.3 Vdc NOTA: Datos proporcionados por el fabricante.

DESCFUPCION DEL FUNCIONAMIENTO

La serie de convertidores ADC080X contiene un circuito equivalente al arreglo de resistencias conocido como 256R. Los interruptores analógicos son activados secuencialmente por la lógica de aproximaciones sucesivas para igualar el voltaje analógico diferencial de entrada [W(+) - V(-)] con el correspondiente, dentro del arreglo de resistencias.

El bit más significativo (MSB) es probado primero y después de 8 comparaciones (64 ciclos de reloj) el código digital de 8 datos binarios es transferido a un registro de salida y entonces se genera un cambio en la salida INTR de un estado alto a un estado bajo.

L a conversión en proceso se puede interrumpir emitiendo un segundo pulso de inicio. El circuito puede operar en modo continuo conectando la salida INTR a la entrada WR con la entrada CS a tierra.

Para asegurar la puesta en marcha del circuito bajo todas las condiciones posibles, se requiere un pulso externo a la entrada WR durante el primer ciclo de "puesta en marcha".

En la transición de alto a bajo nivel de la entrada WR, el registro de aproximaciones sucesivas (SAR) y las etapas del registro de transferencia son puestas a cero (RESET).

Todo el tiempo que las entradas CS y WR se mantengan bajas, el convertidor permanecerá en estado de RESET.

La conversión empezará desde 1 hasta 8 periodos de reloj después de que al menos una de estas entradas haga una transición de bajo a alto nivel.

El diagrama funcional del convertidor se muestra en la figura 3. Todas las terminales del circuito integrado están incluidas y las trayectorias más importantes para el control de la lógica están resaltadas con líneas más anchas.

El convertidor inicia teniendo CS y WR simultáneamente en estado bajo, esto enciende al flip flop "START FE" y el estado lógico resultante (l), inicializa en cero el registro de transferencia de 8 bits, actuando también sobre el f/f de interrupción (INTR f/Q

y origina un 1 lógico en el f/f que está en la terminal de entrada del registro de transferencia. La señal interna de reloj transfiere entonces este 1 lógico a la salida del f7f.

La compuerta AND G1 combina este 1 con una señal de reloj que origina una señal de RESET en el START F/F.

Si la señal SET (start f/f) ya no está presente (ya sea que WR o CS sean 1 lógico), el START F/F es puesto en RESET (Q=O) y el registro de transferencia de 8 bits es activado, con lo cual da inicio el proceso de conversión.

Si la señal SET en el START F/F estuviera presente aún, este pulso de RESET no tendría efecto (ambas salidas del START F/F estarían momentáneamente en 1 lógico) y el registro de transferencia permanecería inactivo, amarrado al modo RESET.

Por lo tanto esta lógica permite la entrada de pulsos anchos sin CS y WR y el convertidor sólo comenzará la conversión hasta que alguna de estas dos señales regrese a estado alto y el reloj interno (CLK A) active de nuevo la señal de RESET en el START FE.

DESCRIPCION DEL PPI INTEL 2255

Características generales:

+ Alimentación única de 5 volts + Compatible con TTL + 24 pines programables como entrada o salida + Compatible con sistemas basados en el procesador 8088

FUNCIONAMIENTO

Este periférico se halla organizado en dos grupos de 12 bits cada uno: Grupos A y B. El grupo A puede funcionar en tres modos(0, 1 y 2); el grupo B sólo puede trabajar en dos (O y 1). En modo O los grupos se dividen en 3 puertos de 4 bits, cada uno programables como entrada o salida. En modo 1 , cada grupo se configura con un puerto de 8 bits de entrada o de salida, y en un puerto de control de 4 bits. En el modo 2, el puerto A se configura como un bus bidireccional, y los 5 bits más significativos del puerto C (PC3 - PC7) se utilizan para el control del bus. Todos estos modos se seleccionan mediante la escritura en el registro de control. Este registro no se puede leer.

Este periférico tiene la posibilidad de poner a O ó a 1 cualquier bit del puerto C (siempre que esté como salida) mediante la escritura del registro de control. El formato es el siguiente:

+ BIT 7 = O + BITS 4 al 6 =.No importa el estado + BITS 1 al 3 = Seleccionan el bit del puerto a modificar

+ BIT O = 1 6 O según se quiera poner el bit seleccionado (O00 = PC1,OOl = PC2,llO = PC6,111= PC7)

MODOS DE FUNCIONAMIENTO

Para programar los diferentes modos de funcionamiento del periférico se debe escribir el código apropiado en el registro de control cuyo formato es el siguiente:

+ BIT 7 1 (activación del modo) + BIT 6 y 5 Modo del grupo A (OO= modo O, 01= modo 1 , l X = modo 2) + BIT 4 Dirección del puerto A (O= salida, I= entrada) + BIT 3 Dirección de los cuatro bits más significativos del puerto C

(O= salida, 1= entrada) + BIT 2 Modo del grupo B (O= modo O, 1= modo 1) + BIT 1 Dirección del puerto B (O= salida, 1= entrada) + BIT O Dirección de los 4 bits menos significativos del puerto C

(O= salida, 1= entrada)

(Ver tablas 1 , 2 , 3 y 4)

MODO O

Esta configuración provee salidas normales de entrada o salida para los tres puertos. Los datos de salida se pueden mantener hasta una nueva escritura en el puerto. Si el puerto está configurado como entrada, los datos que se leerán son los que en ese momento se encuentren, no se pueden almacenar en el periférico. Los puertos A y B solamente se pueden programar como entrada o como salida, en cambio el puerto C, al dividirse en dos de 4 bits, se pueden programar como entrada o salida independientemente.

MODO 1

Este modo vale para los grupos A y B. Los dos grupos se configuran en un puerto de 8 bits de datos y en un puerto de control de 4 bits por cada grupo. El puerto de 4 bits se

usa para el control y el estado de las señales que afectan al puerto de datos. Estos bits de control tienen las siguientes funciones:

+ STB (strobe input) 2 2 5 9 6 2 Un nivel bajo en esta salida guarda en el registro del puerto los datos que se encuentran en él. Estos datos son almacenados independientemente de las órdenes enviadas por la CPU hasta que ésta haga una operación de lectura.

+ IBF (reconocimiento de almacenamiento) Un nivel alto en esta salida indica que los datos presentes en las entradas han sido almacenados en el registro del puerto. Este nivel alto aparece en el flanco de bajada de STB, y desaparece en el flanco de subida de la señal R D .

+ INTR(reconocimiento de petición de interrupción) Esta señal se puede usar para interrumpir la CPU cuando un dispositivo de entrada pida este servicio. Cuando INTR (bandera de interrupción) del 8255 esté en nivel alto (activada), INTR subirá a nivel alto en el flanco de subida de STB y bajará en el flanco de bajada de RD. INTR del grupo A se activa programando un 1 en el bit 4 (PC4) del puerto C, por medio de la escritura en el registro de control. INTEb del grupo B se programa del mismo modo en el bit 2 (PC2) del puerto C.

Estas señales son para la configuración de salida OBF (indicación de nuevo dato). Esta salida está a O en el flanco de subida de WR, y se pone a 1 en el flanco de bajada de ACK. Básicamente el periférico indica mediante esta señal que hay un nuevo dato que transmitir.

+ ACK (reconocimiento de dato) La recepción de esta señal indica que la terminal conectada al puerto ha tomado los datos presentes en él.

+ INTE (petición de interrupción) Esta señal se puede usar para interrumpir a la CPU cuando la terminal conectada está recogiendo los datos del puerto. INTR está en 1 cuando INTE está activa y OBF está en nivel alto. Estará en O en el flanco de bajada de WR. La activación de INTR se hace de la misma manera que en la configuración de entrada.

MODO 2

Este modo de operación produce operaciones bidireccionales usando un bus de 8 bits para la comunicación con otros dispositivos. Este modo sólo es válido para el grupo A y usa el puerto A para el bus y los 5 bits más significativos del puerto como control. El bus tiene 2 registros, uno más para entrada y otro para salida. Las señales de control del puerto C son similares a las del modo 1, y también se puede interrumpir a la CPU usando estas

señales. Cuando el grupo A funciona en modo 2, el grupo B puede funcionar en modo O ó l . Cuando el grupo A está en modo 2, las siguientes señales de control están presentes:

1. OBF (indicación de nuevo dato)

del puerto A. Cuando esto ocurre, el bus queda en alta impedancia. 2. ACK (reconocimiento de dato)

A. Cuando regresa a nivel alto, el bus regresa al estado de alta impedancia. 3. STB (strobe input) Cuando se encuentre en nivel bajo, los datos presentes en el bus son almacenados en el registro de entrada de éste, y los datos se transferirán al bus del sistema con la señal RD. l . IBF (reconocimiento de almacenamiento) Cuando los datos de entrada han sido almacenados en el registro de entrada esta señal estará en 1. 2. INTR (petición de interrupción) r*

Esta salida se usa para interrumpir a la CPU y opera de la misma manera que en el R; modo 1. Hay dos banderas de interrupción que corresponden a INTRA para modo 1 en entrada o en salida. 3. INTE1

Esta salida se pondrá a O para indicar que la CPU ha enviado datos al registro interno

Un nivel bajo en esta entrada produce la transferencia de los datos del registro al puerto

clt.

[( : , , c .

!

Se usa para generar señales INTR en combinación con OBF y ACK. Se activa r’

r . escribiendo un 1 en PC6. 4. INTE2

escribiendo un 1 en PC4. Se usa para generar señales INTR en combinación con IBF y

En la figura 4 se muestra el circuito y un ejemplo de configuración.

DECODIFICADOR 74LS138

Características generales: + Compatible con TTL + Voltaje de alimentación: 5 volts + Voltaje de entrada para uno lógico mínimo: 2 volts + Voltaje de entrada para cero lógico máximo: o a volts + Voltaje de salida para uno lógico: 2.7 a 3.4 volts + Voltaje de salida para cero lógico: 0.25 a 0.4 volts + Rango de temperatura de operación: de O a 70 grados C. + Tres entradas de habilitación del circuito + Tres niveles lógicos (cero, uno y alta impedancia)

I ;;

STB. Se activa I . , _I

1 - I ,

I .

AMPLIFICADOR OPERACIONAL LF353 NATIONAL S.

Este circuito integrado es de bajo costo, de alta velocidad y contiene dos amplificadores operacionales con entrada JFET con compensación interna de voltaje de offset. Estos amplificadores requieren baja corriente de la fuente de alimentación, manteniendo el producto ganancia - ancho de banda grande y un "slew rate" rápido. Debido a las entradas JFET estos amplificadores usan muy poca corriente de polarización, de l a misma manera, la corriente de offset es muy pequeña.

Estos circuitos pueden ser usados en aplicaciones tales como: integradores de alta velocidad, convertidores D/A rápidos, circuitos de muestre0 y retención, y muchos otros circuitos que requieren de bajo voltaje de offset de entrada, baja corriente de polarización, alta impedancia de entrada y slew rate rápido.

CARACTERISTICAS

+ Voltaje de offset: 2 mV + Corriente de polarización: 50 pA + Ganancia ancho de banda: 4 MHz + Slew rate: 13 V/us + Corriente de alimentación: 3.6 mA + Impedancia de entrada: 1 O- 12 Ohms

CAPÍTULO 111

RECONOCIMIENTO DE VOZ

El reconocimiento de voz ha sido objeto de estudio por más de 20 años, debido a que es una aplicación potencial para los microprocesadores. Los primeros sistemas experimentales utilizaban grandes sistemas de procesamiento debido a la gran cantidad de procesos computacionales necesarios. En la actualidad los microprocesadores ofrecen la posibilidad de producir sistemas de reconocimiento de voz basados en un sólo chip.

CARACTERISTICAS IDEALES EN UN SISTEMA DE RECONOCIMIENTO

La forma de onda de audio creada por la voz es una señal compleja de variación considerable y que depende en gran medida de las características fisicas del hablante, estado emocional y hábitos para hablar. Fundamentalmente la voz se genera por la vibración de las cuerdas vocales las cuales generan sonidos tales como las vocales. En adición, diferentes sonidos son creados por el paso del aire a través de las constricciones formadas por la lengua, nariz, labios y dientes. Estos sonidos básicos son modificados por el tamaño y la forma de las cavidades en la boca, nariz, y otros pasajes de aire dentro de la cabeza. Las diferencias en todos estos factores fisicos causan variaciones en la forma de onda de la voz entre un hablante y otro, y aún de un día a otro en la misma persona. En la forma de onda de la voz, las variaciones se manifiestan como cambios en la fi-ecuencia, amplitud relativa y tiempo de duración.

El sistema debe ser diseñado para normalizar estos factores para crear parámetros absolutos del tiempo, amplitud y frecuencia. Otros dos parámetros adicionales son hacer al sistema insensible a ruidos extraños y darle la habilidad de reconocer oraciones completas.

La característica final es diseñar un sistema que pueda ser desarrollado usando microprocesadores. Con esta restricción no es práctico usar algunos métodos que han sido investigados en el pasado debido a que se necesitaría mayor capacidad de procesamiento que la que está disponible en un microprocesador. Por ejemplo, muchas investigaciones anteriores utilizaban la transformada rápida de Fourier (FFT) para convertir la señal del dominio del tiempo al dominio de la frecuencia. No es práctico implantar la FFT en tiempo real en un microprocesador debido a la gran cantidad de operaciones que se realizan.

PANORAMA GENERAL DE LOS SISTEMAS DE RECONOCIMIENTO

Seis pasos en el reconocimiento de la voz son comunes en la mayoría de los sistemas de reconocimiento:

l . Conversión de la señal de entrada analógica a la forma digital por medio del muestreo. 2. Compresión o selección de los datos relevantes para el proceso subsecuente. 3. Determinación de los límites de la palabra. 4. Detección de los patrones característicos de la palabra. 5. Clasificación de dichos patrones. 6. Asociación de secuencias de patrones con palabras en el vocabulario.

PROCESAMIENTO DE LA SEÑAL DE ENTRADA

La forma de onda de la voz para la palabra "ALTO" se muestra en la figura 5, que ilustra el tipo de señal que debe ser procesado por el sistema. El primer paso en el procesamiento es hacer un muestreo la forma de onda analógica y convertir la amplitud de la señal en los instantes de muestreo a una palabra digital que pueda ser manipulada por la computadora. Una consideración importante dentro de esta conversión es la frecuencia de muestreo.

El equipo básico usado para convertir una señal analógica a su equivalente digital es el convertidor analógico-digital, que es esencialmente un voltímetro digital que puede ser controlado por el procesador.

Muchas técnicas diferentes están disponibles para realizar la conversión, incluyendo aproximaciones sucesivas, conversión de voltaje a frecuencia e integración de doble rampa, entre otras.

El método de aproximaciones sucesivas es rápido y adecuado para digitalizar la señal muestreada de la voz y están ya disponibles versiones de bajo costo de estos circuitos integrados.

REQUERIMIENTOS EN LA RAZóN DE MUESTRE0

El rango de frecuencias en una señal de voz va desde algo menos que 100 Hz hasta los 3 kHz en extremo. El criterio de Nyquist para el muestreo establece que una señal puede ser descrita completamente por 2f muestras periódicas, donde f es la componente de frecuencia más alta dentro de la señal. Por tanto se necesitaría de una razón de muestreo de 16000 muestras por segundo, o lo que es lo mismo, un intervalo de muestreo de aproximadamente 60 us.

DETERMINACION DE LOS LIMITES DE LAS PALABRAS

El siguiente paso en un sistema de reconocimiento de voz es la determinación de los límites de las palabras; esto es, el proceso de determinar si una palabra está presente y dónde empieza y termina. A simple vista, este paso parece ser un proceso trivial. Sin embargo no lo es, debido a factores tales como el ruido de fondo y la interferencia eléctrica. Existen al menos cuatro características que pueden ser usadas individualmente o en conjunto para distinguir la voz del ruido:

+ Amplitud + Frecuencia + Duración + Patrones sonoros

Dentro de los patrones sonoros se puede decir que la mayoría del ruido por debajo de los 300 Hz es aleatorio y de corta duración. Examinando los patrones sonoros y la duración del ruido es posible, basándose en resultados experimentales, ignorar ruido de amplitud grande. Si un sonido aislado dura menos de 100 ms, no hay palabra que registrar, y los datos generados por este sonido se pueden desechar.

La parte más compleja dentro del proceso de reconocimiento de la voz se refiere a la detección, clasificación y asociación de patrones de la voz, debido a que se requiere de un análisis del lenguaje para determinar patrones para las vocales y los diferentes sonidos de las consonantes, conocidos ambos como fonemas.

Parece ser que el cerebro reconoce las palabras relacionando patrones de frecuencia y amplitud. Por lo tanto para reconocer vocabularios grandes se tendrá que tomar muy en cuenta el hacer que el sistema distinga estos parámetros como un Único método posible para el reconocimiento de frases complicadas. Sin embargo, no ocurre lo mismo si el objetivo es reconocer palabras aisladas para aplicarlas en procesos específicos.

Solo como comentario se dirá que los parámetros a evaluar son los siguientes:

+ Oscilaciones (análisis en amplitud, 4 parámetros) + Oscilaciones (análisis en intervalo de tiempo, 4) + Picos (análisis en amplitud, 4) + Picos (análisis en intervalo de tiempo, 4) + Número de repeticiones + Promedio del intervalo de tiempo

dando como resultado 18 parámetros a evaluar para cada fonema. Esto no quiere decir que todos los sistemas usen este proceso pero si es una generalidad con variaciones en la cantidad de parámetros.

Las técnicas de identificación asocian estos parámetros para conformar palabras o frases por comparación con palabras almacenadas en el vocabulario, el cual deberá estar

almacenado en un dispositivo de varios Megabytes de capacidad para poder conformar frases de cierta complejidad. Estas técnicas de reconocimiento usan algoritmos tales como la búsqueda binaria o la búsqueda indexada para encontrar los parámetros adecuados.

Hasta aquí se ha tratado de explicar de una manera muy básica el desarrollo y el funcionamiento de sistemas de reconocimiento de voz con vocabularios grandes. Por lo tanto sólo se implantarán algunos de los seis pasos descritos anteriormente para el sistema de reconocimiento de palabras aisladas que se propone en este proyecto.

CAPÍTULO IV

DESCRIPCION DEL SISTEMA DE RECONOCIMIENTO PROPUESTO

Los pasos para lograr el reconocimiento de palabras aisladas son los siguientes:

1. Conversión de la señal analógica de entrada en un equivalente digital. 2. Determinación de los límites de la palabra. 3. Eliminación del voltaje de offset en la señal y normalización en amplitud y tiempo. 4. Determinación de parámetros de la palabra mediante la aplicación de un algoritmo

5. Reconocimiento por comparación de patrones. modificado de autocorrelación.

LIMITACIONES

Existe una gran limitante al intentar introducir los datos digitalizados de la señal de VOZ a la computadora, debido a que la velocidad de acceso a la misma es muy reducida (del orden de los 500 Hz).

La ejecución del programa de adquisición y procesamiento de los datos bajo un intérprete del lenguaje C contribuye en hacer más lento el desempeño de la computadora.

PROBLEMAS

Se considera ahora el caso en que la velocidad de muestreo es menor a dos veces la frecuencia más alta de la señal de voz, o lo que es lo mismo: F, < 2B.

La frecuencia central de la banda de frecuencias dentro de la señal de voz, así como todas sus armónicas comenzarán a juntarse y a disminuir. Es evidente que llegará el momento en que los componentes espectrales de la señal se traslapen y confundan entre sí. El efecto de traslape se debe a que las muestras se están tomando demasiado espaciadas y la distorsión que resulta se denomina interferencia de colas espectrales (aliasing). La frecuencia límite en la que se produce la mezcla es: F, = 2B que es la frecuencia de muestreo de Nyquist.

COMENTARIOS Y SOLUCIONES

Cumplir con el teorema del muestreo es totalmente imprescindible en todos los sistemas de comunicación, pues se tiene la necesidad de reconstruir la señal digitalizada para que el receptor pueda escucharla, como por ejemplo en un sistema de telefonía digital, en donde la correcta reconstrucción de la señal digitalizada es fundamental para la comunicación.

En el caso de este sistema en particular, lo que se intentará es obtener patrones basados en la señal que entra al computador. Estos patrones, como se comentó anteriormente, estarán afectados por la baja velocidad de muestreo. Sin embargo, la señal que entra al computador es comparativamente diferente para cada palabra y por lo tanto es posible hacer una diferenciación de las palabras que procesará el sistema, porque lo indispensable es que el sistema sea capaz de reconocer que las oscilaciones que entran al computador corresponden o son el resultado de una palabra, y el objetivo del sistema será entonces clasificarla o discriminarla por medio de una comparación con patrones previamente "aprendidos" por este.

En el caso de este sistema en particular, no habrá necesidad de reproducir o sintetizar la voz basándose en los patrones que entran al computador. Como se comentó anteriormente, el Único objetivo del sistema será reconocer palabras aisladas basándose en los parámetros "aprendidos" con anterioridad.

Sin embargo, se procurará obtener el máximo de puntos de muestreo para lograr una mayor discriminación entre palabras, esto se logrará de la siguiente manera:

l. Se escogerá una computadora que tenga un procesador rápido. 2. Se programará en lenguaje C compilador para evitar correr el programa bajo un intérprete, de esta manera se ahorra memoria y por consiguiente se ahorra tiempo en la ejecución. Esto implica que el programa tenga que ser ejecutable desde el sistema operativo, lo cual es la manera más rápida para realizar los procesos internos del programa. 3. Se creará un disco duro virtual en la memoria RAM de la computadora para optimizar los accesos que tiene que realizar el programa a los archivos de diccionario, es decir a los archivos en los que están almacenados los patrones de cada palabra en el vocabulario del sistema.

DETERMINACION DE LOS LIMITES DE LA PALABRA

Para poder determinar el inicio y fin de las palabras se utilizará un algoritmo conocido con el nombre de ley u (ley mu). Este algoritmo esta basado en la forma logarítmica para lograr una compresión o expansión de la amplitud de la señal de entrada, proporcionando a la salida un espaciamiento constante de la señal de entrada comprimiendo los valores de amplitud mayor (valores que tienden a los máximos de la señal kv) y expandiendo los valores de amplitud de la señal que tienden a O volts (eliminando el offset de la señal para ambos casos).

El algoritmo esta definido de una manera normalizada (es decir, eliminando el voltaje de offset de la señal y limitando el valor máximo de la señal a un valor predefinido, preferentemente este valor es igual a la unidad), de la siguiente manera:

y(x) = Ln (1 + [u * x]) / Ln (1 + u)

en donde x representa la amplitud normalizada de la señal y donde el valor u puede variar, con lo cual se obtendrá una familia de curvas características para este algoritmo. Cabe mencionar que en Estados Unidos la compañía Bell Systems ha adoptado un valor de u=255 para sus sistemas de telefonía digital con excelentes resultados.

Sería muy extenso el hacer un análisis de la ley u y otras leyes de comprensión que han sido llevadas a la práctica. Lo importante sería ver como esta idea de comprensión puede utilizarse para encontrar los límites de una palabra.

Al introducir una palabra al computador habrá, al inicio y al final de dicha palabra, instantes de silencio (esta condición no es absolutamente necesaria) en donde el sistema captará únicamente ruido que tendrá una amplitud pequeña en comparación con la amplitud >*.

de las palabras. 1 t"

t .

$: ,

Al aplicar el algoritmo tal como se programó, este proporcionará valores lo (1; comprendidos entre O y 1. Debido a que estos instantes de silencio tienen valores de t..; r; amplitud muy pequeños debido al ruido, se expandirán pero sin lograr llegar a un valor de 14 ,- 0.5 esto gracias a que, por decirlo de alguna manera, el ruido de fondo será el "piso" en '-+ ~1 donde se apoya la señal, por tanto será de amplitud más pequeña. *; _. . 5: 7 2;.

. *

C i 5.

" ..- ,"

C J

-+ ? ,&-

L* r_. Por el contrario, al hablar, la amplitud será mayor y sobrepasará el valor de 0.5 aún cuando el algoritmo tienda a comprimir los valores de amplitud mayores. :, .I-, - .

De esta manera al redondear las fracciones sólo habrá dos valores O ó 1. Obviamente cuando el sistema se tope con un 1 cuando haga el rastreo por el lado izquierdo de la palabra habrá encontrado el inicio de esta y cuando detecte un 1 haciendo el rastreo por la derecha habrá encontrado el final de la palabra.

, . I ,.

El algoritmo proporciona la capacidad de poder hablar relativamente alejado del micrófono o hablar muy cerca de este debido a las características propias de compresión o expansión del algoritmo. Sólo en el caso de hablar alejado del micrófono podría presentarse una pérdida de información debido a que, en la forma como esta planteado dicho algoritmo, podría discriminar la información que tuviera una amplitud muy pequeña.

ELIMINACION DEL VOLTAJE DE OFFSET Y NORMALIZACION DE LA AMPLITUD Y DEL TIEMPO

Al ser captada la señal por el sistema, esta lleva implícita un voltaje de offset, el cual se traducirá en un valor binario cuando haya sido convertida la señal a su forma digital.

Si se realiza un promedio de todos los valores captados por el sistema en cada palabra, se obtendrá un valor sumamente cercano al valor del voltaje de offset. De esta manera, sólo basta con restar este valor promedio a la señal original para eliminar el offset.

Para el caso de la normalización en amplitud, se tiene que encontrar el absoluto del valor máximo de la señal, debido a que el rastreo del máximo se hace tanto en el lado positivo de la señal como en el lado negativo de la misma.

Al encontrar el valor máximo, sólo basta con dividir todos los puntos de la señal entre dicho valor, de esta manera la señal estará normalizada a un valor igual a la unidad.

Para normalizar en tiempo se utilizará el supuesto arbitrario de que cada palabra tendrá solamente 500 puntos en total. De esta manera se busca mantener exclusivamente 500 puntos y por otro lado, optimizar los procesos posteriores para que los resultados puedan ser proporcionados de la manera más rápida posible.

La forma para realizar esto para el caso en que las muestras sean menores a 500, es, primero, encontrar el número de muestras faltantes por medio de una resta. Posteriormente se insertarán las muestras faltantes de una manera ordenada. Esto se logra dividiendo el número total de muestras entre el total faltante con el fin de insertar las muestras en un lugar equidistante a cada muestra por insertar.

Tal vez en la primera división no se logre insertar el total de muestras de una manera equidistante para alcanzar el total de 500, por lo tanto se realizará el proceso antes descrito el número de veces necesario para lograrlo.

El valor que tendrá cada muestra que se insertará será igual al valor de la muestra inmediatamente anterior a donde se haga el espacio para la inserción de dichas muestras.

La razón para realizar este proceso de la manera descrita es porque se logra un efecto sobre la señal parecido al estiramiento de un resorte por sus extremos. Esta alteración que sufre la señal se refleja en la disminución de la frecuencia de esta. Esto es, si se diera el caso en donde se insertaran demasiados puntos en la señal, se vería cómo los ciclos de dicha señal se separarían, provocando con esto la disminución de la frecuencia de la señal.

Sin embargo, al pronunciar los tres comandos verbales, se constató que, en tales comandos recibidos por la computadora, las muestras varían entre 450 y 500, por lo que en el caso critico se tienen que distribuir 50 muestras en 450 y el efecto se supondrá también que el número de puntos de cualquiera de las tres palabras que reconocerá el sistema, supera los 500. (esto sucede de manera práctica con el sistema propuesto).

Haciendo un resumen de los procesos de la manera en que afectarán la señal de entrada se tiene:

l . Eliminación del voltaje de offset 2. Normalización en tiempo. 3. Normalización en amplitud

Todos en este orden y de la manera en que se describieron anteriormente.

OBTENCION DE LOS PARAMETROS DE RECONOCIMIENTO POR MEDIO DE UN ALGORITMO MODIFICADO DE AUTOCORRELACIÓN

El análisis de la autocorrelación supone que una señal de voz, s(t), es digitalizada, y las muestras resultantes son x(n), donde el intervalo de muestreo es T, y los momentos de muestreo son t==nT, donde n es un número entero. La función de autocorrelación esta dada entonces por:

ACF(K) = x(n) x(n+k), donde n = 1,2, ..., N

y en donde hay N muestras. En otras palabras, la función de autocorrelación es obtenida de multiplicar la señal de voz por una versión retrasada de ella misma. El retraso, k, es conocido como retardo.

Para una señal periódica, la señal de autocorrelación exhibirá picos en los valores de retardo iguales a esta periodicidad. La frecuencia fundamental puede ser calculada de los intervalos entre los picos. Sin embargo la función de autocorrelación requiere muchas multiplicaciones que hacen lenta la ejecución del algoritmo en la mayoría de las computadoras digitales.

Un algoritmo similar que se ejecuta mucho más rápido debido a que involucra substracciones en vez de multiplicaciones, es uno basado en la función diferencia de la magnitud promedio (AMDF, average magnitude difference function), la cual está definida por:

AMDF(K) = abs[ x(n) - x(n+k) 3, donde n=1,2, ... N

en donde x(n) es la señal muestreada, N es el número de muestras y k es el retardo. La AMDF exhibe un mínimo en valores de retardo iguales a la periodicidad de la señal.

Prácticamente, aplicando este algoritmo al sistema propuesto se observa que el resultado es una gráfica continua que aumenta con cada suma de una manera característica cada vez que se repite una misma palabra, es decir, la gráfica resultante es muy similar en todas las ocasiones en que se pronuncia la misma palabra.

De esta manera, se pueden almacenar estas gráficas para que puedan ser comparadas posteriormente con las gráficas generadas por el sistema cuando esté en modo de reconocimiento.

RECONOCIMIENTO POR MEDIO DE ASOCIACION DE PATRONES

Realmente el proceso de reconocimiento generalmente se traduce en una simple asociación de patrones previamente almacenados con patrones generados por el sistema debido a la captación de una palabra.

Si se pudiera poner en un plano cartesiano a la gráfica generada por el algoritmo de AMDF, se tendría, en la vertical, los parámetros de amplitud o altura y en la horizontal los parámetros de desplazamiento o ensanchamiento. De esta manera se observaría que mientras más se desplace uno en dirección contraria al origen del plano, más crecerá la altura de la gráfica pero de una forma característica para cada palabra. Esto significa que en ciertos puntos en el desplazamiento, la altura crecerá pero en otros puntos la altura permanecerá constante, consiguiendo así las variaciones características para cada caso.

Regresando de nuevo al plano y colocando en este varias gráficas correspondientes a la misma palabra repetida varias veces, se notará que sólo existirán pequeñas variaciones en la altura más no así en anchura debido a que se normalizó en tiempo la señal de voz. Por lo tanto, al registrar los valores máximo y mínimo para cada punto en las abscisas, se tendrá una ventana formada precisamente con estos puntos máximos y mínimos de una misma palabra repetida varias veces.

Para concluir, se puede afirmar que esta propuesta puede ser operativa desde el punto de vista lógica y económico, para los objetivos planteados: reconocimiento de comandos verbales a bajo costo para proporcionar a la computadora la capacidad de captación de datos por medio de un micrófono, para que a su vez, esta pueda reaccionar con procesos específicos asignados a cada comando verbal.

2 2 5 9 6 2 CAPÍTULO v

INTEGRACION DEL SISTEMA

La forma para integrar todas las partes discutidas hasta aquí, estará basada en la computadora, puesto que en ella se encuentran los elementos de procesamiento y almacenamiento necesarios para el sistema. Por lo tanto el diseño del subsistema de adquisición de datos se hará basándose en las ranuras de expansión de la PC, así como también el programa que lo controlará.

DIAGRAMA DEL SUBSISTEMA DE ADQUISICION DE DATOS

El diagrama del subsistema se dividirá en dos secciones:

l . Sección de entrada-salida 2. Sección de captación y digitalización

Esto se hace necesario debido a la gran versatilidad del circuito INTEL 8255 PPI, el cual podría controlar varias combinaciones de circuitos ADC y DAC o tener a sus salidas buffers que podrían activar relevadores u otro tipo de circuitos.

SECCION 1 TARJETA DE INTERFAZ DE ENTRADA-SALIDA

En el diagrama eléctrico se distinguen Únicamente dos circuitos integrados, el INTEL 8255 y el 74LS138. La descripción del funcionamiento y las hojas técnicas se encuentran en el capítulo tres y en el apéndice respectivamente.

La manera para poder habilitar al PPI es seleccionando la terminal marcada como CS. Se puede apreciar que todas las salidas del decodificador 74LS138 están conectadas a esta terminal por medio de un DIP SWITCH de 8 interruptores. De esta manera cuando una de las salidas del decodificador es habilitada por medio de las terminales de selección, podrá ser enviada a la terminal CS por medio de estos switches.

El decodificador está conectado al bus de direcciones, específicamente en los bits de dirección siguientes: A9, A8, A7, A6, A5, y AEN. En esta última es la señal que indica que los datos recibidos son para la ranura de expansión cuando proporciona un cero lógico, de otra manera, cuando se encuentra en uno lógico, esos datos corresponden a direcciones de dispositivos internos @.e. memoria RAM).

La siguiente tabla muestra como se conectaron las terminales del decodificador a la ranura de expansión:

HABILITACION SELECCI~N SALIDAS DEL DECODIFICADOR

El rango de direcciones que pude abarcar la tarjeta será entonces desde la 512 a la 736 en decimal con incrementos de dirección de 32, por 10 tanto se tendrán las 8 direcciones siguientes: 512, 544, 576, 608, 640, 672, 704 y 736. El incremento de 32 se debe a que los bits A7, A6 y A5 deben variar conforme a la tabla para seleccionar la salida del decodificador.

La dirección que utiliza el sistema es la 544 en decimal, lo que se traduce en el número binario siguiente:

* * * * * # A0 Al A2 A3 A4 A5 A6 A7 A8 A9 #

O O O O O 1 O O O 1

En donde se añadirá el bit que proporciona la señal A en que será siempre cero lógico a menos que se le indique lo contrario por medio de un programa. Este bit se insertará entre el bit A5 y el bit A7 (Los bits marcados con * son utilizados por el 74LS 13 8).

De esta manera, la salida del decodificador será la segunda salida del decodificador señalada como Y 1, por lo tanto se tendrá que seleccionar el switch correspondiente a esta terminal.

También se encuentran conectadas al bus de direcciones las terminales del 8255 señaladas como A0 y Al . Con estas dos terminales se seleccionará el modo de operación del 8255 de la forma en que se explicó en el capítulo tres (los bits marcados con # son utilizados por el 8255).

Las demás señales que proporciona la ranura de expansión y que serán utilizadas son:

IOR - Lectura de entrada 1 salida IOW - Escritura de entrada-salida RESET - Restablecimiento DO a D7 - Bus de datos (Utilizadas por el 8255)

+12, -12, 5 y O volts (Utilizadas por el subsistema de adquisición de datos).

Las terminales de los puertos del 8255 así como las líneas de alimentación estarán unidas a un conector tipo DB25 hembra, que será el enlace para la segunda sección del sistema.

Cabe mencionar que esta primera sección puede ser utilizada por otro tipo de circuitos tales como medidores de desplazamiento, de distancia, de volumen, de ruido ambiental, de vibraciones, de resistencia, de capacitancia, de inductancia y, en fin, de cualquier tipo de medición o detección que requiera ser procesada y/o almacenada por la computadora.

SECCION 2 SISTEMA DE CAPTACION Y DIGITALIZACION

En el diagrama eléctrico de esta sección, el primer elemento que conforma el circuito es un micrófono de ELECTRET, el cual posee internamente un transistor tipo FET con características especiales de bajo ruido.

El micrófono de electret es, básicamente, un micrófono de capacitor con características especiales. El principio de funcionamiento del micrófono capacitor es el siguiente:

El micrófono se construye con un diafragma con un espesor entre 1 y 10 um hecho de metal o plástico metalizado y colocado muy cerca de un electrodo perforado y cargado eléctricamente de manera opuesta al diafiagma. La distancia entre el electrodo y el diafiagma está entre 5 y 50 um. Al existir ondas sonoras, el diafiagma se mueve y cambia la distancia entre éste y el electrodo, cambiando de la misma manera la capacitancia formada por el electrodo, el diafragma y el aire entre estos dos elementos que actúa como dieléctrico. El micrófono de electret funciona bajo este principio, sin embargo en el micrófono condensador es necesario polarizar el diafiagma y la cápsula del micrófono, y en el micrófono electret sólo se polariza la cápsula debido a que el diafiagma esta construido con materiales que permiten "congelar" o mantener una carga constante en la superficie de la membrana. Esto se logra gracias a materiales como el TEFLÓN (polytetrafluoretileno).

El rango dinámico del micrófono capacitor se determina por el amplificador asociado al micrófono. El amplificador esta limitado en el inicio del rango dinámico por el ruido inherente y en el final del rango por la distorsión no lineal.

Los FET's suelen tener ruido inherente entre 1 y 2 kHz. Por esto se usan fet's con especificaciones particulares de bajo ruido en el rango medio de frecuencias para actuar como amplificadores asociados a los micrófonos de capacitor y electret.

En el diagrama de conexión del micrófono, la resistencia es usada para polarización de la cápsula y el capacitor es usado para aislar la polarización del micrófono y el circuito amplificador y lograr el acople entre ambos amplificadores. La respuesta en frecuencia con un capacitor de 10 uf empieza entre los 10 y los 20 Hz en adelante, por esto se utiliza dicho valor para el capacitor de acople.

Regresando de nuevo al diagrama general, los dos elementos siguientes son amplificadores operacionales. El primero actúa como un amplificador inversor con una ganancia en voltaje de 100. A este amplificador se le adaptó un control de offset y un control de nivel de entrada (Volumen").

El segundo amplificador actúa como un seguidor inversor, es decir, tiene ganancia unitaria pero invierte la fase 180 grados. Como el amplificador de entrada está configurado como inversor, también generará un defasamiento de 180 grados. Estas dos inversiones sumadas dan un total de 360 grados 6, lo que es lo mismo, O grados de inversión. Esta es la razón del segundo amplificador operacional.

La resistencia que controla la ganancia en la primera etapa se calibrará para que el circuito proporcione una salida entre 4 y 5 volts de pico a pico para cuando la salida del micrófono sea máxima.

Para proporcionar la alimentación al sistema se utilizó la fuente de poder de la computadora y un circuito regulador.

El siguiente elemento que conforma el circuito es el convertidor analógico-digital, que está configurado para que el reloj interno del circuito funcione automáticamente y de una manera ininterrumpida. De esta manera el convertidor proporciona muestras digitalizadas basándose en la velocidad del reloj, el cual tomará las muestras con una frecuencia aproximada de 100 kHz determinada por los componentes asociados al circuito convertidor.

Para asegurar que el circuito realice la primera conversión es necesario aplicar un pulso bajo en las terminales WR e INTR, por esto una línea del puerto C del PPI está conectada a ambas terminales para que, por medio de un programa, este pulso sea proporcionado.

Los 8 bits de datos y las líneas WR e INTR así como los dos voltajes de alimentación están unidos a un conector tipo DB25 hembra, de esta manera se logra un rápido acople a la tarjeta de entrada-salida.

INTEGRACION DEL HARDWARE Y SOFTWARE DE RECONOCIMIENTO

Los componentes del circuito de entrada-salida están montados sobre una placa de fenolico, la cual tiene un conector con varias terminales en ambos lados, que se encuentra en la parte inferior de dicha placa. Este conector es especial para insertarse en la ranura de expansión de la PC.

Para poder mandar datos a una dirección a través de la ranura de expansión, se cuenta con la instrucción OUTB, y para leer datos de una dirección se cuenta con la instrucción I N B .

El formato para la instrucción OUTB es el siguiente:

OUTB dirección, dato

en donde dirección y dato son números enteros en decimal. El valor decimal de dirección es 544 para el caso de esta tarjeta y del sistema compatible PC en particular, pero para otros sistemas compatibles puede ser que esta dirección ya esté ocupada por algún dispositivo y sea necesario elegir otra dirección.

El valor decimal de dato puede variar desde O hasta 255 puesto que sólo se tienen 8 líneas de datos. El dato tomará diferentes valores dentro del programa de reconocimiento dependiendo de la aplicación o rutina que se use. Una de las aplicaciones más importantes para esta instrucción es la de programar al PPI.

El PPI se programará como entrada en el puerto A, como entrada en el puerto B y como salida en ambas partes del puerto C, esto se hará en el modo O (ver capítulo tres, tabla de modo O) y para lograr programar el circuito se tiene que accesar el registro de control del PPI en la dirección que esta colocado y enviar la palabra de control que configurará a los puertos de la manera descrita arriba.

La palabra digital que configura de esta manera especifica a los puertos del PPI es la siguiente:

D7 D6 D5 D4 D3 D2 Dl DO 1 0 0 1 0 0 1 0

Esta palabra digital es igual a 146 en decimal; es decir, 146 es el valor que se tiene que enviar al registro de control del PPI.

Este registro se encuentra en la dirección 544, dirección del puerto (ver tabla, capítulo tres).

La dirección para el registro de control es:

Al A0 1 1

que se traduce en un valor de 3 en decimal, por lo tanto la dirección a la que se debe hacer referencia será:

544 + 3

de esta manera la instrucción para configurar el PPI será:

OUTB 544 + 3,146

Es muy importante mencionar que la primera instrucción OUT del programa tiene que ser para configurar los puertos del PPI, por lo tanto antes de programar la rutina para adquisición de datos se tendrá que programar el PPI con la instrucción mencionada anteriormente.

Para poder utilizar la instrucción INB es necesario el formato siguiente:

x = INB (dirección)

donde x es una variable entera cualquiera, que almacenará el dato obtenido por la instrucción INB en la dirección indicada.

La dirección será un número entero decimal que estará basado en la dirección del dispositivo (en este caso 544) más la dirección del puerto de entrada.

En el caso configurado se tienen dos puertos de entrada A y B a los cuales se les puede accesar con la instrucción I N P , sin embargo el Único puerto de entrada que se utiliza para el sistema de reconocimiento es A que tiene la siguiente dirección:

Al A0 O 0

x = I N B ( 5 4 4 + 0 )

de esta manera x almacenará el dato que se encuentre en el puerto A en el momento que se ejecute la instrucción.

Con estas dos instrucciones (OUTB e INB) es posible que la computadora pueda interactuar con el mundo exterior de tal manera que puede mandar ordenes o recibir datos para procesarlos o almacenarlos y es por medio de estas dos instrucciones que la computadora puede "escuchar" la voz.

FUNCIONAMIENTO DEL SOFTWARE DEL SISTEMA

El programa que activa al subsistema de adquisición de datos y que realiza el proceso de reconocimiento de comandos se llama VOZ.EXE el cual está realizado en C++.

El listado del programa fuente (V0Z.CPP) se incluye en el presente trabajo y puede ser ejecutado en el interprete C++ o el compilador Borland C++ indistintamente. En el caso del compilador se tiene la opción de crear un archivo ejecutable desde sistema operativo, de esta manera se logra mayor velocidad en los procesos internos del programa.

Al ejecutar el programa se tendrá el siguiente menú de opciones:

l . MODIFICAR OFFSET

2. MODIFICAR GANANCIA

3. EJECUTAR

4. GUARDAR EN DISCO

Al seleccionar la opción 1 el sistema pasará a pedirle al usuario un nivel basal para graficar la señal, teniendo por default un nivel de línea de base para empezar justo a la mitad de la pantalla.

Al seleccionar la opción 2 el sistema pasará a pedirle al usuario un valor positivo mayor que cero para controlar la amplitud con que se verá la señal digitalizada, teniendo por default un valor de 1 de esta forma la señal no será modificada.

Es muy importante hacer ver que las opciones 1 y 2 modifican a la señal únicamente en su presentación en pantalla, los registros no son alterados.

En la opción 3 el usuario sólo tiene que pulsar la tecla ENTER para que el sistema este listo a captar señales de audio, teniendo un intervalo de tiempo definido para esta operación.

El siguiente paso es que el usuario pronuncie una palabra a través del micrófono, y al terminar de pronunciarla, presionar la barra espaciadora. En este momento el usuario tiene la opción de presionar la tecla ENTER para continuar con el proceso.

Un ejemplo de las señales que maneja el sistema se muestran en las figuras 14, 15 y 16.

Al continuar el proceso, el usuario tendrá que esperar unos segundos hasta que el sistema entregue algún resultado. Los resultados que puede entregar el sistema son: IZQUIERDA, DERECHA, ALTO, ADELANTE Y ATRÁS dependiendo del resultado de la comparación de patrones generados y las ventanas de reconocimiento.

Después de proporcionar el resultado, el sistema estará en condiciones de captar una nueva palabra, si en este momento se desea regresar al menú Principal se puede presionar la tecla ESCAPE en vez de presionar ENTER para introducir la palabra.

Resulta lógico que si el sistema es capaz de proporcionar el nombre del comando verbal, también es posible que el sistema reaccione con procesos específicos de control tales como el control de un motor para que gire a la izquierda, derecha o se detenga o con otros procesos diferentes.

Este procedimiento se realizará hasta que se pulse la tecla ‘S’ que indicará al sistema que el usuario quiere abandonar y regresar al sistema operativo.

CAPÍTULO VI -

RESULTADOS Y CONCLUSIONES

Las siguientes señales fueron obtenidas con el fin de utilizarlas como patrones de comparación con las señales que serán adquiridas a través de la interfaz. Se realizó un análisis en frecuencia para determinar el tipo de discriminación para filtrar la señal adquirida con la señal patrón.

El primer grupo de señales muestran el análisis de potencia de los comandos seleccionados como palabras de control. El segundo grupo muestra cada uno de los comandos sin ningún análisis.

El análisis fue realizado con ayuda de Matlab, solamente se hizo un análisis en el campo de la frecuencia, para determinar los picos predominantes de cada una de las palabras para establecer los límites de frecuencia de cada una de ellas.

Se realizaron varios registros, dando como resultado patrones de voz completamente distintos, lo que complicaba el análisis de las señales. Por lo tanto, se decidió adquirir las señales de voz de sólo un sujeto, con el fin de estrechar aún más las ventanas para la discriminación en frecuencia. Además, el almacenamiento de numerosos patrones de voz ocupaba un gran espacio en disco duro de la computadora, lo que también influía en la velocidad de la máquina: a mayor número de datos almacenados en memoria RAM (puesto que los patrones estaban almacenados en memoria virtual), decrementa la velocidad del procesador, y como la máquina que se utilizó para el análisis de las señales era una máquina 486, la velocidad era una característica que debíamos vigilar.

Al momento de adquirir las señales se presentó, de manera muy marcada, el ruido ambiental como un problema dificil de superar. Por lo anterior, se escogió, para hacer los registros de voz para los patrones de comparación, un ambiente con ruido exterior “constante”, hablando de nivel de volumen y tipo de ruido. De esta manera se superó el problema.

Una vez adquiridas las señales para hacer las comparaciones, procedimos a realizar el análisis en frecuencia, para establecer los límites de discriminación para cada una de las palabras. Al principio se pensó en adquirir, como se mencionó anteriormente, varios patrones de voz; es decir, que varias personas se ofrecieran para hacer el registro de voz, realizar los análisis en frecuencia correspondientes, y establecer una “ventana” congruente con la variedad de tonos de voz en los seres humanos. Pero por los problemas de almacenamiento y velocidad ya mencionados, solamente se hizo el registro, para los patrones de comparación, de un solo sujeto con el fin de afinar detalles en el sistema de adquisición, al igual que en los procedimientos de análisis y después proyectarlo a más de una persona.

Se presentaron también problemas al momento de la adquisición con el funcionamiento del micrófono. Estos se resolvieron con el amplificador de volumen:

aunque estaba presente una señal de ruido, por el nivel de amplificación establecido para el volumen adquirido para la voz, éste era un nivel mucho menor que la voz, por lo que se discriminó. En las señales gráficas de voz se puede observar el nivel de ruido presente y el nivel de la voz, de esta manera es fácil realizar la comparación y deducir que el ruido no afecta al momento de las adquisiciones.

La interfaz de adquisición también presentó algunos problemas de conexión, el convertidor no realizaba su función en el momento en que era requerido, pues las decodificaciones que se establecieron en un principio presentaban conflictos al momento de presentarse los estados lógicos. Haciendo análisis posteriores se solucionó el problema decodificando nuevamente el sistema hasta llegar al diseño final.

Cuando se realizaban los análisis de las señales adquiridas con el algoritmo de correlación, también se presentaron varios problemas, por lo que tuvimos que recurrir a la literatura correspondiente para resolverlos. El algoritmo al que recurrimos para los análisis no nos satisfizo de ninguna forma puesto que los resultados arrojados no correspondían a lo que esperábamos: el porcentaje de correlación variaba de manera muy marcada de palabra en palabra. Esto es, al momento de aplicar la correlación a un comando de voz y después a otro, lo que esperábamos era que los resultados fueran muy similares puesto que se trataba de un mismo sujeto, la voz de los patrones para la comparación y la voz adquirida en tiempo real para el análisis. Se trató de mejor el algoritmo y también cambiarlo por uno que arrojara mejores resultados, pero siempre fueron los mismos.

Podemos concluir entonces que, para nuestro caso particular, el algoritmo de correlación seleccionado no satisface de ninguna forma el análisis. Quizás con un algoritmo mejorado los resultados pudieran ser óptimos, pero por cuestiones de tiempo para el presente proyecto la posibilidad queda abierta para las futuras generaciones.

a O

E O o

E c, o u m a w

. .

o o w

o m 7

o o T

c, 4

O cd

b O

o Q)

w E?

t I

7 I

a O

8

c, El

8 o u

w

CD o x ‘F-

4

I

P

O !2 6 c O u

o o 7

o co

o U

d 2

o N o o o

7

o o

6 m

6 c O u

I I I I I I I I I

o co

o W

o Q-

o m

o 0

o W

o U

o m

“ 7 “

2 2 5 9 6 2

6 N

f o o c-4

o m T-

o o 7

APENDICE I1

VOZ.CPP

#include<conio.h> #include<math.h> #include<graphics.h> #include<stdlib.h> #include<stdio.h> #include<dos.h> #include<time.h> #include<ctype.h> #include<dos.h> #include<io.h>

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void ABRIR PATRON(void); void JNICIdVARIABLES(void); void MENU-OFFSET(void); void MENU-GANANCIA(void); void INICIALIZAR GRAFICOS(void); void MENU INICI6(void); void GRAFI&%R-DAT02(void); void GUARDAR-DATO(void); void main(void);

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

float dato,contador2; int contador,muestras,fin de conversion,mascara,i; int puerto,maxX,maxY,ejeX,Offset,Factor; char opcion; FILE *stream; float arreglo[5000],patron[5000]; int numero - archivo=l ;

I

I

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void INICIO-VARIABLES(void) {

INICIALIZAR-GFUFICOS(); contador = O; muestras = 20000; fin de-conversion = 0x0; mascara = Ox0 1 ; puerto = 0x300; dato = 5; opcion = '1'; maxY = getmaxy() I 2; maxX = getmaxxo; ejeX = O; Offset = O; Factor = 30; closegraph();

-

1

void MENU-OFFSET(void) {

gotoxy(20,l O); cleardevice();

printf("VAL0R DE OFFSET DESEADO : "); scanf("%d",&Offset); maxY += Offset; 1

void MENU - GANANCIA(void) {

gotoxy(20,l O); cleardevice();

printf("VAL0R DE GANACIA DESEADA : "); scanf("%d",&Factor); 1

void INICIALIZAR-GRAFICOS(void) { /* request auto detection */

int gdriver = DETECT, gmode, errorcode;

/* initialize graphics mode */ initgraph(&gdriver, @mode, "");

/* read result of initialization */ errorcode = graphresult();

if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherronnsg(errorcode)); printf("Press any key to halt:"); getch0; exit( 1); /* return with error code */ 1

1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void MEW-INICIO(void) {

do { cleardevice(); outtextxy(200,100," MENU DE INICIO : Y ; outtextxy(200,180," A.- MODIFICAR OFFSET "); outtextxy(200,200," B.- MODIFICAR GANANCIA "); outtextxy(200,220," X.- EJECUTAR Y ; outtextxy(200,240," G.- GUARDAR EN DISCO "); outtextxy(200,260," S.- SALIR 7 ; outtextxy(300,300," OPCION : ">; opcion = getch(); opcion = toupper( opcion ); }while(opcion!='A' && opcion!='B' && opcion!='X'&& opcion!='G' && opcion!='S'); switch(opcion)

{ case 'A': MEW-OFFSET(); MENU-INICIO();

break;

case 'B': MENU-GANANCIA(); MENU-INICIO();

break;

case 'XI:

break; cleardevice();

case 'G': cleardevice(); GUARDAR-DATO();

break;

case IS': closegraph(); exit(0);

break;

void GRAFICAR_DAT02(void) { if(contador"1)

lineto(ejeX,maxY-dato*Factor); delay( 1); ej ex++; if(ejeX = maxX) { ejeX = O; cleardevice(); moveto(0,maxY);

moveto(0,maxY);

i

I

I

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void ABRIR - PATRON(void) { char *archivo [ 1 ] ; char patron2[ 11; int i;

if(numero - archivo==l) *archivo = "ARRIBA.TXT";

if(numero_archivo==2) *archivo = "C:\\WINDOWS\\ESCRIT-2\\ARTURITO\\DONAS\\16-4-

99\MBAJO.TXT";

if(numero archivo==3)

99\WELANTE.TXT"; *archivo= "C:\\WINDOWS\\ESCRIT-2\\ARTURITO\DONAS\\16-4-

stream = fopen(*archivo,"rt"); if(! stream)

else { for(i=O;i<lO;i++) { fread(patron2,l O, 1 ,stream); patron[i] = atof(patron2); I

printf("EL ARCHIVO NO EXISTE O NO ES LA RUTA CORRECTA");

I I

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void GUARDAR-DATO(void)

char ruta[50]; gotoxy(20,l O); gotoxy(20,l O); printf("RUTA Y NOMBRE DEL ARCHIVO : "); gets(ruta); stream = fopen(ruta,"rt"); if(!stream) { stream = fopen(ruta,"wt"); if(! stream) {

printf("No se pudo crear "); delay(2000);

// exit(0); 1

@rintf(stream,"\n"); for(i=O;i<=2048;i++) @rintf(stream,"%f %5 \n",arreglo[i]);

// close the file I fclose(stream);

else { stream = fopen(ruta,"at");

fprintf(stream,"%f %5 \n",arreglo[i]); // close the file/ fclose(stream);

for(i=O;i<=2048;i++)

void main(void) { INICIO-VAFUABLES(); INICIALIZAR-GWICOS();

do { MENU-INICIO(); ejeX=O; contador = O; while(!kbhit())

outportb(0x300,0x02); outportb(0x300,0x0); while(fin-de-conversion != 0x0) { fin de-conversion = inportb(puert0); fin de conversion = fin-de-conversion & mascara;

-

"

1 outportb(0x300,0x01); outportb(0x300,0x0); fin de conversion = 0x0; dato = sin(contador2); // inportb(puert0); arreglo[contador] = dato; GRAFICAR_DAT02(); contador2+=0.05; contador++; if(contador2==1) contador2=- 1 ;

if(contador==(maxX)) contadoF0;

"

ABRIR PATRON(); j while(opcion != 'S');

-

1

BIBLIOGRAFIA

Morris Mano Lógica Digital y Diseño de Computadores Prentice Hall

Mano Diseño Digital Prentice Hall

Hill Peterson Digital Systems Wiky

Jacob wuilliams, Arvin Grabe1 Microelectronics McGraw Hill