|
Proyecto de síntesis de voz. Un proyecto de: |
IrcHa-IRC Hablado |
|
|---|---|---|
|
Angel del Valle Juan Ignacio Rodríguez Alberto Rodríguez Ortega Ramsés Rodríguez U666 Víctor Romero Luís Toro Teijeiro Manuel Aróstegui Ramírez |
El proyecto actualmente está congelado, No se detectan bugs de importancia y está portado a los sistemas y clientes más extendidos. Revisa, por favor, que el portado a tu cliente preferido esté en el paquete correspondiente antes de ponerte a trabajar en él.
Febrero 2003, Angel del Valle.
|
|
|
|
|
DOWNLOADSLinuxWindowsDiccionariosLinksPerl. |
INTRODUCCIÓNIrcHa consiste en una serie de programas que permiten vocalizar en voz alta, mediante síntesis hablada del texto escrito, lo que dicen los contertulios en un canal de irc. ¿Y por qué tal cosa? IrcHa no molesta a los demás usuarios del irc pues la síntesis sólo la escuchas en tu propio ordenador. Te permite estar haciendo otras cosas con el cliente de IRC minimizado y, sin embargo, estar oyendo lo que dice la gente en el canal. La versión de GNU/Linux dispone de scripts para que los puedas usar desde la línea de órdenes (desde un xterm con bash, por ejemplo), y/o puedas llamarlo desde tus programas. ¿Qué tal habla IrcHa?Asombrosamente bien. IrcHa no posee una voz gangosa tal como la TV y el cine nos tiene acostumbrados. Sintetiza con rapidez y fluidez el texto escrito. Quizás se parezca más a HAL9000 de la película 2001 una Odisea del Espacio que a WRSMR de la película de Juegos de Guerra. Pero ten en cuenta que aquellas voces eran realmente humanas y filtradas y esto es voz 100% sintética. En realidad a IrcHa se le entiende todo en un correctísimo castellano y en un buen acento que EN ABSOLUTO es anglosajón, helio escandinavo, o eslavo germano. Por supuesto que tiene sus limitaciones, pero más por el medio en que se mueve, el IRC, que por sí mismo. En IRC hay muchas faltas de ortografía, hay muchas expresiones hechas, contracciones y se usan símbolos que IrcHa no puede corregirlos todos, aunque sí corrige una gran parte de ellos. Pero las cosas más usuales sí las contempla y cuando se encuentra con una frase del tipo:Hi, k pasa amigo? Hace 1000 años k no te veo :-) la traduce internamente antes de sintetizarlo por: Hi, que pasa amigo? Hace mil años que no te veo JEJE y la frase última de arriba es la que realmente sintetiza He leído por la web que su voz es gangosa. No pienso que se pueda calificar como gangosa, en absoluto. No dispone, aun, de una voz como la de Constantino Romero (1). Pero en esta vida, con tiempo y técnica, quizás algún día... (1)Constantino Romero. locutor de radio, presentador de tv y magnífico doblador de películas, dispone de una de las voces mejor timbradas del mundo. BÁJATE ALGUNOS EJEMPLOS (en mp3)Estos ejemplos no están retocados. Son la salida sintetizada por IrcHa exactamente el texto tal como lo ves escrito. Sin trucos.
HISTORIADurante algunas conversaciones en el canal de IRC de #Linux en irc.terra.es nos planteamos la posibilidad de hacer que las conversaciones del canal fueran sintéticamente habladas por el ordenador. Eso ocurría en Marzo del 2001. Varios de nosotros (Harpago, geloye, popov, Mannson, u666 y otros) nos pusimos a mirar qué es lo que había hecho y cada uno de nosotros hemos estado resolviendo de forma distinta la idea original. A finales de ese mes ya había conseguido que mi cliente de IRC generara con voz las conversaciones de los demás. Los resultados de ese trabajo los tienes delante. Puedes usarlos como te plazca, modificar cualquier aspecto y aportar lo que quieras a este proyecto. ¿Qué es lo que hay hecho?Existe, al parecer, algún script para la síntesis de voz. A la hora de escribir este documento nadie de los que están por esa línea de trabajo ha conseguido escuchar aun las conversaciones de irc. IrcHa es ya completamente funcional y ya dispones de una versión para Microsoft Windows (TM). Hay varios proyectos en Internet que abordan el tema de la síntesis de voz. Que yo haya encontrado, tenemos al proyecto euler, a mbrola, speechd, rsynth y say. Tanto rsynth como say los descarté después de probarlos un poco: la voz generada es demasiado "de ordenador" y con tan marcado acento anglosajón como para ser aceptable. Me centré en mbrola por motivos de nostalgia (lo probé hace unos años bajo OS/2) y simplemente porque me funcionó antes y mejor que euler o speechd. DESCRIPCION DE LOS PROGRAMASRequerimientos: Perl, kvirc 2x o x-chat, tarjeta de sonido y soporte completo de sonido en tu máquina incluyendo el paquete sox, una conexión a Internet con soporte para irc y ganas de ponerte a configurar un poco tu GNU/Linux. También necesita mbrola, y el diccionario de dicción es1. En la página del Proyecto Mbrola puedes bajarte también es2, otro diccionario de dicción en castellano. Mbrola es el programa generador de sonidos en sí. Necesita de diccionarios de dicción para cada idioma. En la página de mbrola dispones de los diccionarios de español, es1 y es2. La pronunciación de ambos es excelente. En el paquete del IrcHa sólo contemplo el uso del diccionario es1. Mbrola, de por sí, no es capaz de convertir a sonidos un texto plano, necesita un fichero de fonemas .pho para que la generación de las frases sea aceptable. Encontré un programa escrito el Perl con las tablas de fonemas adaptadas al castellano llamado tts-Spanish, el cual, después de algunos cambios, se adaptó perfectamente al proyecto. Se ha cambiado tan en profundidad tts-Spanish que ahora es un programa totalmente distinto. Ficheros adicionalesbanlist Este fichero contiene una lista de palabras a omitir. Cualquier frase que contenga al menos una palabra incluida en banlist se deja de pronunciar. Imagina que eres padre y estás en un canal que se pueda escapar de vez en cuando alguna palabra digamos, no adecuada para las tiernas orejas de nuestros hijos, añades un par de palabras a banlist.... Bueno, no seré yo quien ponga un ejemplo aquí diccionario Este fichero contiene una serie de palabras o símbolos con su "traducción" al lado, por ejemplo: :-) JEJE Con lo que IrcHa, al encontrar :-) lo pronunciará como JEJE. Puedes expandir el diccionario con lo que se te ocurra. En Linux hay dos diccionarios, uno general y otro para cada usuario, que puede personalizar. NECESITAS: ircha.1.0.0.tgz
Descomprime ircha.1.0.0.tgz. En tu $HOME tecleas tar xvzf ircha.1.0.0.tgz Y creará un directorio ircha en tu /usr/share con los ficheros necesarios para la síntesis de voz. Si deseas instalarlo en cualquier otro sitio, deberás hacer alguna modificación para que el fichero lee esté disponible en el PATH. PROBANDO IrcHaPor ahí he visto formas curiosas de jugar con el script lee incluso en alguna revista se sugieren los métodos mas extraños de hacerlo, con filtros, pipes y redirecciones curiosas. Funcionar, lo que se dice funcionar, al parecer funcionan, pero todo es mucho más simple que eso: Abre una ventana xterm o una consola y pruébalo desde un usuario normal, por ejemplo: lee En un lugar de la Mancha, de cuyo nombre no quiero acordarme. Esto provocara que salga por el altavoz del ordenador, en castellano, la frase que has escrito. Te sugiero que pruebes su potente convertidor de número a voz: lee Una lástima, pero llegó la 28ª lee 1000000000 de euros! El límite del conversor es demasiado alto como para que pierda un concurso contra una persona. Leerá números que ni te imaginas como pronunciarlos. Las inflexiones según la frase se contemplan adecuadamente a partir de la versión 2.0 Frases como: lee Ha llegado mi hermano. lee Ha llegado mi hermano! lee Ha llegado mi hermano? lee Ha llegado mi hermano... Suenan claramente distintas. Nota: A partir de la versión 1.0.0 se hemos incluido una versión cliente-servidor. Por defecto se instala la versión tradicional, pero si tienes la oportunidad y las ganas de probar la versión cliente-servidor, puedes hacerlo aunque para ello tendrás que investigar por tu cuenta un poco. INTEGRANDOLO CON KVIRC 2.0.0Mi cliente IRC es un Kvirc 2.0.0 y funciona para lo que dicen los demás en los canales que selecciones. No lo actives en canales con mucha conversación: te volverá loco, perderás frases enteras y el xload de tu máquina saldrá por el techo. Dispones de dos métodos: METODO 1 - INSTALACION POR UN SCRIPT Junto con el paquete se incluye el script ircha-kvirc.0.7.1.tar.gz que queda dentro del directorio donde hayas descomprimido el paquete IrcHa. Usa dicho fichero para instalarlo con Kvirc. Ve a tu directorio de kvirc de tu home, dependiendo de la versión de kvirc que estés usando puede variar ligeramente el nombre. En mi caso es kvirc-2.0.0/ cd ~/kvirc-2.0.0 si no existe, crea un directorio llamado scripts. mkdir scripts descomprime el paquete ircha-kvirc.0.7.1.tar.gz dentro de ese directorio script cd scripts tar xvzf ~/ircha/ircha-kvirc.0.7.1.tar.gz carga tu kvirc de la forma habitual y carga el script desde Tools -> Load Script METODO 2 - INSTALACION MANUALSi tienes scripts montados en tu Kvirc, quizás prefieras añadir manualmente las instrucciones para que no se altere tu script. Ve en el menú a Tools -> Script Center (Herramientas -> Centro de Scripts) En la pestaña Aliases, añade un nuevo alias llamado hablaonoff e introduce el siguiente programa: if ("%Habla[$chan]"=="0")
echo $B Habla en ON para $chan;
%Habla[$chan]=1;
else
%Habla[$chan]=0;
echo $B Habla en OFF para $chat;En la pestaña Events, busca el evento llamado OnChannelMessage y añade este trozo de código:
if ("%Habla[$chan]"=="1")run lee $3-;
Activa este evento en el botón Enabled. Por último, elige la pestaña Popups. Dentro de esta ventana selecciona en la barra desplegable la opción Channel. Con el ratón señala el último elemento de la lista (podría ser Global Who) y con botón derecho del ratón despliegas el menú, eliges con "Add empty item below" un nuevo item al que vas a llamar en Name Habla On/OFF y en la ventana negra que está encima del Name y del Icon , donde dice: # Place here the code for the new item eliminas esa línea y la sustituyes por hablaonoff, que es el aliases que pusiste arriba: hablaoff Por defecto, en KVIRC IrcHa está desactivado. Para activarlo en un canal determinado pica con el botón derecho del ratón sobre la ventana del canal y eliges la opción Habla ON/OFF que acabas de crear. El control es independiente para cada canal. INTEGRANDOLO CON X-CHATCarga el x-chat como siempre. Luego carga desde el menú de script Cargar un script Perl. El script necesario está en /usr/share/ircha/habla.pl Puedes activar el IrcHa tecleando en cualquier ventana de X-Chat /HABLA ON y desactivarlo a placer con /HABLA OFF cada vez que quieras. Al arrancar está en ON, o sea, que sintetiza para los canales que estés. INTEGRANDOLO CON KSIRCVíctor Romero me ha hecho llegar un email el script para ksirc. Comenta que se cargue el script ircspeak.pl con la siguiente instrucción: echo "load ~/bin/ircspeak" >.sircrc y luego, en el canal que sea /speechon INTEGRANDOLO CON IRSIILuís Toro Teijeiro (a) linuxx en #Gulic de irc-hispano.org ha hecho el script para Irssi. Su autor, Luís, me comenta: "Además añadí soporte a más cosillas como privados y notificación de frases en donde se te nombre." El programa de instalación
lo pondrá en /usr/local/lib/irssi/scripts /run ircha.pl es suficiente para cargarlo. El manejo desde el cliente de irc es el siguiente: /turn
on Lo activa completo. INTEGRANDOLO CON BITCHXmarmolejo <marmolejoNOSPAM@able.es> me hace llegar por email el POR FINNNNNNNNNNN! script para BitchX!!! "Te los mando por si los quieres incorporar al ircha, el habla.pl ya esta explicado como usarlo, salvo las opciones nuevas: Ahora es /habla [ON/OFF/LISTA] [CANAL/NICK] [CON/SIN] Añade posibilidad de elegir en que canal o query quieres usarlo y si quieres que diga el nombre del canal o query (CON) o no (SIN). También he añadido un antiflood para el caso de que se lean mas de 4 letras iguales (por ejemplo zzzzzzzzzzzzzzzzzzzzz), las convierte en 2 :) El del bitchx es cuestión de meterlo en ~/.BitchX/ y para activarlo /load habla.bx ( o meter load habla.bx en el .bitchxrc) y el uso es: /habla [ON/OFF] [CANAL/NICK] [CON/SIN] A este aun no le he añadido antiflood ;-)" INTEGRANDOLO CON MIRC - WINDOWSJuan Ignacio Acosta nos ha hecho llegar las instrucciones para la correcta instalación de IrcHa en MIRC/Windows. Para la instalación de IrcHa en este sistema, es necesario el uso de Mirc como cliente, ya que es el único cliente para el que se ha adaptado el IrcHa de momento. Os animamos a adaptarlo a otros clientes que uséis. Así mismo también funciona con algunos scripts para MIRC, únicamente lo he probado con Ircap 6.999 y funciona correctamente. NECESITAS:ircha.1.0.0.zip
Opcionalmente puedes bajarte Mbrola completo para Windows en: Mbrola para Windows http://tcts.fpms.ac.be/synthesis/mbrola/bin/pcwin/mbrolatools311.exe
Proceso:
Luego solo tienes que activar en los canales que desees el IrcHa pulsando en la ventana de canal sobre el botón derecho y pulsar sobre hablar en canal #nombre_de_canal. A partir de aquí a disfrutar de la experiencia. Asegúrate que MIRC tenga la opción Listen events activa. (en Menú -> Tools -> Listen, que la opción Events esté marcada). Esto ultimo, en Ircap y Mirc en sus ultimas versiones 5.8 y superiores, en mi caso no ha sido necesario. FAQs. Preguntas y respuestasP: ¿Sacarás un script para mi cliente de IRC preferido? R: Bueno, en realidad mi intención es que sean los usuarios de los distintos clientes de irc quienes ellos mismos porten IrcHa a sus clientes de IRC. El desarrollo y mantenimiento del proyecto no me deja mucho tiempo para investigar cada lenguaje de script. Lo único que puedo hacer es poner tu sugerencia aquí y ver si alguien está interesado en portar el sistema a X ... Desgraciadamente la gente no se anima lo que yo esperaba y por lo que veo, BitchX, Sirc, ZirCon y otros clientes nunca tendrán un port. Kvirc lo tiene porque es el que yo uso, mIRC de Windows lo tiene porque Juan Ignacio Rodríguez, rayita en IRC, ha hecho que funcione ya que es el sistema que él usa. X-Chat lo tiene porque Ramsés, Harpago en IRC, si se mojó y se interesó por sacarlo adelante y decidí ayudarle. Así que si tu te metes a que tu cliente de IRC tenga habla, sabes que cuentas conmigo en todo lo que pueda ayudarte, si esperas que otro lo haga o que lo haga yo, pues me temo que será una larga espera. Sí te aviso que en KVirc ha sido MUY fácil. en X-Chat fue un poco más dificil, pero en unas horas iba fino. Anímate a que tu cliente hable como una cotorra :-) IrcHa es un proyecto sumamente agradecido y da resultados espectaculares que causarán asombro seguro entre tus amigos. NOTA: No me queda más remedio que comerme mis palabras. La gente sí se ha animado y dispones de scripts de IRC para la mayor parte de los clientes de IRC para Linux. He intentado animar a que gente de otras plataformas lleven IrcHa a ellas. No es difícil, Perl existe para Mac y OS/2 y sin ningún cambio mayor, solamente cambiando los accesos al sistema de sonido, debería funcionar. No puedo decir que haya sabido animarlos. La gente con Mac con las que he contactado se tomaron la propuesta como una ofensa a su plataforma ¿¡!? y la gente con OS/2 simplemente pasó del tema (bueno, al menos no me insultaron). P: ¿Por qué habeis usado Perl? R: Perl viene incluído en cada distribición de GNU/Linux e IrcHa se inició en Linux sin mayores pretensiones que ser algo simpático. Por otra parte Perl es un lenguaje interpretado que existe para la mayoría de las plataformas, el manejo de cadenas es muy potente y los scripts de IrcHa hacen un uso intensivo sobre cadenas de texto, Perl es, pues, ideal para el proyecto. Sabemos de antemano que en Windows no hay un Perl instalado y tendrás que buscar uno e instalarlo ya que hacer un .DLL para Windows no está previsto por motivos de licencias. P: Me parece que deberías hacer los scripts más fáciles de usar. R: Probablemente tengas razón. Pero el proyecto actualmente es como es y la prioridad es que IrcHa simplemente hable bien. Si tu mismo te encargas de hacerlo no te quepa duda de que lo incluiré gustosamente. De todas formas, poco a poco voy incluyendo los scripts listos para cargar. Revisa periódicamente la página porque es probable que el script para tu cliente preferido salga en cualquier versión. De todas formas sí se ha simplificado mucho el manejo de IrcHa en cada cliente de irc y bien por comandos, bien por selección de menús, el uso de IrcHa ahora está muy simplificado. P: Sería interesante desarrollar IrcHa a otras aplicaciones no relacionadas con IRC R: Sí, lo sería. De hecho aplicaciones interesantes, como leer texto escrito en diferentes formatos es algo que me gustaría contemplar en próximas versiones. Leer de paginas html, distintos formatos de ficheros de procesadores de texto (word, SGML, txt, etc), PDF, SGML, HTML, etc. En cualquier caso eso no sería ya IrcHa sino otros proyectos. P: ¿Cuánto cuesta el registro? R: 0 euros, 0 pesetas, o 0 DM, o 0 US$, o sea nada de nada. Puedes usarlo libremente y modificarlo, si te place. Me encantaría recibir noticias de aplicaciones basadas en IrcHa y si las haces, te ruego me lo notifiques por email a Angel del Valle <geloye@gmail.com>. De todas formas IrcHa depende de mbrola y si vas a hacer un uso de IrcHa, deberías leer atentamente la licencia de mbrola antes. P: Tengo problemas con sox. Me indica que no tengo permiso para usar /dev/dsp. R: Si te ocurre eso, probablemente debas cambiar los permisos a /dev/dsp de la siguiente forma: su - chmod ugo=rw /dev/dsp* |
|
Juan Ignacio Rodríguez
(a) rayita. Que ha trabajado duramente
modificando a fondo la idea original. Actualmente la mayor parte del
peso del proyecto es suyo. Así como el port
a Windows.
Alberto
Rodríguez Ortega. Por resolver ciertas cuestiones
atascadas (Perl, cómo no). Y por su control de colas de
mensajes.
Ramsés
(a) Harpago por su habla.pl para X-Chat.
U666
por su logo.
Víctor
Romero por su port a ksric.
Luís
Toro Teijeiro (a) linuxx por su estupendo script para
IRSSI.
Juan Ignacio Acosta
por sus instrucciones de instalación para Windows.
Lourdes
Aguilar, David Casacuberta, Alistair Conkie, Rafael Marin y Carlos
Morcillo de la Faculte Polytechnique de Mons. IrcHa le
agradece su tts_Spanish, el código original donde se basó
IrcHa.
Thierry Dutoit, de la
Faculte Polytechnique de Mons, por su Mbrola.
A Zoom
Comunicaciones S.L., por el alojamiento de mis páginas
y soportar con humor mis requerimientos a su servidor. (Zoom ya no existe)
Y también a Constantino Romero,
por su magnífica voz. Aunque no ha
contribuido en nada en el proyecto, creo que es una fuente de
inspiración y una meta que algún día quizás
IrcHa alcance :-)
Angel del Valle <geloye@gmail.com>
|
|
|