Autor Tema: Sintetizador de voz en español por RS232  (Leído 36065 veces)

javier_ale

  • PIC10F
  • *
  • Mensajes: 86
Re: Sintetizador de voz en español por RS232
« Respuesta #15 en: Marzo 17, 2013, 01:00:40 am »
:shocked:

Joshua, ¿Eres tu?

Por favor hace que diga esto.

Saludos Profesor Falken
Extraño juego; el único movimiento para ganar es no jugar.


Si tenes algun video o archivo de sonido con la frase de la pelicula puedo intentar aproximarlo, yo busque varias veces pero solo encontrre en ingles o en la version española, que no parece muy robotica. De todas maneras hace años que no la veo en la version que dieron en Argentina asi que ni me acuerdo como era, pero no me parecio igual.
En ingles.


El primer video me hizo recordar a robby robot o B9 de perdidos en el espacio.

Peligro Will Robinson, peligro !!!!

saludos

Edito: Ariel, a vos que te gusta la retro computacion.... ¿no te animas a la retro robotica?  ;)  ;D  :P  :laugh:  :rolleyes:
« Última modificación: Marzo 17, 2013, 01:07:01 am por javier_ale »
Usuario Baneado por Comportamiento indebido en el Foro

pastbytes

  • PIC12F
  • **
  • Mensajes: 170
Re: Sintetizador de voz en español por RS232
« Respuesta #16 en: Marzo 17, 2013, 09:05:15 am »
El sintetizador no se lleva bien con el ingles, eso va a quedar para el futuro, el año pasado empece a sintetizar los alofonos del SP0256-AL2 pero despues lo deje para mas adelante, era el chip mas comun en los 80s pero dicen que la voz no es muy inteligible, asi que creo que lo que voy a hacer es regenerar cada alofono con voz real, lo mas parecida posible, para despues sintetizarla. Pero eso quien sabe cuando va a ser, en este chip no entraria porque son casi el triple de sonidos y por lo tanto de memoria, salvo que aumente el grado de sintesis (o de compresion si se quiere ver asi), lo que reduciria la calidad. Mi ingles hablado es desastroso asi que la unica manera de hacer un sintetizador en ingles es conservando la maxima calidad posible, ya que no tengo oido para distinguir que tanto puedo reducirla para que se siga entendiendo. Pero en el futuro esta planeado un chip bilingüe, ya que normalmente necesitamos tambien algunas palabras en ingles.
Busque los videos de la version española de juegos de guerra, y el de la version original en ingles, probe una voz aproximada a las dos, y me tome algunas libertades en los tiempos de la frase, porque en la version española lo dice todo seguido y no queda del todo bien, en la version en ingles usa mejor los espacios, asi que quedo un promedio de las dos. Vi que ademas el audio de la pelicula tiene eco agregado, asi que puse un mp3 capturado desde el PIC y otro que ademas tiene aplicada reverberacion con el programa GoldWave.

pastbytes

  • PIC12F
  • **
  • Mensajes: 170
Re: Sintetizador de voz en español por RS232
« Respuesta #17 en: Marzo 17, 2013, 09:12:34 am »
Veo que no se puede editar el adjunto o borrar el mensaje, va de nuevo porque me di cuenta que no le deje un silencio extra al sonido antes de aplicarle eco, por lo cual terminaba abruptamente al final, pense que el efecto lo agregaba automaticamente.
En la version española dice falken, pero yo recuerdo que decia folken en la version que vi, ninguna de las dos es exacta con la original pero le deje folken que es mas parecida.
Este es el texto que le envie al PIC para lograr esa voz:

(v34n24r07)salu+do-s profeso+rfo+lke-n..ekstra+nio-jue+go.e-lu+niko-mobimie+nto-pa+r2a-gana+r es no-  juga+r.
« Última modificación: Marzo 17, 2013, 09:18:53 am por pastbytes »

pastbytes

  • PIC12F
  • **
  • Mensajes: 170
Re: Sintetizador de voz en español por RS232
« Respuesta #18 en: Marzo 17, 2013, 10:34:21 am »
¡Qué buen proyecto y que buen trabajo que has realizado! Me dejó así:  :shocked:

Sería bueno que se lo pases a Elektor, seguro que lo incluye en su revista.

