Download pdf - EasyVR Guia Rapida

Transcript
  • 1

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Gua rpida del mdulo de reconocimiento de voz y reproduccin EasyVR

    1.- INTRODUCCION Se trata de un potente mdulo de bajo coste para el reconocimiento de voz y reproduccin de sonidos. Es la versin mejorada y actualizada del VRbot de la firma VeeaR (www.veear.eu) Las voces a reconocer pueden estar predefinidas y grabadas internamente. Se dice que son voces independientes del micrfono (SI). Tambin se puede grabar y reconocer voces definidas por el propio usuario y en cualquier idioma. En este caso se tratan de voces dependientes del micrfono (SD), que se supone previamente han sido enseadas y grabadas en la memoria interna del mdulo. Ver la figura 1.

    Figura 1. El mdulo de reconocimiento EasyVR Esta gua est realizada a partir de la documentacin que facilita el fabricante, el EasyVR User Manual V3.1, y trata de explicar las prestaciones y recursos de este mdulo. Tambin se comentan una serie de ejercicios que, a modo de ejemplo, tratan de mostrar posibles aplicaciones. Los ejemplos se presentan en un CD-ROM que se adjunta con el mdulo EasyVR. Son ejemplos que estn resueltos tanto en ensamblador como en C para la familia de microcontroladores PIC16F88X y estn implementados sobre el laboratorio USB-PICSCHOOL de Ingeniera de Microsistemas Programados S.L., aunque pueden ser fcilmente adaptables a cualquier otra plataforma o lenguaje de programacin. 1.1 Aplicaciones Son numerosas las posibles aplicaciones del mdulo de reconocimiento EasyVR. Algunas sugerencias:

    Sistemas de control de propsito general que se deseen gobernar mediante voz Automatizacin de aplicaciones en el mbito domstico Control de acceso por voz Sistemas robticos controlados por voz

    1.2 Caractersticas Se pueden destacar las ms relevantes:

    26 comandos y voces pre-programados (SI) en: en ingls, italiano, japons, alemn, francs y espaol

    Admite hasta 32 comandos y sus correspondientes voces definidas por el usuario (SD) en cualquier idioma

    Los comandos y voces SD se pueden organizar en hasta 16 grupos Se dispone de un interface grfico de usuario (GUI) para Windows que permite una

    rpida familiarizacin con el uso del mdulo. El mdulo se puede conectar fcilmente con cualquier tipo de controlador mediante una

    sencilla comunicacin serie. Dispone de un potente protocolo de comandos para el desarrollo de cualquier aplicacin

    basada en el reconocimiento de voz. Alimentacin de 3.3V a 5V 3 lneas de E/S o GPIO (IO1, IO2 e IO3) que se controlan directamente mediante los

    comandos correspondientes

  • 2

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Salida PWM de audio que admite la conexin con un altavoz de 8 Capacidad de reproduccin de hasta 9 minutos de sonidos y/o voces Se suministra junto con un CD-ROM que contiene el presente documento y una serie de

    libreras y ejemplos de aplicacin para PIC16F88X desarrollados por Ingeniera de Microsistemas Programados

    1.3 Especificaciones tcnicas/elctricas La figura 2 muestra las dimensiones fsicas del mdulo EasyVR as como la disposicin de las seales que se explican en la siguiente tabla.

    Figura 2. Distribucin de seales del EasyVR

    CONECTOR Pin N NOMBRE TIPO DESCRIPCION

    J1

    1 GND - Tierra de alimentacin 2 VCC E Entrada de alimentacin 3 ERX E Recepcin serie de datos (niveles TTL) 4 ETX S Transmisin serie de datos (niveles TTL)

    J2 1-2 PWM S Salida PWM diferencial de audio. Puede conectarse directamente a un altavoz de 8

    J3 1 MIC_RET - Tierra para el microfno 2 MIC_IN E Entrada de seal del micrfono

    J4

    1 /RST E Reset asncrono del mdulo activo por nivel 0. Est conectada internamente con una resistencia Pull-Up de 100K

    2 /XM E Seleccin del modo de arranque del mdulo. Internamente est conectada con una resistencia Pull-Down de 1K

    3 IO1 E/S Lnea de E/S de propsito general (nivel TTL de 3.0V)

    4 IO2 E/S Lnea de E/S de propsito general (nivel TTL de 3.0V)

    5 IO3 E/S Lnea de E/S de propsito general (nivel TTL de 3.0V)

  • 3

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Condiciones de trabajo recomendadas

    SIMBOLO PARAMETRO Mn. Tp. Mx UNIDADVCC Tensin de alimentacin 3.3 5 5.5 V Ta Temperatura ambiente de trabajo 0 25 70 C

    ERX Recepcin de datos serie 0 - VCC V ETX Transmisin de datos serie 0 - VCC V

    Caractersticas elctricas

    SIMBOLO PARAMETRO Mn. Tp. Mx UNIDADVIH Tensin de entrada del nivel 1 2.4 3.0 3.3 V VIL Tensin de entrada del nivel 0 -0.1 0.0 0.75 V IIL Corriente de fuga de entrada

  • 4

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    En Ingeniera de Microsistemas Programados hemos empleado nuestro laboratorio USB-PICSCHOOL y el interface RS232 en l integrado. El mismo laboratorio tambin dispone de la alimentacin de +5VCC necesaria. As, en la figura 4, se muestra las conexiones realizadas y, en la figura 5, se muestra una fotografa del montaje. Figura 4. Esquema de conexiones

    Figura 5. Montaje prctico del EasyVR sobre USB-PICSCHOOL

    1.5 El micrfono Junto con el mdulo EasyVR se suministra un micrfono unidireccional del tipo electret (Horn EM9745P-382): Sensibilidad -38dB; Impedancia 2.2K; Tensin de trabajo 3V; Respuesta a un amplio rango de frecuencias de 100Hz hasta 20KHz

    Debemos tener en cuenta que una colocacin acsticamente inadecuada del micrfono reducir la precisin en el reconocimiento de las voces. Es posible emplear mltiples soluciones para fijar mecnicamente el micrfono en nuestra aplicacin. Algunas mejorarn la precisin ms que otras. En general debemos tener en cuenta las siguientes consideraciones para montar el micrfono:

    1. Montaje en pared. El micrfono debe colocarse lo ms cerca posible de la superficie y fijado en una carcasa de plstico. No debe haber espacios vacos entre el micrfono y la carcasa. Dichos espacios pueden modificar la resonancia acstica y reducir la precisin del reconocimiento. Ver la figura 6.

    Figura 6. Fijacin del micrfono sobre una carcasa

    INTERFACE RS232

    RTS

    CTS

    RxD

    TxD

    +5VCC USB-PIC'SCHOOL

    MIC.

    U48

    Easy VR

    GND1

    VCC2

    ERX3

    ETX4

    PWM15

    PWM26

  • 5

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    2. No obstruir el orificio. La parte frontal del micrfono debe

    quedar totalmente libre de objetos que obstruyan el sonido e interfieran por tanto en el reconocimiento. El dimetro del orificio frente al micro debe ser de al menos de 5mm. Si hubiera que proteger el orificio mediante algn tipo de plstico, ste no debera tener un grosor superior a 0.7mm. Ver la figura 7.

    Figura 7. Acceso libre al micro

    3. Aislamiento. El micro debe quedar aislado respecto a la carcasa. Esto se puede conseguir envolviendo al micro con un material esponjoso como se muestra en la figura 8. El propsito es evitar ruidos producidos al manipular el mdulo EasyVR o al propio micro, que reduciran la precisin del reconocimiento.

    Figura 8. Asilamiento del micro

    4. Distancia. La distancia entre la boca y el micrfono tambin se tiene en cuenta a la hora de realizar un

    reconocimiento con precisin. Aumentar la distancia de 15 cm a 30 cm puede reducir el valor de la seal que proporciona el micro en un factor de cuatro, con lo que el reconocimiento de una voz puede ser inviable. El mismo factor y los mismos problemas se puede dar si quien dicta la voz emplea un volumen fuerte o suave.

    1.6 Salida de audio La salida de audio del mdulo EasyVR puede actuar directamente sobre un altavoz de 8. Tambin es posible conectar esta salida con la entrada de un amplificador externo de audio. Nota: Conectar directamente unos altavoces de menor impedancia, puede daar la salida de audio o al mdulo

    EasyVR en su totalidad. Tambin es posible conectar cargas de mayor impedancia como por ejemplo unos auriculares. En este caso la potencia de salida habr que reducirla conectando una resistencia en serie con ellos. El valor de esta resistencia depende de la potencia de los auriculares y del volumen de salida. Suele ser del orden de los 10K. Nota: La conexin directa de los auriculares con la salida de audio, los puede daar. 1.7 Lneas de E/S de propsito general Adems de las dos lneas que emplea el mdulo EasyVR para comunicarse con el controlador principal, disponemos de tres lneas de E/S de propsito general que se pueden emplear para conectar y controlar sencillos perifricos como leds, interruptores, etc.

  • 6

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Estas lneas (IO1-IO3) proceden directamente del propio controlador que gestiona el funcionamiento del mdulo EasyVR, y trabajan con una tensin de referencia de 3.0V. Si necesitamos conectarlas con circuitos que emplean una alimentacin diferente, debemos adoptar diferentes soluciones que eviten que se daen. Usar una lnea como salida Todas las lneas se configuran, por defecto, como entradas con resistencias pull-up internas. Mediante el comando apropiado cualquier lnea que se quiera utilizar como salida, debe configurarse as expresamente. En la figura 9 se muestra diferentes conexiones de una de esas lneas configurada como salida.

    Figura 9. Posibles conexiones de una lnea configurada como salida

    a) La lnea de salida controla directamente un led de bajo consumo. b) La lnea de salida se conecta con un circuito de adaptacin a 5V. c) La lnea de salida controla una carga de alta tensin mediante un rel alimentado a 12VDC

    El valor exacto de los componentes depender de cada caso en funcin de la aplicacin. Por ejemplo, el

    valor de la resistencia para el circuito A se puede calcular segn:

    Donde VLED es la tensin directa del led que nos indica su fabricante. VOH es la tensin a nivel 1 de la lnea de salida. IOH es la corriente que suministra esa lnea de salida. Supongamos que VLED es de 1.8V e IOH es de 5mA, el valor de RLED ser:

    2.4 1.80.005

    120 Por seguridad ponemos una resistencia de un valor algo superior, como por ejemplo de 150. Si quisiramos activar un led u otra carga de mayor consumo, necesitamos un circuito como el B. La carga se conectara entre la resistencia de salida y el colector del transistor. Usar una lnea como entrada Tras conectar la alimentacin o producir un Reset, todas las lneas de E/S quedan configuradas como entradas con resistencia pull-up interna. Cada patilla de entrada se puede configurar con una carga pull-up de diferente valor o, directamente, sin carga. En la fugura 10 se muestra diferentes conexiones posibles a una lnea de entrada.

  • 7

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Figura 10. Diferentes conexiones en las lneas de entrada

    a) Conexin de un interruptor, pulsador, sensor, etc.. b) Entrada de una seal de +5V c) Entrada aislada mediante un optoacoplador

    En los tres circuitos anteriores se asume que se est empleando una de las cargas pull-up internas. Si se

    desconectan dichas cargas la lnea correspondiente queda en estado de alta impedancia. 1.8 Actualizacin de la memoria Flash interna El nuevo mdulo EasyVR integra un programa gestor de arranque (bootloader) que permite actualizar el firmware interno del mdulo, as como descargar nuevas Tablas de sonido digitalizado sobre la memoria. El gestor se activa cuando, durante la conexin de alimentacin o generacin de Reset, la patilla /XM se mantiene a nivel alto. Esta patilla se puede controlar fcilmente mediante un jumper que la conecte con una resistencia pull-up externa cuando nos interese. Ver la figura 11.

    Figura 11. Control de la patilla /XM Para descargar una actualizacin del firmware o una tabla de sonidos al mdulo EasyVR, se desconecta la alimentacin. Se cierra el jumper y se vuelve a conectar, con lo que la patilla /XM queda a nivel 1. En el modo normal de trabajo, el jumper debe estar abierto. De esta forma la patilla /XM queda a nivel 0 mediante la resistencia pull-down interna. El valor de la resistencia pull-up depende de la tensin de alimentacin empleada. Para calcula la tensin en la patilla /XM cuando el jumper est cerrado, se emplea la siguiente ecuacin (se trata de un divisor de tensin):

    1

    1

    Si se desea que la patilla /XM una tensin de 3V (nivel alto), despejamos R y nos queda:

    31000 1000

    Los valores ms utilizados son de 100 o 680 para una alimentacin de 3.3V o de 5V respectivamente.

  • 8

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    2.- EasyVR Commander: EL INTERFACE GRAFICO DE USUARIO (GUI) Se trata de una aplicacin para Windows que permite usar y configurar el mdulo EasyVR de una forma muy sencilla e intuitiva. Basta conectarlo con el canal serie de un PC mediante algn tipo de circuito de interface TTL-RS232 como el mostrado en la figura 3. Tambin se puede emplear el interface que incluye el laboratorio USB-PICSchool tal y como se mostr en las figuras 4 y 5. 2.1 Estableciendo la comunicacin Una vez instalado el programa EasyVR GUI y realizadas las conexiones elctricas entre el mdulo y el COMx del PC, ejecutamos la aplicacin. Nos aparecer una ventana de trabajo como la mostrada en la figura 12.

    Figura 12. El rea de trabajo En el ngulo superior izquierdo tenemos un desplegable que permitir seleccionar el canal COM disponible en nuestro PC. Tambin disponemos de dos botones para la conexin/desconexin de la comunicacin entre el mdulo EasyVR y el PC. En la parte superior central existen una serie de botones con las diferentes tareas que podemos realizar con el mdulo: aadir/editar/borrar comandos, enseanza de las voces asociadas a los comandos, reconocimiento de esas voces, reproduccin de sonidos, etc. Cada vez que se establece la comunicacin el software EasyVR Commander lee el contenido del mdulo en su totalidad y lo traslada a las diferentes reas de trabajo: el rea de grupos y el rea de comandos. En el rea de grupos aparecen los grupos 0-16 disponibles para almacenar las voces definidas por el usuario (SD) y otros tres grupos llamados Wordset 1-3 donde estn almacenadas las voces pregrabadas o voces SI. Al lado de cada grupo aparecer tambin el n de voces que contiene el mismo. Se recuerda que en el mdulo se pueden grabar un TOTAL de 32 voces SD definidas por el usuario. Lo que pasa es que estas voces se pueden almacenar o clasificar en diferentes grupos si fuera necesario. Abajo del todo hay un ltimo grupo, SoundT, donde se pueden almacenar diferentes sonidos digitalizados para su posterior reproduccin. En el rea de comandos se Editan/Visualizan las etiquetas o comandos asociados a las voces y qu posicin ocupan dentro de un determinado grupo. Un comando o etiqueta no es ni ms ni menos que una cadena ASCII de hasta 32 caracteres. Toda etiqueta o comando debe estar asociado a una voz o viceversa, durante la fase de enseanza. De esta forma, cuando el mdulo reconozca una voz, devuelve el comando o etiqueta asociada a la misma. Slo se admiten etiquetas formadas por los caracteres ASCII en maysculas desde la A a la Z. 2.2 Las voces SI pre definidas Vienen grabadas de fbrica y no pueden ser modificadas. Pueden ser reconocidas en 6 idiomas diferentes: Ingls, Italiano, Japons, Alemn, Espaol y Francs. Estn almacenadas en los grupos llamados Trigger, Wordset

  • 9

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    1, Wordset 2 y Wordset 3. La tabla de la figura 13 muestra, segn el idioma elegido, los grupos con las etiquetas o comandos (y sus voces) que contienen. Para visualizarlas basta con seleccionar, en el rea de grupos, el grupo deseado.

    Figura 13. Tabla resumen de lcomandos y voces predefinidos (SI)

    Vamos a realizar un primer ejemplo de reconocimiento de voces pre definidas SI. Para ello:

    1. Seleccionamos, mediante el botn Set Language, el idioma deseado: Ingls (por defecto), Italiano,

    Japons, Alemn, Espaol o Francs (elige el que mejor pronuncies). 2. Seleccionamos el grupo en que se encuentran las voces a reconocer, por ejemplo el Wordset 3. 3. Mediante el botn Test Group iniciamos el reconocimiento. 4. Dictamos cualquiera de las voces disponibles en el grupo seleccionado y en el idioma elegido.

  • 10

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    5. Si la voz es reconocida, la etiqueta o comando asociada a ella quedar resaltada. 6. Repetir el proceso con diferentes voces de ese grupo o de cualquier otro. 7. Si una vez se inicia el proceso de reconocimiento, se tarda un cierto tiempo en dictar la voz, aparecer un

    mensaje de rebasamiento del tiempo Timerout expired. En la figura 14 se muestra el resultado de reconocer una voz. En primer lugar en el rea de grupos aparece

    resaltado el grupo Wordset 3 seleccionado (que tiene 11 voces). En el rea de datos aparece resaltada en verde la etiqueta o comando correspondiente a la voz pronunciada (p.e. FIVE) que ocupa la posicin 5 del grupo seleccionado.

    Figura 14. Reconocimiento de una voz

    2.3 Las voces SD definidas por el usuario Son las que puede grabar el usuario en cualquier idioma, para luego ser reconocidas. El mximo de voces admitidas es de 32 y pueden ser organizadas en diferentes grupos segn convenga. 2.3.1 Edicin de etiquetas y comandos Como ya se ha comentado, una etiqueta o comando no es ms que una cadena ASCII que posteriormente se asociar a una voz de forma que, cuando esta sea reconocida, el sistema nos responda con ese comando asociado. En primer lugar vamos a crear o editar una serie de comandos. Para ello:

    1. Seleccionamos el grupo deseado (p.e. el Group 1) 2. Mediante el botn Add Command y/o Insert Command vamos aadiendo todas las etiquetas o

    comandos deseados. Proponemos que sean los mostrados en la figura 15. 3. Podemos emplear los botones Remove Command y/o Rename Command para borrar y/o renombrar

    (reeditar) una etiqueta o comando cualquiera de la lista. 4. Para las etiquetas o comandos slo se admiten los caracteres ASCII de la A a la Z en maysculas. 5. Se puede apreciar que a cada comando se le asigna un nmero que se corresponde con la posicin o

    ndice de ese comando respecto al grupo en que se encuentra.

  • 11

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    6. En el rea de grupos, el grupo seleccionado, va representando el nmero de comandos que contiene segn se van aadiendo.

    7. Repetir el proceso para editar los comandos que se muestran en la figura 16 y que se introducen en el grupo 16. Estos grupos y comandos asociados sern empleados en los ejemplos de programacin que se propondrn ms adelante.

    Figura 15. Edicin de comandos en el grupo 1

    Figura 16. Edicin de comandos en el grupo 16

  • 12

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    2.3.2 El ciclo de enseanza Consiste en grabar las voces que se asociarn a los comandos editados anteriormente y que se usarn durante el reconocimiento. Para ello:

    1. Seleccionar el grupo al que pertenece el comando al que queremos asociar una voz. 2. Seleccionar el comando propiamente dicho 3. Mediante el botn Train Command se inicia el ciclo de enseanza. 4. Disponemos de un cierto tiempo para dictar la voz que queramos 5. Esa voz hay que volver a dictarla por 2 vez para tener una mayor garanta en los posteriores

    reconocimientos. 6. Observaremos que a la derecha del comando aparece un valor que expresa el n de veces (2) que la voz

    ha sido enseada, seguido de OK cuando finaliza el ciclo. 7. Si rebasamos el tiempo o si la repeticin de la voz por 2 vez no corresponde con la de la 1, aparecer el

    correspondiente mensaje de error. 8. Repetimos el proceso con todos los comandos disponibles en todos los grupos.

    Se debe indicar que, aunque es muy frecuente que una voz coincida con su correspondiente comando, esto no

    tiene porqu ser necesariamente as. Hay una asociacin entre voz y comando o etiqueta aunque sean diferentes. Por ejemplo a la etiqueta UNO le podemos asociar la voz HOLA. Durante el posterior, reconocimiento cuando dictemos la voz HOLA, el mdulo nos responder con la etiqueta asociada UNO y la posicin que ocupa dentro del grupo. 2.3.3 El reconocimiento A estas alturas ya tenemos nuestro mdulo EasyVR con una serie de etiquetas y voces SD definidas por nosotros, los usuarios. Para el reconocimiento de las mismas basta seguir los mismos pasos que se hicieron anteriormente con el reconocimiento de voces predefinidas SI. Se resumen a continuacin

    1. Seleccionamos el grupo en que se encuentran las voces a reconocer, por ejemplo el Group 1. 2. Mediante el botn Test Group iniciamos el reconocimiento. 3. Dictamos cualquiera de las voces disponibles en el grupo seleccionado. 4. Si la voz es reconocida, la etiqueta o comando asociada a ella quedar resaltada. 5. Repetir el proceso con diferentes voces de ese grupo o de cualquier otro. 6. Si una vez se inicia el proceso de reconocimiento, se tarda un cierto tiempo en dictar la voz, aparecer un

    mensaje de rebasamiento del tiempo Timerout expired. 3.- CREAR Y USAR TABLAS DE SONIDOS El mdulo EasyVR puede tambin reproducir sonidos de cualquier tipo (msica, voces, seales acsticas, etc.) previamente almacenados en su memoria flash interna. El mdulo incorpora de serie el sonido beep. Los sonidos se organizan en lo que se llama una Tabla de sonidos que el usuario debe generar mediante la aplicacin QuickSynthesis 5 (QS5) de la firma Sensory. Esta aplicacin se instala cuando instalamos el programa EasyVR Commander que usamos anteriormente. Para obtener ms informacin sobre ella, podemos recurrir a su propia ayuda (en ingls). De momento, vamos a tratar de resumir los pasos ms importantes que debemos seguir.

    1. Preparamos los archivos de audio que queremos reproducir mediante el mdulo EasyVR. Estos archivos deben tener formato WAV, con 16 bits sin compresin y mono de 22050Hz. Para crea este tipo de archivos existen gran cantidad de programas y aplicaciones. En MSE hemos empleado el Grabador de sonidos incluido en las plataformas Windows. En el disco de usuario se incluye la carpeta Sonidos con una total de 11 archivos tipo WAV con diferentes mensajes hablados.

    2. Abrir la aplicacin QuickSynthesys 5 y crear un nuevo proyecto especificando la familia RSC4. A continuacin se nos pide el nombre del proyecto (p.e.Sonidos_MSE ).

    3. Vamos aadiendo cada uno de los ficheros WAV con los que queremos construir la Tabla de sonidos para su posterior grabacin y reproduccin en el mdulo EasyVR. Con cada archivo aadido se debe indicar el

  • 13

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    tipo de compresin que se le va a aplicar. En la figura 17 se muestra la lista archivos WAV con los que vamos a construir la Tabla de sonidos, y la compresin asignada a cada uno. Se pueden identificar perfectamente los archivos que hay en nuestra carpeta Sonidos.

    Figura 17. Aadiendo ficheros WAV para construir la Tabla de sonidos

    La compresin para cada archivo tiene que ver con la calidad de reproduccin y el tiempo total de reproduccin disponible en el mdulo EasyVR. En general, a menor compresin ms calidad, aunque tambin ocupa mayor espacio en la memoria flash del mdulo, por lo que el tiempo total de reproduccin ser menor. La siguiente tabla nos puede dar una idea aproximada de la relacin entre calidad y tiempo disponible. Nosotros hemos elegido el modelo SX-6 de 8KHz de compresin. Se puede experimentar con otros modelos y quedarlos con el que nos proporciona una mejor relacin calidad/duracin.

    Compresin Tiempo disponible (8KHz) Tiempo disponible (9.3KHz)

    SX-2 8.7 minutos 7.5 minutos SX-3 7.6 minutos 6.6 minutos SX-4 6.8 minutos 5.9 minutos SX-5 6.1 minutos 5.2 minutos SX-6 5.6 minutos 4.8 minutos ADPCM de 4 bits 87 segundos No disponible OCM de 8 bits 45 segundos 38 segundos

    4. Seleccionamos todos los archivos de la lista y procedemos a comprimirlos mediante el botn Compress. 5. Mediante el botn Build o Ctrl+B construimos el proyecto para obtener la Tabla de sonidos. Debemos

    usar los ajustes por defecto: Build linkable module, Load in CONST space y Load above or at:0. 6. Debemos guardar el proyecto y, si procede, volverlo a construir para tener la versin ms actualizada

    posible. En nuestro ejemplo el proyecto se llama Sonidos_MSE.qxp.

  • 14

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Una vez que, con los pasos anteriores, hemos obtenido la Tabla de sonidos, debemos ahora descargarla

    sobre el mdulo EasyVR tal y como se coment en el apartado 1.8 Actualizacin de la memoria Flash interna. Los pasos se resumen a continuacin:

    1. Desconectar la comunicacin entre la aplicacin EasyVR Commander y el mdulo (Disconnect). 2. Desconectar la alimentacin del mdulo EasyVR y cerrar el jumper segn el esquema de la figura 11. Con

    esto conectamos la patilla /XM a Vcc a travs de la resistencia. Volvemos a conectar la alimentacin con lo que el mdulo est en el modo de actualizacin del firmware o de descarga de la Tabla de sonidos.

    3. Re establecer la comunicacin entre el programa EasyVR Commander y el mdulo (Connect). Observamos que el botn Update Sound Table queda habilitado.

    4. Pulsamos este botn. Se abre una ventana de dialogo que nos permite buscar el fichero con la Tabla de sonidos que hemos obtenido mediante la aplicacin Quick Sinthesis 5. En el ejemplo, dicho fichero se llamaba Sonidos_MSE.qxp.

    5. Aparece una ventana como la mostrada en la figura 18. En ella se aprecia la lista de los sonidos que compilamos en el proyecto anterior. Activamos la casilla Slow transfers y pulsamos Download. Debemos esperar un cierto tiempo para que dicha tabla de sonidos se grabe sobre la memoria flash del mdulo EasyVR.

    Figura 18. Descarga de la Tabla de sonidos

    6. Desconectamos la alimentacin del mdulo y retiramos el jumper. La patilla /XM queda ahora conectada a nivel 0 gracias a la resistencia pull-down interna. Volvemos a conectar la alimentacin y re establecemos la comunicacin entre EasyVR Commander y el mdulo. LISTO !!

    Ahora la memoria flash de nuestro mdulo EasyVR contiene las voces SD que definimos anteriormente en diferentes grupos, y los sonidos que acabamos de grabar. Estos ltimos se pueden ver en el rea de grupos, en el grupo llamado SoundT como se muestra en la figura 19.

    Para reproducir cualquiera de ellos basta con seleccionarlo y pulsar el botn Play Sound representado

    mediante un altavoz. Sobra decir que es necesario tener conectado un altavoz de 8 entre las patillas 1y 2 del conector J2 (salida PWM).

  • 15

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Figura 19. Reproduccin de un sonido de la Tabla de sonidos

    4.- EL PROTOCOLO DE COMUNICACIN DEL MODULO EasyVR Este es el tema ms espinoso. Sin embargo gracias al protocolo de comunicacin del EasyVR nos ser posible realizar nuestras propias aplicaciones a medida. Efectivamente, el EasyVR se puede conectar, adems de a un PC, a cualquier otro sistema de control basado en microcontroladores como pueden ser los PICs, Basic Stamp, Atmel, Arduino, etc que actuarn como Host. El EasyVR emplea un UART como interface estndar de comunicacin con niveles lgicos compatibles TTL de acuerdo a la tensin con la que se le alimente (3.3-5V). Las conexiones entre el EasyVR y el microcontrolador principal (Host MCU) son compatibles a nivel elctrico. Lo nico que se debe tener en cuenta es que la seal ETX de transmisin de datos del EasyVR debe conectarse con la de recepcin RX del controlador y viceversa. Es decir, las seales se deben cruzar como se muestra en la figura 20. Figura 20. Conexin entre el EasyVR y un Host

    Por defecto, al conectar la alimentacin, la configuracin de la comunicacin es de 9600 baudios, 8 bits de datos, 1 de stop y sin paridad. Los baudios pueden configurarse en el rango de 9600 hasta 115200. En la comunicacin solo se emplean caracteres ASCII imprimibles, lo que permite el control de EasyVR desde cualquier software de comunicacin para PC como, por ejemplo, el hyperterminal de Windows. Se siguen los siguientes criterios:

    Los comandos que se trasmiten desde el Host al mdulo por la lnea TX son siempre caracteres en minsculas. Por su parte el EasyVR responde al Host por la lnea RX unos caracteres de estado que tambin son siempre en minsculas.

  • 16

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Los argumentos o parmetros necesarios tanto para los comandos transmitidos como los de estado recibidos, son siempre caracteres en maysculas.

    Cada comando que transmite el Host por la lnea TX con los argumentos o parmetros necesarios (cero o ms caracteres), genera la correspondiente respuesta por parte del EasyVR que se recibe por la lnea RX. Esta respuesta tambin puede tener parmetros o argumentos de cero o ms caracteres.

    Existe un retardo mnimo entre cada byte enviado al Host por parte del EasyVR, que por defecto es de 20mS. Se puede configurar en rangos que van de 0 a 9 ms, de 10 a 90 ms y de 100mS a 1 s. Esto permite adaptarse a la velocidad de proceso alta o baja por parte del Host.

    El flujo de informacin lo controla el Host en todo momento. Cada byte que manda el EasyVR como rplica a un determinado comando, debe ser reconocido por parte del Host que le enva el carcter espacio (0x20) para recibir as los sucesivos bytes de respuesta si los hubiera.

    Los comandos y/o argumentos incorrectos quedan reflejados por el correspondiente byte de estado que enva el EasyVR al Host para su oportuno tratamiento. Por otra parte, si el Host no enva todos los bytes de argumentos o parmetros necesarios por un determinado comando, este es ignorado por parte del mdulo EasyVR

    Cada vez que se conecta la alimentacin el mdulo EasyVR queda en el modo sleep de bajo consumo. Para iniciar la comunicacin basta con que el Host le mande cualquier carcter.

    4.1 Los argumentos Algunos comandos necesitan argumentos o parmetros numricos para su correcta ejecucin. Los valores numricos de esos parmetros estn en el rango de -1 hasta 31. Sin embargo, como ya se ha comentado, la comunicacin con el mdulo EasyVR se realiza siempre mediante caracteres ASCII imprimibles. As pues, los valores numricos de los parmetros, habr que codificarlos en su equivalente carcter ASCII y viceversa. Se sigue el siguiente criterio: partiendo del carcter @ (0x40) y de forma correlativa, se representan los valores del -1 al 31. Para los valores positivos del 0 al 31 basta con emplear el carcter A (0x41) como offset o desplazamiento.

    ASCII @ A B C D ---- _ ` HEX 0x40 0x41 0x42 0x43 0x44 ---- 0x5F 0x60 Valor -1 0 1 2 3 ---- 30 31

    4.2 Los comandos A continuacin se exponen todos los comandos aceptados por el mdulo EasyVR. Recordemos que los argumentos o parmetros numricos que precisan alguno de ellos deben ser codificados realmente por su equivalente carcter ASCII imprimible, en maysculas, segn la tabla anterior.

    NOMBRE CMD_BREAK COD./DESCRIPCION b (0x62) Aborta la ejecucin de cualquier comando previo ARGUMENTOS Ninguno RESPUESTA STS_SUCCESS, STS_INTERR

    NOMBRE CMD_SLEEP COD./DESCRIPCION s (0x73) Coloca al mdulo EasyVR en uno de los modos sleep de bajo consumo ARGUMENTOS [1] Modo sleep (0-8)

    0=se reactiva (wake up) al recibir un carcter 1=se reactiva (wake up) al recibir un sonido agudo o un carcter 2=se reactiva (wake up) al recibir un sonido grave o un carcter 3-5=se reactiva (wake up) al recibir una doble palmada o un carcter 6-8=se reactiva (wake up) al recibir una triple palmada o un carcter

    RESPUESTA STS_SUCCESS

  • 17

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    NOMBRE CMD_KNOW COD./DESCRIPCION k (0x6B) Ajusta el nivel de reconocimiento de las voces pre definidas SI ARGUMENTOS [1] 0= nivel bajo: se obtienen muchos resultados vlidos

    2= tpico: valor por defecto 4= nivel alto: se obtienen pocos resultados vlidos y hay que pronunciar la voz con precisin

    RESPUESTA STS_SUCCESS

    NOMBRE CMD_LEVEL COD./DESCRIPCION v (0x76) Ajusta el nivel de reconocimiento de las voces SD definidas por el

    usuario ARGUMENTOS [1] 1=fcil, 2=por defecto, 5=difcil

    Un valor alto supone una mayor precisin en la diccin y por tanto ms errores de reconocimiento

    RESPUESTA STS_SUCCESS

    NOMBRE CMD_LANGUAGE COD./DESCRIPCION l (0x6C) Ajusta el lenguaje empleado en el reconocimiento de las voces SI ARGUMENTOS [1] 0= Ingls, 1= Italiano, 2= Japons, 3= Alemn, 4= Espaol y 5= Francs RESPUESTA STS_SUCCESS

    NOMBRE CMD_TIMEOUT COD./DESCRIPCION o (0x6F) Ajusta el tiempo de espera durante el reconocimiento de una voz ARGUMENTOS [1] -1= defecto, 0= infinito, 1 a 31= segundos RESPUESTA STS_SUCCESS

    NOMBRE CMD_RECOG_SI COD./DESCRIPCION i (0x69) Activa el ciclo de reconocimiento de voces predefinidas SI en el grupo o

    wordset especificado ARGUMENTOS [1] 0-3= N del grupo o wordset donde se realizar el reconocimiento RESPUESTA STS_SIMILAR, STS_TIMEOUT, STS_ERROR

    NOMBRE CMD_TRAIN_SD COD./DESCRIPCION t (0x74) Activa el ciclo de enseanza para una nueva voz SD definida por el

    usuario ARGUMENTOS [1] Grupo donde se grabar la nueva voz: 0= Trigger, 1-15= grupos del 1 al

    15, 16=grupo 16 o password [2] Posicin dentro del grupo en donde se grabar la voz (0 a 31)

    RESPUESTA STS_SUCCESS, STS_RESULT, STS_TIMEOUT, STS_ERROR

    NOMBRE CMD_GROUP_SD COD./DESCRIPCION g (0x67 Permite insertar un nuevo comando o etiqueta ARGUMENTOS [1] Grupo donde se insertar el nuevo comando: 0= Trigger, 1-15= grupos

    del 1 al 15, 16=grupo 16 o password [2] Posicin dentro del grupo a partir de la cual se insertara la nueva

    etiqueta o comando (0 a 31) RESPUESTA STS_SUCCESS, STS_OUT_OF_MEM

  • 18

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    NOMBRE CMD_UNGROUP_SD COD./DESCRIPCION u (0x75) Borra un comando o etiqueta ARGUMENTOS [1] Grupo de donde se borrar el comando: 0= Tigger, 1-15= grupos del 1 al

    15, 16=grupo 16 o password [2] Posicin dentro del grupo de donde se quita el comando o etiqueta (0 a

    31) RESPUESTA STS_SUCCESS

    NOMBRE CMD_RECOG_SD COD./DESCRIPCION d (0x64) Inicia el ciclo de reconocimiento de una voz SD definida por el usuario ARGUMENTOS [1] Grupo donde se encuentran las voces a reconocer (0 a 15) RESPUESTA STS_SUCCESS, STS_TIMEOUT, STS_ERROR

    NOMBRE CMD_ERASE_SD COD./DESCRIPCION e (0x65) Borra una voz definida por el usuario (se supone previamente grabada) ARGUMENTOS [1] Grupo donde se borrar la voz: 0= Tigger, 1-15= grupos del 1 al 15,

    16=grupo 16 o password [2] Posicin dentro del grupo en que se encuentra la voz a grabar (0 a 31)

    RESPUESTA STS_SUCCESS

    NOMBRE CMD_NAME_SD COD./DESCRIPCION n (0x6E) Almacena los caracteres que forman la etiqueta o comando ARGUMENTOS [1] Grupo donde se almacenar la etiqueta: 0= Tigger, 1-15= grupos del 1 al

    15, 16=grupo 16 o password [2] Posicin dentro del grupo donde se desea grabar los caracteres que

    definen una etiqueta o comando (0 a 31) [3] Nmero de caracteres que conforman la etiqueta o comando (0 a 31) [4 a n] Caracteres de la cadena que forman la etiqueta. Deben ser caracteres

    ASCII de la A al . Mximo 32 RESPUESTA STS_SUCCESS

    NOMBRE CMD_COUNT_SD COD./DESCRIPCION c (0x63) Obtiene el nmero de comandos o etiquetas que tiene almacenadas el

    grupo indicado ARGUMENTOS [1] Grupo del que se quiere averiguar cuntas etiquetas o comandos tiene:

    0= Tigger, 1-15= grupos del 1 al 15, 16=grupo 16 o password RESPUESTA STS_COUNT

    NOMBRE CMD_DUMP_SD COD./DESCRIPCION p (0x70) Lee la cadena de caracteres que forman una etiqueta o comando ARGUMENTOS [1] Grupo donde se encuentra el comando: 0= Tigger, 1-15= grupos del 1 al

    15, 16=grupo 16 o password [2] Posicin dentro del grupo en que se encuentra la etiqueta o comando (0

    a 31) RESPUESTA STS_DATA

  • 19

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    NOMBRE CMD_MASK_SD COD./DESCRIPCION m(0x6D) Devuelve una mscara de 32 bits que expresa qu grupos estn vacos

    o bien contienen alguna etiqueta/comando o voz ARGUMENTOS Ninguno RESPUESTA STS_MASK

    NOMBRE CMD_RESETALL COD./DESCRIPCION r (0x72) Borra todos las etiquetas/comandos y voces SD de todos los grupos

    (excepto los predefinidos SI) R(0x52) Carcter de confirmacin. El mdulo EasyVR queda virgen

    ARGUMENTOS Ninguno RESPUESTA CMD_SUCCESS

    NOMBRE CMD_ID COD./DESCRIPCION x (0x78) Devuelve el cdigo o versin del firmware interno del mdulo EasyVR ARGUMENTOS Ninguno RESPUESTA STS_ID

    NOMBRE CMD_DELAY COD./DESCRIPCION y (0x79) Ajusta el retardo de la transmisin ARGUMENTOS [1] Tiempo: 0-10=0-10mS, 11-19=20-100mS, 20-28=200-1000mS RESPUESTA STS_SUCCESS

    NOMBRE CMD_BAUDRATE COD./DESCRIPCION a (0x61) Ajusta la velocidad de comunicacin ARGUMENTOS [1] Baudios: 1= 115200; 2= 57600; 3= 38400; 6= 19200 y 12= 9600 RESPUESTA STS_SUCCESS

    NOMBRE CMD_QUERY_IO COD./DESCRIPCION q (0x71) Configura o modifica las lneas de E/S de propsito general. ARGUMENTOS [1] N de lnea: 1=patilla IO1, 2=patilla IO2 y 3=patilla IO3

    [2] Modo: 0=Salida a 0, 1= salida a 1, 2=entrada sin pull-up, 3=entrada con pull-up de 10K y 4=entrada con pull-up de 200K

    RESPUESTA STS_SUCCESS (en los modos 0 y1) o STS_PIN (en los modos 2-4)

    NOMBRE CMD_PLAY_SX COD./DESCRIPCION w (0x6E) Reproduccin de los sonidos de la Tabla de sonidos ARGUMENTOS [1] [2] Forman el ndice en la tabla del sonido a reproducir (ndice=[1]*32+[2])

    [3] Volumen de la reproduccin: 0= mnimo, 15=escala completa, 31=doble ganancia

    RESPUESTA STS_SUCCESS, STS_ERROR

    NOMBRE CMD_DUMP_SX COD./DESCRIPCION h (0x68) Lee los datos de la Tabla de sonidos ARGUMENTOS Ninguno RESPUESTA STS_TABLE_SX, STS_OUT_OF_MEM

  • 20

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    4.3 Las respuestas Todos los comandos transmitidos por el Host generan la correspondiente respuesta por parte del EasyVR, que debe ser recibida y analizada por el Host. Estas respuestas constan siempre en un carcter o cdigo y a su vez pueden tener tambin argumentos o parmetros numricos. Estos se representarn mediante los correspondientes caracteres ASCII imprimibles como se explic con anterioridad. Se recuerda que, cada vez que el EasyVR transmite un byte de parmetro al Host, este debe transmitir el carcter espacio (0x20) para recibir el siguiente byte.

    NOMBRE STS_MASK COD./DESCRIPCION k (0x6B) Devuelve 8 bytes que representan la mscara que indica qu grupos

    estn vacos y cules no ARGUMENTOS [1 8] De cada byte del argumento slo se emplean los 4 bits de menos peso.

    Se obtiene as una mscara de 32 bits. El bit de menos peso representa al grupo 0, el siguiente bit al grupo 1 y as sucesivamente. Sin un bit est a 0 indica que su correspondiente grupo est vaco. Si el bit est a 1 indica que su correspondiente grupo contiene alguna etiqueta/comando y voz.

    EN RESPUESTA A CMD_MASK_SD

    NOMBRE STS_COUNT COD./DESCRIPCION c (0x63) Devuelve el n de comandos o etiquetas de un determinado grupo ARGUMENTOS [1] Nmero de etiquetas o comandos existentes en un grupo (0 a 31) EN RESPUESTA A CMD_COUNT_SD

    NOMBRE STS_AWAKEN COD./DESCRIPCION w (0x77) Re activacin o wake up del mdulo tras la conexin de la alimentacin

    o tras salir de cualquiera de los modos sleep de bajo consumo ARGUMENTOS Ninguno EN RESPUESTA A A cualquier carcter recibido tras conectar la alimentacin o tras haber ejecutado

    uno de los modos sleep de bajo consumo

    NOMBRE STS_DATA COD./DESCRIPCION d (0x64) Devuelve datos ARGUMENTOS [1] Informacin de la enseanza: -1=vaco, 1 a 6= nmero de veces que se

    grab correctamente una voz SD; >8= Conflicto en la voz SD grabada; >16 conflicto en una voz SI

    [2] Posicin dentro del grupo (0 a 31) [3] Nmero de caracteres que tiene la etiqueta o comando (0-31) [4 a n] Caracteres de la cadena que forman la etiqueta. EN RESPUESTA A CMD_DUMP_SD

    NOMBRE STS_ERROR COD./DESCRIPCION e (0x65) Error en el reconocimiento de una voz ARGUMENTOS [1-2] Devuelve 2 valores de 4 bits que forman un byte con un cdigo de error EN RESPUESTA A CMD_RECOG_SI, CMD_RECOG_SD, CMD_TRAIN_SD, CMD_PLAY_SX

    NOMBRE STS_INVALID COD./DESCRIPCION v (0x76) Comando o argumento no vlido ARGUMENTOS Ninguno EN RESPUESTA A A cualquier comando o argumento no vlido que transmite el Host al EasyVR

  • 21

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    NOMBRE STS_TIMEOUT COD./DESCRIPCION t (0x74) Sobre pasamiento en el tiempo ARGUMENTOS Ninguno EN RESPUESTA A CMD_RECOG_SI, CMD_RECOG_SD, CMD_TRAIN_SD

    NOMBRE STS_INTERR COD./DESCRIPCION i (0x69) Reconocimiento interrumpido ARGUMENTOS Ninguno EN RESPUESTA A CMD_BREAK durante un ciclo de enseanza o reconocimiento de una voz

    NOMBRE STS_SUCCESS COD./DESCRIPCION o (0x6F) Ejecucin OK sin errores ARGUMENTOS Ninguno EN RESPUESTA A CMD_BREAK, CMD_DELAY, CMD_BAUDRATE, CMD_TIMEOUT, CMD_KNOW

    CMD_LEVEL, CMD_LANGUAGE, CMD_SLEEP, CMD_GROUP_SD, CMD_UNGROUP_SD, CMD_ERASE_SD, CMD_NAME_SD, CMD_RESETALL, CMD_QUERY_IO, CMD_PLAY_SX

    NOMBRE STS_RESULT COD./DESCRIPCION r (0x72) Reconocimiento de una voz SD definida por el usuario durante la

    enseanza o el reconocimiento propiamente dicho ARGUMENTOS [1] Posicin dentro del grupo a la que pertenece la voz SD recin

    reconocida (0 a 31) EN RESPUESTA A CMD_RECOG_SD, CMD_TRAIN_SD

    NOMBRE STS_SIMILAR COD./DESCRIPCION s (0x73) Reconocimiento o parecido con una voz predefinida SI ARGUMENTOS [1] Posicin dentro del grupo a la que pertenece la voz SI recin reconocida

    (0 a 31) EN RESPUESTA A CMD_RECOG_SI

    NOMBRE STS_OUT_OF_MEM COD./DESCRIPCION m(0x6D) Error, la memoria del mdulo EasyVR est llena ARGUMENTOS Ninguno EN RESPUESTA A CMD_GROUP_SD, CMD_DUMP_SX

    NOMBRE STS_ID COD./DESCRIPCION x (0x78) Proporciona informacin del firmware interno del EasyVR ARGUMENTOS [1] Identificacin de la versin EN RESPUESTA A CMD_ID

    NOMBRE STS_PIN COD./DESCRIPCION p (0x70) Proporciona el estado de una patilla de entrada ARGUMENTOS [1] Nivel lgico: 0= nivel 0, 1= nivel 1 EN RESPUESTA A CMD_QUERY_IO

  • 22

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    NOMBRE STS_TABLE_SX COD./DESCRIPCION d (0x64) Devuelve datos de la tabla de sonidos ARGUMENTOS [1] [2] Contador de 10 bits que apunta a la tabla (contador=[1]*32+[2]) [3] Tamao de la tabla (0-31) [4 a n] Texto del nombre de la tabla EN RESPUESTA A CMD_DUMP_SX

    5.- LIBRERIAS En el CD-ROM, junto con los ejemplos propiamente dichos, se proporcionan dos libreras escritas tanto en C (*.H) como en ensamblador (*.INC), que incluyen una serie de funciones o rutinas que facilitan el empleo de la pantalla LCD del laboratorio USB-PICSCHOOL y del mdulo de reconocimiento EasyVR. Estas libreras se deben incluir en nuestros programas fuente de aplicacin mediante la directiva 5.1 Librera LCD4bitsPIC16 Contiene funciones de propsito general para controlar una pantalla LCD alfanumrica mediante un controlador PIC de la familia PIC16FXXX y con un interface de 4 bits. En la siguiente tabla se resumen las funciones o rutinas que contiene esta librera.

    NOMBRE PARAM. DE ENTRADA PARAM. DE SALIDA DESCRIPCION UP_LCD Ninguno Ninguno Configura las lneas de E/S para adaptarlas

    a la pantalla LCD LCD_INI Ninguno Ninguno Rutina para la inicializacin de la pantalla

    LCD segn especificaciones del fabricante LCD_DATO W=Contiene el carcter a

    visualizar Ninguno Enva a la pantalla el dato a visualizar en la

    posicin actual del cursor LCD_REG W=Contiene el comando a

    ejecutar por parte de la pantalla LCD

    Ninguno Enva a la pantalla el comando que debe ejecutar

    5.2 Librera EasyVR_16FXXX Contiene funciones especficas para controlar el mdulo de reconocimiento de voz EasyVR desde un controlador PIC16FXXX. La siguiente tabla resume las funciones o rutinas contenidas en esta librera

    NOMBRE PARAM. DE ENTRADA PARAM. DE SALIDA DESCRIPCION EasyVR_Serie Ninguno EasyVR_Status=o

    (0x6F) Inicia el EUART para la comunicacin serie con el mdulo de reconocimiento EasyVR. Por defecto esta se realizar a 9600 baudios, 8 bits de datos, 1 de stop y sin paridad. Tambin espera el Wake Up del mdulo tras un Power Down.

    VR_BREAK Ninguno EasyVR_Status=o (0x6F) o i (0x69)

    Aborta cualquier operacin en curso.

    VR_ID Ninguno EasyVR_Dato1=N de versin

    Devuelve la identificacin o versin del firmware interno del mdulo de reconocimiento EasyVR.

    VR_COUNT_SD EasyVR_Grupo=N de grupo a inspeccionar

    EasyVR_Cont=N de comandos

    Devuelve el nmero de comandos (0-31) que hay en un determinado grupo

    VR_DUMP_SD EasyVR_Grupo=N de grupo a inspeccionar (0-16) EasyVR_Pos=N de posicin dentro del grupo (0-32)

    EasyVR_Buff=etiqueta EasyVR_Cont=N de caracteres de la etiqueta EasyVR_Dato1= Info. De la enseanza EasyVR_Dato2= Posicin conflictiva

    Devuelve a partir de la posicin de EasyVR_Buff la etiqueta o comando que haya en el grupo indicado y en la posicin sealada dentro de ese grupo. La etiqueta de un comando puede tener un mximo de 32 caracteres.

  • 23

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    VR_KNOW EasyVR_Dato1=Nivel EasyVR_Status=o (0x6F)

    Ajusta el nivel de exigencia de reconocimiento para las voces predefinidas (SI). La variable EasyVR_Dato1 debe contener el valor del nivel: 0=nivel bajo (muchos resultados vlidos), 2=valor tpico (por defecto), 4=alto (pocos resultados vlidos)

    VR_LEVEL EasyVR_Dato1=Nivel EasyVR_Status=o (0x6F)

    Ajusta el nivel de exigencia de reconocimiento para las voces del usuario (SD). La variable EasyVR_Dato1 debe contener el valor del nivel: 0=nivel bajo (mnimo), 2=valor tpico (por defecto), 5=nivel alto (mximo, pocos resultados vlidos)

    VR_LANGUAGE EasyVR_Dato1=N de idioma

    EasyVR_Status=o (0x6F)

    Ajusta el lenguaje empleado para el reconocimiento de las voces predefinidas (SI). La variable EasyVR_Dato1 debe contener el valor del lenguaje: 0=Ingles, 1=Italiano, 2=Japones, 3=Alemn

    VR_TIMEOUT EasyVR_Dato1=segundos EasyVR_Status=o (0x6F)

    Ajusta el tiempo de respuesta o Time Out. Si durante la ejecucin de determinados comandos se supera este tiempo, dicha ejecucin se da por finalizado. La variable EasyVR_Dato1 se supone cargada con el valor a temporizar: -1 (0xFF)= defecto, 0=infinito, de 1 a 32 valor del Time Out en segundos

    VR_DELAY EasyVR_Dato1=mili segundos

    EasyVR_Status=o (0x6F)

    Ajusta el tiempo mnimo que emplea el mdulo EasyVR entre la transmisin de un byte y el siguiente. La variable EasyVR_Dato1 se supone cargada con el valor: 0-10= de 0 a 10mS, 11-19= de 20-100mS, 20-28=de 200mS a 1s.

    VR_BAUDRATE EasyVR_Dato1=baudios EasyVR_Status=o (0x6F)

    Ajusta la velocidad de comunicacin (baudios) entre el mdulo EasyVR y el controlador. La variable EasyVR_Dato1 se supone cargada con el valor: 1=115200, 2=57600, 3=38400, 6=19200, 12=9600.

    VR_SLEEP EasyVR_Dato1=modo EasyVR_Status=o (0x6F)

    Determina el modo power down (dormir) de bajo consumo. La variable EasyVR_Dato1 se supone cargada con el modo: 0= Despertar al recibir un carcter, 1= despertar con un silbido o al recibir, 2= despertar con un ruido o al recibir carcter, 3-5= con una doble palmada o al recibir un carcter, 6-8= con una triple palmada o al recibir un carcter.

    VR_RECOG_SD EasyVR_Grupo=N de grupo (0 a 16)

    EasyVR_Status=r o t o e EasyVR_Pos=Posicin de la voz en el grupo EasyVR_Cont=N de caracteres de la etiqueta EasyVR_Buff= etiqueta EasyVR_dato1 y EasyVR_dato2= Cdigos de error

    Activa el reconocimiento de una voz definida por el usuario (SD). En EasyVR_Grupo debe indicarse el grupo (0-16). En EasyVR_Status se devuelve: 'r' si la voz ha sido reconocida, 't' si ha habido sobre pasamiento en el tiempo o 'e' si ha habido error en el reconocimiento. En EasyVR_Pos se devuelve la posicin dentro del grupo que ocupa la voz, en caso de ser reconocida. En este caso su correspondiente comando o etiqueta se almacena a partir de EasyVR_Buffer y EasyVR_Cont indicar el

  • 24

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    nmero de caracteres. En EasyVR_Dato1 y EasyVR_Dato2 se indica el cdigo de error en caso de que lo hubiera. En caso de error o de Time Out, dicho buffer queda borrado.

    VR_RECOG_SI EasyVR_Grupo=N de grupo (0-3)

    EasyVR_Status=s, t o e EasyVR_Pos= posicin dentro del grupo EasyVR_dato1 y EasyVR_dato2= Cdigos de error

    Activa el reconocimiento de una voz predefinida (SI). En EasyVR_Grupo debe indicarse el grupo (0-3). En EasyVR_Status se devuelve: 's' si la voz es similar, 't' si ha habido sobre pasamiento en el tiempo o 'e' si ha habido error en el reconocimiento. En EasyVR_Pos se devuelve la posicin dentro del grupo que ocupa la voz en caso de ser similar. En EasyVR_Dato1 y EasyVR_Dato2 se indica el cdigo de error en caso de que lo hubiera.

    VR_ADD_SD EasyVR_Grupo=N de grupo EasyVR_Pos=Posicin EasyVR_Buff=etiqueta

    EasyVR_Pos=o, e, m o v

    Aade un nuevo comando o etiqueta SD. En EasyVR_Grupo se indicar el grupo donde se va a insertar, en EasyVR_Pos se indicar la posicin dentro del grupo, En EasyVR_Cont se indica el nmero de caracteres de que consta el comando o etiqueta y, a partir de EasyVR_Buff, se supone almacenada la cadena ASCII que define el comando. En EasyVR_Status se devuelve 'o' si la ejecucin es correcta, 'e' si hay error o 'm' si no hay memoria suficiente para almacenar el nuevo comando o 'v' si el comando o argumentos no son vlidos.

    VR_TRAIN_SD EasyVR_Grupo=N de grupo EasyVR_Pos=Posicin

    EasyVR_Status=o, e o t

    Aade una voz definida por el usuario (SD) a una determinada etiqueta o comando previamente aadida al mdulo EasyVR (enseanza). En EasyVR_Grupo se indica el grupo al que pertenecer la nueva voz. En EasyVR_Pos se indica la posicin de la voz dentro del grupo. En EasyVR_Status se devuelve 'o' si la funcin se ejecuta correctamente, 'e' si hay error y 't' si se produce un Timer Out durante la enseanza.

    VR_ERASE_SD EasyVR_Grupo=N de grupo EasyVR_Pos=N de posicin

    EasyVR_Status=o Borra una de las voces definidas por el usuario (SD). En EasyVR_Grupo se indica el grupo al que pertenecece la voz a borrar, en EasyVR_Pos se indica la posicin dentro de ese grupo. En EasyVR_Status se devuelve 'o' si la funcin se ejecuta correctamente.

    VR_UNGROUP _SD

    EasyVR_Grupo=N de grupo EasyVR_Pos=Posicin

    EasyVR_Status=o Borra la etiqueta o comando asociado a una de las voces definidas por el usuario (SD). En EasyVR_Grupo se indica el grupo al que pertenecece la voz a borrar, en EasyVR_Pos se indica la posicin dentro de ese grupo. En EasyVR_Status se devuelve 'o' si la funcin se ejecuta correctamente.

    VR_ADD _TRAIN_SD

    EasyVR_Grupo=N de grupo EasyVR_Pos=Posicin EasyVR_Cont=N de caracteres

    EasyVR_Status=o, e, m o v

    Esta rutina engloba las funciones VR_ADD_SD y VR_TRAIN_SD en una nica funcin: Aade un nuevo comando o etiqueta SD y seguidamente le asocia una nueva voz. En EasyVR_Grupo se indicar el grupo donde se va a insertar, en EasyVR_Pos se indicar la posicin dentro del grupo, En EasyVR_Cont se indica el nmero de caracteres de que consta el comando o etiqueta, cuya cadena ASCII se supone almacenada a partir de EasyVR_Buff. En EasyVR_Status se

  • 25

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    devuelve 'o' si la ejecucin es correcta, 'e' si hay error o 'm' si no hay memoria suficiente para almacenar el nuevo comando, 't' si se produce un Timer Out durante la enseanza o 'v' si el comando o argumentos no son vlidos.

    VR_ERASE _UNG_SD

    EasyVR_Grupo=N de grupo EasyVR_Pos=Posicin

    EasyVR_Status=o ;: Esta rutina engloba las funciones VR_ERASE_SD y VR_UNGROUP_SD en una nica funcin: borra una voz y seguidamente borra la etiqueta o comando asociado a la misma. En EasyVR_Grupo se indica el grupo al que pertenecece la voz a borrar, en EasyVR_Pos se indica la posicin dentro de ese grupo. En EasyVR_Status se devuelve 'o' si la funcin se ejecuta correctamente.

    VR_MASK_SD Ninguno EasyVR_Status=k EasyVR_Buff=mscara

    Devuelve la mscara de los grupos no vacios. Dicha mscara consta de 4 bytes (32 bits) que se almacenan en hex. a partir de EasyVR_Buff, empezando por el de menos peso. Un bit 1 representa grupo usado o no vacio. P.e. la mscara = 00000000 00000000 01001000 00000101 representa que los grupos 0, 2, 11 y 14 estn usados, el resto estn vacios. En EasyVR_Status se devuelve 'k'

    VR_RESETALL Ninguno Ninguno Borra todos los comandos y grupos existentes

    VR_PLAY_SX EasyVR_Temp1 = 2 bits MSB. EasyVR_Temp2 = 8 bits LSB. EasyVR_Temp3 = volume (entre 0 y 31)

    EasyVR_Status=o o e Reproduce el sonido de la Tabla de sonidos. En las variables EasyVR_Temp1 y EasyVR_Temp2 se indica el ndice de 16 bits del sonido a reproducir (entre 0 y 1023). EasyVR_Temp1 tiene los 2 bits de ms peso y Easy_Temp2 los 8 bits de menos peso. En la variable EasyVR_Temp3 se indica el volumen de reproduccin entre 0 y 31. En EasyVR_Status se devuelve 'o' al finalizar correctamente la reproduccin o 'e' si hay error.

    . 6.- EJEMPLO PRACTICOS Junto con el mdulo de reconocimiento de voz se adjunta un CD-ROM con una serie de ejemplos y aplicaciones. Estos ejemplos, puramente didcticos, han sido realizados por Ingeniera de Microsistemas Programados con la nica finalidad de facilitar el empleo del EasyVR. Estn diseados para el microcontrolador PIC16F88X y se proporcionan las libreras y los programas fuente escritos tanto en lenguaje C como en ensamblador. Son fcilmente adaptables a cualquier otro dispositivo y se han realizado sobre nuestro laboratorio de prcticas USB-PICSCHOOL, aunque se pueden implementar fcilmente sobre cualquier otra plataforma hardware. Esperamos que sean de ayuda a todos los usuarios que deseen incorporar la potencia y prestaciones de un sistema de reconocimiento de voz en todos sus proyectos y aplicaciones. 6.1 Ejemplo 1: Reconocimiento de voces predefinidas SI Objetivos Realizar una primera toma de contacto con el mdulo de reconocimiento de voz EasyVR controlado desde un programa de aplicacin del usuario. Se trata de reconocer las voces predefinidas SI alojadas en el grupo wordset 3 y que corresponden a los nmeros del 0 al 10 que debern pronunciarse en ingls.

  • 26

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Esquema La figura 21 muestra el esquema de conexiones necesario para implementar este ejemplo. Empleamos el laboratorio USB-PICSCHOOL conectando las lneas de RB7:RB0 del PIC con los leds de salida S7:S0. Por su parte el mdulo EasyVR se alimenta con +5Vcc. Su lnea ETX de transmisin se conecta con RC7/RX del PIC mientras que la lnea de recepcin ERX se conecta con la de transmisin RC6/TX del PIC.

    Figura 21. Esquema de conexiones

    Comentarios

    El ejemplo controla las salidas RB7:RB0 con el dictado de las voces SI predefinidas zero a seven (en ingls). Cuando una voz es reconocida la salida correspondiente cambia de estado. Si se detecta un error de reconocimiento, todas las salidas producen una intermitencia. Si la voz no est comprendida entre 0 y 7 (en ingls) no se produce ningn cambio en las salidas. En el ejemplo se puede observar que, una vez reconocida una voz, se obtiene qu nmero de posicin ocupa esa voz dentro del grupo. Dicho nmero permite calcular sobre qu salida se debe actuar. En la fotografa de la figura 22 se muestra el montaje realizado sobre el laboratorio USB-PICSCHOOL.

    Figura 22. Montaje prctico del ejemplo 1 A pesar de su sencillez, este ejemplo nos permite intuir las posibilidades del mdulo EasyVR de cara al control por voz de determinados procesos.

    MIC.

    U49

    Easy VR

    GND1

    VCC2

    ERX3

    ETX4

    PWM15

    PWM26

    SALIDAS DIGITALES

    S0

    S1

    S2

    S3

    S4

    S5

    S6

    S7

    RB0RB2 RB1RB5 RB4 RB3RB6RB7+5VCC

    RC7/RX

    RC6/TX

  • 27

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    6.2 Ejemplo 2: Reconocimiento de voces SD definidas por el usuario Objetivos El ejemplo es similar al anterior. En esta ocasin se trata de realizar el reconocimiento de voces definidas por el usuario y en cualquier lenguaje. Vamos a emplear el grupo 1 donde se supone se han definido las voces del 0 al 9 en cualquier lenguaje (p.e. castellano) mediante el empleo del entorno EasyVR Commander, tal y como se explic en el apartado 2.3 anterior. Esquema La figura 23 muestra el esquema de conexiones. Las salidas RB0:RB7 controlan los segmentos a:dp del display de las unidades del laboratorio. El mdulo EasyVR se conecta como en el ejemplo anterior: ETX con RC7/RX y ERX con RC6/TX.

    Figura 23. Esquema elctrico del ejemplo 2

    Comentarios Cuando se detecta una de las voces SD definidas por el usuario en el grupo 1, el programa extrae qu posicin ocupa esa voz dentro de ese grupo. A partir de dicho nmero de posicin se obtiene el cdigo de 7 segmentos que hay que visualizar sobre el display. Si la voz no es reconocida el display se apaga. En la fotografa de la figura 24 se muestra el montaje sobre el laboratorio USB-PICSCHOOL. El resultado final es que sobre el display se visualiza el nmero de la voz dictada. Figura 24. Montaje prctico del ejemplo 2 6.3 Ejemplo 3: Reconocimiento de voces SD definidas por el usuario y visualizacin de las etiquetas Objetivos Este ejemplo reconoce una de las voces definidas por el usuario en el grupo 1. Sobre la pantalla LCD, adems de visualizar el nmero que ocupa la voz dentro del grupo, se visualiza tambin la etiqueta o comando asociada a la misma.

    +5 Vcc

    AC UNIAC DEC

    7 SEGMENTOS

    abcdefg

    dp

    ..

    RB0

    RB3RB2RB1

    RB6RB5RB4

    RB7

    +5VCC

    RC7/RX

    RC6/TX

    MIC.

    U54

    Easy VR

    GND1

    VCC2

    ERX3

    ETX4

    PWM15

    PWM26

  • 28

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Esquema Se muestra en la figura 25. La pantalla LCD se gobierna mediante un interface de 4 bits con las lneas RB3:RB0. Las seales de control de la misma las proporcionan RA1, RA2 y RA3 que se conectan con E, R/W y RS respectivamente. El mdulo EasyVR se conecta como en anteriores ocasiones.

    Figura 25. Esquema elctrico Comentarios La nueva aportacin de este ejemplo es el extraer y visualizar el comando o etiqueta asociado a una voz. Como ya se ha explicado dicha etiqueta consiste en una cadena ASCII de caracteres imprimibles y que est asociada a una voz. Efectivamente, cuando se reconoce cualquiera de las voces SD definidas por el usuario en el grupo 1, el programa extrae y visualiza qu nmero de posicin que ocupa dentro del grupo. A partir de ese nmero tambin obtiene y visualiza la cadena ASCII asociada a esa voz y ese nmero. La fotografa de la figura 16 muestra el montaje prctico del ejemplo.

    Figura 26. Montaje prctico del ejemplo 3 sobre el laboratorio USB-PICSCHOOL

    Tanto las voces como sus correspondientes comandos o etiquetas asociadas se definieron segn el apartado 2.3 de este documento. En cualquier caso hay que indicar que esa etiqueta NO tiene porqu coincidir con la voz. 6.4 Ejemplo 4: Reconocimiento de voces SD definidas por el usuario Objetivos Este importante ejemplo pretende servir para mostrar cmo los programas de aplicacin del usuario tambin pueden realizar ciclos de enseanza de voces y grabarlas sobre el mdulo EasyVR junto con las etiquetas o comandos que queramos asociarlas. Todo ello lo vamos a realizar sobre el grupo 2 y con TOTAL independencia de un PC.

    MIC.

    U50

    Easy VR

    GND1

    VCC2 ERX 3ETX

    4

    PWM15

    PWM26

    2X16

    PANTALLA LCD

    RS

    4

    R/W

    5

    E6

    D0

    7

    D1

    8

    D2

    9

    D3

    10

    D4

    11

    D5

    12

    D6

    13

    D7

    14

    RB3

    RB0RB1RB2

    RA1

    RA3RA2

    +5VCC

    RC6/TX

    RC7/RX

  • 29

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Esquema Se emplea el mismo esquema de conexiones que el empleado en la figura 25 del ejemplo anterior Comentarios El ejemplo es un poco ms complicado que los anteriores, pero merece la pena analizarlo con cuidado ya que puede servir de referencia para posteriores aplicaciones. Empieza grabando las etiquetas o comandos sobre el grupo 2, en las posiciones 0 al 4 de ese grupo: ADELANTE, ATRS, DERECHA, IZQUIERDA y PARA. Seguidamente comienzan los ciclos de enseanza gracias a los cuales a cada una de esas etiquetas se les asocia una voz (no tiene porqu ser la misma). El ciclo de enseanza de cada voz se repite dos veces para obtener una mejor definicin de la misma. Sobre la pantalla LCD irn apareciendo una serie de mensajes intuitivos que irn informando de los diferentes pasos. Una vez grabadas las 5 etiquetas y sus voces, el programa queda bloqueado en un bucle cerrado. Posteriormente, podemos conectar el mdulo EasyVR a nuestro PC y, mediante el entorno EasyVR Commander para Windows, ver el estado actual del mdulo con las nuevas voces y etiquetas recin incorporadas. La figura 27 muestra el aspecto que debiera tener el contenido del mdulo visto con el software EasyVR Commander.

    Figura 27. Estado actual del EasyVR

    Una vez hemos ejecutado este ejemplo podemos luego ejecutar el ejemplo 3 anterior para verificar que tanto las voces que acabamos de ensear, como sus etiquetas, son debidamente reconocidas. En ese ejemplo 3 tan solo habr que modificar el nmero de grupo (Grupo 2).

  • 30

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    6.5 Ejemplo 5: Reconocimiento de voces SD definidas por el usuario Objetivos Se trata de reconocer las voces que se definieron y grabaron en el ejemplo anterior sobre el grupo 2. En la pantalla LCD se visualizar la etiqueta y la posicin dentro del grupo 2, en que se encuentre cualquiera de las voces reconocidas. Adems, para dar un mayor inters, se supone que se est controlando un sistema mvil que reproducir los movimientos segn la voz dictada. Esquema Se muestra en la figura 28. Tanto la pantalla LCD como el EasyVR se conectan como en anteriores ocasiones. Las lneas RC0:RC3 se conectan con los leds de salida S0:S3

    Figura 28. Ejemplo 5 Comentarios

    Con objeto de dar una sencilla idea de aplicacin, el ejemplo propone controlar 4 salidas que simulan otros tantos movimientos de un supuesto sistema mvil (p.e. un robot). Para ello las lneas RC0:RC3 conectadas a las salidas S0:S3 simulan activar los mecanismos que reproducirn los movimientos hacia adelante, atrs, giro a la derecha, giro a la izquierda y parada. Cuando se reconoce una de las voces del grupo 2 (grabadas en el ejemplo anterior), la pantalla LCD visualiza la etiqueta o comando correspondiente y su posicin dentro del grupo, al tiempo que se activar el led correspondiente. En la fotografa de la figura 29 se muestra el montaje prctico realizado sobre el laboratorio USB-PICSCHOOL.

    Figura 29. Montaje prctico del ejemplo 5

    MIC.

    U55

    Easy VR

    GND1

    VCC2

    ERX3

    ETX4

    PWM15

    PWM26

    RB3

    2X16

    PANTALLA LCD

    RS

    4

    R/W

    5

    E6

    D0

    7

    D1

    8

    D2

    9

    D3

    10

    D4

    11

    D5

    12

    D6

    13

    D7

    14

    RB0RB1RB2

    RA1

    RA3RA2

    +5VCC

    RC6/TX

    RC7/RX

    RC0/ADELANTE

    SALIDAS DIGITALES

    S0

    S1

    S2

    S3

    S4

    S5

    S6

    S7

    RC1/ATRAS

    RC3/DCHA.RC2/IZDA.

  • 31

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    6.6 Ejemplo 6: Reconocimiento de voces SD definidas por el usuario Objetivos El ejemplo trata de reconocer voces SD definidas por el usuario en diferentes grupos. Efectivamente, se combinan las voces del grupo 2 (movimiento) con las del grupo 1 (nmeros 0 al 9) con objeto de realizar una aplicacin en la que un sistema mvil realiza un movimiento determinado durante un cierto tiempo. Todo ello controlado por la voz. Esquema Es el mismo esquema que el de la figura 28 del ejemplo anterior. Comentarios El programa empieza tratando de reconocer las voces de movimiento del grupo 2: ADELANTE, ATRS, DERECHA, IZQUIERDA y PARO. Cuando una de ellas es reconocida, se visualiza en el LCD y se determina qu tipo de movimiento hay que realizar. Seguidamente trata de reconocer las voces numricas del grupo 1 (del 0 al 9). Cuando se reconoce cualquiera de ellas, se visualiza en el LCD de forma concatenada con la voz de movimiento (p.e. DERECHA NUEVE). Esta voz numrica representar tiempo en segundos. Efectivamente, cuando se han reconocido ambas voces, la de movimiento y la de tiempo, se procede a realizar la maniobra. Se activa la salida RC0:RC3 correspondiente durante el tiempo establecido en segundos. La figura 30 muestra el montaje del ejemplo sobre el laboratorio y su ejecucin.

    Figura 30. Montaje prctico del ejemplo 6

  • 32

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    6.7 Ejemplo 7 : Reconocimiento de voces SD definidas por el usuario Objetivos Se trata de un ejemplo meramente didctico en el que se pretende mostrar algunas de las funciones contenidas en la librera . De una forma intuitiva, gracias a la pantalla LCD, podremos explorar el contenido interno del mdulo EasyVR y visualizar qu grupos estn ocupados, cuantas voces poseen, que posicin ocupan dentro de un grupo y la etiqueta o comando correspondiente. Esquema Se muestra en la figura 31. Tanto la pantalla LCD como el mdulo EasyVR se conectan como se ha venido realizando en anteriores ejercicios. Los pulsadores E7, E6 y E4 se conectan con las lneas RA4, RA5 y RA0 respectivamente. RA4 permite seleccionar secuencialmente los grupos que contengan alguna voz. RA5 selecciona la posicin dentro de un grupo. RA0 elimina la etiqueta y la voz que haya en la posicin y grupo actual.

    Figura 31. Esquema de conexiones Comentarios

    El ejemplo pretende mostrar el empleo de algunas de las funciones contenidas en la librera "EasyVR_16FXXX.inc" y que no han sido usadas hasta ahora:

    VR_MASK_SD: Obtiene la mscara con los grupos de voces SD no vacos VR_COUNT_SD: Obtiene el n de comandos y voces de ese grupo VR_ERASE_UNG_SD: Borra la voz y etiqueta asociada en la posicin y grupo actual

    Con cada transicin 1-0-1 en RA4 (aplicada desde el pulsador E7 de USB-PIC'School) se selecciona el

    siguiente grupo que contenga una o varias etiquetas (no vaco)

    Con cada transicin 1-0-1 en RA5 (aplicada desde el pulsador E6) se selecciona la siguiente posicin dentro del grupo.

    En la pantalla LCD se visualizar el n de grupo actual (no vaco), el n de etiquetas contenidas en ese grupo, posicin de la etiqueta dentro del grupo y la etiqueta propiamente dicha.

    Con una transicin 1-0-1 en RA0 (aplicada desde el pulsador E4) se elimina, del mdulo EasyVR, la etiqueta y voz que en ese momento se est visualizando en la pantalla LCD

    Podemos emplear el entorno EasyVR Commander de windows para crear nuevos grupos y etiquetas que luego sern visualizas y/o borras mediante la ejecucin de este ejemplo. En la figura 32 se muestra el montaje prctico de este ejemplo con el resultado de su ejecucin.

    MIC.

    U51

    Easy VR

    GND1

    VCC2

    ERX3

    ETX4

    PWM15

    PWM26

    RB3

    2X16

    PANTALLA LCDR

    S4

    R/W

    5

    E6

    D0

    7

    D1

    8

    D2

    9

    D3

    10

    D4

    11

    D5

    12

    D6

    13

    D7

    14RB2

    RB0RB1

    RA1

    RA3RA2

    +5VCC

    RC6/TX

    RC7/RX

    E. DIGITALES

    E0

    E1

    E2

    E3

    E4

    E5

    E6

    E7

    RA4/GRUPO

    RA5/POS.

    RA0/BORRAR

  • 33

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Figura 32. Montaje prctico del ejemplo 7 6.8 Ejemplo 8 : Reproduccin de sonidos Objetivos Se trata de un ejemplo que nos permite reproducir los sonidos grabados en la memoria flash del mdulo EasyVR. Se supone que dicha memoria flash est grabado con los sonidos que se incluyen en la carpeta Sonidos del CDROM del usuario, tal y como se explic en el apartado 3 del presente documento. Mediante el pulsador E7 del laboratorio USB-PICSchool, conectado a la entrada RA4, se van reproduciendo secuencialmente los 12 sonidos grabados, incluido el beep que viene de fbrica. Esquema Se muestra en la figura 33. RA4 permite seleccionar secuencialmente el sonido a reproducir. En las patillas PWM del mdulo se debe conectar un altavoz de 8.

    Figura 33. Esquema de conexiones

    Altav oz 8 ohmios

    MIC.

    U52

    Easy VR

    GND1

    VCC2 ERX 3ETX

    4

    PWM15

    PWM26

    +5VCC

    RC6/TX

    RC7/RX

    E. DIGITALES

    E0

    E1

    E2

    E3

    E4

    E5

    E6

    E7

    RA4/SEL.

  • 34

    Ingeniera de Microsistemas Programados S.L Alda. Mazarredo N 47 1 Dpto 2 48009 Bilbao Vizcaya (Spain)

    Tfno/Fax: 94 4230651 www.microcontroladores.com [email protected]

    Comentarios

    El ejemplo muestra el empleo de la funcin VR_PLAY_SX, para la reproduccin de los sonidos que contiene la memoria flash del mdulo EasyVR.

    Con cada transicin 1-0-1 en RA4 (aplicada desde el pulsador E7 de USB-PIC'School) se selecciona el siguiente sonido de la tabla de sonidos. Cuando se han reproducido todos ellos, se vuelve a empezar desde el principio. En el ejemplo se asume que la memoria flash del mdulo est grabada con los 11 sonidos tal y como se explico en el apartado 3. Adems hay un sonido extra, el beep, que viene grabado de fbrica. Tenemos por tanto un total de 12 sonidos para reproducir.