Bennu Game Development

Foros en Español => Extensiones => Topic started by: l1nk3rn3l on July 25, 2009, 05:10:30 PM

Title: espeak
Post by: l1nk3rn3l on July 25, 2009, 05:10:30 PM
http://espeak.sourceforge.net/

valdria la pena que alguien la hiciera en fenix..

tecnicamente la libreria reproduce textos ("hola")
por medio de la tarjeta de sonido asi , no necesitamos
crear los dialogos para los juegos, y el juego no pesaria tanto..

incluye varios generos en las voces(hombre , mujer)

quien se anima?
Title: Re: espeak
Post by: SplinterGU on July 25, 2009, 05:22:02 PM
estaria bueno que alguien la hiciera para bennu, no para fenix... pero bueno... :)
Title: Re: espeak
Post by: DCelso on July 25, 2009, 06:24:07 PM
:D, creo que quizo decir bennu, no crees :D
Title: Re: espeak
Post by: hArdJoB on October 27, 2009, 10:32:28 PM
Hola!

Antes que nada, decir que estoy (gratamente) sorprendido por como ha seguido p'alante la comunidad. Hacia muchisimo que no sabia nada de fenix ni bennu, el trabajo no me ha dejado tiempo para nada.

Sobre este tema, yo estuve buscando información hace mucho tiempo, y de hecho publiqué un post en el foro de fenix http://forum.divsite.net/viewthread.php?tid=3386&page=1 que hablaba del tema.

El problema de generar voces es que es un proceso que consume muchos recursos y es LENTO, claro está depende de la calidad de dichas voces.

Sería fantastico poder usar APIs como las de loquendo o similares, pero por desgracia éstas son comerciales y no dejan utilizar su codigo fuente.

De todas formas, si al final se llega a algo en este tema, me encantará testearlo ^^

En fin, nada mas, solo un gran saludo a toda la comunidad!
Title: Re: espeak
Post by: Drumpi on October 28, 2009, 01:55:55 AM
Pues lo cierto es que me interesa mucho el tema de generar voces... más que nada porque me enfrento a la tarea de hacer todo lo contrario: detectar voces y pasarlas a palabras ;D
Estoy en la fase de familiarización con el HW, así que aun no tengo prisa.

De todas formas, cuando estuve trabajando con DSPs (y bastante viejos) generábamos ondas sinusoidales en tiempo real. No creo que consuma mucho crear una serie de armónicos y recrear la forma de onda de un fonema, el problema es conocer la base de eso (nº de armónicos para una voz, la variación de la señal para cada fonema...).
Title: Re: espeak
Post by: Jurk on October 28, 2009, 03:53:39 PM
yo creo que seria mucho mas facil grabar los sonidos individualmente, y reproducirlos segun el texto. Ejemplo

Texto: "hola, me llamo Jurk"

h+o = o (sonido)
l+a = la (sonido)
, = (sin sonido)
m+e = me (sonido)
  = (sin sonido)
l+l+a = lla (sonido)
m+o = mo (sonido)
J+u+r+k = Jurk (sonido)

Eso si, habria que grabar todas las combinaciones posibles
Title: Re: espeak
Post by: Drumpi on October 28, 2009, 05:36:47 PM
A eso hay que añadirle la entonación de la frase (traslación en frecuencias) y los puentes entre sílabas (la continuación del final de un sonido debe coincidir con la de la siguiente, y eso es muy complejo).
A menos que consigas unos ficheros de voz que se acoplen fácilmente unos con otros.
Title: Re: espeak
Post by: Jurk on October 28, 2009, 07:27:40 PM
o te pasas la tarde grabando tu voz... :)
Title: Re: espeak
Post by: DCelso on October 28, 2009, 09:08:05 PM
mañana puede que os tenga una sopresita.
Title: Re: espeak
Post by: Jurk on October 28, 2009, 09:15:34 PM
No sabes lo que molaria tener de eso, tiooooo

Lo utilizaria en mi primer juego, que no es nada del otro mundo pero quiero que al menos sea digno..
Title: Re: espeak
Post by: Windgate on October 28, 2009, 09:26:58 PM
En mi proyecto de juego de aviones Sardines Can in Roids (No ha tenido mucha afluencia en el foro) usaba unas voces grabadas con Loquendo para la IA y sí, pesaban muuucho.

Sería muy interesante este proyecto, pero mucho mucho mucho... DCelso habla de una sorpresita... Estoy babeando...
Title: Re: espeak
Post by: DCelso on October 28, 2009, 09:40:16 PM
 ;D
