Logo pastbytes
Fotos
Información
Instalación
Programación
Conexiones
Aplicaciones
Enlaces
Contacto
Foro
Fotos
Información
Instalación
Programación
Conexiones
Aplicaciones
Enlaces
Contacto
Foro
APLICACIONES > TAV - Sintetizador de voz multiplataforma

Introducción:

El proyecto TAV (Texto a voz) se originó en el año 2011 como una conversión del proyecto microSint a la Commodore 64, por entonces en la versión HR2, y continuó como un experimento multiplataforma que concluyó con versiones para Sinclair ZX81, Sinclair Spectrum (48K y 128K), Timex Sinclair 2068, MSX1, Commodore 16, Commodore VIC-20 y Commodore 128.
El código del programa es bastante portable, manteniendo una estructura similar tanto en 6502 como en Z80, pero las versiones para Commodore son las más precisas, dado que es mi única experiencia en programación en ensamblador de Z80 y que las máquinas con Z80 no solían disponer del hard de temporización que sí tienen las Commodore.
De la misma manera que el proyecto con PIC, el sintetizador funciona en base a fonemas, generados mediante tablas de ondas almacenadas en el programa, algoritmos, o una combinación de ambos métodos. El sonido emitido resultante es audio digitalizado de 4 bits, con una frecuencia de muestreo que varía según la plataforma y el método de generación, pero que está alrededor de los 8KHz.

Descargas (programas y manuales)

Estado del proyecto (28-Ago-2023):

Commodore 64
TAV64 versión 1.1: Emite el sonido usando el SID6581/8580. Versión estable.

Commodore 128
TAV128 versión 1.1: Emite el sonido usando el SID6581/8580. Versión estable.

Commodore 16 - Plus/4
TAV16 versión 1.1: Emite el sonido usando el TED.
Versión estable.

Commodore VIC-20
TAV20 versión 1.1: Emite el sonido usando el VIC. Versión estable.

Sinclair ZX81

TAV81 beta 5: Emite el sonido usando PWM por el TV (requiere expansión a 16K)
TAV81 Zon X beta 5: Emite el sonido por el PSG AY-3-8912 de la expansión Zon X (requiere expansión a 16K)
Hay que hacer pruebas en la máquina real. Por el momento no dispongo de expansión a 16K ni interfaz Zon X.

Sinclair Spectrum 48K
TAVZX beta 4: Emite el sonido usando PWM por el beeper y salida MIC
Hay que reubicar el programa para que permita usar UDG.

Sinclair Spectrum 128K
TAVZX beta 4: Emite el sonido por el PSG AY-3-8912
Hay que reubicar el programa para que permita usar UDG.

Timex Sinclair 2068
TAV2068 beta 4: Emite el sonido por el PSG AY-3-8912
Esta versión es casi final.

MSX
TAVMSX beta 4: Emite el sonido por el PSG AY-3-8910
Falta hacer más pruebas antes de pasar a la versión 1.0

MSX-DOS
TAVMSX versión 0.5.0:
Emite el sonido por el PSG AY-3-8910
Port para DOS de TAVMSX beta 4.

Modo de uso del programa:

El sintetizador está diseñado para usarse desde el BASIC, en las versiones para computadoras Sinclair, se debe cargar el texto a hablar en la variable Z$ y luego llamar al sintetizador con la orden USR correspondiente a la versión del programa. En la versión para C64, se debe usar la variable ZZ$ y llamar al programa con la orden SYS, mientras que en la versión MSX se utiliza la misma orden USR para enviar el texto a hablar en la propia llamada.
El texto que se envía al sintetizador debe tener un formato determinado, estando representado cada sonido por una combinación de letras y símbolos, a la cual llamaremos comando. A continuación tenemos una tabla de los comandos permitidos para los fonemas. En la columna COMANDO se ve el texto que debe enviarse para emitir el fonema correspondiente.

COMANDO
FONEMA
DESCRIPCIÓN
A a

E
e

I
i

O
o
U
u

A+
á
Vocal acentuada
E+
é
Vocal acentuada
I+
í
Vocal acentuada
O+
ó
Vocal acentuada
U+
ú
Vocal acentuada
A- a.
Última sílaba de la frase
E-
e.
Última sílaba de la frase
I-
i.
Última sílaba de la frase
O-
o.
Última sílaba de la frase
U-
u.
Última sílaba de la frase
B
b

CH
ch

D
d

F
f

G
g/gu
jueGo / aGuila / Gato / GUitarra
J
j
Juego / Gente
K
k

L
l

M
m

N
n

P
p

R
rr
alaRRma / peRRo / RRoca / RRaíz
R2
r
caRa / aRena
S
s

T
t

SH
sh
LLamada / faLLa / aYer
' (apóstrofe)
Pausa Espacio auxiliar (dentro de una palabra): 32 milisegundos
  (espacio)
Pausa Espacio normal entre palabras: 50 milisegundos
, (coma)
Pausa Espacio de 256 milisegundos (aprox. 1/4 de segundo)
;
Pausa Espacio de 400 milisegundos (aprox. 1/2 segundo)
. (punto)
Pausa
Espacio de 1 segundo

Nota: En la versión del programa para ZX81 se cambió el comando apóstrofe por los dos puntos (:), ya que no existe apóstrofe en el conjunto de caracteres de la máquina.

Existen comandos extendidos que emiten sonidos que pueden usarse para indicaciones y alarmas en los programas:

COMANDO
DESCRIPCIÓN
/0
Reproduce un tono (beep 1) con volumen fijo
/1 Reproduce un tono (beep 2) con volumen descendente
/2 Reproduce un sonido de alerta o error

El sintetizador dispone de dos tonos de voz que se pueden combinar en una misma frase, el tono se puede cambiar con los siguientes comandos:

COMANDO DESCRIPCIÓN
< Cambia la voz al tono menor para el texto que sigue
> Cambia la voz al tono mayor (por defecto) para el texto que sigue


 
© 2006-2023 Jorge Castillo - Todos los derechos reservados
Las marcas, productos y logos que aparecen en este sitio pertenecen a sus respectivos propietarios