No tengo planes para distribuir el codigo o el archivo .hex de esta version, ya que es un proyecto que va a tener uso comercial en el futuro, no precisamente como sintetizador de voz tal como esta ahora, sino para integrarle voz a otros proyectos.
Mientras tanto pensaba vender los chips grabados a algo de 10 dolares, eso no paga el tiempo que le dedique, pero sirve para seguir investigando. Aparte de eso esperaba tener esta version lista para hacer una version reducida y con algunas funciones basicas de sonido, que seria gratuita, aunque solo el .hex, no el codigo fuente. Esa version seria compatible con los comandos de esta, y podria reemplazarse por la version completa, lo iba a hacer de esa manera porque la meta es hacer un chip de voz y sonido que pudiera definirse como estandar en un proyecto que tengo de armar una computadora con 6502 o Z80. Lo mas probable es que se termine usando una version especial que ademas de sonido y voz, agregue timers, puertos RS232 y paralelo, y se conecte directo al bus del procesador con la funcion de PSP del 16F877A u otro similar. Esa por supuesto estaria disponible tambien para que cada uno la grabe, porque la idea es que la computadora use componentes disponibles en la actualidad (pensaba usar un 65c02 de WDC que se siguen fabricando).

HJ

  • Moderador
  • dsPIC
  • ******
  • Mensajes: 5706
Re: Sintetizador de voz en español por RS232
« Respuesta #19 en: Marzo 17, 2013, 11:47:35 am »
Hola pastbytes, felicitaciones nuevamente.

Si la idea es un uso comercial, te recomiendo que no distribuyas un HEX aunque sea reducido, ya que alguien con un poco (o mucho) de conocimiento de ASM te puede "robar" el algoritmo utilizado.
Lo de la venta de los micros ya grabados lo veo mejor en ese sentido.

Saludos
HJ
"si te lo dicen se te olvida, si lo lees lo aprendes; pero si lo haces realmente lo entiendes"
"Cuando llegue la inspiración, que me encuentre trabajando" [Pablo Picasso]

pastbytes

  • PIC12F
  • **
  • Mensajes: 170
Re: Sintetizador de voz en español por RS232
« Respuesta #20 en: Marzo 17, 2013, 12:01:17 pm »
Hola pastbytes, felicitaciones nuevamente.

Si la idea es un uso comercial, te recomiendo que no distribuyas un HEX aunque sea reducido, ya que alguien con un poco (o mucho) de conocimiento de ASM te puede "robar" el algoritmo utilizado.
Lo de la venta de los micros ya grabados lo veo mejor en ese sentido.

Saludos
HJ

Yo se que nada es imposible con el tiempo suficiente, pero la verdad es que hay que estar demente para entender algo del hex de este programa, la fragmentacion que tiene es una locura, por la gran cantidad de tablas de saltos, muchas rutinas estan repartidas por distintas zonas de la memoria porque era la unica manera de lograr espacio donde no habia.
Igualmente el programa que pensaba distribuir ni se parece a este, seria una reimplementacion en PIC del algoritmo que use para este sintetizador por soft que cualquiera puede descargar y probar: http://www.pastbytes.com/apps/tav
Por supuesto que ese emite sonido de 4 bits y corta todos los caminos posibles para poder andar en una Commodore 64 de 1MHz con audio de 7,8KHz y en maquinas con Z80 con audio de alrededor de 9,5KHz, pero se puede reimplementar con sonido de 8 bits. Los sintetizadores TAV usan hasta el propio codigo Z80 o 6502 como generador de ruido, para ahorrar espacio, en C64 termino ocupando 4K, incluyendo la interfaz para leer del teclado e imprimir en pantalla.

Leon Pic

  • Moderador
  • dsPIC
  • ******
  • Mensajes: 5713
  • Cumulonimbus
    • Foro de meteorología
Re: Sintetizador de voz en español por RS232
« Respuesta #21 en: Marzo 17, 2013, 02:59:31 pm »
Hola pastbytes, felicitaciones nuevamente.

Si la idea es un uso comercial, te recomiendo que no distribuyas un HEX aunque sea reducido, ya que alguien con un poco (o mucho) de conocimiento de ASM te puede "robar" el algoritmo utilizado.
Lo de la venta de los micros ya grabados lo veo mejor en ese sentido.

Saludos
HJ

+1 y agregaría de que esté protegido para lectura.

Hay muchas personas capaces, y entender un hex, les llevaría un tiempo x; pero que en definitiva, te lo van a descular.

PD: Me encantó escuchar el Himno Argentino. Yo soy muy nacionalista y me llena de alegría, cuando los argentinos hacemos algo muy importante, y este proyecto que tu has echo, cantando el himno, indica de donde salió.
Me refiero, a que hay muy buenos proyectos que son echos en otros países, y pocos los que son argentinos (sin desmerecer a los proyectos que se hacen en otras partes del mundo).
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Ariel

  • Global Moderator
  • dsPIC
  • ****
  • Mensajes: 10753
    • uControl
