|

Circuito sintetizador de voz capaz de convertir en sonidos cualquier texto de forma ilimitada
que se le envíe por el puerto serie rs232, o bien mediante un bus I2C. El circuito sintetizador también
es capaz de almacenar hasta 30 frases con un máximo total de 1925 caracteres. Puede funcionar bajo el control
de un bus I2C, un interfaz serie rs2332 a 38400 baudios o bien puerto de entrada paralelo de 5 pines. El circuito
de tan solo 40 x 40 mm incluye un amplificador de audio de 325 mW y un altavoz, por lo que tan solo es necesario la
alimentación y las conexiones de control para su funcionamiento. Alimentación 5V, 35 mA en reposo y 100 mA activo.
Utiliza el circuito sintetizador Winbond WTS701EM/T, En versión inglesa.
ATENCION ESTA PAGINA ES UNA TRADUCCION DE LA PAGINA ORIGINAL DEL FABRICANTE Y CONTIENE TODA LA DOCUMENTACION EXISTENTE
SOBRE EL MODULO SINTETIZADOR DE VOZ SP03.
La comunidad robótica ha estado sin un sintetizador de voz de bajo coste desde hace mucho tiempo. Con la desaparición
del popular chip SP256-AL2, que era capaz de reproducir 256 fonemas diferentes, solo quedaron en el mercado soluciones
multichip hasta la aparición del procesador Winbond WTS701. Este integrado no solo incluye el chip sintetizador,
sino que además incluye un procesador capaz de reproducir texto con unas características y calidad francamente
buenas, siendo el único inconveniente para el aficionado, el encapsulado en un chip de 56 patitas en formato
TSOP con un espaciado entre patillas de tan solo 0,5 mm.
El módulo sintetizador de voz SP03, incluye un amplificador de audio, un regulador de tensión de 3 voltios
con conversión a 5V, un procesador PIC encargado de facilitar las comunicación con el procesador central,
un altavoz de 40 mm y el chip sintetizador WTS701. Para facilitar la conexión con exterior se incluye un bus
I2C, un puerto serie rs232 y una bus paralelo capaz de reproducir hasta 30 frases diferentes. Hay disponible un programa
para PC llamado SP03.EXE capaz de enviar y reproducir las 30 frases en el módulo sintetizador. También existen
varios ejemplos de utilización del módulo sintetizador con varios micro controladores.
Conexiones del módulo sintetizador de voz SP03
Hay dos hileras de conexiones en el circuito dependiendo del tipo de puerto que se quiera emplear. La alimentación
de 5V puede ser aplicada en cualquiera de las dos, por lo que el otro conector puede quedar libre.
Conexiones del módulo SP03
Conector PL1 interfaz serie/I2C
+5V - Alimentación de 5V 100 mA
SDA - Conexión SDA del bus I2C
SCL - Conexión SCL del bus I2C
No Connect - No conectar esta patita
GND - Conexión de 0V. Masa
Spare - Pin sin asignar. No conectar
GND - Conexión de 0V. Masa
RS232 Rx - Se conecta al pin TX del PC.
RS232 Tx -Se conecta al pin RX del PC. |
 |
Conector PL2 interfaz paralelo
+5V - Alimentación de 5V 100mA.
Status - Esta alto mientras habla.
Sel 4 -Estas cinco entradas binarias
Sel 3 -seleccionan cual de
Sel 2 -las 30 frases se reproduce
Sel 1 -
Sel 0 -
GND - Entrada de 0 voltios. Masa |
Comunicaciones serie RS232
Para usar el puerto serie para controlar el módulo sintetizador de voz Sp03, solo hacen falta tres conexiones y la
alimentación. La entrada RX del módulo deberá conectarse a la salida TX (pin 3 del conector DB9) del
PC, y el pin TX del módulo al pin RX(pin 2 del conector DB9) del PC. La línea de masa (0 voltios) del módulo
tiene que ser conectada a la masa del PC (pin 5 del conector DB9). La alimentación de 5 V no se muestra en
la foto. Las propiedades de la conexión son 38400 baudios, 8 bits de datos, sin paridad y 2 bits de parada.

Comandos RS232
Hay 33 comandos que pueden enviarse por el puerto serie hasta el módulo SP3. Treinta de estas ordenes (ordenes de
la 1 a la 30) son utilizadas para reproducir una de las 30 frases almacenadas previamente con solo un enviar un byte
al módulo. Cuando el sintetizador termina de decir la frase, devuelve el comando de vuelta al PC indicando que ha
terminado. No enviar mas ordenes al módulo mientras esta hablando ya que serán ignorados. Cuando el módulo
devuelve la orden de vuelta, indica que ya esta listo para recibir la siguiente instrucción.
Comando 128 (0x80)
Este comando se utiliza para sintetizar una línea de texto. La orden va seguida de 3 bytes de control, la
frase con el texto a reproducir y finalmente el carácter 0x00 (NULO). Los tres bytes de control son el volumen,
el tono y la velocidad. Cada byte enviado es devuelto por el módulo como indicación del reconocimiento del
mismo. Es importante no enviar un nuevo byte hasta que el módulo no ha devuelto el byte anterior. EL bufer de texto
del PIC es de 85 bytes y como hay un total de 4 bytes de control y sincronización, quedan un total de 81 bytes,
que es el limite de caracteres que puede tener la frase enviada para su reproducción. A continuación
se muestra una tabla con la secuencia para reproducir "Hello" a pleno volumen y con una velocidad y tono
medio.
| Orden transmitida al módulo SP03 |
Byte devuelto por módulo SP03 |
| Comando 0x80 |
0x01 |
| Máximo Volumen 0x00 |
0x00 |
| Tono de la síntesis 0x04 |
0x04 |
| Velocidad de la voz 0x02 |
0x02 |
| Texto 'H' |
'H' |
| Texto 'e' |
'e' |
| Texto 'l' |
'l' |
| Texto 'l' |
'l' |
| Texto 'o' |
'o' |
| NULO 0x00 |
0x00 |
| El módulo reproduce el texto |
0x00 indica que el texto esta cargado en el módulo. |
Comando 129 (0x81)
Este comando se utiliza para leer el registro de estado del WTS701. Cuando el módulo recibe esta orden, devuelve
el byte de menor peso, seguido del byte de mayor peso correspondientes a registro de estado del integrado. Esto se
utiliza para saber cuando el sintetizador ha terminado de hablar. Si lo desea puede consultar la hoja de características
del WTS701 para ampliar información acerca de los bytes del registro de estado. Un ejemplo de como se hace
en C seria:
| do { |
|
| SerOut(0x81); |
// Envía la orden 129 |
| sts = SerIn(); |
// Recibe el byte bajo |
| sts += SerIn()<<8; |
// Recibe el byte alto |
| sts &= 0x8003; |
// Filtra los bits a comprobar |
| }while(sts != 0x8001); |
// y repite mientras esta hablando |
Comando 130 (0x82)
Este comando se utiliza en el programa SP03.EXE para descargar las 30 frases predefinidas en la memoria flash del
PIC. No utilice este comando, ya que el texto es enviado en un formato comprimido especial.
El resto de comandos o bytes enviados serán ignorados.
Comunicación por Bus I2C
Junto con la Alimentación de 5V, el bus I2C solamente requiere de las conexiones SDA y SCL para su funcionamiento.
El módulo no incluye las resistencias de polarización del bus, por lo que estas deben ser situadas en cualquier
parte del mismo. Lo mas normal es situarlas en el bus master y así sirven para todos los módulos que
se conecten al bus. Como valores orientativos se pueden utilizar dos resistencias de 4k7 para velocidades de 100 KHZ
y 1k8 si se sube hasta los 400KHZ. Para mayores velocidades, es necesario separar cada byte enviado por el bus I2C
con un retardo de 40 uS con el fin de dar tiempo al procesador para transferir el byte recibido al bufer. Haciendo
esto, se han obtenido velocidades de hasta 1 MHZ con el módulo sintetizador de voz SP03.
El protocolo empleado para comunicarse con el módulo SP03 por el bus I2C, es el mismo empleado con las conocidas
EEPROM del tipo 24c04 y similares. El módulo SP03 tiene solo dos registros, el de comandos y el del numero de revisión.
Para leer este ultimo, primero hay que enviar el bit de inicio, la dirección del módulo (0xC4) con el bit de
escritura/lectura puesto a cero y a continuación el numero de registro que se desea leer (0X01). A continuación
se vuelven a enviar el bit de inicio y la dirección del módulo con el bit escritura/lectura puesto a 1 (0XC5).
Después se lee un byte que es el numero de revisión del software del PIC, seguido del bit de parada.
| Registro |
Función |
| 0 |
Registro de Comando |
| 1 |
Numero de Revisión del software |
Todos los comandos y el texto a reproducir, han de ser enviados al registro de comandos. Hay un total de 32 comandos
validos tal y como se muestran a continuación.
| Comando |
Acción |
| NOP (0x00) |
No hace nada |
| SPKPRE 1 a 30, o (0x01 a 0x1E) |
Habla la frase predefinida |
| SPKBUF 64 o 0x40 |
Reproduce el texto del buffer |
El comando es seguido por el texto que se desea sintetizar. Se puede mandar cualquier texto de cualquier tamaño
que no supere lo 85 bytes. Se pueden enviar varias secuencias de comandos NOP al bufer antes de enviar el comando
SPKBUF. El bufer es vaciado después de enviar un comando SPKPRE o SPKBUF. El formato para el texto es el mismo
que el empleado en protocolo serie rs232, es decir 3 bytes de control seguidos del texto y al final el carácter
0 (0X00). Una vez enviado el texto, este puede ser reproducido enviando el comando SPKBUF. Hay que tener en cuenta
que el tamaño total del bufer del PIC es de 85 bytes, por lo que si descontamos los 4 bytes de control quedan
un total de 81 caracteres para el texto. La secuencia para reproducir la palabra 'Hello' desde el bus I2C es la siguiente:
| Comando |
Acción |
| Bit de inicio |
Inicia protocolo I2C |
| 0xC4 |
Dirección I2C del SP03 |
| 0x00 |
Registro de comandos del SP03 |
| 0x00 |
Comando NOP |
| 0x00 |
Volumen (Max.) |
| 0x05 |
Velocidad |
| 0x03 |
Tono |
| 'H' (0x48) |
Texto |
| 'e' (0x65) |
Texto |
| 'l' (0x6C) |
Texto |
| 'l' (0x6C) |
Texto |
| 'o' (0x6F) |
Texto |
| 0x00 |
NULO |
| Stop Bit |
Fin de la Secuencia |
Fíjese que no hay comando 'decir este texto' como en el caso del interfaz rs232. Si desea decir una frase
suelta, debe enviar el comando NOP seguido por el texto y después en otra transacción I2C el comando
SPKBUF en si mismo.
Para comprobar cuando el módulo SP03 ha terminado de hablar, puede leer el registro de comando. Mientras esta reproduciendo,
el valor del registro es el del comando que inicio al síntesis (comandos del 1 al 30) o bien el valor 64 (0X40).
El valor es puesto a cero cuando el módulo termina de hablar y esta preparado para la próxima frase.
Puede encontrar algunos ejemplos de como usar el bus I2C con algunos procesadores aquí.
Comunicación por puerto paralelo
El conector PL2 se utiliza para reproducir una de las 30 frases predefinidas exclusivamente, no pudiendo en este
caso enviar texto para su síntesis. Para decir cualquiera de las 30 frases, basta con aplicar el valor binario
del numero de frase a las entradas SEL4 - SEL0. Los números 0 y 31 no se usan y no reproducen nada. Las entradas
cuentan con resistencias de polarización, por lo que pueden dejarse desconectadas si no se utilizan. Cuando
la CPU reconoce la entrada en los pines SEL4 - SEL0, pone el bit de la salida STATUS a 1 para indicar que esta ocupado
y reproduce la frase. Una vez que el bit de estado esta a 1 la entrada de los pines SEL4 a SEL0 pueden ser quitadas
y volver al valor 0 o 31 antes de que el módulo termine de hablar, porque si no la frase será repetida. La
salida del pin STATUS se pone en estado lógico bajo (0) cuando el módulo SP03 ha terminado de hablar.
Encendido
Al encender el módulo, este reproduce de forma automática la frase numero 1 por lo que si no desea que esto
ocurra, no almacene nada como frase numero 1.
Programa de Configuración SP03.EXE
El programa de configuración se puede descargar aquí y es valido
únicamente para PC.

