Un "Robot" que lee las noticias de MasterMagazine en voz alta desde una consola de textos
Ya hablamos un poco (muy poco, a modo de introducción) sobre las consolas de texto en GNU/Linux, sobre la posibilidad de combinar comandos, y por lo tanto de sumar funcionalidades e incluso de programar en base a todo esto. Sabemos que todo está documentado y con el comando man obtendremos un manual sobre cualquier comando, por ejemplo "man ls".
¿Qué tal si quisiéramos que un "robot" nos leyera las noticias de MasterMagazine en voz alta? Eso es muy simple con GNU/Linux, aunque parezca mentira.
Primero y principal, necesitamos tener instalado un "motor de habla", o también llamado Text To Speech (tts), "texto a lenguaje hablado".
En Musix GNU/Linux, LinEX y otros sistemas derivados de Debian el motor de habla Festival ya viene instalado, pero si no lo encontramos o está mal instalado, ejecutamos en una consola de usuario root (administrador):
apt-get install festival festvox-palpc16k
Festvox-palpc16k es la voz castellana de varón.
Podemos probar qué tal habla nuestro robot, así
echo "hola, soy un robot y estoy a tu servicio" | festival –tts
Es decir que "festival –tts" lee todo lo que produce la salida de echo "lo que sea", entubado mediante el caracter |
¿Se entiende? Espero que sí, de lo contrario será difícil continuar.
Para lo que sigue se requieren conocimientos más o menos avanzados sobre comandos de consola en GNU/Linux, pero bastará con leer alguna documentación en internet sobre BASH, practicar y reflexionar un tanto sobre lo que estamos haciendo.
Ok, dijimos que queremos que nuestro "robot" lea noticias de MasterMagazine en voz alta. Necesitaremos algunos comandos
wget para descargar una página
cat para mostrar su contenido
html2text para convertirla a texto puro
grep para filtrar las cosas que no nos interesen
Todo esto se reduciría a dos comandos:
wget https://sistemas.com
cat index.html | html2text | grep -v "*" | festival –tts
¡PERO COMO PUEDE SER!
Bueno, no dijimos que fuera difícil, son sólo 2 líneas, lo único "raro" allí es grep -v "*", que sirve para descartar las líneas que contienen un *, dado que entorpece la lectura, pero bien podría no estar.
Existe una forma mucho más simple de hacer todo lo anterior:
elinks -dump https://sistemas.com | festival –tts
Elinks es un navegador web para consolas de texto, que puede producir una salida en formato de texto si le agregamos la opción -dump. Es decir que lo que se encuentra haciendo allí ese comando es entrar a mastermagazine, producir una salida en texto claro, y luego festival, el motor de habla, la leerá.
Nos restaría crear filtros para leer noticias enteras, pero ya supondría combinar muchas más ideas de programación BASH y sería verdaderamente más complejo, por ahora es suficiente como introducción.
Por Marcos Guglielmetti, el 09/07/2008.