Sistemas

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 el mes de julio del 2008

Historias relacionadas

Volver al inicio