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