IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Intelligence artificielle Discussion :

Reconnaissance vocale, traitement du langage naturel et controle commande


Sujet :

Intelligence artificielle

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Reconnaissance vocale, traitement du langage naturel et controle commande
    Pour réaliser l’analyse d’une commande vocale j’utilise trois mots, le premier décrit l’action, le second l’élément et le troisième l’emplacement
    Ex [B]Allumer lumière salon, éteindre lumière salon[/B]

    Je dispose de trois tableaux contenant les actions, éléments et emplacements. Lorsqu’une commande vocale est reconnue l’api androïd renvoie un tableau de chaine. Je parcourt les tableaux et recherche les mots dans la chaine si je trouve une occurrence je sauvegarde l’index du tableau.
    Ex
    ACTION = 0 (allumer), ELEMENT=0 (lumière), EMPLACEMENT=2(salon).
    ACTION = 1 (éteindre), ELEMENT=0 (lumière), EMPLACEMENT=2(salon).

    Ensuite je détermine un code commande avec une formule de la forme :
    65536 *ELEMENT +256* EMPLACEMENT+ ACTION
    Soit 0*65536+2*256+0=512 pour allumer lumière salon
    Et 0*65536+2*256+1=513 pour éteindre lumière salon

    J’envoie ensuite ce code à une méthode de la classe qui se charge d’envoyer une commande Modbus à l’automate. La méthode lit les états des lumières, une structure switch case sélectionne les instructions a exécuter selon l’état de la lumiere.et le code commande calculé

    La solution actuelle suffisait pour des actions simples, et encore j’ai dut tricher par exemple pour les 2 volets de la cuisine ; j’ai rajouté les emplacments : cuisine coté et cusine arrière 2 mots au lieu d’un mais bon cela fonctionne...

    Maintenant je me trouve devant le problème suivant : je veux commander l’amplificateur home cinéma, pour l’allumer et l’éteindre mon code actuel suffit. :
    Allumer amplificateur salon
    Mais dès lors que je veux par exemple :
    sélectionner radio amplificateur
    Je me retrouve devant le problème suivant : L’amplificateur doit se trouver dans la liste des éléments pour : Allumer amplificateur salon
    Mais également dans la liste des emplacements pour
    Sélectionner radio amplificateur

    Je parcours les listes emplacement puis élément puis action, je songe à comparer les occurrences emplacement et element en ignorant l’occurrence element si un emplacement à été déjà trouvé.

    Ainsi pour Sélectionner radio amplificateur
    En parcourant la liste des emplacements je trouve une occurrence amplificateur index = empX j’arrête le parcours de la liste

    Ensuite je parcours la liste des elements je trouve la aussi amplificateur elmX. Je compare les chaines emplacements[empX] et elements[elmX] ils sont identiques aussi j’ignore cette occurrence pour elements et je passe au suivant et là je trouve radio à l’index elmY. j’arrête le parcours de la liste elements

    Enfin je parcourt la liste des actions et je trouve l’action sélectionner. j’arrête le parcours de la liste

    Bon dans ce cas je peux différencier un même objet selon qu’on désigne son emplacement ou qu’on lui demande d’accomplir l’action

    Maintenant imaginons que j’ai deux amplificateurs comment puis-je différencier les amplificateur ?

    En stockant la chaine au moment du traitement de la commande sélectionner radio amplificateur la méthode gérant les commandes doit savoir que deux amplificateurs existe et quels sont leur emplacement. Ensuite on peut chercher l’emplacement dans la chaine que l’on a gardé ...Cela doit pouvoir se faire

    Maintenant je veux gérer le volume de ces deux amplificateurs compte tenu des instructions de la méthode j’arrive a déterminer quel amplificateur ; mais je n’ai pas donné de valeurs.J’ai seulement dit :
    augmenter volume amplificateur du salon

    La je peux soit poser programmer un echange question,reponse ou uiliser un increment de volume par defaut. De meme pour sélectionner radio, je voudrais que le programme me demande quel station ou en chosisissent uen par defaut

    Je voudrais me rapprocher du modele objet :Objet.methode (paramete) objet . propriete

    Bon en fait je l’avoue c’est un sujet qui éprouve sérieusement mes compétences, je me perds en conjoncture et je sens qu’il faut me poser pour ne pas coder, recoder et surcoder. Aussi j’en appel à l’aide des bonnes volontés pour quelques conseils judicieux.

    Je vous remercie de votre sollicitude

    PS : l’ensemeble du code de mon application est disponible ici :
    La classe qui nous intéresse est ici
    et ce sont les méthodes : public void Request(ArrayList<String> data) et private String InterpreterCommande()

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Avant de se lancer dans le codage de l'interpréteur de commande, on aura avantage à formaliser la définition du langage (voir "grammaire formelle", "notation BNF", "expressions régulières").
    voir par exemple : http://www.lina.sciences.univ-nantes.fr/coloss/members/habrias/spec2/grammaire.html
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 601
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 601
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par arnaud29360 Voir le message
    Je voudrais me rapprocher du modele objet :Objet.methode (paramete) objet . propriete
    Qui n'est pas, loin s'en faut, le modèle grammatical "sujet verbe complément"


    (mon exemple favori : "je vais poster une lettre" n'est pas "lettre se poste" ni "moi lettre poster" )
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Traitement automatique du langage naturel en français ? Ça existe ?
    Par Ravaka dans le forum Intelligence artificielle
    Réponses: 0
    Dernier message: 30/10/2010, 20h56
  2. Réponses: 0
    Dernier message: 15/03/2009, 18h33
  3. [C#] [WinForms] Reconnaissance vocale ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/11/2004, 15h30
  4. Réponses: 8
    Dernier message: 05/10/2004, 01h02
  5. Logiciel professionnel de reconnaissance vocale
    Par samyl dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 01/04/2004, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo