-[ 0x04 ]-------------------------------------------------------------------- -[ Humanizar PCs ]----------------------------------------------------------- -[ by blackngel ]----------------------------------------------------SET-32-- @ @ @@@ blackngel_hack@hotmail.com @@@ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII III @@@@ @ @@@@@ @@@@@ @ @ @@ @ @@@@@ @@@@@ @ III III @ @ @ @ @ @ @ @ @ @ @ @ @ @ III III @@@@@ @ @@@@@ @ @@@ @ @ @ @ @@@ @@@@ @ III III @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ III III @@@@ @@@@@ @ @ @@@@@ @ @ @ @@ @@@@@ @@@@@ @@@@@ III IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII @@@ @@@ @ @ %%%%%%%%%%%%%%%%%%%%%% %%%================%%% %%% HUMANIZAR PC'S %%% %%%================%%% %%%%%%%%%%%%%%%%%%%%%% "Bienvenidos al mundo de lo real..." ................ .. 00. INDICE .. ................ ................ ..................................... ..................................... ... 00 ... INDICE ... ..................................... ... 01 ... PROLOGO ... ..................................... ... 02 ... INTRODUCCION ... ..................................... ... 03 ... PROGRAMAS ... ..................................... ... 04 ... COMODO Y UTIL ... ..................................... ... 05 ... HUMANIZANDO ... ..................................... ... 06 ... CONCLUSIONES ... ..................................... ... 07 ... SCRIPTS ... ..................................... ... 08 ... DESPEDIDA ... ..................................... ..................................... "Adormecida, ella yace con los ojos abiertos como la ascensión del Angel hacia arriba Sus bellos ojos de disuelto azul que responden ahora: "lo hare, lo hago!" la pregunta realizada hace tanto tiempo. Aunque ella debe gritar no lo parece lo que pronuncia es mas que un grito Yo se que el Angel debe llegar para besarme suavemente, como mi estimulo la aguja profunda penetra en sus ojos." * Versos 4 y 5 de "El beso del Angel Negro" ................. .. 01. PROLOGO .. ................. ................. Para empezar con algo de sinceridad, me remito a una frase de mi mas querido escritor: Isaac Asimov. -> Contesto cualquier pregunta siempre y cuando 'no lo se' sea una respuesta valida. Hola amig@s, el tiempo pasa y no se puede perder ni un minuto, una vez mas estoy aqui intentando abrir algunas mentes (me conformo aunque se cuenten con los dedos de una mano). Sigo siendo el mismo, el mismo que sigue queriendolo controlar todo, cuando todo escapa a su control. Muchos de los aqui presentes pretendemos el mismo objetivo, buscar alguna salida de escape, algo no funciona y necesitamos descubrir el porque, hay algo en el mundo que no entendemos y necesitamos resolverlo. Sinceramente, no creo ser yo el que tenga la respuesta pero, esperemos que exista algo o alguien que nos revele la "verdad". Aqui tienen otro articulo para su uso y disfrute... ...................... .. 02. INTRODUCCION .. ...................... ...................... No hace mucho vi en las noticias una mujer con un rostro oriental (sino me equivoco japones). Una mujer joven de la que no percibi ni la mas remota discrepancia con la gente que la rodeaba. Todo ello hasta que realizo un movimiento con el brazo, lo mas parecido a un movimiento robotico, un mimo pense, y tanto que me equivocaba, a los segundos comenzo a hablar y realmente descubri que no era sino un robot humaniforme, asi como de los que habia leido en las novelas de Isaac Asimov aunque seguramente con muchisima menos inteligencia o sabiduria. Para que mentir, despues de todo lo que se ha visto en peliculas de ciencia ficcion y despues de todo lo que he leido, no hice mas que sentir un tremento escalofrio en mi interior, senti que era el comienzo de algo, quizas por un momento pense que era el comienzo del fin, desvarios de la realidad que dista del futuro. Mas alla del miedo llega la ilusion, la ilusion de ser tu el que da vida a esas maquinas y, de esa forma, he dado vida a este articulo que es simplemente un inciso a como podemos mejorar nuestra comunicacion con el ordenador. Y, por que no, quizas algun dia, hacer de el un amigo, si es que para alguno de vosotros aun no lo es (para mi SI). Desde la invencion del raton y el teclado, el progreso de comunicacion con el PC se ha detenido. El software aumenta de calidad (supuestamente) a cada dia que pasa, el hardware produce unos avances tecnologicos espeluznantes (sobre todo en lo que a velocidad y miniaturizacion se refiere) pero, aun seguimos haciendo doble clic para abrir directorios y documentos, lo mismo para ejecutar programas, todavia hacemos cursos de mecanografia para tener nuestros articulos antes de que salga a la luz el proximo numero de SET. Ha llegado la hora del cambio. El futuro esta en dictar a nuestro ordenador lo que nosotros deseemos que el mismo escriba, nuestra voz sera el utensilio de escritura. El futuro esta en decir a nuestro ordenador que directorio debe abrir y que programa tiene que ejecutar. El futuro esta en que la comunicacion con nuestro ordenador por fin se transforme en una realidad. Adios al raton, adios al teclado, bienvenido amigo mio. Antes de empezar les advierto que no lo he conseguido, pero he dado los segundos pasos, no digo los primeros porque esos los dieron los creadores de cierto software que guiaran el transcurso del articulo y quien sabe (yo no por supuesto, o es que estoy desactualizado) quien habra hecho cosas mejores de la infima practica que yo he realizado. Mi mas sincero deseo es haber llegado tarde y enterarme de que esto ya esta pasado de moda, pero pido porfavor que alguien me avise y me indique como puedo hacer cosas mejores de lo aqui descrito. ................... .. 03. PROGRAMAS .. ................... ................... Empece a interesarme un poco por los botchats (software con los que puedes mantener una conversacion escrita con cierta apariencia de inteligencia). Estos programas ya me eran conocidos en una edad mas temprana pero, en aquel entonces eran un juego, ahora son parte de lo que conforma mi investigacion. Mas tarde estos bichos que sacaban respuestas de donde menos lo esperabas, tenian la posibilidad de transformar el texto en habla y reproducirla a traves de los altavoces de tu ordenador. En windows comprendi que se utilizaba una interfaz de programacion conocida como SAPI y que los programas que se dedicaban a la tarea de transformar texto en voz se conocian con las siglas de TTS (en ingles Text to Speech). Yo mismo me interese en esta interfaz y deseaba que mis programas reprodujeran su salida no por pantalla sino por los altavoces. Todo esto sucedia en Windows ya que no conocia sus similares para mi amigo Linux, este aspecto de cierta importancia no tardo en cambiar. Buscando informacion sobre TTS entre por la mas pura casualidad ( esperemos que la misma exista) en un foro o algo asi, del que no recuerdo su direccion pero no tardaria ni un minuto en volver a encontrarla, alli se hablaba como la interactuacion de 3 programas en el SO Linux podia facilitar cierta comunicacion con un PC. Empecemos citando las herramientas: sphinx2 -> Dispone de las versiones 3 y 4 pero esta era la mencionada y la que menos ocupa. Su funcion es reconocer la voz que entra por el microfono y transformarla en texto. 1er inconveniente: Solo reconoce ingles. festival -> Un TTS, como mencione anteriormente, transforma el texto en voz comprensible. Lo mejor es que se puede conseguir que sea una voz española, todo ello bajando los archivos necesarios aunque yo me descargue todo en un rpm. perlbox-voice -> Y este es el enlace, la genialidad de alguien que logro mediante unos scripts de perl y el uso de una interfaz TK relacionar los dos programas anteriores y proporcionar al usuario una gran funcionalidad. Con esta herramienta podemos hacer que se ejecuten comandos a partir de palabras que introduzcamos por el microfono. Ej.: Cuando digas "mail" que se ejecute "kmail", "pine" u otro cualquiera. Tambien podemos hacer que nos responda frases que deseemos. Instalar: 1. Instala sphinx2 2. Instala speech-tools (paquete necesario antes de festival). 3. Instala festival 4. Instala perlbox-voice * Para que "festival" reproduzca una voz española tenemos que modificar el archivo /usr/share/festival/voices.scm. Si buscais hacia el final, Una vez que todo esta en orden, basta con ejecutar el script perlbox-voice y suponiendo que disponemos de X-Window aparecera en pantalla una ventanita con diferentes opciones en el lateral izquierdo. En la zona "Vocab" (de vocabulario) podemos configurar nuestros propios comandos y las respuestas a los mismos. Se basa en la siguiente estructura: Cuando tu dices ... -> El ordenador hace ... o Cuando tu dices ... -> El ordenador responde ... En un cuadro de texto introduces lo que tu diras por el micro y en el otro lo que debe hacer en el ordenador. En caso de que lo que quieras es que te responda algo, debes anteponer la palabra "say" a la frase. Tambien puedes hacer una mezcla de los dos como se vera a continuacion. Ej.: Cuando tu digas El ordenador hace --------------- ----------------- music xmms hello say Hola maestro date say `date + "%A, %e de %B del %Y"` * Este ultimo hara que suene por los altavoces la fecha actual. Todo esto esta mas que explicado en la ayuda de perlbox-voice, lo que es mas, hay una referencia de como utilizar la API para hacer tus propios pinitos. Una vez que tenemos nuestro vocabulario a medida pulsaremos en "Apply Changes" y nos iremos a la zona "Control". Una vez alli solo debemos hacer click en "Start Listener" y podremos empezar a jugar. Todo muy bonito sino fuera porque cada vez que queremos hacer uso de esta maravilla tenemos que abrir una shell, escribir el comando "perlbox-voice" ir a la zona "Control" para hacer click en "Start Listener" y esperar a que este se cargue correctamente. Pero para eso estamos aqui, eso es lo que yo he intentado resolver, sino el articulo en si no tendria ningun valor. Comencemos a toquetear cositas... ....................... .. 04. COMODO Y UTIL .. ....................... ....................... Despues de darme cuenta de la incomodidad de este uso de perlbox-voice fue cuando empece a investigar. La mayor ventaja con la que me encontre y, sin duda alguna, la madre de toda esta chapuza, es que como ya dice su propio nombre, este programa esta escrito en lenguaje "perl". No existia necesidad de volver a compilar los fuentes y todo ello me proporciono una gran soltura y una forma rapida de plantear el problema. Antes de empezar ningun proyecto uno debe ponerse una meta u objetivo, el mio fue el siguiente: "Simplemente, cuando se encienda el ordenador, quiero que perlbox-voice este ejecutandose y que pueda operar con el sin que nada se muestre en pantalla". Lo que es lo mismo, deseaba poder hablar con mi ordenador sin que fuera notable la presencia de ningun programa. No se necesita ver ningun programa para poder abrir carpetas con el raton, porque habia de ser diferente con la comunicacion hablada... Empece por buscar donde se localizaba el programa principal. En un principio lo mas logico fue pensar que era el mismo "perlbox-voice" que se encontraba en el directorio "/usr/bin" pero, por sorpresa, resulto ser simplemente un script que configura ciertas opciones del usuario y lanzaba el script principal situado en: "/usr/lib/perlbox-voice/pbox-voice". "pbox-voice" es el mismo que se encarga de crear una interfaz grafica con TK, ejecutar el receptor sphinx2 y el festival, a partir de aqui todo queda en manos de nuestro raton, pero eso no es nada "comodo". Entonces plantee la historia de esta manera: Necesitaba seguir manteniendo el programa original para realizar la edicion de vocabulario a gusto ("comodo") pero, mientras este no era modificado, el programa debia ser ejecutado en segundo plano sin necesidad de ninguna interfaz y con el listener ya iniciado. Lo que mas rapido se me vino a la mente fue lo siguiente. Si existia en /usr/bin el lanzador, desde alli podria hacer que se ejecutase ,segun los argumentos proporcionados al programa, otro script que seria el mismo que el original(el de /usr/lib) pero sin la GUI y con el receptor preparado. Las modificaciones de /usr/bin/perlbox-voice (lanzador) fueron estas: Al principio del fichero: ------------------------- $arg=$ARGV[0]; if($arg eq ""){ &sintaxis; } sub sintaxis { print "perlbox-voice [lc] [tk]\n"; print "[lc] -> Linea de comandos\n"; print "[tk] -> Interfaz gráfica\n"; } Al final del fichero: --------------------- if($arg eq "tk"){ system(LIB_PATH."/pbox-voice"); } elsif($arg eq "lc"){ system(LIB_PATH."/pbox-voice-lc"); } else{ exit; } Facil de entender no? Segun mis deseos podia ejecutar el que me apeteciese en cualquier momento. Como era el "pbox-voice-lc"? Pues muy simple. Una copia del original con muchos recortes y alguna pequeña modificacion. Asi: --------------------------- pbox-voice-lc ---------------------------- #!/usr/bin/perl #============================================================ #Módulos y librerías #============================================================ use constant LIB_PATH => "/usr/lib/perlbox-voice"; use lib LIB_PATH; use strict; use Perlbox::VoiceServer; use constant TRUE => 1; #boolean true use constant FALSE => 0; #boolean false use constant MSG_NO_NEW_STATE => 0; #============================================================ #Inicialización de variables #============================================================ my $voice_server =Perlbox::VoiceServer->new; my $current_msg =""; #============================================================ #Main #============================================================ my $listener_response = $voice_server->start_listener; #modificacion $current_msg="$listener_response"; print "$current_msg"; while(1){ #añadido sleep 1; &timing_chain_callback; } #Se llama cada segundo para comprobar nuevos mensajes sub timing_chain_callback { my $new_message = $voice_server->check_messages(); if( $new_message =~ /^SAY:/ ){ $new_message =~ s/^SAY://; $voice_server->say($new_message,1); } if( $new_message ne MSG_NO_NEW_STATE and $new_message ne ""){ $current_msg=$new_message; print "$current_msg"; $voice_server->say($new_message,4); } return TRUE; } --------------------------- pbox-voice-lc ---------------------------- Todo va por buen camino pero, por el momento, aun seguimos teniendo que ejecutar el programa desde la linea de comandos. Cuando llegue hasta aqui todo empezo a hacerse muy comodio, solo devia escribir en un shell: "perlbox-voice lc &", haciendo que se ejecutase en segundo plano y pudiendo cerrar el shell sin que el programa dejase de operar. Que bonito! Ya podia hablar con mi escritorio, sin nada delante, y operando con toda la genialidad del original. Me encanta cuando yo digo "extract cd" y mi maquina expulsa la bandeja del cdrom ejecutando un "eject /dev/cdrom", a su vez, la puedo cerrar con otras dos palabritas como "close cd" el cual aplica la orden "eject -t /dev/cdrom". No digais que no, para dejar boquiabierto a mas de unos cuantos. Ya faltaba poco, siguiendo en ampliaciones de comodidaz cree un script lo mas pobre posible al cual le di el nombre de "pv", lo situe en /usr/bin y contenia esto: ------- pv ------- #! /bin/bash perlbox-voice lc & ------- pv ------- A que os suena de algo verdad! Lo ultimo que me quedaba por hacer era que mi script "pv" se ejecutase cada vez que se encendiera el ordenador y todo estaria solucionado. Como avaricioso que soy, queria que este programa solo se ejecutase para un usuario, es decir, yo, blackngel. La unica forma que encontre, fue situar un enlace simbolico a "pv" en el directorio "/home/blackngel/.kde/Autostart" este enlace tambien poseia el mismo nombre. Esto lo hice asi porque utilizo el entorno de escritorio KDE, pero en Gnome no ha de ser muy diferente. Conseguido! Enciendo mi computadora y los comandos preprogramados se ejecutan con toda normalidad, todo ello cuando lo unico que se muestra ante mis ojos es el mismo fondo de pantalla de todos los dias. En este momento te das cuenta de que la maquina va adquiriendo nuevas capacidades. Cual sera su limite? Que deberia hacer todo humano cuando alcanza una meta? Pues ni mas ni menos que ponerse otra. No la coloque mucho mas lejos pues el golpe que podia llevar si no lo conseguia era demasiado grande. NOTA: Por cierto, si vais a realizar todo este proceso, cada vez que escribais o copies un script de aqui, no os olvideis de darle permisos de ejecucion a cada uno. Los problemas mas tontos son los mas frecuentes. ..................... .. 05. HUMANIZANDO .. ..................... ..................... Viendo lo visto y siendo consciente de lo que el tema estaba dando de si, fue cuando mi objetivo maduro de nivel y quiso hacer de mi maquina algo mas que una maquina. Se propuso tener un amigo. Con cierta insatisfaccion no pudo ser pero, aqui expongo todo lo que hice con la esperanza de alguno de vosotros mejore lo presente y aporte algo nuevo el dia de mañana. El primer movimiento y el mas sencillo fue hacer que mi ordenador respondiera con un saludo diferente cada vez que yo le decia "hello" o "good morning" o algo por el estilo. Para ello cree un script llamado "randsal" al cual situe en el directorio /usr/bin y que su funcion era escoger de forma aleatoria una frase de entre las que habia escritas en un fichero que coloque en /usr/share y el cual recibio el nombre no muy astuto de "saludos.txt". Vosotros podeis crear este mismo fichero de texto y escribir un saludo o frase por linea. El script en si no tiene ninguna dificultad (lo podeis encontrar en la penultima seccion junto con el resto) pero no habia sido consciente de su gran fallo hasta que lo probe. Para comprobar que la frase se escogia aleatoriamente y que no cabia lugar para el error hice que se imprimiera el saludo por pantalla. Todo perfecto pero, justo despues de esto, el saludo debia de haber sonado por los altavoces pero salia un mensaje por pantalla que decia asi: "Linux: can't open /dev/dsp". Resultaba que perlbox-voice ya tenia una instancia abierta del dispositivo de sonido y al querer abrir otra con "randsal" las dos entraban en conflicto por lo tanto no se le permitia el acceso al segundo solicitante. No he sabido solucionar el problema, pero quizas solo sea un error de programacion (algo que sobra o algo que falta). Si alguno consigue solucionarlo pegarme un toque al movil o, lo que es mas facilito, escribirme un e-mail. Ya sabeis, hay que decir "mail" se abre "pine" o "kmail" y todo comodo. Ahora llega la locura que se me ocurrio, en buen dia debo añadir. Sabia que en cierto modo podias tener una especie de amigo en tu sistema, ya que, como supongo muchos de vosotros tambien sabreis, existen unos programas llamados "botchat" con los que te puedes comunicar de forma escrita y que intentan aparentar inteligencia. Muchos de nosotros hemos hablado de pequeños con el "Dr. Abuse" un botchat creado para el sistema operativo Windows. Hace poco que se ha lanzado la version definitiva, la que parece mas inteligente. Como detalle de este programa, cabe decir que a eleccion del usuario en el menu de opciones podemos activar el uso de voz por parte del programa, a escoger entre una femenina y otra masculina. Todo ello con el uso del SAPI. Para seguir describiendolo decir que guarda recuerdos de otras conversaciones, mas bien almacena palabras clave en el registro y las utiliza posteriormente para sorprender al usuario. Que le faltaba a este programa? Muy facil de ver. Una vez que le introducias algo por el teclado no hacia falta mirar a la pantalla para ver su respuesta ya que esta sonaba por los altavoces pero, y si la entrada de datos tambien fuera por el microfono. Tendriamos a un amigo mas o menos inteligente (seguro que mucho mas que alguno de vuestros amigos). La primera dificultad fue darme cuenta de que en Windows no podia conseguir nada, el botchat no era de fuente abierta y no lo podia modificar a placer. Lo segunda es que no conozco muchos reconocedores de voz para el mismo sistema y mucho menos que sean gratis. Entre ellos creo que hay uno que se llama "Realize Voice" que no ocupa ni los 100 kb pero, solo se ejecuta en versiones inglesas de windows. Cabe decir en este momento que encontre una herramienta en windows que hace las funciones de "perlbox-voice" y "sphinx", su nombre es "Nitrous Voice Flux 2.0" pero no nos saca del ingles y tambien precisa de una buena pronunciacion. Ocupa cerca de 9 Mb. Como siempre, me volvi a mi Linux y entre en la web en busca de un botchat que se adaptara a mis necesidades, sinceramente, no encontre nada decente, mas bien no encontre nada de nada excepto una pequeña libreria llamada Eliza (en perl, por fin una ventaja) que permitia construir simples scripts con un par de funciones. Para que no os alegreis de las ventajas, os comento que es en ingles, tanto lo que le escribes como lo que te contesta. En el mismo modulo de Eliza se explican todos los pasos que se deben dar y las posibilidades de las que disponemos. A diferencia del Dr. Abuse u otros, Eliza actua como una psicologa preguntandote por tus problemas. Pero bueno, quien no quiere desahogarse de vez en cuando con su ordenador... La libreria o modulo se instala o copia en el directorio: /usr/lib/perlx/vendor_perl/x.x.x/Chatbot/Eliza.pm Las 'x' se sustituyen por la version de que dispone cada uno, normalmente la 5. En mi caso, perl5 version 5.8.1. El script que escribi lo llame "conv", lo situe en /usr/bin y fue tan sencillo como lo que sigue: --------------------- conv ----------------------- #!/usr/bin/perl use constant LIB_PATH => "/usr/lib/perlbox-voice"; use lib LIB_PATH; use Perlbox::VoiceServer; use Chatbot::Eliza; my $voice_server = Perlbox::VoiceServer->new; my ($computer, $he_says); $computer = new Chatbot::Eliza "Ordenador"; srand( time ^ ($$ + ($$ << 15)) ); print "\nUsuario: $ARGV[0]\n"; $he_says = $computer->transform($ARGV[0]); print $osiris->name, ": $he_says \n"; $voice_server->say($he_says, 3); --------------------- conv ----------------------- Su funcion es tomar como argumento lo que dice el usuario, generar una respuesta atraves de Eliza y reproducirla en forma de sonido. Que pretendia con este script? Pues bueno, ya que perlbox-voice interactua con sphinx2, tiene que haber alguna parte en su codigo donde almacena lo que el usuario dice por el microfono y lo compara con la lista de todo el vocabulario creado para generar la respuesta correcta. Tambien debe decidir que hacer cuando esta no coincide con ninguna entrada del vocabulario, que mas bien es mandar un mensaje a pantalla del tipo: "Didn't understand" (creo que era asi). El objetivo planteado era que cuando el usuario dijese cualquier otra cosa diferente a lo que contenia el vocabulario creado, perlbox-voice lo interpretara como algo que debia ser enviado a Eliza para que esta respondiese. Buscando toda una mañana de funcion en funcion comprendiendo el funcionamiento de perlbox-voice di con el lugar correcto. En el directorio /usr/lib/perlbox-voice hay un fichero llamado "PerlboxListener.pl" hacia la mitad del mismo encontramos unas lineas como estas: if( not $found_flag and $use_magicword and ..............){ super_handler( GARBLED_STATE, $this_command); } elsif(..................){ super_handler( LOOCKED_STATE ); } elsif(.........................){ super_handler( GARBLED_STATE, $this_command); } Pues bien, justo despues de los dos "super_handler( GARBLED_STATE, ...)" debemos añadir la llamada a nuestro script de esta forma: system("/usr/bin/conv \"$this_command\""); Y tan facil!. Dado que lo que nosotros decimos se almacena como os podeis imaginar en $this_command, podriais hacer cualquier otra cosa con el. Despues de probar todo esto, y ver que no ha sido tan dificil su proceso, llegan las decepciones. Cada problema peor que el anterior. Primero tenemos el mismo problema que con "randsal", aunque nos contestara a lo que nosotros le decimos, no podemos llamar otra vez al dispositivo de sonido y que la voz se reproduzca. Segundo y el peor de todos los que me he encontrado, es que sphinx2 entiende lo que le da la gana. Esta bien que no soy ingles y que mi pronunciacion no es perfecta pero, esta claro que se saca cosas de donde no existen. No he probado con sphinx3 y sphinx4, cada uno ocupa mas espacio que el anterior, habra que comprobar si lo utilizan provechosamente. Tercero, no siempre que hablamos o decimos algo que no este en el vocabulario tiene que ser para hablar con nuestro ordenador. Aunque esto no seria muy dificil de solucionar. Por ejemplo, perlbox-voice permite usar lo que se llama una "magic word", esto es una palabra que debemos pronunciar unos segundos antes de lo tenemos en el vocabulario para que sepa que queremos interactuar con el. Asi no se produciran cosas accidentales mientras no digamos la "palabra magica". Lo mismo abria que hacer para hablar de tu a tu con el ordenador, por ejemplo mi ordenador se llama "Prophecy", tendria que decir primero esta palabra y despues comentarle mis problemas para que me responda. Aunque yo cuando hablo con un amigo no estoy diciendo a cada frase su nombre. Aun queda mucho trabajo por hacer, pero ahora el "objetivo" tambien esta en vuestras manos. ...................... .. 06. CONCLUSIONES .. ...................... ...................... Muy poca cosa que decir aqui. Nada mas que, la mayor parte de los problemas con los que me he encontrado son la falta de un software de calidad en españa para dichos usos (ni por asomo digo que todo el software sea malo, porque ciertamente, no lo es). He tenido muchas dificultades a la hora de encontrar un simple "botchat" de fuente abierta y, aun despues de todo, resulta que no es español y, si le buscamos mas las cosquillas, resulta que hasta el Dr. Abuse para Windows se comporta mas como un amigo que Eliza. Quien me diera al Dr. Abuse con el codigo fuente y para linux... De todos modos puede que el problema pueda haber sido la busqueda infructuosa por mi parte. Si alguien conoce algun software para linux que pueda brindar mas posibilidades porfavor hacermelo saber. No se, quizas el problema puede que sea el haberme adelantado un poco en el tiempo, es decir, por ejemplo, primero se creo el festival, y luego salieron a la luz parches o pluggins para que se reprodujera la voz en otros idiomas, entre ellos nuestro querido español. Por lo tanto, nadie dice que dentro de poco alguien no pueda crear un pluggin para el "sphinx" que reconozca voz en español u otras lenguas. Todos sabemos que, por el momento, el "ingles" es el idioma que mas resistira en el futuro, casi todos los demas estan condenados a la muerte o desaparicion. Pero, creo que estamos acelerando demasiado este proceso. ................. .. 07. SCRIPTS .. ................. ................. Aqui pongo todos los scripts necesarios para realizar lo aqui descrito en forma codificada. Algunos solo deben añadirse a los directorios adecuados y alguno de ellos sobreescribira al original. Asi: perlbox-voice -> Sustituir por el original en /usr/bin pbox-voice-lc -> Añadir en /usr/lib/perlbox-voice/ randsal -> Añadir en /usr/bin conv -> Añadir en /usr/bin PerlboxListener.pl -> Sustituir por el original en /usr/lib/perlbox-voice pv -> Añadir en /usr/bin * El archivo "saludos.txt" lo teneis que crear vosotros y situarlo en /usr/share. Le pasais el "uudecode" y tendreis los programas a vuestra disposicion. ------------------------- Scripts --------------------------- begin 644 Scripts.zip M4$L#!!0````(``UAYC(]>$X%!P$``+,!```$````0T].5FV044O#,!#'W_,I MSMJ'%ENJB"_I5I@B*@@.E;TX'6E[NF";E"2;SD_O+:5EB"]YN/O=[W^YXZ-L M8TU62I5U:!K&-A:ATLHZH1SXKSQ1Y[0K-%TW>NUL*5VG%^W<@?D3/6[B#TLI7U&$S_G4X+A5_YGH[" M2K?=QJ%)(%S3F-C9.&=CE02$_@F"X,'4J$2M#2W-K!&JCL#)%N&-C"&<^'EY@ZC'\@:+I[22N8$M2)%HTH]H>I:L#`'/E2E1E7!Q_IY= MS9:?()J"[Y3;-DYYDM^--KG@Y(>.8O=?T,V.*;7@9?-^U3`FDV\U)2:](1UZ M^[V67[[.3TYLHW$('6N0Y+DD5%#JBO:9'V87<4-]^V_J-4I#!VT7\4=V^9E= MSK^S>#E;SN&Y4.]HSI7@`J7XC5P\*4@)-J@%)I+Z1I1MX;6;/3-NDLYDU#7C MT531;>@(O-*:5,DRLVJF$OE^?Y,+%*IG#:=."E.2(LTTF<)&0Q#M>QQ-;5RZ M9#M@Z+4=1?YQ!>NNT,(F[+>1M>?;M9`T')_=>P!&$A7VR-G7TU)D0JT87UM3 MC*.4"?*;T'NP4XKM"9>8(7!,$0RM*I7F4*"V.WE6Z#Q!#:JBC;V+&2F#OVS* MIDJ@LR;<>[8?U,9M/BPC8W#589FOB=_L/IOA6:T2Q/7P@/8'@I_Q[,I M7H<`\XP(PAW@8+BX';8Y;\9-LX?.CHJ.KPVJ]`CD^R^"]@Y@U`;N%$%W6COZ M?_2^:^FM'TUEI97[J=0)_@502P,$%`````@`-V'F,EN?P2H(`P``Q@<```T` M``!015),0D]87U9/24-%G57;CM,P$'V?KS"A@B+19@&!D%9>"1`W:;D((5[* M*G*3:6+%L8WM=%O0?BQ_PCA)N^T*MKN\Y#*9<^;X9#R^>R=MO4OG4J<6G0)H M/;+<:!^$#NST_6[/&RF')"3N5&@4KHMA&Z,+X*VD$C&GO=4"W$#]9Z7XO9"ZZ+-)`&N^, M)P4;O?[X[=?]=Y\^O+Y_,4W2Z?[:'G3JV=U0H6:Y0Q&0A8I4%]+%#TU-#^,# M',^*MDG1G,KWW`9CRP M1?(#W$6PJBVE_C_RK;%XO;'IJ22H1C>E5EML;5Y(Y\-#)@+1VL""8D$Q7#5-%O,V,=(SP?'0O,2FNEX?P!,J'Z1N M3>LW(J(_>]2'D5V=BWA!Y?$:ENOQ&[7%GEI?"8<;5-J8`E5*:TR?U;N*+U=] M,^@_)%^A.4P0K\:B'K_Z]/'-P^0DF=[JOW)F[T`HD0=>J]W^_ESG[VM:Q44,@\WXDSSUCEBG1("E-!E2T6RSH;;X54# M9!O?V@M#?D;3]*]R4_"$NUV1B`#_^+*O^&X'`LR,C9Y>>KO'-UFB\Q3FTZ/G M0,]SXV589PJ7M-@G8)58>]/J@C^""I7-YLZ<>W2\,3^E4@(*]'4P-NNG!]=& M(S2BE#E7G?7Q7,GZP%'_(9-Q-"^%XD]IY,V&]5S*T[*L`O=BS;Q"M.P+SCB`>/0-(V][WH6Z/_&&V;CS M:^W>D7`!M/%V@2H_#)S$I`';;5I"&VCCAG6W\`*?GU[14B!6H%A+5APE-?7_[S>RNI%V!/^ZN]X[VQ9)V M9G:^=G9F=LM?-)(H;$Q=O[%BH0?UM5'N_*4_3@_.79OY$?OKB<-)L-J$[GP1 M0\6NPJD5,S@+7;@,[@!>P]%AZ_"P]>(U7(S&<-1L'B%&-XD700BCA>4SN+"B MP(:YMQ2Y.>!9:2[8.PEL3<74PHA,R M!E'@Q&LK9&W8!`G8E@\AF[E1'+K3!(5T8[#\60-97`8SU]D89?R2^#,60KQ@ M$+-P&1$/]/+N\AK>,9^%E@=7R12Y2`T"%G)+7Z(%F\$4J1#\&[0$WC`])#X=:NY\&401(Q)_%J1AE!X@S=RQOXL3L<=B_'-VT$ M)?/$P.Z8(.0N4?=(%P4*+3_>(-]&^:(W/'F/"-T?^N?]\0WR#F?]\65O-(*S MP1"Z<-4=COLGU^?=(5Q=#Z\&HYX),&+$$KKR(UIUN%E0=S,66ZX7D;PW:,4( MN?)FL+#N&%K39NX=\F2!C3[\M*V,LN4%_IP+AT8)IE;8!M7<@#7H^[99@Y??P9BA2AA<>9:-9ALEA/[B1;,&/P113)`778#FT>'A M8?WP1?-;@.M1U_C?!`?I">=H?Q+<7'DMN:`B.W17,:P\:Q-QR=*590=^'`:> MB^K`58!JMG$1X(OKH^J78HTY8;`4EHI6"]?_=`3HYK'/?(XUQR5L_N7RX`_= M$R>:0HE'5GQJR,A2OR-/+[45$#-]DRIHM5#L<':%4FY:K9/`=]QYJS4B[V5M MHZQ!\G53J;8Y/JT<.Q;/J)LH1B>'T?ONL/O#>6]R/CCY^V1P->X/+O8TW122J[*.',Z`]]WXU=RW/_R.>-="Y.!I=G_7>3 MLZON^#W-OM^[_/"Y]'YPT2O=FZ6&J6FGD3D!XCNE]EYY9:&WHU_;7!E)*&V+ MD=;0YQGVNJ MQSS:PEPP*R3?B8(EB]&CYCJ5Z\O3WG`T'@Q.,RZ0S`M.QO57&([0>R-:\.BQ M/%+C0@MF.I%WW2'J^525`XE\LTV$@A^N_`<)]?[1'^MTB-!+7:@%AG_V"9=^ M`7G4O&^XKBZ_T%HN;E(MWZP]GG0C0L*1K?99N;;=E&!6W`(];I=,/1X M>-W;V\ML.PT"C^'N&(<)TP'/NN0QZ.,U_T+@;#F\G%X+3' M\5Y]0ZHOXQ;+@_IC.._.KSG.`89:ZX"PXLU*;`41K:09+!GN"1N(O"`V#)*N M;`?+):JNWK6Y5Z-I+8]Y0)O4)N(@RPV\720(-(GP4SO[AICH#"R1VA%)IQ^@$A>:CS=V#L8M2/#CN^JB`.]PGL_$M M-8Q4S:;G1/PL$L/Y=AE0%E6;JC4WFD>(/TNLQ]A M%%V@!@?/V`(.:CN\O0:?']+E/26"\!_\9LAB26>/Z#N,(,._\@X4!!RCJK2,]WMC#&D0XA"4W M*6./+S7^C%ZU6[_ZYGY0/_;9NJ)MEL+4Y=,DMR=/8VTWEMEBEB'5:#CD6;0? MT`Z'10VF\H'8(2C-%[A,!&?P@F#5P@P1.-8:8YJ%N;4;MXPPP4C#TZ4*G]Z@ M[0$?RAQ]B<@B$1FL^5;+H66="+)<'AJDZJTBMOS>L`9D>,EZBE*IFJ4_2RG\>H%N5N&A)R+F MWJ2XQ]7/J>/9"XS''"#SQ;+CXKY,RHUQ.7,U\-`%6=A":R6K%-QU*H7`F%,' M$?D\:T5[;0=X6*QOA\HV*!A(,,4X[NP*FQI]_.FS9S$U^T4)IFH3K)IG'@LK MVIY>$[JIJACW*C/IX[U*4CX+R4FU_VS\PK.XCZ;X;[\!5="Y+#"A)GW9[.DD MS(LTVB*L8-[V7.J%O/"I&:#QR\?9UQ];L$TXA8A2D(KY517V&_N'#5W+5'_[ M,`\@PA(.BSMT'UXM6ND:TJ#=*$I8YK4T254G%WF,K3!1TO@6;GV_,ZRAW=7, ML6WC6):PY>0"7V'(BC68/:"X8('D11*'FM$AIH* M6.!/<9_TD0R/'YHD0G?D\A3CTJ_(FF=7HH7KQ-4\'7"HN)TXGC5_(`O9,89Z MK123&)J`HN5#:Y#;66>'#)Z#-_0%6W"E0FZKF:FX\"C!544)5I)F+X#\WA$]PJ M#&PRG#);43.1JAIH-+;E3>VB27NON*8T5:6RPU*:=%7JW'#;:8"9.3"3X^'; M[33;4-EWWR@9-:=6^4)QHVH5VOONUU]GZ#GG%%(U0=GOL)_3^FG?_;D05/75 MZE2^J.QKF3NA4&A"]$:U&)!!]>Y.T2OX;\O+]!*T5C!,=9O`!F/B<@=79NEO MI0*X%KPI]K$MAD7XRH/6`0IVP'6LN)E@5_3U,(&-F.<4Z9"Y$'5"?0U_OL6U M,H8>M,W\XPCDG?A>\$HH6`NR+9SOWU0.3"W[-G;MVV@+$',$>X%!T?(C(=>: MI0=?"QI\!]+Z5(10LFTX)DR;.TZ#_*\:PMYHWT'[$]3MV,,\A#*4)G^QT=HQ'#;E3R52M]EJYH;" M'`V$A3JUS@J?K+G-EM8G29XTO([AE?E2H^2L9^A0L;>&U^9+J(L?JCS$KE\H&DVFPCG^I%X>X4O<8`9-/^#69`3+N%%^A(O M<*8%U+_=$FW*K"4 M.0@*U'R]2R4J">1[BEL9[Z@+==Y.9\DR-X)&P%LZ/G?[.CDF/7,GKOL!=7SI MD3RTD;UJR*N%3Q@$L%H$/E:K2VN5?L%'J.,#GY>\7+Y06YI_T$B]GJ*F);^4 MAB+#*2'YBHXV36F5I".GT49S9AS+(PZ%B),TWO`6QHZF` M^$_/)Y_NWRJI9JO.UDC8DRI0H6->47Z6+\,NN<%%?SA,!R5-YJ2=1,?B;*]U#-4)1Z0NA)5CR6%P59/IIF:'G-PV&5^H57 MGH5H"@>BV9D%5`Y^`%7)<6'/W8K&6_@9_$&ZU>[N=3^+CPR!$Z,B7JX(]804 M9>>G.".$I,-YUU+;QLIQA>CQ:G4$_17R,O`;Y+-I9AO\HW0SJ632+W9$LA.Q4B`K[N$L\F^@NDOE6P1U? M^CVN)'ZDA_5C%IMY,IH7AX2B%V-\:KVFU9:&''[KN,SCL5X&R\JOU8KYU?=5 M_-O0ZC`1('A3PY_0%)#V:]/OCNM;7CZ7/'Y3HSPEZ_P^147.FVF(M*B,L]_A MX->#O)B04ZJ!7F&CT&S,S;*+7H;W`+'FD\0PMR@24VEE3419?N<'D?S'SP). M!A>U4D[Q3ZWO(;K_.1T91COP!M&.BW6Y/`=0(+7M2^?%[%!:#:8&KC0AE*)9 M-RJ`.^2TY*A\LUY>W>D0_$8+I;U3*B0M?M'\Y%GZ'D;R^(\I.TQ#SP`=Q ME\S@1&>!S^9=#YF)/$=#Z(A06S(A:E MC!S"Z.9R<#7JCPPC%U!V?VC!3.F:1'X?*4O3/-=GIM`):F".\_%K<&S%9B1) M@K4!ATU\R9/!`XU%AVW\$I-^%T/LXCE7I[W1R;#/[^H8QE"BI*KF.K;%+2K1 M!*4N?4I8%MGI/1%%TEX/L/H8&,99>L5-32CP_P4F6*)%S`7B',LK/BTZ+[RE M4U6AA1G+"9^Y=$T!G6O(?D]<+*LRRU2Z=#3IVUXRHPM\HN[GERSM6PS>U19A M99H8L@C5%C&ID_2UK<)\"&QKFGA6N%&?N[.9!O7P8?B#8/H!)4_-!_R^I!2* M]R=:^/422Z),].[U^/U@B,XCKZ2>F/)6:F7)2%E2>^CB,03A')/;PJ74"EU* M)4CE7BJ']EE6Z'J4"6$O)W`U^;#*JGR"O-.OD/Z+QQE`@]&(6L4P>SY?KY8/XW`F]H[ M])XJC#7E;27U=7-LO-"@ASWC&$P'.`L_")@T![WZ;&N2_#SIAPRN4A@GY),0 MW]1MS.9V`(T/VT'@QAG<.!?*#:*HJ-PBM"X[14W3]%<&Y=M^4RMFQ-Y&;(2# M^I=G-6?EHTS34^"@$8S#_B3D&OO0DDN-W]7#/[X/2DDU6.*1-8$5DG/%%U!+ M`0(4`!0````(``UAYC(]>$X%!P$``+,!```$``````````$``0`D@0````!# M3TY64$L!`A0`%`````@`+&'F,FW,M(SG`0``>`4```T``````````0`!`"2! M*0$``%!"3UA?5D])0T5?3$-02P$"%``4````"``W8>8R6Y_!*@@#``#&!P`` M#0`````````!``$`)($[`P``4$523$)/6%]63TE#15!+`0(4`!0````(`-1H MYC+6O%%GY@X``.LK```2``````````$``0`D@6X&``!015),0D]83$E35$5. M15(N4$Q02P$"%``*``````!.9N8R-!KK3B$````A`````@`````````!``$` M)(&$%0``4%902P$"%``4````"`!K4=LRY@GS*AL!``#?`0``!P`````````! F``$`)('%%0``4D%.1%-!3%!+!08`````!@`&`$T!```%%P`````` ` end ------------------------- Scripts --------------------------- ................... .. 08. DESPEDIDA .. ................... ................... Mis queridos humanos, dado lo interesante de este tema, me gustaria que si alguien hiciese nuevos descubrimientos o consiguiera alguna mejor comunicacion con el PC, me lo hiciera saber. Repito que tecnologicamente no estamos a la altura de ciertos paises pero nadie nos impide que un futuro podamos incluso llegar a estar mas arriba que ninguno. Seria de mi agrado que alguno de vosotros ya os estuvierais comunicando con vuestro ordenador. Recordad una cosa durante el resto de vuestra vida: Cuando las maquinas nos superen en inteligencia, fuimos nosotros quien las creamos, nosotros fuimos y somos sus padres, hemos cambiado el curso de la evolucion y, si algun dia hay que buscar algun culpable, no os olvideis: FUIMOS NOSOTROS! Para terminar, otra frase celebre de Isaac Asimov. -> Si el conocimiento puede crear problemas, no sera a traves de la ignorancia que podamos resolverlos. by blackngel *EOF*