tav - sintetizador de voz multiplataforma · el proyecto tav (texto a voz) se originó como una...

4
Fotos InformaciónInstalaciónProgramaciónConexionesAplicaciones Enlaces Contacto Foro TAV - Sintetizador de voz multiplataforma Introducción: El proyecto TAV (Texto a voz) se originó como una conversión del proyecto PICSYNTH a la Commodore 64, primero en versiones especiales usando sonido "analógico", es decir combinando ondas triangulares y de ruido generadas por el chip SID, y más tarde emitiendo sonido digital de 4 bits. Si bien en principio era sólo un experimento, un mes y medio más tarde tenía un programa que sonaba mucho mejor de lo que esperaba al iniciar la conversión. Una vez terminada esta versión, se me ocurrió intentar una conversión a MSX, plataforma para la cual si bien había hecho algunos programas en BASIC en los 80s, nunca había programado en ensamblador, es más, nunca había hecho nada para Z80 más allá de un par de ejercicios en papel en la secundaria. La arquitectura de la MSX resultó ser bastante compleja, esto sumado al hecho de estar aprendiendo Z80 y de las complicaciones de encontrar algún ensamblador moderno con el cual desarrollar el programa, hicieron que esta versión se retrasara. Mientras continuaba mi investigación sobre el Z80 y la MSX, empecé a investigar la Spectrum 48K, para la cual también había hecho programas en BASIC en los 80s. La Spectrum resultó ser una plataforma mucho más accesible, con un sistema operativo bien diseñado, y más importante aún, con excelente documentación y soporte en emuladores, lo que permitió convertir rapidamente el programa a Z80. El problema lo presentaba el audio, consistente en una salida que solamente puede tener dos valores, activada o desactivada, esto es, sonido digital de 1 bit. Dado que la versión para PIC emite el sonido usando modulación de ancho de pulso, decidí utilizar este método para simular 16 niveles de voltaje (sonido de 4 bits), lo cual resultó bastante bien. Teniendo escrito ya el programa en código Z80 y adaptado para el beeper, decidí intentar la emisión de sonido digital utilizando el chip AY-3-8192 de la Spectrum 128K, también con buenos resultados. Pude entonces hacer versiones del programa para Timex Sinclair 2068 (utilizando el chip de sonido), MSX1 (también usando el PSG), e incluso ZX81, emitiendo el sonido por la salida MIC y señal de video, programa basado en la version Spectrum 48K (para beeper). La última variación desarrollada es para ZX81 con módulo Zon X, el cual contiene un PSG AY-3-8912, por lo que se hizo una mezcla entre la versión ZX81 y la versión para Spectrum 128K. Historia del desarrollo pastbytes - Texto A Voz http://www.pastbytes.com/apps/tav/ 1 de 4 22/02/2016 20:39

Upload: ngodiep

Post on 19-Sep-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TAV - Sintetizador de voz multiplataforma · El proyecto TAV (Texto a voz) se originó como una conversión del proyecto PICSYNTH a la Commodore 64, primero en versiones especiales

Fotos InformaciónInstalaciónProgramaciónConexionesAplicaciones Enlaces Contacto Foro

TAV - Sintetizador de voz multiplataforma

Introducción:

El proyecto TAV (Texto a voz) se originó como una conversión del proyectoPICSYNTH a la Commodore 64, primero en versiones especiales usando sonido"analógico", es decir combinando ondas triangulares y de ruido generadas por elchip SID, y más tarde emitiendo sonido digital de 4 bits. Si bien en principio erasólo un experimento, un mes y medio más tarde tenía un programa que sonabamucho mejor de lo que esperaba al iniciar la conversión. Una vez terminada estaversión, se me ocurrió intentar una conversión a MSX, plataforma para la cual sibien había hecho algunos programas en BASIC en los 80s, nunca habíaprogramado en ensamblador, es más, nunca había hecho nada para Z80 más alláde un par de ejercicios en papel en la secundaria. La arquitectura de la MSX resultóser bastante compleja, esto sumado al hecho de estar aprendiendo Z80 y de lascomplicaciones de encontrar algún ensamblador moderno con el cual desarrollar elprograma, hicieron que esta versión se retrasara. Mientras continuaba miinvestigación sobre el Z80 y la MSX, empecé a investigar la Spectrum 48K, para lacual también había hecho programas en BASIC en los 80s. La Spectrum resultó seruna plataforma mucho más accesible, con un sistema operativo bien diseñado, ymás importante aún, con excelente documentación y soporte en emuladores, lo quepermitió convertir rapidamente el programa a Z80. El problema lo presentaba elaudio, consistente en una salida que solamente puede tener dos valores, activadao desactivada, esto es, sonido digital de 1 bit. Dado que la versión para PIC emiteel sonido usando modulación de ancho de pulso, decidí utilizar este método parasimular 16 niveles de voltaje (sonido de 4 bits), lo cual resultó bastante bien.Teniendo escrito ya el programa en código Z80 y adaptado para el beeper, decidíintentar la emisión de sonido digital utilizando el chip AY-3-8192 de la Spectrum128K, también con buenos resultados. Pude entonces hacer versiones delprograma para Timex Sinclair 2068 (utilizando el chip de sonido), MSX1 (tambiénusando el PSG), e incluso ZX81, emitiendo el sonido por la salida MIC y señal devideo, programa basado en la version Spectrum 48K (para beeper). La últimavariación desarrollada es para ZX81 con módulo Zon X, el cual contiene un PSGAY-3-8912, por lo que se hizo una mezcla entre la versión ZX81 y la versión paraSpectrum 128K.