Title: Re: espeak
Post by: hArdJoB on October 28, 2009, 09:55:01 PM
A lo de los fonemas es a lo que me refiero, es lo que mas recursos consume, pero, por poner un punto de partida, me remito a lo que dije en el foro de fenix, MBROLA es un buen punto de partida
Title: Re: espeak
Post by: DCelso on October 28, 2009, 10:24:39 PM
A ver, no quiero engañaros, espeak no es ninguna maravilla todas, y digo todas las opciones, configuraciones y voces suenan muy robóticas, es la típica voz robótica ochenterea.
He escuchado MBrola y la calidad es clavadita, nada mejor podría afirmar y para colmo no es opensource así que no podriamos hacerla multiplataforma.

En general todos los sistemas de sintetización de voz en la actualidad están muy verdes.
A ver, lo mejor que he escucado en español a Jorge de loquendo y a Rosa de at&t labs  (ambos de pago). Pero estos hacen el truco de tener todos los fonemas y sílabas digitalizadas en una base de datos por lo que ocupan considerablemente mucho y aún así la unión silábica no está muy conseguida. De esta forma quizás en un futuro donde tengamos terabytes podramos tener un text to speech donde tengamos palabras y oraciones completamente digitalizadas en una base de datos y aún así habría problemas de conexión de palabras :D.

Asi que como conclusión para juegos lo suyo es grabar tu voz con las frases de tu personaje y distorsonarlas un poco, queda mucho mejor, a donde va a parar.

El tts no sirve más allá de animar a un ordenador o robot, para protagonistas y enemigos el efecto que causará será el de risas y carcajadas :D.
Title: Re: espeak
Post by: Windgate on October 28, 2009, 11:32:06 PM
Yo buscaba una voz robótica, en mi juego de aviones había una IA en la nave que te hablaba y te insultaba sin piedad si lo hacías mal (A veces incluso si lo hacías bien :P), con voz robótica todavía mejor. Me atrae la idea, aunque una frase articulada suene raro siempre abre un nuevo abanico de posibilidades.
Title: Re: espeak
Post by: FreeYourMind on October 29, 2009, 07:04:50 AM
Yo uso el Talk It! Esta muy bien y es grátis.
Title: Re: espeak
Post by: DCelso on October 29, 2009, 10:13:22 AM
Tachan,
http://www.mediafire.com/?m3imwmem1da
Title: Re: espeak
Post by: Windgate on October 29, 2009, 11:03:06 AM
Dioses :o

DCelso, eres la Madre Teresa de Bennu

EDIT:

(http://www.freewebs.com/theppgworld/sos%20groso.png)

Maldita sea requiere DLLs recientes de nuevo, pero veo la simplicidad de uso y es... Casi sexual.

Toma karma y si lo pruebo e insulta medianamente bien te ganas otro mas.
Title: Re: espeak
Post by: DCelso on October 29, 2009, 11:20:50 AM
Gracias.
Title: Re: espeak
Post by: Drumpi on October 29, 2009, 04:49:17 PM
Wind, aprovecha que la última snapshot de bennu viene sin instalador y úsalo con él: sólo debes descomprimir en la misma carpeta, compilar y ejecutar con la linea de comandos, o con un .bat.
Title: Re: espeak
Post by: Windgate on October 29, 2009, 08:51:53 PM
Eso hice Drumpi, de hecho ya tengo la descarga directa de un ejemplo funcional con todas las últimas DLL de Bennu en mi web xD

Cada karma que os doy suele llevar un post asociado, soy monotemático, mi web sólo trata sobre Bennu :P
Title: Re: espeak
Post by: l1nk3rn3l on October 30, 2009, 04:11:45 PM
podrian incluir los fuentes para incluirlo en el proximo bennupack  :o
Title: Re: espeak
Post by: josebita on November 01, 2009, 05:19:49 PM
Sí, por favor, así lo puedo compilar para Linux y subir a mi PPA.
Title: Re: espeak
Post by: Rein (K´)ah Al-Ghul on November 01, 2009, 06:41:40 PM
Quote from: Jurk on October 28, 2009, 03:53:39 PM
yo creo que seria mucho mas facil grabar los sonidos individualmente, y reproducirlos segun el texto. Ejemplo

Texto: "hola, me llamo Jurk"

h+o = o (sonido)
l+a = la (sonido)
, = (sin sonido)
m+e = me (sonido)
  = (sin sonido)
l+l+a = lla (sonido)
m+o = mo (sonido)
J+u+r+k = Jurk (sonido)

Eso si, habria que grabar todas las combinaciones posibles

Texto: "hola, me llamo Jurk"

(O)+(L)+(A)+(silencion corto)+(M)+(E)+(silencion corto)+
(I)+(A)+(M)+(0)
o
(Y)+(A)+(M)+(O)
segun como pronuncies la LL...
....
Se prodria acer grabando los sonidos de las vocales y consonante por separado...
El tema de la entonacion se podria acer de la misma forma lo hacen los soundfonts
de una muestra se puede tener varias entonaciones...

es mas se podria acer todo con soundfonts...
enviando las señales midi al soundfont player segun la vocal y consonante q se requiera pronunciar...
pero supongo q en bennu no es posible usar soundfonts
Title: Re: espeak
Post by: Windgate on November 01, 2009, 08:51:03 PM
Uf, peludo problema veo yo currar manualmente el módulo de "espeak"... La idea está clara, pero conseguir una voz "realista" como la de Loquendo... Lo veo lejos :-\
Title: Re: espeak
Post by: Drumpi on November 02, 2009, 01:56:21 AM
Hombre, si lo pensamos, es posible que sólo necesitemos la entonación de las sílabas en 4 tonos, porque si no, tendríamos que hacer algo similar a lo que dicen dos mensajes atrás (macho, vaya nick te has buscado), pero sin acudir a soundfonts ni el método de la música modular, sino haciendo la traslación de frecuencias vía código, y eso consumiría recursos (vamos, que nos olvidamos casi de las consola portátiles).
Vamos, según la teoría que he ido leyendo (aun lo tengo que confirmar para el tema del proyecto) lo que hay que hacer es tomar la muestra de sonido, aplicarle al FFT (fast fourier transform) para descomponerlo en frecuencias, multiplicar los valores (por dos sube una octava), y de nuevo la FFT (que sería aplicar la transformada inversa) para obtener la nueva señal a distinto nivel.

Pero lo de tenerlas ya pregrabadas es lo mejor, en la frase que ponéis de ejemplo sólo se necesitan dos "notas": -_ _ -- _
En una pregunta creo que se pueden tener cuatro notas, o quizás cinco, cuestión de analizar.

PD: respecto al Talk-it, mientras pongas la voz en ingles no hay problemas (aunque suena bastante entrecortado), pero en el momento en que lo pones en español ¡la voz femenina es la del tio! :S
Title: Re: espeak
Post by: Rein (K´)ah Al-Ghul on November 10, 2009, 08:10:11 PM
Lo de los soundfonts lo decia para simplificar el problema de generar el sonido...
aunq para darle expresion al preguntar o sorprenderse es otra cosa...

la verdad que este tema es interesante n.n

me interesa la solucion q propones drumpi...

se me paso esto por alto:
Quote from: Drumpi on October 28, 2009, 01:55:55 AM
Pues lo cierto es que me interesa mucho el tema de generar voces... más que nada porque me enfrento a la tarea de hacer todo lo contrario: detectar voces y pasarlas a palabras ;D
una forma de reconocimiento de voz??

Quote from: Drumpi on November 02, 2009, 01:56:21 AM
macho, vaya nick te has buscado
cualquier parecido con un terrorista islamico es pura coincidencia
jajaj
Title: Re: espeak
Post by: Windgate on November 10, 2009, 09:10:51 PM
Porque una librería en Bennu que detecte la señal de entrada del micro y sea capaz de volver "algo" en función de ella... ¿No hay nada similar, no?

(Cuidado que ahora DCelso nos aparece mañana a las 7AM con una DLL funcional de ello)

;D
Title: Re: espeak
Post by: DCelso on November 10, 2009, 11:55:59 PM
 :o, me sobrestimas  ;).
Title: Re: espeak
Post by: Drumpi on November 11, 2009, 01:04:53 AM
No, no lo hay, y creeme que no es algo fácil de conseguir: este tipo de códigos lo guardan las empresas bajo cinco llaves, pues aquella que consiga una detección de palabras con una precisión del 80% puede sacar más dinero que el creador del formato GIF ;D

Ya he comentado la cantidad de cosas a tener en cuenta, no sólo por el tema de identificar sílabas, sino por las inexactitudes de la gente al hablar, y el arrastre de un sonido hacia la siguiente sílaba... eso suponiendo una pronunciación perfecta ;D

Supongo que mi PFC lo dedicaré a reconocer cinco comandos predefinidos, y dejaré el tema de investigación para más adelante, pero sería interesante conocer los armónicos necesarios para una voz humana y como varía a lo largo de una frase. He trabajado con filtros que usan simplificaciones de la FFT directamente en ASM y no era complejo, pero no es lo mismo depender de una única frecuencia que rastrear el cambio de un conjunto :S
Title: Re: espeak
Post by: josebita on November 11, 2009, 11:14:32 AM
¿Fuentes?

PD: Porfi
Title: Re: espeak
Post by: DCelso on November 11, 2009, 11:25:24 AM
dice drumpi que no hay ninguna implementación aún.
Title: Re: espeak
Post by: Windgate on November 11, 2009, 11:51:20 AM
No me refería a detección de palabras, con que se devuelva algún indicador de amplitud de la voz o de tono grave o agudo valdría para hacer alguna cosita xD
Title: Re: espeak
Post by: DCelso on November 11, 2009, 11:57:13 AM
Quieres alguna forma (aunque sea rudimentaria) de poder controlar un juego por voz en vez de por teclado o joistic o ratón, ¿no?
Factible parece.
Title: Re: espeak
Post by: josebita on November 11, 2009, 01:34:58 PM
Quote from: DCelso on November 11, 2009, 11:25:24 AM
dice drumpi que no hay ninguna implementación aún.
Ups!
Title: Re: espeak
Post by: Drumpi on November 11, 2009, 04:44:06 PM
Wind quiere hacer un karaoke :D
Hombre, supongo que si alguien trabaja con tarjetas de sonido o similares no debe ser demasiado complicado obtener la frecuencia de un sonido... y tampoco implementar la función de camio de frecuencia del sonido (yadigo, con la FFT parece sencillo ¡parece!).

Josebita: por desgracia aun estoy con la teoría y familiarizándome con el HW (una Beagleboard de prestado), pero la idea es que si el proyecto sale bien, y no hay problemas de licencias, hacer un módulo para bennu para cnvertir sonido en palabras ¡si sale bien!.
Si te referías al codigo de los filtros, te los puedo pasar... pero necesitas un DSP específico (no recuerdo el modelo, pero era muy viejo, apenas 2MB de buffer y un máximo de 22500Hz de salida en mono).
Mucho me temo que tendré que estudiar el código de algún programa de dictado para Linux o similar :S :S :S
Title: Re: espeak
Post by: DCelso on November 11, 2009, 04:49:12 PM
He estado buscando a ver si podía grabar el audio de entrada de un micro con SDL pero no he encontrado ningún ejemplo, solo esto

http://torsion.org/witten/sdl/

Por lo visto hay que parchear la SDLs, no comprendo el motivo.
Title: Re: espeak
Post by: josebita on November 11, 2009, 06:04:41 PM
Vale, gracias. Me había flipado y pensé que el binario ya era Bennu.

En cuanto a la FFT, tengo pensado hacerlo (en algún momento) para mi karaoke. Lo que he visto que la gente usa para leer la entrada de audio es Portaudio (http://www.portaudio.com/), que parece que es muy portable. Además, queda hacer el código que vaya leyendo la entrada y haciendo la FFT a muestras tomadas periódicamente... con tiempo. Si consigues algo, avisa :)
Title: Re: espeak
Post by: Windgate on November 11, 2009, 09:10:43 PM
Os dejo aquí una prueba de voces de mi juego de droides con Espeak, aunque tengo que esperar las DLL de Bennu 3D recompiladas con las últimas DLL de Bennu:

http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Prueba%20Espeak%20Legion3D.zip

Os gustará, es perfecto para voces de robot, dad las gracias a DCelso xD
Title: Re: espeak
Post by: l1nk3rn3l on November 13, 2009, 01:09:40 PM
CORDIAL saludo ,

hay alguna forma de obtener los fuentes C, de este Mod ya que estamos haciendo
el nuevo bennupack recompilando todas las DLL para el BENNU 112

gracias ..
Title: Re: espeak
Post by: Windgate on November 13, 2009, 01:29:57 PM
Lo sospechaba l1nk, y esperaba ansioso el nuevo Bennupack xD

Una sugerencia, añade en él las librerías de Bennu3d para que vengan de serie, también mod_espeak, mod_smpeg y mod_ttf, ¿Estabas al corriente de esas nuevas DLLs, no?

Las fuentes de mod_espeak las debería tener DCelso, mándale un privado si no contesta en breves xD
Title: Re: espeak
Post by: DCelso on November 14, 2009, 05:28:04 PM
umn, pues no quiero ser pesimista pero creía que los dejé aquí y los borré de mi equipo, no los encuentro, tengo que buscarlos en el ordenador del curro a ver si hay suerte.
Title: Re: espeak
Post by: l1nk3rn3l on January 16, 2010, 03:23:55 PM
no hay fuentes? se perdio para la posteridad?
Title: Re: espeak
Post by: DCelso on January 28, 2010, 01:16:28 AM
Si que hay, los encontré haciendo una búsqueda más exaustiva, se los mandé a osk, así que para la próxima revisión del manual estarán disponibles para todos a finales de este mes. (Creo que me los pidió para insertarlos en el manual, de no ser así los pondré por aquí)
Title: Re: espeak
Post by: osk on February 22, 2010, 10:19:53 PM
Pues sí, las tengo yo.
Perdón por no haber visto antes el post.
Aquí están las fuentes del módulo que me pasó DCelso (cambiarle la extensión a .c)
Venga, hasta luego!!