Re: Sintetizador de voz en español por RS232
« Respuesta #22 en: Marzo 17, 2013, 06:02:08 pm »
Mientras tanto pensaba vender los chips grabados a algo de 10 dolares, eso no paga el tiempo que le dedique, pero sirve para seguir investigando.

Preparate a grabar docenas por mes....a ese precio, puestos en alguna tienda online de alcance internacionas vas a vender carradas!!!!

Como dicen muchos amigos, no "sueltes" el HEX por que te lo reproducen en un rato ;)

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

pastbytes

  • PIC12F
  • **
  • Mensajes: 170
Re: Sintetizador de voz en español por RS232
« Respuesta #23 en: Marzo 17, 2013, 07:16:09 pm »
PD: Me encantó escuchar el Himno Argentino. Yo soy muy nacionalista y me llena de alegría, cuando los argentinos hacemos algo muy importante, y este proyecto que tu has echo, cantando el himno, indica de donde salió.
Me refiero, a que hay muy buenos proyectos que son echos en otros países, y pocos los que son argentinos (sin desmerecer a los proyectos que se hacen en otras partes del mundo).

Lo del himno fue un poco por paranoia, porque necesitaba algo en español para cantar que fuera de dominio publico, y como con ese criterio tendria que remontarme quien sabe hasta cuando, tal vez 100 años atras, me parecio que era mas adecuado el himno. En varias pruebas el PIC lo canta entero, pero de tanto repetirlo esta vez decidi dejarle un par de lineas nada mas.
Si a alguien le interesan los detalles del proyecto, de este mensaje en adelante estan las pruebas de esta version en particular:
http://www.retrocomputacion.com/e107_plugins/forum/forum_viewtopic.php?59536.20#post_77250
Y en los mensajes anteriores esta todo el desarrollo de las versiones 2 y 3.
La prueba mas completa del himno que habia hecho hasta ahora fue en una demostracion del sintetizador cantante para Commodore 64, en este video se ve:


Le falta la ultima parte pero esta casi entero, ahi ademas va marcando el texto a medida que se canta.



Editado para pegar el video en la ventana.
« Última modificación: Marzo 17, 2013, 07:22:34 pm por Leon Pic »

Leon Pic

  • Moderador
  • dsPIC
  • ******
  • Mensajes: 5713
  • Cumulonimbus
    • Foro de meteorología
Re: Sintetizador de voz en español por RS232
« Respuesta #24 en: Marzo 17, 2013, 07:25:01 pm »
Excelente.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

HJ

  • Moderador
  • dsPIC
  • ******
  • Mensajes: 5706
Re: Sintetizador de voz en español por RS232
« Respuesta #25 en: Marzo 17, 2013, 07:51:54 pm »
"si te lo dicen se te olvida, si lo lees lo aprendes; pero si lo haces realmente lo entiendes"
"Cuando llegue la inspiración, que me encuentre trabajando" [Pablo Picasso]

E_Blue

  • PIC24F
  • *****
  • Mensajes: 2226
  • Electric Blue
Re: Sintetizador de voz en español por RS232
« Respuesta #26 en: Marzo 17, 2013, 10:21:45 pm »
Gracias!  ;)
U2kgZXN0YXMgbGV5ZW5kbyBlc3RvIGVyZXMgdW4gTkVSRCEhIQ ==
Procesando...

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.

pastbytes

  • PIC12F
  • **
  • Mensajes: 170
Re: Sintetizador de voz en español por RS232
« Respuesta #27 en: Marzo 20, 2013, 06:59:57 am »
Estuve viendo que puedo ahorrar suficiente espacio de programa si elimino la recepcion y transmision RS232 por soft, por lo que veo la minima velocidad soportada con el cristal de 20MHz que estoy usando es justamente 1200 bps que es lo que uso. Este programa no usa casi recursos de hard, apenas el TMR2 como reloj de la generacion de sonido por PWM, pero aparte de eso y la interrupcion de PWM, no se usa WDT, ni otros timers ni otras fuentes de interrupcion. Esto viene de hace años para mantener la portabilidad, ya que el programa empezo en un 16F628 (ni siquiera A), y despues lo implemente en un 16F648A pero tambien en un 12F683, por lo que haciendo todo por soft podia elegir cualquier modelo de PIC siempre que la memoria y la velocidad alcanzaran.
Por los calculos que estuve haciendo podria alcanzar poco mas de 86 Kbps, es decir 10 veces la frecuencia de muestreo, por lo que creo que lo voy a dejar en 57600 bps, el codigo se modificaria poco, y en lugar de tener mas estados intermedios, acortaria camino recibiendo bytes en lugar de bits. El cambio este es importante porque si bien para voz los 1200 bps sobran, para hacer efectos de sonido o musica me encontre con que al hacer sonidos muy breves no alcanzan a transmitirse a tiempo los comandos de cambio de nota antes de que termine de reproducir el sonido anterior. Creo que para conectar el PIC a una computadora de 8 bits voy a tener que usar una conexion paralelo, ya que es dificil que esas maquinas puedan manejar mas de 1200 bps.
Tambien empece a armar una version de la placa para un 18F252/2520 a 40MHz, primero tengo que convertir el codigo de PIC16 a PIC18 conservando la misma calidad de audio, y despues pasar a 26KHz, 9 bits de resolucion y dos canales PWM, con eso se logran 4 canales de 8 bits en estereo (2 canales izquierdos y dos derechos). Esto implica bastante trabajo porque hay que volver a renderizar los sonidos (los fuentes estan en 44KHz, 16 bits) y armar las tablas de ondas en el programa.
Otra cosa que estoy investigando es la posibilidad de convertir al PIC en un dispositivo MIDI, por lo que lei pareciera que no hay mucha diferencia en la transmision con respecto al RS232, si el PIC puede manejarlo por hard creo que va a haber una version MIDI.

E_Blue

  • PIC24F
  • *****
  • Mensajes: 2226
  • Electric Blue
Re: Sintetizador de voz en español por RS232
« Respuesta #28 en: Marzo 20, 2013, 11:39:46 am »
Todavía hay muchos procesadores con base x86, ya llegaron a la barrera de frecuencia de clock que les imponen las técnicas actuales de construcción de chips y empezaron a agregar mas núcleos.

Ya hay otros modelos de núcleos que son mucho mas eficientes en poder de proceso y consumo de energía que los actuales, pero no los implementan...supuestamente por temas de portabilidad de código.

Es el problema de la portabilidad, a veces frena el progreso.
U2kgZXN0YXMgbGV5ZW5kbyBlc3RvIGVyZXMgdW4gTkVSRCEhIQ ==
Procesando...

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.

pastbytes

  • PIC12F
  • **
  • Mensajes: 170
Re: Sintetizador de voz en español por RS232
« Respuesta #29 en: Marzo 20, 2013, 02:15:24 pm »
Bueno, la portabilidad es muy importante en ensamblador, cambie varias veces de PIC y se requirieron cambios minimos. Pero no es solamente ese tema, sino que si el programa funciona haciendo todo por soft, tengo margen para optimizar, y no me ato a un dispositivo hasta que decido hacer una version con un PIC particular. Como ya el programa esta practicamente definido, ahora si puedo dividir el proyecto en diferentes implementaciones, la parte de RS232 es un modulo aparte y por eso lo puedo eliminar y usar el puerto por hard, pero en otra implementacion puedo reemplazarlo por codigo para un puerto paralelo, o USB. Si ataba el programa a las interrupciones de la USART por ejemplo, iba a ser mas dificil adaptarlo, en este programa todo se hace sincronizado con la interrupcion de PWM. Podria haber usado C o BASIC y conservaba la portabilidad dejando esos detalles al compilador, pero tuve malas experiencias con eso, requieren demasiado procesador, yo pude emitir DTMF en un 16F628 con el oscilador interno de 4MHz, y vi proyectos hechos en 16F877A a 20MHz que tienen una calidad de DTMF muy mala porque le dejan el trabajo a las instrucciones especiales del lenguaje. Ademas creo que esa emision de sonido frena toda la ejecucion, mientras que en el 628 funciona como tarea de fondo.
Se que hoy no hay grandes diferencias de precio entre distintos PIC, pero por ejemplo ahora necesito empezar a emitir 4 canales, lo que implica que necesito 4 veces mas procesamiento, y un PIC18 solo me da el doble de reloj, 40MHz, lo que implica que lo ideal seria que el programa actual pudiera funcionar bien a 10MHz, de esa manera andarian perfectamente los 4 canales a 40MHz. Si hubiera empezado esto con PIC18 y un lenguaje de alto nivel hoy probablemente estaria pensando en usar un PIC24, dsPIC o quien sabe que, en lugar de un PIC18.