Nouveauté, j'ai supprimé l'interface graphique que je trouvais trop lourde mais en contrepartie le script peut maintenant vous parler si espeak+Mbrola est installé.
De plus tout les paramètres sont accessibles dans le script et on peut même rajouter des commandes personnalisées et des liens vers des pages internet.
Toute les fonctions de google2voice sont maintenues. Mais maintenant le script à changé de nom, il s’appelle maintenant Google2Ubuntu.
Voici le script:
#!/bin/bash
###################### Dépendances ########################
# 1 Espeak // Générer le son #
# 2 Mbrola // idem #
# 3 xdotool // émuler le clavier #
# 4 wmctrl // manipuler les fenêtres #
# 5 wget // envoyer fichier sur intrnet #
# 6 acpi // information sur la batterie #
# 7 notify-osd// Notification visuelle #
# 8 sox // Enregistrement #
###########################################################
###########################################################
# Pour utiliser ce script, veillez à bien avoir installer #
# les paquets nécéssaires. Puis, vous devez customiser les#
# commandes ci dessous, soit en ajoutant des liens vers #
# des pages internets de votre choix ou des commandes #
# personnalisées. Soit en modifiant directement le script #
# afin de modifier les commandes prédéfinies. #
# Pour plus d'éfficacité, associez ce script à un nouveau #
# raccourci. #
# #
# Une fois que vous avez personnalisé les commandes et #
# installé les dépendances vous pouvez testé le script. #
# Pour cela, rendez vous dans le terminal, et déplacez #
# vous dans le dossier où se trouver google2ubuntu.sh. #
# Puis, tapez chmod +x google2ubuntu.sh pour permettre #
# l'éxécution du script. Enfin tapez la commande suivante #
# ./google2ubuntu.sh #
###########################################################
####### Paramètre lié à l'heure et à la batterie #######
HEURE=$(date '+%H')
MINUTE=$(date '+%M')
SECONDE=$(date '+%S')
BATTERIE=$(acpi -b | grep "Battery 0" | awk '{ print $4}' |cut -f1 -d%)
####### Paramètre lié à la voix utilisée par Espeak #######
# Vous pouvez choisir de modifier la voix par défaut #
VOIX=/usr/share/mbrola/voices/fr1
TYPE=mb-fr1
####### Temps d'enregistrement #######
# attention ne pas trop augmenter sous peine de lenteur #
RECTIME=3
####### Zip code de votre ville #######
# à modifier selon votre position #
ZIP=FRXX0076 # => Paris
####### Vos application préférées #######
LECTEUR="vlc"
SON3="vidéo"
EDITEUR="gedit"
SON1="éditeur de texte"
WRITER="libreoffice -writer"
SON2="office"
NAVIGATEUR="google-chrome"
SON4="internet"
####### Raccourcis vers des pages Internet ########
# SP = Raccourci sonore pour accéder à la page #
# PAGE = adresse de la page #
# IL n'y pas de limite en nombre, vous pouvez en #
# rajouter autant que possible #
############################################################
SP[1]="gmail"
PAGE[1]="www.gmail.com"
SP[2]="facebook"
PAGE[2]="www.facebook.com"
SP[3]="actualité"
PAGE[3]="http://news.google.fr/news/section?pz=1&cf=all&ned=fr&topic=t&ict=ln"
SP[4]="forum"
PAGE[4]="http://forum.ubuntu-fr.org/"
####### Ajouter des commandes personnalisées #######
# SCMD = Raccourci sonore pour lancer la commande #
# MACOMMANDE = Commande personnalisée #
# IL n'y pas de limite en nombre, vous pouvez en #
# rajouter autant que possible #
############################################################
SCMD[1]="écran"
MACOMMANDE[1]="xdotool key Super+n"
SCMD[2]="zoom"
MACOMMANDE[2]="xdotool key Alt+p"
scmd[3]="heure"
MACOMMANDE[3]="xdotool key Alt+h"
scmd[4]="recherche"
MACOMMANDE[4]="google-chrome"
scmd[5]="terminal"
MACOMMANDE[5]="xdotool key Ctrl+Alt+t"
scmd[6]="windows"
MACOMMANDE[6]="VBoxManage startvm winxp"
####### fonctions nécéssaires au fonctionnement #######
# fonction qui fait parler le script
PARLER()
{
espeak -v $TYPE -s 145 -p 40 "$1" | /usr/bin/mbrola $VOIX - -.au | aplay
}
# fonction qui sert à acquérir la voix
ACQUISITION ()
{
PARLER "$1";
notify-send "Parler maintenant" &
rec -d tmp.flac & sleep $RECTIME ;
killall rec;
sox tmp.flac -r 16000 fichier.flac;
killall sox
}
# fonction pour l'envoie et la tradution du fichier audio
TRADUCTION (){
TEXTE=$(wget -q -U "Mozilla/5.0" --post-file fichier.flac --header="Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=fr&client=chromium" | sed 's/^.*\[{.*:"\(.*\)",".*$/\1/') ;
rm fichier.flac
rm tmp.flac
}
# fonction pour effectuer des recherches
RECHERCHE ()
{
sleep 2;
ACQUISITION "Quelle est votre recherche ?";
TRADUCTION;
PARLER "Voici les résultats de recherche trouvés pour $TEXTE" &
$NAVIGATEUR http://www.google.com/search?q="$TEXTE" &
}
#fonction pour gérer les fenêtres ouvertes
CHANGER_WIN ()
{
sleep 2;
ACQUISITION "A quelle fenêtre donner le focus ?";
TRADUCTION;
wmctrl -R $TEXTE ;
}
#fonction de notificaton de variables d'environnement
WORKSPACE ()
{
case $TEXTE in
"il est quel heure" | "il est quelle heure" | heure ) PARLER "il est $HEURE heure et $MINUTE minute";;
batterie ) PARLER "il reste $BATTERIE% de batterie" ;;
esac ;
}
# fonction d'action sur les fenêtres
WINDOW ()
{
case $TEXTE in
menu | application ) xdotool key "Alt+F1" ;;
maximiser ) xdotool key "Alt+F10" ;;
minimiser | réduire | séduire ) xdotool key "Alt+F9" ;;
fermer ) xdotool key "Alt+F4" ;;
redimensionner ) xdotool key "Alt+F8" ;;
monter | monster ) xdotool click 4 ;;
descendre | "des cendres" ) xdotool click 5 ;;
esac
}
#fonction de mouvement (boucle)
MOVE ()
{
case $TEXTE in
haut | goo ) ACQUISITION "Combien de fois ?"
TRADUCTION ;
for var in `seq 1 $TEXTE`
do
xdotool key "Up"
done;;
bas | bah ) ACQUISITION "Combien de fois ?"
TRADUCTION ;
for var in `seq 1 $TEXTE`
do
xdotool key "Down"
done;;
droite ) ACQUISITION "Combien de fois ?"
TRADUCTION ;
for var in `seq 1 $TEXTE`
do
xdotool key "Right"
done;;
gauche ) ACQUISITION "Combien de fois ?"
TRADUCTION ;
for var in `seq 1 $TEXTE`
do
xdotool key "Left"
done;;
entrée ) xdotool key "Return";;
tabulation ) xdotool key "Tab" ;;
esac;
}
# fonction relative à internet
INTERNET ()
{
case $TEXTE in
"quel temps fait-il" | météo ) PARLER "Voici la météo de la semaine" & $NAVIGATEUR http://fr.weather.com/weather/10day-$ZIP?cm_ven=yahoo_fr&cm_cat=citypage&cm_ite=weather&cm_pla=10day & ;;
"va lire mes messages" | message | email | mail ) PARLER "j'ouvre votre boite mail" & $NAVIGATEUR https://mail.google.com/mail/ca/#inbox & ;;
esac;
}
#fonction relative aux applis
APPLICATION ()
{
case $TEXTE in
internet | "$SON4" ) $NAVIGATEUR & wmctrl -R "$TEXTE" & ;;
"éditeur de texte" | "$SON1" ) $EDITEUR & wmctrl -R "$TEXTE" & ;;
office | "$SON2" ) $WRITER & wmctrl -R "$TEXTE" & ;;
vidéo | "$SON3" ) $LECTEUR & wmctrl -R "$TEXTE" & ;;
esac;
}
# fonction de gestion des fichiers
ACTION ()
{
case $TEXTE in
copier ) xdotool key "Ctrl+c" ;;
coller ) xdotool key "Ctrl+v" ;;
couper ) xdotool key "Ctrl+x" ;;
"tout séléctionner" ) xdotool key "Ctrl+a" ;;
esac;
}
#fonction pour taper du texte
ECRIRE ()
{
NOTE=oui
while [ "$NOTE" != "non" ]
do
{
ACQUISITION "Que voulez tapez";
TRADUCTION;
case $TEXTE in
stop ) NOTE="non" ;;
pause ) PAUSE ;;
*) xdotool type "$TEXTE";;
esac
}
done
}
# fonction pour ouvrir des dossiers
OUVERTURE ()
{
case $TEXTE in
"ma musique" | malik ) nautilus $HOME/Musique ;;
"mes images" ) nautilus $HOME/Images ;;
"mes documents" ) nautilus $HOME/Documents;;
"mes vidéos" ) nautilus $HOME/Vidéos ;;
"bureau" ) nautilus $HOME/Bureau;;
esac;
}
#fonction pour ouvrir une musique
CHERCHE_SON()
{
ACQUISITION "Titre de la chanson ?"
TRADUCTION
ZIC=`locate -i "$HOME/Musique/" | egrep -i '\.(mp3|ogg)$' | grep "$TEXTE"`
rhythmbox-client --play-uri="$ZIC"
}
# fonction pour controler rhythmbox
RHYTHMBOX_CONTROL ()
{
case $TEXTE in
"lancer musique" ) rhythmbox-client --no-present; rhythmbox-client --play ;;
"pause musique" ) rhythmbox-client --pause ;;
"quitter musique" ) rhythmbox-client --quit;;
précédent ) rhythmbox-client --previous ;;
suivant ) rhythmbox-client --next ;;
"notification musique" ) rhythmbox-client --notify;;
jouer | ouai | jouet ) CHERCHE_SON ;;
esac
}
# fonction pour gerer vos pages internet préférées
CONNEXION()
{
for (( i=1; i < ${#SP[@]}+1; i++ ));
do
{
if [ "$TEXTE" = "${SP[i]}" ]; then
{
$NAVIGATEUR ${PAGE[i]} &
}
fi
}
done
}
# fonction pour gérer vos commandes perso
CMDPERSO()
{
for (( i=1; i < ${#SCMD[@]}+1; i++ ));
do
{
if [ "$TEXTE" = "${SCMD[i]}" ]; then
{
${MACOMMANDE[i]} &
}
fi
}
done
}
# Cette fonction nécéssite un de mes autres scripts permettant d'automatiser les
# appels de Skype
SKYPE ()
{
ACQUISITION "Qui voulez vous appeler?";
TRADUCTION;
PARLER "Appel en cours : $TEXTE"
$HOME/.gnome2/nautilus-scripts/appel.sh $TEXTE
}
# fonction de routage
FONCTION(){
ACQUISITION "Je vous écoute ! Que voulez-vous faire ?";
TRADUCTION;
case $TEXTE in
appeler ) SKYPE ;;
"lancer musique" | "pause musique" | "quitter musique" | précédent | suivant | "notification musique" | jouer | ouai | jouet ) RHYTHMBOX_CONTROL ;;
"mes images" | "ma musique" | Bureau | "mes vidéos" | "les documents" | "mes documents" | malik ) OUVERTURE ;;
écrire ) ECRIRE ;;
haut | goo | bas | bah | gauche | droite | entrée | tabulation ) MOVE ;;
maximiser| menu | minimiser | fermer | redimensionner | monter | monster | descendre | "des cendres" ) WINDOW;;
quitter | stop | arrêt ) echo "EXIT@@" ; CONTINUE="non" ; exit;;
"$SON1" | "$SON2" | "$SON3" | "$SON4" | internet | "éditeur de texte" | office | vidéo ) APPLICATION ;;
heure | batterie | "il est quel heure" | "il est quelle heure" ) WORKSPACE ;;
météo | "quel temps fait-il" | mail | email | message | "va lire mes messages" ) INTERNET;;
couper | coller | copier | "tout séléctionner" ) ACTION ;;
google | recherche ) RECHERCHE;;
fenêtre ) CHANGER_WIN;;
"" ) PARLER "Attention, parler clairement dans le micro pour avoir des résultats" ;;
* ) CONNEXION & CMDPERSO;;
esac;
}
FONCTION
exit;
Pour l'installation, rien de bien compliqué, assurez vous d'avoir installer les dépendances:
sudo apt-get install espeak wmctrl xdotool sox notify-osd acpi wget mbrola
Pour l'installation de Mbrola, je vous invite à vous tourner vers la doc:
Documentation Mbrola Ubuntu
Une fois ceci fait, rendez-vous dans un terminal et déplacez vous avec la commande cd dans le dossier contenant Google2Ubuntu.sh
cd $HOME/Google2Ubuntu/Google2Ubuntu.sh
Rendez ensuite le script exécutable
chmod +x Google2Ubuntu.sh
Enfin lancez le script
./Google2Ubuntu.sh
Si il n'y a pas d'erreur et que cela fonctionnne vous pouvez associer le script à un raccourci clavier.
Voilà ce que cela donne avec un micro de mauvaise quaiité...
vidéo