Parlant amb Mbrola les noves incidències del Mantis Bug Tracker

Situació: tenia un parell d'hores lliures aquest matí d'agost, i m'he fet un script que agafa les incidències del Mantis Bug Tracker (des dels titulars RSS) amb curl, i comprova si hi ha una nova, en cas de que sí, l'ordinador parlarà amb espeak i mbrola, el sintetizador lliure de veu computeritzada. ;-)

Tinc les tres veus, la del speak amb festival, la del mbrola es1 i la del mbrola es2:

Veu Festival
espeak.mp3 + un exemple

Veu Mbrola es1
mbrola-es1.mp3 + un exemple

Veu Mbrola es2
mbrola-es2.mp3 + un exemple

I ací l'script (amb el RSS llevat, perquè és el meu usuari):


#!/bin/bash

# Comprovacio 2 on creem el fitxer /tmp/segon_resultat.txt
curl -s 'xxxxxx_aci_el_teu_RSS__xxxxxx' |sed 's/\n/g'|grep 'title>'|sed -e '/^\// d' -e 's/title>/ /g'| head -n 5 | iconv -f utf-8 -t utf-8 > ~/segon_resultat.txt

# Li llevem les dues primeres linies on diu "MantisBT sepam - INCIDENCIAS"

tail -n+3 ~/segon_resultat.txt >> ~/segon_resultat2.txt
rm ~/segon_resultat.txt

# Netejem el fitxer per a llevar-li el numero de ticket

cut -c 11- ~/segon_resultat2.txt > ~/segon_resultat.txt
rm ~/segon_resultat2.txt

# Ara anem a comparar-los: resultat.txt i segon_resultat.txt i si son distints crearem "resultat_final.txt" amb
# les incidencies noves del Mantis.

grep -Fvf ~/primer_resultat.txt ~/segon_resultat.txt > ~/resultat_final.txt

# Ara anem a contar les linies del fitxer final "resultat_final.txt" i si tenim al menys una, avisarem de que anem a parlar.

contadorLinies=$(cat -n resultat_final.txt | tail -n 1 | cut -f1 | xargs)

if [ $contadorLinies \> "0" ];
then
echo "es major que 0"
sed -i '1s/^/Nueva incidencia en el Mantis. \n/' ~/resultat_final.txt
else
echo "no es major que 0"
fi;

# Aquest 'sed' ens serveix per a esborrar la paraula 'Privado' del títol, que sempre deixa l'RSS del Mantis
cat ~/resultat_final.txt | sed -e 's/\//g' > resultat_final2.txt

# Ara parlem amb mbrola i tornem a fer sonar el 'beep' per acabar
mv ~/resultat_final2.txt ~/resultat_final.txt
cat ~/resultat_final.txt | espeak -v mb-es1

# Esborrem els fitxers generats (execepte primer_resultat.txt, que és el controlador
# amb les últimes incidències) i tanquem.
mv ~/segon_resultat.txt ~/primer_resultat.txt
rm ~/resultat_final.txt

Alguns recursos:

Comandos.- eSpeak, sintetizador de voz libre
https://travesuras.wordpress.com/2012/01/11/20120111-1/

Apuntes sobre "texto a voz computerizada"
http://jcatala.net/categoria-gnulinux/apuntes-sobre-texto-voz-computeri…