Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] opérateur logique et importation fonction C

    31 mai 2011 à 16:47:18

    Bonjour,

    voilà j'essaye de faire fonctionner la reconnaissance vocale sous windows 7 avec microsoft visual c#.
    En m'aidant du super tuto, j'y suis parvenu mais j'aimerais apporter des modifications à mon programme. :)
    Je rencontre 2 petits problèmes :o :

    - je désirerais faire fonctionner la reconnaissance vocale de tous les nombres et j'aimerais pour simplifier le travail décomposer les nombres en une succession de chiffre
    ex : cent neuf = un zero neuf.
    Je rencontre un problème pour associer les nombres entre eux . Mon opérateur & n'a pas l'effet escompté. :(

    - je désirerais également implanter une fonction que j'ai écrite en C dans mon code écrit en C# de quelle manière cela est-il possible ? ^^

    Merci d'avance pour vos conseils et votre aide ( j'ai effectué des recherches pour trouver les réponses à mes questions mais sans succès ) :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      31 mai 2011 à 17:19:35

      Tu souhaites utiliser ta fonction en C telle quelle ou la traduire en C# ?

      Montre-nous ton code, sans ça on peut pas t'aider :/
      • Partager sur Facebook
      • Partager sur Twitter
        1 juin 2011 à 9:33:51

        Je souhaite utiliser ma fonction C telle quelle. Je souhaite transférer l'intérieur de mon "main" qui est en C dans une fonction créer en c# ( je suis pas sûr d'être clair :o ); c'est possible ? Si oui vous pouvez m'aider sur la méthode ? ^^

        Pour le problème sur la reconnaissance vocale des nombres voici les codes
        Tout d'abord la grammaire xml :


        <?xml version="1.0" encoding="UTF-8"?>
        <grammar version="1.0" xml:lang="fr-FR" mode="voice" tag-format="semantics-ms/1.0"
        root="mouskie" xmlns="http://www.w3.org/2001/06/grammar">
        <rule id="mouskie" scope="public">
        <ruleref special="GARBAGE" />
        <one-of>
        <item>
        bleu
        <tag>$.mouskie={}; $.mouskie._value="BLUE";</tag>
        </item>
        <item>
        vert
        <tag>$.mouskie={}; $.mouskie._value="GREEN";</tag>
        </item>
        <item>
        rouge
        <tag>$.mouskie={}; $.mouskie._value="RED";</tag>
        </item>
        <item>
        jaune
        <tag>$.mouskie={}; $.mouskie._value="YELLOW";</tag>
        </item>
        <item>
        rentrer les roues
        <tag>$.mouskie={}; $.mouskie._value="rentrer";</tag>
        </item>
        <item>
        sortir les roues
        <tag>$.mouskie={}; $.mouskie._value="sortir";</tag>
        </item>

        <!-- Déclaration des chiffres -->

        <item>
        zero
        <tag>$.mouskie={}; $.mouskie._value="0";</tag>
        </item>
        <item>
        un
        <tag>$.mouskie={}; $.mouskie._value="1";</tag>
        </item>
        <item>
        deux
        <tag>$.mouskie={}; $.mouskie._value="2";</tag>
        </item>
        <item>
        trois
        <tag>$.mouskie={}; $.mouskie._value="3";</tag>
        </item>
        <item>
        quatre
        <tag>$.mouskie={}; $.mouskie._value="4";</tag>
        </item>
        <item>
        cinq
        <tag>$.mouskie={}; $.mouskie._value="5";</tag>
        </item>
        <item>
        six
        <tag>$.mouskie={}; $.mouskie._value="6";</tag>
        </item>
        <item>
        sept
        <tag>$.mouskie={}; $.mouskie._value="7";</tag>
        </item>
        <item>
        huit
        <tag>$.mouskie={}; $.mouskie._value="8";</tag>
        </item>
        <item>
        neuf
        <tag>$.mouskie={}; $.mouskie._value="9";</tag>
        </item>

        <!--Déclaration des nombres-->

        <item>
        un zero
        <tag>$.mouskie={}; $.mouskie._value="1&amp;0";</tag>

        <!-- &amp; correspond au ET logique en xml-->
        </item>

        <item>
        un un
        <tag>$.mouskie={}; $.mouskie._value="1&amp;1";</tag>
        </item>
        <item>
        un deux
        <tag>$.mouskie={}; $.mouskie._value="1&amp;2";</tag>
        </item>
        <item>
        un trois
        <tag>$.mouskie={}; $.mouskie._value="1&amp;3";</tag>
        </item>
        <item>
        un quatre
        <tag>$.mouskie={}; $.mouskie._value="1&amp;4";</tag>
        </item>
        <item>
        un cinq
        <tag>$.mouskie={}; $.mouskie._value="1&amp;5";</tag>
        </item>
        <item>
        un six
        <tag>$.mouskie={}; $.mouskie._value="1&amp;6";</tag>
        </item>
        <item>
        un sept
        <tag>$.mouskie={}; $.mouskie._value="1&amp;7";</tag>
        </item>
        <item>
        un huit
        <tag>$.mouskie={}; $.mouskie._value="1&amp;8";</tag>
        </item>
        <item>
        un neuf
        <tag>$.mouskie={}; $.mouskie._value="1&amp;9";</tag>
        </item>
        <item>
        deux zero
        <tag>$.mouskie={}; $.mouskie._value="2&amp;0";</tag>
        </item>
        <item>
        deux un
        <tag>$.mouskie={}; $.mouskie._value="2&amp;1";</tag>
        </item>
        <item>
        deux deux
        <tag>$.mouskie={}; $.mouskie._value="2&amp;2";</tag>
        </item>
        <item>
        deux trois
        <tag>$.mouskie={}; $.mouskie._value="2&amp;3";</tag>
        </item>
        <item>
        deux quatre
        <tag>$.mouskie={}; $.mouskie._value="2&amp;4";</tag>
        </item>
        <item>
        deux cinq
        <tag>$.mouskie={}; $.mouskie._value="2&amp;5";</tag>
        </item>
        <item>
        deux six
        <tag>$.mouskie={}; $.mouskie._value="2&amp;6";</tag>
        </item>
        <item>
        deux sept
        <tag>$.mouskie={}; $.mouskie._value="2&amp;7";</tag>
        </item>
        <item>
        deux huit
        <tag>$.mouskie={}; $.mouskie._value="2&amp;8";</tag>
        </item>
        <item>
        deux neuf
        <tag>$.mouskie={}; $.mouskie._value="2&amp;9";</tag>
        </item>
        <item>
        trois zero
        <tag>$.mouskie={}; $.mouskie._value="3&amp;0";</tag>
        </item>
        <item>
        trois un
        <tag>$.mouskie={}; $.mouskie._value="3&amp;1";</tag>
        </item>
        <item>
        trois deux
        <tag>$.mouskie={}; $.mouskie._value="3&amp;2";</tag>
        </item>
        <item>
        trois trois
        <tag>$.mouskie={}; $.mouskie._value="3&amp;3";</tag>
        </item>
        <item>
        trois quatre
        <tag>$.mouskie={}; $.mouskie._value="3&amp;4";</tag>
        </item>
        <item>
        trois cinq
        <tag>$.mouskie={}; $.mouskie._value="3&amp;5";</tag>
        </item>
        <item>
        trois six
        <tag>$.mouskie={}; $.mouskie._value="3&amp;6";</tag>
        </item>
        <item>
        trois sept
        <tag>$.mouskie={}; $.mouskie._value="3&amp;7";</tag>
        </item>
        <item>
        trois huit
        <tag>$.mouskie={}; $.mouskie._value="3&amp;8";</tag>
        </item>
        <item>
        trois neuf
        <tag>$.mouskie={}; $.mouskie._value="3&amp;9";</tag>
        </item>
        <item>
        quatre zero
        <tag>$.mouskie={}; $.mouskie._value="4&amp;0";</tag>
        </item>
        <item>
        quatre un
        <tag>$.mouskie={}; $.mouskie._value="4&amp;1";</tag>
        </item>
        </one-of>
        <ruleref special="GARBAGE" />
        </rule>
        </grammar>




        Et voici le fichier où j'essaye d'associer mes chiffres entre eux ( la méthode c'est épeller tous les chiffres pour avoir un nombre )


        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Speech.Recognition.SrgsGrammar;
        using System.Speech.Recognition;
        using System.Windows.Forms;


        namespace DemoRecoVocale
        {
        class ASR
        {
        public SpeechRecognitionEngine ASREngine;
        private Label recoText;
        private Label commandText;
        private Label devine;
        private Label affiche;
        private Form form1;

        /// <summary>
        /// Constructeur de l'ASR (Automatic Speech Recognition)
        /// </summary>
        public ASR(ref Label recoText, ref Label commandText, ref Label devine, ref Label affiche, Form form1)
        {
        //Les 4 labels dont le texte devra être changé
        //en fonction de ce qui est reconnu
        this.recoText = recoText;
        this.commandText = commandText;
        this.devine = devine;
        this.affiche = affiche;
        this.form1 = form1;
        //Démarrage du moteur de reconnaissance vocale
        StartEngine();
        }

        /// <summary>
        /// Démarrage du moteur de reconnaissance vocale et chargement du
        /// fichier de grammaire Grammaire.grxml
        /// </summary>
        private void StartEngine()
        {
        //Création d'un document de la norme SRGS à partir du fichier grxml
        SrgsDocument xmlGrammar = new SrgsDocument("Grammaire.grxml");
        //Création d'une grammaire depuis le fichier de grammaire
        Grammar grammar = new Grammar(xmlGrammar);
        //Création de l'objet traitant la reconnaissance vocale
        ASREngine = new SpeechRecognitionEngine();
        //Récupération du son du microphone
        ASREngine.SetInputToDefaultAudioDevice();
        //Chargement de la grammaire
        ASREngine.LoadGrammar(grammar);
        //Link des fonctions a appeler en cas de reconnaissance d'un texte
        ASREngine.SpeechRecognized += ASREngine_SpeechRecognized;
        ASREngine.SpeechRecognitionRejected += ASREngine_SpeechRecognitionRejected;
        ASREngine.SpeechHypothesized += ASREngine_SpeechHypothesized;
        //Spécification du nombre maximum d'alternatives
        //Par exemple : b ou p ou d ou t, t ou d, i ou j, etc.
        //Utile pour les sons qui se ressemblent
        ASREngine.MaxAlternates = 4;
        }

        /// <summary>
        /// Méthode utilisée lorsque la reconnaissance vocale est en cours
        /// </summary>
        private void ASREngine_SpeechHypothesized(object sender, SpeechHypothesizedEventArgs e)
        {
        recoText.Text = "Hypothèse : " + e.Result.Text;
        devine.Text = "";
        affiche.Text = "";
        commandText.Text = "";
        }


        /// <summary>
        /// Méthode utilisée lorsque la reconnaissance vocale a échoué
        /// </summary>
        private void ASREngine_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e)
        {
        recoText.Text = "Reconnaissance impossible";
        devine.Text = "";
        affiche.Text = "";
        commandText.Text = "";
        }



        /// <summary>
        /// Méthode utilisée lorsque la reconnaissance vocale est réussi
        /// </summary>
        private void ASREngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
        recoText.Text = e.Result.Text;
        devine.Text = "";
        affiche.Text = "";

        //Récupération de la commande de base utilisée (QUIT ou LEARN)
        string baseCommand = e.Result.Semantics["mouskie"].Value.ToString();
        commandText.Text = baseCommand;

        testerLaCommande(baseCommand);


        }

        public void testerLaCommande(String text)
        {
        if (text == "BLUE")
        {
        form1.BackColor = System.Drawing.Color.Blue;
        }
        else if (text == "YELLOW")
        {
        form1.BackColor = System.Drawing.Color.Yellow;
        }
        else if (text == "RED")
        {
        form1.BackColor = System.Drawing.Color.Red;
        }
        else if (text == "GREEN")
        {
        form1.BackColor = System.Drawing.Color.Green;
        }
        else if (text == "sortir")
        {
        sortirLesRoues();
        }
        else if (text == "rentrer")
        {
        rentrerLesRoues();
        }
        /* else if (text == "chiffre")
        {
        chiffre();
        }*/
        /* else if ((text == "0" | text == "1" | text == "2" | text == "3" | text == "4" | text == "5" | text == "6" | text == "7" | text == "8" | text == "9") | ((text == "0" | text == "1" | text == "2" | text == "3" | text == "4" | text == "5" | text == "6" | text == "7" | text == "8" | text == "9") & (text == "0" | text == "1" | text == "2" | text == "3" | text == "4" | text == "5" | text == "6" | text == "7" | text == "8" | text == "9")))
        {
        un();
        }*/
        else if (text == "1" && text == "0")
        {
        test();
        }



        }

        public void sortirLesRoues()
        {
        form1.BackColor = System.Drawing.Color.Purple;
        }

        public void rentrerLesRoues()
        {
        form1.BackColor = System.Drawing.Color.Black;
        }

        /* public void chiffre()
        {
        form1.BackColor = System.Drawing.Color.Gray;
        }*/
        public void un()
        {
        form1.BackColor = System.Drawing.Color.Pink;
        }
        public void test()
        {
        form1.BackColor = System.Drawing.Color.Orange;
        }


        }

        }


        Voila si quelqu'un a une idée je suis preneur.
        N'hésitez pas à poser des questions si je n'ai pas été clair sur mon problème :)

        Merci d'avance à tous ^^

        Edit : j'ai une faute dans mon second code, c'est plutot cela :

        else if (text[0] == '1' && text[1] == '0')
        {
        test();
        }
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          1 juin 2011 à 16:22:54

          Change ton XML...le XML c'est fait pour être lisible, pas pour contenir des données illisibles :o

          Si tu veux utiliser ta méthode en C, documente-toi sur le P/Invoke. C'est pas très pratique, je te conseille plutôt de la traduire en C#.
          • Partager sur Facebook
          • Partager sur Twitter

          [C#] opérateur logique et importation fonction C

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown