Sei sulla pagina 1di 34

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
info@microcontroladores.com

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
info@microcontroladores.com

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
info@microcontroladores.com

Condiciones de trabajo recomendadas

SIMBOLO PARAMETRO Mn. Tp. Mx UNIDAD
VCC 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 UNIDAD
V
IH
Tensin de entrada del nivel 1 2.4 3.0 3.3 V
V
IL
Tensin de entrada del nivel 0 -0.1 0.0 0.75 V
I
IL
Corriente de fuga de entrada <1 10 A
V
OH
Tensin de salida del nivel 1 2.4 V
V
OL
Tensin de salida del nivel 0 0.6 V

Alimentacin

SIMBOLO PARAMETRO Mn. Tp. Mx UNIDAD
I
SLEEP
Consumo en el modo Sleep <1 mA
I
OPER
Consumo en el modo normal de trabajo 12 mA
I
SPEAKER
Consumo en reproduccin de audio 180 mA

1.4 El Interface serie

El mdulo EasyVR se comporta como un dispositivo esclavo que se controla desde un dispositivo Master o
controlador, mediante una comunicacin serie asncrona tipo UART con las siguientes caractersticas:

Velocidad de comunicacin: 9600 baudios (por defecto), 19200, 38700, 57600 y 115200 baudios
Trama: 8 bits de datos, 1 bit de stop y sin paridad

Junto con el mdulo EasyVR se adjunta un software para Windows, el EasyVR Commander. Se trata de un
interface grfico de usuario (GUI) que permite utilizar y analizar de forma rpida, eficaz y sencilla todas las
funciones del mdulo de reconocimiento EasyVR.


Su instalacin en el PC es muy
sencilla y lo nico que hay que realizar
son las conexiones adecuadas de las
seales ETX, ERX y alimentacin. Se
recuerda que las seales de
comunicacin de datos son
compatibles con niveles de tensin TTL
por lo que NO se pueden conectar
directamente al puerto COM del PC.
Hay que realizar el clsico circuito para
la adaptacin de niveles TTL a RS232,
p.e. mediante el conocido circuito
MAX2323, como se muestra en el
esquema de la figura 3.


Figura 3. Esquema de interface de
TTL a RS232 mediante el MAX232
+5VCC
RxD
TxD
MAX232
T1IN
11
T2IN
10
C1+
1
R1IN
13
R2IN
8
R1OUT
14
R2OUT
7
C2+
4
C2-
5
V-
6
G
N
D
1
5
C1-
3
T1OUT
12
T2OUT
9
V+
2
V
c
c
1
6
INTERFACE RS-232
5
9
4
8
3
7
2
6
1
100n
100n 100n
100n
100n
+5VCC
MIC.
U47
Easy VR
GND
1
VCC
2
ERX
3
ETX
4
PWM1
5
PWM2
6
+5VCC
TxD
RxD





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
info@microcontroladores.com
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
GND
1
VCC
2
ERX
3
ETX
4
PWM1
5
PWM2
6





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
info@microcontroladores.com

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
info@microcontroladores.com
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:

R
LL=
v
OH
-v
LED
I
OH

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

R
LL
=
2.4 -1.8
u.uuS
= 12u


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
info@microcontroladores.com

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

I
XM
=
1K
R +1K
xIcc

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

R =
Icc
S
x1uuu -1uuu

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
info@microcontroladores.com

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
info@microcontroladores.com
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
info@microcontroladores.com
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
info@microcontroladores.com
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
info@microcontroladores.com
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
info@microcontroladores.com
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
info@microcontroladores.com

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
info@microcontroladores.com

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
info@microcontroladores.com
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
info@microcontroladores.com
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
info@microcontroladores.com

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
info@microcontroladores.com

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
info@microcontroladores.com
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
info@microcontroladores.com

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
info@microcontroladores.com

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 <include>

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
info@microcontroladores.com
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
info@microcontroladores.com
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
info@microcontroladores.com
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
info@microcontroladores.com
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
GND
1
VCC
2
ERX
3
ETX
4
PWM1
5
PWM2
6
SALIDAS DIGITALES
S
0
S
1
S
2
S
3
S
4
S
5
S
6
S
7
RB0 RB2 RB1 RB5 RB4 RB3 RB6 RB7
+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
info@microcontroladores.com

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 UNI AC DEC
7 SEGMENTOS
a
b
c
d
e
f
g
dp
. .
RB0
RB3
RB2
RB1
RB6
RB5
RB4
RB7
+5VCC
RC7/RX
RC6/TX
MIC.
U54
Easy VR
GND
1
VCC
2
ERX
3
ETX
4
PWM1
5
PWM2
6





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
info@microcontroladores.com

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
GND
1
VCC
2
ERX
3
ETX
4
PWM1
5
PWM2
6
2X16
PANTALLA LCD
R
S
4
R
/
W
5
E
6
D
0
7
D
1
8
D
2
9
D
3
1
0
D
4
1
1
D
5
1
2
D
6
1
3
D
7
1
4
RB3
RB0
RB1
RB2
RA1
RA3
RA2
+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
info@microcontroladores.com
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
info@microcontroladores.com
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
GND
1
VCC
2
ERX
3
ETX
4
PWM1
5
PWM2
6
RB3
2X16
PANTALLA LCD
R
S
4
R
/
W
5
E
6
D
0
7
D
1
8
D
2
9
D
3
1
0
D
4
1
1
D
5
1
2
D
6
1
3
D
7
1
4
RB0
RB1
RB2
RA1
RA3
RA2
+5VCC
RC6/TX
RC7/RX
RC0/ADELANTE
SALIDAS DIGITALES
S
0
S
1
S
2
S
3
S
4
S
5
S
6
S
7
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
info@microcontroladores.com
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
info@microcontroladores.com
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 <EasyVR_16FXXX>. 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
GND
1
VCC
2
ERX
3
ETX
4
PWM1
5
PWM2
6
RB3
2X16
PANTALLA LCD
R
S
4
R
/
W
5
E
6
D
0
7
D
1
8
D
2
9
D
3
1
0
D
4
1
1
D
5
1
2
D
6
1
3
D
7
1
4
RB2
RB0
RB1
RA1
RA3
RA2
+5VCC
RC6/TX
RC7/RX
E. DIGITALES
E
0
E
1
E
2
E
3
E
4
E
5
E
6
E
7
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
info@microcontroladores.com


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
GND
1
VCC
2
ERX
3
ETX
4
PWM1
5
PWM2
6
+5VCC
RC6/TX
RC7/RX
E. DIGITALES
E
0
E
1
E
2
E
3
E
4
E
5
E
6
E
7
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
info@microcontroladores.com

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.

Potrebbero piacerti anche