Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#326 Le 28/05/2012, à 00:59

naruto2mars

Re : [Script] reconnaissance vocale avec google

Bonsoir,
tout d'abord je tiens à vous remercier de prendre du temps pour faire un script aussi utile.
Ayant tentais différent paquets, je n'ai rien trouver qui fonctionne, et votre script propose de faire exactement ce que je voudrais.
Cependant, je rencontre un problème : bien que mon micro (de ma webcam) fonctionne, impossible de faire détecter n'importe lequels des mots.
Je tiens à preciser que je suis  sur lubuntu, que la ligne
chmod +x installer.shis
n'a pas fonctionné. Peut être que j'ai mal fait quelquechose (j'y connais rien en script ou programmation ...).

Hors ligne

#327 Le 15/06/2012, à 08:58

Compte supprimé

Re : [Script] reconnaissance vocale avec google

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

Dernière modification par benoitfra (Le 19/06/2012, à 17:31)

#328 Le 20/06/2012, à 15:18

Compte supprimé

Re : [Script] reconnaissance vocale avec google

J'ai mis à jours le script, j'ai rajouté une fonction qui permet d'utiliser un de mes autres scripts "Appel Automatique Skype" afin d'appeler directement mes contacts.

Ensuite, j'ai modifié les fonctions de prise de note et de mouvement. Afin d'améliorer ces deux fonctions, j''ai fait en sorte de quitter la fonction quand on bouge la souris.

Voici une vidéo montrant la prise de note, c'est pas parfait mais mon micro est vraiment pourri
Vidéo de démonstration de la prise de note

Ensuite voilà le nouveau code:

#!/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" 2> /dev/null | /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 ()
{
    XDEB=`xdotool getmouselocation 2> /dev/null | awk '{print $1 }' | cut -f2 -d:`
    XFIN="$XDEB"

    while [ "$XDEB" = "$XFIN" ]
    do
        case $TEXTE in
            haut | goo ) XFIN=`xdotool getmouselocation 2> /dev/null | awk '{print $1 }' | cut -f2 -d:`
                     sleep 1 ;
                      xdotool key "Up";; 
            bas | bah ) XFIN=`xdotool getmouselocation 2> /dev/null | awk '{print $1 }' | cut -f2 -d:`
                     sleep 1 ;
                        xdotool key "Down";;
            droite ) XFIN=`xdotool getmouselocation 2> /dev/null | awk '{print $1 }' | cut -f2 -d:`
                  sleep 1 ;
                  xdotool key "Right";;
            gauche ) XFIN=`xdotool getmouselocation 2> /dev/null | awk '{print $1 }' | cut -f2 -d:`
                  sleep 1 ;
                   xdotool key "Left";;
            entrée ) xdotool key "Return";;
            tabulation ) xdotool key "Tab" ;;
        esac;
    done
}

# fonction relative à internet
INTERNET () 
{
    case $TEXTE in
        "quel temps fait-il" | météo ) PARLER "Voici la meteo 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 ()
{
    XDEBUT_NOTE=`xdotool getmouselocation 2> /dev/null | awk '{print $1 }' | cut -f2 -d:`
    XFIN_NOTE="$XDEBUT_NOTE"
    RECTIME="5"    

    while [ "$XDEBUT_NOTE" = "$XFIN_NOTE" ]
    do
    {
        sleep 2;
        ACQUISITION "Que voulez vous tapez";
        TRADUCTION;

        xdotool type "$TEXTE"
        
        XFIN_NOTE=`xdotool getmouselocation 2> /dev/null | awk '{print $1 }' | cut -f2 -d:`    
    }
    done

    RECTIME="3"
}

# 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 ()
{
    NOM=`echo "$TEXTE" | awk '{print $2}'`
    PARLER "Appel en cours : $NOM"
    $HOME/.gnome2/nautilus-scripts/appel.sh $NOM
}


# fonction de routage
FONCTION(){

ACQUISITION "Je vous écoute ! Que voulez-vous faire ?";
TRADUCTION;

case $TEXTE in
    "appeler centre" | "appeler maison" | "appeler alexandre" | "appeler thomas" | "appeler arnaud" ) 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;

Voilà, concernant l'autre script auquel je fais référence plus haut, il est dispo dans un autre fil de la rubrique Truc, astuces et scripts utiles.

Dernière modification par benoitfra (Le 20/06/2012, à 15:19)

#329 Le 21/06/2012, à 10:52

Compte supprimé

Re : [Script] reconnaissance vocale avec google

Bonjour à tous

J'ai refait un script d'installation qui se passe maintenant dans le terminal, plus de problème comme ça.
Il installe les dépendances et place la voix mbrola fr1 au bon endroit. Il vous demande ou créer le dossier google2ubuntu.

Ensuite, j'ai fait un pdf de présentation, tout est dans l'archive:
Celle ci se trouve ici

Google2Ubuntu

J'éspère que ça servira à d'autre.

Dernière modification par benoitfra (Le 21/06/2012, à 10:53)

#330 Le 21/06/2012, à 14:41

orel26ad

Re : [Script] reconnaissance vocale avec google

Excellent travail, je cherche quelque chose comme ça depuis longtemps.

J'ai décidé de faire une installation propre de Ubuntu et de tester avec ton dernier Installeur, par contre voici le message que j'obtiens :

orel26ad@spkr-lt-02:~/Téléchargements/Google2Ubuntu$ ls
fr1  google2ubuntu.odt  google2ubuntu.pdf  google2ubuntu.sh  Installation
orel26ad@spkr-lt-02:~/Téléchargements/Google2Ubuntu$ ./Installation 
...............Google2Ubuntu................
 
Script d'installation de google2ubuntu......
Ce script va installer les dépendances......
nécéssaire à l'utilisation de google2ubuntu.
Vous allez installer les dépendances........
 
         acpi alsa-utilsxdotoolmbrolasox curlnotify-osd         
 
Voulez-vous les installer OUI=o NON=n...
o
[sudo] password for orel26ad: 
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
E: Impossible de trouver le paquet alsa-utilsxdotoolmbrolasox
E: Impossible de trouver le paquet curlnotify-osd
acpi alsa-utilsxdotoolmbrolasox curlnotify-osd à été installé
 
Voulez-vous installer le fichier de voix....
Mbrola Fr1: OUI=o NON=n ?...................
^C
orel26ad@spkr-lt-02:~/Téléchargements/Google2Ubuntu$ 

Je crois qu'il y a un petit souci au niveau de l'installation des dépendances.

J'ai fais un test de l'ancienne méthode pour installer (installation manuel des dépendances) et j'ai eu quelques résultats sympathiques mais des erreurs avec mbrola.

Est-il possible d'avoir une nouvelle version de ton package avec un nouvel installeur sans le problème des dépendances?

Dans tous les cas beau travail! je compte utiliser ton projet dès que possible!!!!

Hors ligne

#331 Le 21/06/2012, à 15:04

metalux

Re : [Script] reconnaissance vocale avec google

Beau boulot benoitfra.
Par contre il faut relancer le script à chaque commande, n'y a-t-il pas moyen qu'il se met en attente sans le fermer. par exemple je consulte la météo et quand j'ai fini, je dis simplement fermer sans avoir besoin de relancer le script.
Comme pour orel26ad, l'installateur ne fonctionne pas mais à la création du dossier usr/share/voice/mbrola.
Du coup, j'ai installé manuellement les paquets de langues fr1 et fr4 à partir de synaptic et ça roule.

Hors ligne

#332 Le 21/06/2012, à 15:43

Compte supprimé

Re : [Script] reconnaissance vocale avec google

J'ai refait l'installateur j'espère que ça va marcher
J'ai aussi ajouter un script pour modifier les paramètres .
Maintenant les paramètres sont dans un fichier de config Config.cfg dans le home.

Je le poste bientot

#333 Le 21/06/2012, à 15:54

Compte supprimé

Re : [Script] reconnaissance vocale avec google

Voilà c'est bon le nouveau lien avec l'installateur refait.
Le script de paramétrage permet de modifier les réglages et les commandes/liens personnalisées.
Lien de téléchargement de google2ubuntu

Edit: J'ai rajouté une boucle très simple pour laisser le programme tourné. IL se met en pause après chaque comande lancé et attend que vous parliez. Si tel est le cas, il se relance et redemande une commande.

Dernière modification par benoitfra (Le 21/06/2012, à 16:40)

#334 Le 21/06/2012, à 16:39

orel26ad

Re : [Script] reconnaissance vocale avec google

J'ai réinstallé une nouvelle VM pour tester une nouvelle installation propre avec le nouvel installeur.
Le problème des dépendances est résolu, niquel.

Par contre un petit souci avec le fichier de voix :

Voulez-vous installer le fichier de voix....
Mbrola Fr1: OUI=o NON=n ?...................
o
mkdir: impossible de créer le répertoire «/usr/share/mbrola/voices»: Aucun fichier ou dossier de ce type
cp: impossible de créer le fichier standard «/usr/share/voices/mbrola»: Aucun fichier ou dossier de ce type
 
Le fichier de voix viens d'être ajouté......
 
Ou voulez placer votre dossier google2ubuntu?

Good Job pour les corrections très rapide!

Hors ligne

#335 Le 21/06/2012, à 16:50

Compte supprimé

Re : [Script] reconnaissance vocale avec google

J'ai modifier la ligne 50 du script d'installation j'avais oublié un sudo devant le mkdir
je mets à jour le lien tout de suite avec qq ajustement sur la boucle.


Voici le lien :
Lien de téléchargment de google2voice

Dernière modification par benoitfra (Le 21/06/2012, à 16:52)

#336 Le 21/06/2012, à 16:51

metalux

Re : [Script] reconnaissance vocale avec google

@orel26ad
Même problème, j'ai installé manuellement

sudo apt-get install mbrola-fr1

en attendant la correction de benoitfra wink

@benoitfra
Super la boucle qui met le script en attente (j'ai pas encore testé) mais comment tu l'arrêtes à la fin? Tu as prévu quelque chose?

Hors ligne

#337 Le 21/06/2012, à 16:52

Compte supprimé

Re : [Script] reconnaissance vocale avec google

POur arreter il suffit de dire  stop arret ou quitter chez moi il reconnait bien le quitter

#338 Le 21/06/2012, à 16:54

metalux

Re : [Script] reconnaissance vocale avec google

J'ai modifier la ligne 50 du script d'installation j'avais oublié un sudo devant le mkdir

Je l'avais rajouté mais j'avais quand même le message d'erreur, j'ai pas cherché plus loin.
Je reteste dès que  possible.
Edit: OK merci pour la réponse.

Dernière modification par metalux (Le 21/06/2012, à 16:55)

Hors ligne

#339 Le 21/06/2012, à 17:04

Compte supprimé

Re : [Script] reconnaissance vocale avec google

C'est bon j'ai trouvé et corrigé.
J'ai testé chez moi en fait il n'acceptait pas mon fichier de voix. Donc si le fichier fr1 n'existe pas je le télécharge.
et je peux alors le placer dans usr/share/mbrola/voices

Voici le nouveau lien:
LIen de téléchargement google2ubuntu

Dernière modification par benoitfra (Le 21/06/2012, à 17:25)

#340 Le 21/06/2012, à 17:47

orel26ad

Re : [Script] reconnaissance vocale avec google

Le script avance bien^^.

Je crois qu'il manque un petit quelque chose pour le mkdir dans le script avant le cp du fichier voix, car on obtient une erreur de copie (que l'on retrouve un tout petit peu plus bas aussi après le téléchargement)

Voulez-vous installer le fichier de voix....
Mbrola Fr1: OUI=o NON=n ?...................
o
mkdir: impossible de créer le répertoire «/usr/share/mbrola/voices»: Aucun fichier ou dossier de ce type
--2012-06-21 18:39:46--  http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr1/fr1-990204.zip
Résolution de tcts.fpms.ac.be (tcts.fpms.ac.be)... 193.190.210.20
Connexion vers tcts.fpms.ac.be (tcts.fpms.ac.be)|193.190.210.20|:80... connecté.
requête HTTP transmise, en attente de la réponse... 200 OK
Longueur: 4694334 (4,5M) [application/zip]
Sauvegarde en : «fr1-990204.zip»

100%[======================================>] 4 694 334    873K/s   ds 5,4s    

2012-06-21 18:39:51 (851 KB/s) - «fr1-990204.zip» sauvegardé [4694334/4694334]