Historia del desarrollo

pastbytes - Texto A Voz http://www.pastbytes.com/apps/tav/

1 de 4 22/02/2016 20:39

Page 2: TAV - Sintetizador de voz multiplataforma · El proyecto TAV (Texto a voz) se originó como una conversión del proyecto PICSYNTH a la Commodore 64, primero en versiones especiales

Videos de las distintas pruebas y versionesDescargas (programas y manuales)

Estado del proyecto (27-Dic-2011):

Commodore 64TAV64 versión 1.0: Emite el sonido usando el SID6581/8580. Es la única versiónestable.

Sinclair ZX81TAV81 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 deexpansión a 16K ni interfaz Zon X.

Sinclair Spectrum 48KTAVZX beta 4: Emite el sonido usando PWM por el beeper y salida MICHay que reubicar el programa para que permita usar UDG.

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

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

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

Modo de uso del programa:

El sintetizador está diseñado para usarse desde el BASIC, en las versiones paracomputadoras Sinclair, se debe cargar el texto a hablar en la variable Z$ y luegollamar 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 laorden SYS, mientras que en la versión MSX se utiliza la misma orden USR paraenviar el texto a hablar en la propia llamada.El texto que se envía al sintetizador debe tener un formato determinado, estandorepresentado cada sonido por una combinación de letras y símbolos, a la cualllamaremos comando. A continuación tenemos una tabla de los comandospermitidos para los fonemas. En la columna COMANDO se ve el texto que debeenviarse para emitir el fonema correspondiente.

pastbytes - Texto A Voz http://www.pastbytes.com/apps/tav/

2 de 4 22/02/2016 20:39

Page 3: TAV - Sintetizador de voz multiplataforma · El proyecto TAV (Texto a voz) se originó como una conversión del proyecto PICSYNTH a la Commodore 64, primero en versiones especiales

COMANDO FONEMA DESCRIPCIONA aE eI iO oU uA+ á Vocal acentuadaE+ é Vocal acentuadaI+ í Vocal acentuadaO+ ó Vocal acentuadaU+ ú Vocal acentuadaA- a. Ultima sílaba de la frase

E- e. Ultima sílaba de la frase

I- i. Ultima sílaba de la fraseO- o. Ultima sílaba de la fraseU- u. Ultima sílaba de la fraseB bCH chD d

F f

G g/gu lueGo / áGUila / Gato / GUitarra

J j Juego / GenteK kL lM mN nP pR rr alaRRma / peRRo / RRoca / RRaízR2 r caRa / aRenaS sT tSH sh LLamada / faLLa / aYer' (apóstrofe) Pausa Espacio auxiliar (dentro de una palabra): 32 milisegundos (espacio) Pausa Espacio normal entre palabras: 50 milisegundos

pastbytes - Texto A Voz http://www.pastbytes.com/apps/tav/

3 de 4 22/02/2016 20:39

Page 4: TAV - Sintetizador de voz multiplataforma · El proyecto TAV (Texto a voz) se originó como una conversión del proyecto PICSYNTH a la Commodore 64, primero en versiones especiales

, (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 porlos dos puntos (:), ya que no existe apóstrofe en el conjunto de caracteres de lamáquina.

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

COMANDO DESCRIPCION/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 mismafrase, el tono se puede cambiar con los siguientes comandos:

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

Actualizadoel

27-Dic-2011

Accesos desde25-Ago-2006: 339

© 2011 pastbytes.com - Prohibida su reproducción total o parcialsin autorización del autor

Las marcas, productos y logos que aparecen en este sitiopertenecen a sus respectivos propietarios

pastbytes - Texto A Voz http://www.pastbytes.com/apps/tav/

4 de 4 22/02/2016 20:39