•  

  • *** Prueba de nuevo motor de sintesis HR3 (mp3 adjunto) ***

    Bueno, la version que estaba en desarrollo, la HR2, es decir el segundo motor de sintesis, quedo congelada y lista para distribucion. No estoy seguro si la voy a seguir desarrollando o queda obsoleta, porque acabo de empezar con modificaciones mas o menos drasticas, por lo cual pasa a ser el motor HR3, la futura version que permitira cambiar de tono y velocidad.
    Cuando empece el motor HR2, baje la frecuencia de muestreo del HR1, que era de 7812,5 Hz, a un 10% menos, que daba algo asi de 7100 Hz, y tambien le agregue mas muestras a los sonidos, lo que en total hacia que el tono fuera alrededor de un 20% mas bajo.
    Esto se hizo asi porque al empezar esa segunda version el sonido no era tan bueno, y hacer que el tono y la velocidad fueran mas bajos aumentaba la inteligibilidad. Sin embargo, desde ese entonces hasta ahora la calidad del sonido fue aumentando tanto, que actualmente el efecto de esos cambios provoca todo lo contrario, ya que hay sonidos con muchos agudos combinados con sonidos muy graves, lo que al hablar hace que se entienda un poco menos.
    Para que se vea la diferencia, hice una captura de como esta actualmente el programa, con el mismo texto que habia probado antes. No solo esta elevada la frecuencia de muestreo a la original de 7812,5 Hz, sino que ademas se redujo la cantidad de muestras del sonido en cerca de un 10%, tal como la version HR1, y encima de eso, no se ajustaron las duraciones, por lo cual habla mas rapido. Es decir que se redujo la calidad del sonido (al reducir muestras) y se aumento la velocidad del habla, lo cual deberia hacer que sea mas dificil de entender, y sin embargo esto no afecta demasiado, lo que indica que la calidad del sintetizador es lo suficientemente buena.
    Igualmente queda mucho por arreglar, pero es un buen comienzo. El mp3 adjunto esta muy comprimido, a 32Khz y 40Kbps, para que quede por debajo de los 512K que es el limite para adjuntar archivos, asi que tiene perdida de calidad, aunque la inteligibilidad es la misma que lo que realmente sale del PIC.


    ]prueba_hr3_1.zip[/file]
     

  • Van un par de pruebas mas, me volvi loco con una modificacion temporal que hice, el programa hace abuso de las tablas de saltos, lo que ocasiona que apenas alguna tabla cruce un bloque de 256 palabras empiece a fallar de formas drasticas. Me paso varias veces que al agregar codigo se cuelgue en el arranque, ande erraticamente o deje de andar la recepcion RS232.
    El motor de sintesis ya ajusta automaticamente el tono de voz de acuerdo a los 25 semitonos posibles, aunque como no hay parser para ese comando, hay que modificar un valor a mano y volver a grabar el PIC. Todavia quedan muchas cosas para hacer, ademas del parser, hay sonidos que pueden mejorarse, y todo lo que esta compuesto de ruido es demasiado ruidoso para la calidad de sonido que va teniendo el programa, voy a tener que afinar un poco esos algoritmos de ruido que ya tienen mas de 4 o 5 años.
    Probe con tonos de voz bajos, el mas alto es el de la prueba anterior, asi que de ahi no puede pasar. En la primera prueba use el mismo texto, que al ser largo y complejo es bueno para la prueba de inteligibilidad, todavia no se entiende todo, pero creo que cada vez va mejor. La segunda prueba dice:

    SALU+DOS,KOMUNIDA+D DE RETROKOMPUTASIO+N,ESTA+N ESKUCHANDO LA BERSIO+N A+LFA U+NO DEL SINTETISADO+R DE BOS EN PIK DIESISE+IS E+FE SE+IS KUARE+NTAIO+CHO-A+ /0

    Es decir:

    "Saludos, comunidad de retrocomputacion. Estan escuchando la version alfa uno del sintetizador de voz en PIC16F648A. (beep)"
    No me acuerdo bien las notas en que esta cada texto, creo que el primero esta en C2 (Do de la octava 2), y el segundo en alguna nota de la octava 1.
    Me olvidaba, le aplique con el GoldWave un filtro pasabajos hasta 4KHz al wav capturado, para que no pierda tanto al comprimir a mp3, el sonido original tiene mas agudos, pero como es un poco "pixelado", al comprimir a mp3 no queda del todo bien, ocurre algo parecido a cuando se quiere comprimir un grafico monocromo a jpg.


    ]pruebahr3_3cc2.zip[/file]
    ]pruebahr3_3d.zip[/file]
     

  • *** Prueba de sintetizador HR3 con muestreo de salida a 8680 Hz - mp3 adjunto ***

    No tuve mucho tiempo ultimamente para dedicarle a este proyecto, pero ya esta mas definido, el sintetizador HR2 queda para futura revision, no se si se va a usar para algo, en su lugar va a haber una mezcla del HR2 y TAV, que se va a llamar TAVPIC, y va a tener un algoritmo mas parecido al del TAV64, con los mismos sonidos fuente pero en 8 bits, y un poco mas de calidad. El programa va a seguir corriendo en un PIC16F648A con cristal de 20MHz.
    Aparte de eso va a haber una version reducida que espero entre en un PIC12F683 y use el oscilador interno de 8MHz, lo que hace que si se conecta a otro PIC o computadora con salida TTL solo se necesite el PIC, un capacitor y una resistencia como unicos componentes necesarios para tener voz.
    Y por ultimo queda la version HR3 que tambien funcionara en un PIC16F648A a 20MHz, pero va a permitir cambiar el tono y velocidad de la voz.
    En la actualidad ya se puede cambiar esos parametros pero falta agregar los comandos para poder hacerlo desde el puerto serie, en lo que estuve trabajando en los tiempos que pude es en rehacer varios fonemas que estaban renderizados para la version HR2 (a 7102 Hz de muestreo), ya que eleve nuevamente el muestreo de salida a 8680 Hz, es decir un 22% mas que en la version HR2. Se nota que el sonido ahora es menos escandaloso, mas suave por la mayor calidad de las tablas de ondas y de la salida. Todavia falta revisar las rutinas generadoras de ruido, que fueron pensadas para 7,8KHz y para tablas de menor calidad. Ya que el sonido inicialmente no era tan bueno, cada fonema tenia que notarse mucho, por esto lo de "escandaloso", ahora que el sonido mejoro bastante en los ultimos años, esas rutinas de ruido necesitan rehacerse para ser mas sutiles y naturales.
    Va adjunta una prueba del PIC recitando la letra del himno nacional, el tono de la voz es G#2, es decir sol sostenido de la octava 2.

    ]oidmortales1.zip[/file]
     

  • Hace un par de dias termine la primera version usable del sintetizador HR3, es decir el que puede cambiar tono y velocidad de la voz, ya estaba listo pero solo funcionaba con el secuenciador interno, no tenia modificado el parser de RS232 para aceptar comandos ASCII.
    Todavia queda mejorar algunos sonidos, y corregir un par de chequeos de valores fuera de rango en los parametros, pero escribiendo todo correctamente anda perfecto.
    Queria tener algo para probar para que cante y me encontre con varios problemas, primero no queria usar el himno que uso siempre, pero ya que hubo otras dificultades opte por completarlo, aunque a las apuradas y con seguridad mal hecho.
    Mi "partitura" del himno estaba adaptada para el TAV64, y dado que para que salga correctamente en el PIC tenia que reescribirla desde cero, opte por calcular el resto de la letra para TAV64, como para mantener coherencia. Por esta razon los tiempos son cualquier cosa, ya que los sonidos no duran lo mismo en los dos sintetizadores, pero para probar es demasiado.
    Hice un video con la prueba del PIC, que voy a subir despues.
    Quise probar el programa en la placa para C64, que tiene 6 componentes necesarios incluyendo el PIC, y los leds aparte, para que se vea mas compacta, pero me volvieron loco los programas emuladores de terminal para C64. Necesitaba que soporten el puerto del usuario a 1200bps, que usen flujo de datos por hard (RTS/CTS), y que tengan opcion de enviar un archivo de texto.
    Probe el VIPTerminal XL, anda todo menos enviar archivos, lo mismo pasa en 3 versiones distintas del programa, luego probe el NovaTerm, es increiblemente pesado y elitista, soporta el puerto del usuario medio de lastima, pude configurarlo pero resulta que solo envia archivos por zmodem, no ascii. Luego probe el Bob'sTerm Pro, parecia que era ideal, envia archivos ascii y los recibe el PIC, pero solo soporta XON/XOFF, no usa CTS/RTS, por lo cual se pierden datos en el camino.
    Asi que desisti de probar en la C64, instale el Term en la Amiga 4000, no encontraba el cable serie, cuando encuentro el cable y adaptador, veo que el conector de la maquina tiene los pines hundidos y la ficha no queda firme, ademas de estar en un lugar de dificil acceso para conectarlo.
    Al final tuve que probar todo en la PC porque no queria complicarme mas la vida.
     

  • Aca va de ejemplo el texto que hay que enviar al PIC para que cante el himno, que es lo que le mande en la prueba que filme, marque la letra en negrita, y deje los comandos entre parentesis en minusculas, pero el PIC acepta mayusculas y minusculas para todo. Los comandos de configuracion son los que van entre parentesis, todo lo que esta ahi dentro se procesa con un parser alternativo, y los dos comandos permitidos actualmente son Nos, donde N es el comando nota, y acepta dos caracteres como parametro, un digito indicando la octava, de 1 a 3, y otro indicando el semitono, de 0 a 11, pero en hexa, es decir de 0 a b. El otro comando es R, que indica cantidad de repeticiones, o ciclos, de los fonemas variables, que son afectados por la nota y velocidad, estos fonemas son A, E, I, O, U, L, M y N.


    (n26r24)O(n27r21)ID(r0c)M(n28r16)ORT(n29r4a)A(r0c)L(r34)ES
    (n2ar0e)E(r0c)LGR(n2ar1d)I(n29r16)IT(n28r31)OS(n27r0f)AGR(n26r5f)A(n23r1f)AD(n22r19)O.
    (r0c)L(n23r28)IB(n26r07)ERT(n25r36)AD(r0c)L(r2d)IB(n27r07)ERT(n26r39)AD(r0c)L(n27r32)IB(n28r08)
    ERT(n29r44)AD.
    (n22r0e)O(r27)ID(n23r09)E(r0c)LR(n23r0b)U(r2d)ID(r2a)OD(r0b)ER(r19)O(n26r24)OT(n25r25)ASK
    (n27r0a)AD(r48)E(r0c)N(n26r3a)AS.
    B(r2d)ED(n28r09)E(r0c)NTR(n27r3b)O(r0c)N(r0b)O(r24)A(r0c)L(n29r0d)A(r0c)N(n25r3b)OB(r0c)L(r14)
    EIG
    (n27r04)UA(r0c)LD(n26r3f)AD.
    SH(r17)A(n27r26)AS(n28r24)UTR(n29r42)O(r0c)N(n26r36)OD(r08)IJ(r0c)N(n27r1b)I(n26r24)IS(n25r30)
    I(r0c)M(n22r04)OABR(n24r0b)I(r6d)ER2(n23r1d)O(r0c)N.
    (r0c)L(n26r2b)ASPR(r04)OB(n29r45)I(r0c)NS(n2ar0b)I(r2f)AS(r17)U(r0c)N(n2br54)ID(n25r2b)ASD(r06)
    E(r0c)LS(n26r3f)UD.
    (r36)I(r0c)L(r07)OS(r0c)L(n29r4f)IBR(r2e)ESD(r07)E(r0c)LM(n2ar41)U(r0c)ND(r3e)OR(r09)ESP(n2br49)
    O(r0c)ND(n29r2f)E(r0c)N.
    (n26r2f)A(r0c)LGR(r04)A(r0c)NP(n29r0b)U(r42)EB(r0c)L(r0b)O(r20)ARJ(r04)E(r0c)NT(n2ar4e)I(r0c)N
    (r37)OS(r11)A(r0c)L(n2br58)U(n29r51)UD.
    (r39)A(r0c)LGR(n2ar04)A(r0c)NP(n2br0b)U(r1b)E(n2ar2d)EB(r0c)L(n2ar0b)O(r0c)ARJ(n29r19)E(r0c)NT
    (n2ar20)I(n29r2b)I(r0c)N(n28r1d)OS(n29r26)A(r0c)L(n26r3d)UD.
    (r24)I(n27r26)I(r0c)L(n28r1c)OS(r0c)L(n29r4f)IBR(r2e)ESD(n28r07)E(r0c)LM(n27r1b)U(n26r1a)U(r0c)ND
    (n25r1c)OR(n23r15)ESP(n26r36)O(r0c)ND(n25r36)E(r0c)N.
    (r2d)A(r0c)LGR(n27r04)A(r0c)NP(n26r0b)U(r11)E(n29r2b)EB(r0c)L(n23r07)O(r08)ARJ(n26r15)E(r0c)NT
    (r2c)I(n25r11)I(r0c)N(n24r17)OS(n23r1b)A(r0c)L(n24r78)UD.
    (n26r24)I(n27r26)I(r0c)L(n28r1c)OS(r0c)L(n29r4f)IBR(r2e)ESD(n28r07)E(r0c)LM(n27r1b)U(n26r1a)U(r0c)
    ND(n25r2f)OR(n23r06)ESP(n26r36)O(r0c)ND(n25r36)E(r0c)N.
    (r2d)A(r0c)LGR(n27r04)A(r0c)NP(n26r0b)U(r11)E(n29r2b)EB(r0c)L(r0b)OARJ(n2br1c)E(r0c)NT(r2c)I
    (n2ar17)I(r0c)N(n29r1f)OS(n28r24)A(r0c)L(n29ra0)UD..

    S(n26r0b)E(r0c)AN(r0a)ET(n29r26)ER(r0c)N(n26r21)OS(r0c)L(n24r20)OS(r0c)L(n26r13)AUR2(n29r31)E
    (r0c)L(r2a)ES;K(n26r26)ES(r08)UP(n29r2d)I(r0c)M(n26r21)OSK(n24r1c)O(r0c)NS(n26r27)EG(n29r5b)IR.
    K(r37)ES(n2br13)UP(n2ar51)I(r0c)M(n29r45)OSK(n28r3c)O(r0c)NS(n27r48)EG(n26r82)IR;
    K(n29r46)OR2(n28r17)O(r0c)N(r58)AD(n27r49)OSD(n26r11)EG(r0c)L(r1d)O(n25r2b)OR2(r20)I(r1f)AB
    (n24r0f)IB(r38)A(n26r17)A(n25r16)A(n26r17)A(n27r18)A(n26r17)A(r0c)M(n23r17)OS;
    (n26r15)O(n27r16)OJ(n28r14)UR2(n29r31)E(r0c)M(r0f)OSK(r0c)ONGL(n28r26)OR2(r0b)IA(r0c)M(r11)
    OR2(n29r2c)IR;
    (n30r59)OJ(r19)UR2(r1c)E(n2b)E(r0c)M(n2ar10)OSK(n29r0c)ONGL(n26r22)OR2(n28r0b)IA(r0c)M(r11)
    OR2(n29r2c)IR;
    (n30r59)OJ(r19)UR2(r1c)E(n2b)E(r0c)M(n2ar10)OSK(n29r0c)ONGL(n26r22)OR2(r0a)IA(r0c)M(r0f)OR2
    (n29r5e)IR.
     

  • Finalmente aca esta el video de la prueba que hice desde la PC con un programa terminal.
    Era un poco complicado filmar y tipear asi que tuve que usar tripode a veces y no se ve todo lo que sale en la pantalla, tuve que cambiarle el tipo de letra al programa para que se entendiera algo.
    Al principio pruebo cambiando el tono y la velocidad, y despues envio desde el programa la secuencia que puse arriba para que cante el himno.
    Se tendria que poder controlar eso desde el BASIC de la C64 o Spectrum con Interface 1. e incluso desde cualquier otra maquina que tenga algun pin TTL programable, como la MSX usando un puerto de joystick, y escribiendo una rutina en ensamblador para simular RS232 a 1200bps, 8N1.

     

  • Aca va la segunda prueba, para Andres que lo pedia: trololo !! biglaugh.pngbiglaugh.png
    Hice medio minuto nomas porque me canse de calcular tiempos, pero esta hecho a partir de un archivo midi, asi que las notas y los tiempos se sacaban mucho mas facil.
    Tendria que completarlo y pasar la "partitura" al TAV64 cantante para hacer una demo.



    Me olvidaba, esta es la secuencia de comandos que tiene que recibir el programa por RS232 para cantar eso:

    (n30r2d)aaaaa(n27r08)i(r14)a(n25r08)i(r11)a(n27r08)i(r25)aaaaa(n20r08)i(r0b)a
    (n22r08)i(r0d)a(n24r08)i(r57)a(n27r08)i(r69)a(n24r08)i(r29)a(n22r08)i(r4e)a
    (n24r0c)o(n27r0e)o(n29r10)o(n2br12)o(n30r71)o(r72)o(n27r08)i(r14)a(n25r08)i(r11)
    a(n27r09)i(r20)aaaaa(n20r08)i(r0b)a(n22r08)i(r0c)a(n24r08)i(r57)a(n24r08)i(r57)a
    (n22r08)i(r22)a(n20r08)i(r43)a(n24r05)i(r07)u(n27r05)i(r09)u(n29r05)i(r0b)u
    (n30r05)i(r0e)u(n2br08)i(r1c)u(n2br08)i(r0a)u(n27r06)i(r08)u(n29r08)i(r18)u
    (n29r08)i(r08)u(n24r06)i(r06)u(n27r08)i(r30)u(n20r06)jo(n22r06)jo(n24r07)jo
    (n25r08)jo(n24r45)joo(r06)iu(n27r07)iu(n29r08)iu(n30r08)i(r0b)u(n2br08)i(r1c)u
    (n2br08)i(r0a)u(n27r06)i(r08)u(n29r08)i(r18)u(n29r08)i(r08)u(n24r06)i(r06)u
    (n27r08)i(r30)u(n24r0c)o(n27r0e)o(n29r10)o(n2br12)o(n30r39)oooo

     

  • Homenaje postumo al Sr. Trololo, fallecio el mes pasado.

    Aca va la segunda prueba, para Andres que lo pedia: trololo !! biglaugh.pngbiglaugh.png

    pastbytes
     
  •  

Moderador (s): homecomputer, Selandari, ArielP, pastbytes, Durandal