Archive:  fr1-990204.zip
   creating: fr1/
  inflating: fr1/fr1                 
  inflating: fr1/fr1.txt             
   creating: fr1/TEST/
  inflating: fr1/TEST/bonjour.pho    
  inflating: fr1/TEST/ceserait.pho   
  inflating: fr1/TEST/ileenf.pho     
  inflating: fr1/TEST/coup.pho       
  inflating: fr1/TEST/jaiete.pho     
  inflating: fr1/TEST/nouspouv.pho   
  inflating: fr1/TEST/tagada.pho     
  inflating: fr1/TEST/mavoix.pho     
 extracting: fr1/TEST/mbroli.ini     
  inflating: fr1/TEST/claire.pho     
  inflating: fr1/TEST/trenet.pho     
cp: impossible de créer le fichier standard «/usr/share/mbrola/voices»: Aucun fichier ou dossier de ce type
/home/orel26ad/Téléchargements/google2ubuntu
 
Le fichier de voix viens d'être ajouté......
 
Ou voulez placer votre dossier google2ubuntu?

Dernière modification par orel26ad (Le 21/06/2012, à 17:49)

Hors ligne

#341 Le 21/06/2012, à 17:55

Compte supprimé

Re : [Script] reconnaissance vocale avec google

C'est bizarre , je n'ai pas cette erreur

[sudo] password for benoit: 
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
alsa-utils est déjà la plus récente version disponible.
notify-osd est déjà la plus récente version disponible.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 21 non mis à jour.
alsa-utils notify-osd  à été installé
 
Voulez-vous installer le fichier de voix....
Mbrola Fr1: OUI=o NON=n ?...................
o
--2012-06-21 18:54:18--  http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr1/fr1-990204.zip
Résolution de tcts.fpms.ac.be (tcts.fpms.ac.be)... 193.190.210.20
Connexion vers tcts.fpms.ac.be (tcts.fpms.ac.be)|193.190.210.20|:80... connecté.
requête HTTP transmise, en attente de la réponse... 200 OK
Longueur: 4694334 (4,5M) [application/zip]
Sauvegarde en : «fr1-990204.zip»

est ce que chez toi il y a le sript installation un sudo avant le mkdir /usr/shre/mbrola/voices ?

Dernière modification par benoitfra (Le 21/06/2012, à 17:58)

#342 Le 21/06/2012, à 18:01

orel26ad

Re : [Script] reconnaissance vocale avec google

J'ai regardé un peu le code,  tu ne peux pas créer un répertoire dans un répertoire qui n'existe pas (en tout cas directement). or le répertoire "/usr/share/mbrola/" n'est pas créé avec ton script sur une machine "neuve" (testé sur une nouvelle VM a chaque fois).

Donc soit l'installation de la dépendance mbrola au début du script n'est pas complète et nécessite, comme la précisé metalux, un :

sudo apt-get install mbrola-fr1

Soit si tu veux te passer de cette commande, il faut créer les répertoire étape par étape.


ps : a chaque nouveau test de ton script je refais une nouvelle machine virtuelle avec ubuntu 12.04 pour que tu sois sur qu'au final ça fonctionne complètement^^.

Dernière modification par orel26ad (Le 21/06/2012, à 18:03)

Hors ligne

#343 Le 21/06/2012, à 18:03

Compte supprimé

Re : [Script] reconnaissance vocale avec google

c 'est bon jai mis un mkdir -p pour qu'il créer les répertoires transitoires.
Je pensais que /usr/share/mbrola/voices était créer désolé normallemnt ça va passé maintenant.
IL y avait un autre erreur que j'ai corrigé.

Voici le lien de téléchargement:
Google2ubuntu

Dernière modification par benoitfra (Le 22/06/2012, à 07:49)

#344 Le 21/06/2012, à 18:28

orel26ad

Re : [Script] reconnaissance vocale avec google

L'installation fonctionne correctement.

Good job

Dernière modification par orel26ad (Le 21/06/2012, à 18:44)

Hors ligne

#345 Le 22/06/2012, à 10:15

Compte supprimé

Re : [Script] reconnaissance vocale avec google

Le plus gros défaut de google2ubuntu c'est sans doute la nécéssité d'avoir une connexion internet. Et je viens juste peut être de trouver un moyen de passer outre grâce à cette commande:

sox -t alsa default pause.flac silence 1 0.1 5% 1 1.0 5%; ls -l | grep "pause.flac" | awk '{print $5}'