La primera vez que ejecuta el programa, tiene que seleccionar el puerto COM1 o COM2 que quiere utilizar. Este será
recordado la próxima vez que ejecute el programa. Con la ayuda del programa, se pueden almacenar 30 frases
repartidas en 6 paginas de 5 frases cada una. Presionando sobre los botones PageUP y PageDW se cambia de pagina. Debajo
de las 5 frases hay una línea en la que se muestra el estado y tres botones deslizantes que sirven para cambiar
el volumen, el tono y la velocidad. Si bien el volumen y la velocidad funcionan de una forma uniforme, el tono tiene
un funcionamiento algo mas extraño, pero es debido al funcionamiento interno del chip WTS701. Una vez que se
ha escrito y probados todas las frases, pueden ser almacenadas en la memoria flash del PIC16F872 con solo pulsar el
botón Program.
El funcionamiento del programa es bastante sencillo. Basta con escribir algo en una de las líneas de texto
y continuación pulsar el botón Test que se encuentra al lado. Las palabras escritas podrán ser
reproducidas por el módulo inmediatamente. Al pulsar el botón de 'Test' se almacena y se utilizan los valores
de volumen, velocidad y tono de los respectivos controles al reproducir la frase. Pulsando el botón 'Set' se
reproduce la frase, usando los valores de velocidad, etc que se guardaron la ultima vez que se pulso el botón
'Test'. De esta forma se pueden tener diferentes valores de velocidad, tono y volumen para cada una de las 30 frases.
Una vez terminado de preparar todas las frases solamente hay que pulsar el botón 'Program' para que estas sean
comprimidas y enviadas a la memoria del procesador PIC. Cuando la programación termine se mostrara el siguiente
mensaje:

Fíjese que una vez programadas las frases, los botones de 'Test' ya no están activos, quedando solamente
los de 'Set' para reproducir directamente las frases sin mas cambios. Para activar de nuevo los botones de Test, basta
con hacer clic sobre cualquiera de las zonas de edición de texto.
Dimensiones y orificio de instalación

Ejemplos
Se ofrece a continuación un ejemplo de como conectar el módulo sintetizador de voz SP03 a un Basic Stamp 2.

La línea SDA se conecta al pin P8 (patita 13) y la línea SCL al pin P9 (patita 14) del Basic Stamp 2P.
Estas son las líneas usadas por el BS2P para los comandos I2CIN y I2COUT. El regulador de tensión interno
del BS2P no es valido para alimentar el módulo SP03, por lo que es recomendable utilizar un regulador de 5V externo.
Este ejemplo esta basado en la utilización de un Basic stamp 2P con una revisión C o posterior de firmware.
El esquema del montaje es el siguiente:

En el esquema se emplean 2 resistencias de 4k7 para polarización de las líneas SCL y SDA, tal y como
recomienda Parallax.
Software
Se muestra a continuación el software usado para controlar el sintetizador de voz. Una sola línea es
todo lo que hace falta para hacer que el módulo reproduzca alguna de las 30 frases pregrabadas. EL código del
programa puede ser descargado aquí.
'{$STAMP BS2p} '***********************************************************
'**
**
'** Rutinas I2C para el Basic Stamp BS2p
**
'** Controlando el Sintetizador de Voz SP03r
**
'**
**
'** Copyright 2002 - Devantech Ltd
**
'** Prohibido el uso Comercial de este programa **
'** Solo para uso privado y educacional
**
'**
**
'** Escrito por by Gerald Coe - Agosto 2002
**
'**
**
'***********************************************************
SCL con 9 ' I2C clock
SDA con 8 ' I2C data
NOP con 0 ' Comando de No Operacion
status varbyte
Main:
' A continuación se muestra lo sencillo que es usar el BS2p con el módulo sintetizador,
' Una sola línea de programa es suficiente para reproducir una de las 30
' frases pregrabadas. El ejemplo reproduce la frase numero 21.
gosub wait4shutup ' Espera a que termine de reproducir la ultima frase
i2cout SDA, $c4, 0, [21] ' Reproduce la frase numero 21 y limpia el bufer interno
' También puede enviar su propio texto para que el módulo lo reproduzca.
' El primer byte de datos es el comando. En este caso NOP es suficiente.
' cargar el bufer. El segundo valor es el volumen que trabaja invertido - 0 es
' el máximo y 7 el mínimo. El tercer valor es el tono (0-7) que lo mejor es probar y
' ver cual es el mejor. El cuarto byte es la velocidad (0-3) siendo 3 el mas rápido.
' Luego se pone el texto a hablar entre comillas y finalmente
' el 0 (NULL).
gosub wait4shutup ' espera a que termine la ultima frase
i2cout SDA, $c4, 0, [NOP, 0,5,3, "Hello Gerry, How are u today", 0]
' Lo anterior carga el bufer interno. Ahora hay que mandar el comando
' reproduce la frase que se acaba de cargar.
i2cout SDA, $c4, 0, [$40] 'Habla y limpia el bufer
' También puede cargar el bufer con múltiples pequeños fragmentos.
' Hasta un total de 85 bytes pueden ser almacenados en el bufer interno del SP03.
' 81 caracteres mas el volumen, el tono la velocidad y el carácter NULL.
gosub wait4shutup ' espera a que termine la ultima frase
i2cout SDA, $c4, 0, [NOP, 0,5,3, "This is a test on how"]
i2cout SDA, $c4, 0, [NOP, "to send a message as"]
i2cout SDA, $c4, 0, [NOP, "a number of smaller pieces", 0]
i2cout SDA, $c4, 0, [$40] ' Speak the phrase.
' Y esto es todo.
' Lo que sigue completa el programa para que se pueda ejecutar.
forever: goto forever
wait4shutup:
i2cin SDA, $c4, 0, [status]
if status>0 then wait4shutup
return
|

Haga clic en el botón COMPRAR para añadir este producto a su carrito de la compra.
65,73-Euros.
IVA no incluido
76,25-Euros.
IVA incluido
|
SINTETIZADOR DE VOZ I2C PARA ROBOT SP03
Vea mas productos de esta categoría en:
Circuitos controladores y electrónica para robots.
Ir a la Página Principal de www.SuperRobotica.com
Actualizada el 07/05/2008 © 2002 - 2008 INTPLUS ®. Todos los derechos reservados
|