J'ai fait un script pour voir et volla le résultat pour  mot répété 5 fois avant d'acquérir un mot de test:

bonjour = 41766
oui= 13978
non = 18889
Test = 45336

Un autre test en répétant 10 fois les mots puis en testant

bonjour = 44768
oui= 19088
non = 21562
va lire mes messages = 78560
Test = 78747

Dernière modification par benoitfra (Le 22/06/2012, à 11:51)

#346 Le 22/06/2012, à 12:04

AnsuzPeorth

Re : [Script] reconnaissance vocale avec google

Bjr,
Ben tu t'es remis dessus, je t'avais envoyé des mails, et pas de réponses ... Il doit bouder je me disais smile

SInon, bonne idée de jouer avec la taille, on n'y avait pas pensé ... Il faudrait assembler les 2, note du son et taille du buffer en sortie de gst, ca devrait etre jouable ! Par contre, je pourrais pas t'aider, suis surbooké en ce moment !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#347 Le 22/06/2012, à 12:07

Compte supprimé

Re : [Script] reconnaissance vocale avec google

Je boudais pas j'avais mes exams. Par sécurité, j'ai arrêté et là je reprend avant mon stage.

La j'obtiens d'assez bon résultat en répétant 20 fois les mots.

#348 Le 22/06/2012, à 12:11

AnsuzPeorth

Re : [Script] reconnaissance vocale avec google

benoitfra a écrit :

Je boudais pas j'avais mes exams.

Je m'en doutais, c'était de l'humour tongue

benoitfra a écrit :

La j'obtiens d'assez bon résultat en répétant 20 fois les mots.

20 fois, ca fait bcp !!! En couplant les 2, son et taille, ca devrait faire ... On était pas la loin là où ont c'est arrêté !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#349 Le 22/06/2012, à 12:15

Compte supprimé

Re : [Script] reconnaissance vocale avec google

Je poste le morceau de script que j'ai fait (attention, pour linstant ça n'est pas dans google2ubuntu)
Si par miracle ça marche je pensais l'activé si il n'y avait pas de connection internet.

#!/bin/bash
SUM="0"

MOT[1]="bonjour"
MOT[2]="oui"
MOT[3]="non"
MOT[4]="va lire mes messages"
VALEUR[1]="0"
VALEUR[2]="0"
VALEUR[3]="0"
VALERU[4]="0"

for (( i=1; i < ${#MOT[@]}+1; i++ ));
do 
{
    echo " Dites ${MOT[i]}"
    for j in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ;
    do
    {    
    ACQUISITION=`sox -t alsa default test.flac silence 1 0.1 5% 1 1.0 5%; ls -l | grep "test.flac" | awk '{print $5}'`
    killall sox;    
    rm test.flac
    (( SUM = $SUM + $ACQUISITION ))
    }
    done
    
    (( VALEUR[$i] = $SUM / 20  ))
    
    SUM="0"
}
done


echo " "
echo " DITE LE MOT DE TEST"
sleep 4;
TEST=`sox -t alsa default test.flac silence 1 0.1 5% 1 1.0 5%; ls -l | grep "test.flac" | awk '{print $5}'`
killall sox;
sleep 2;

echo "bonjour = ${VALEUR[1]}"
echo "oui= ${VALEUR[2]}"
echo "non = ${VALEUR[3]}"
echo "va lire mes messages = ${VALEUR[4]}"
echo "Test = $TEST"


rm test.flac
exit

Si quelqu'un à une idée pour comparer les valeurs afin de trouver le mot le plus proche du mot de test.
J'ai pensé calculer l'erreur relative ie :

abs ( TEST-VALEUR)/VALEUR*100

mais je ne sais pas si la fonction valeur absolue est dispo en bash. Ensuite à mon avis il faut comparer. Comment ?

Dernière modification par benoitfra (Le 22/06/2012, à 12:15)

#350 Le 22/06/2012, à 13:22

Compte supprimé

Re : [Script] reconnaissance vocale avec google

Pfiou c'est long d'enregistrer tout ça je laisse tombé tant pis.
Google2ubuntu n'utilisera que la reconnaissance vocale gooel

Dernière modification par benoitfra (Le 22/06/2012, à 13:22)