bonjour je suis en train d'appliquer l'exemple d'un site en utilisant sdk 5.1.
par exemple dans une simple méthode qui sélectionne une image ça marche parfaitement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public void InitialisationContexteRCSelect()
        {
            // Contexte de reconnaissance RCSelect et sa grammaire
            RCSelect = new SpSharedRecoContext();
            // Lien de l'évenement Recognation
            RCSelect.Recognition += new _ISpeechRecoContextEvents_RecognitionEventHandler(RCSelect_Recognition_EventHandler);
 
            ISpeechRecoGrammar grammaireSelect;
            ISpeechGrammarRule maRègleSelect;
 
            // Création de la grammaire
            grammaireSelect = RCSelect.CreateGrammar(0);
            // Création de la règle
            maRègleSelect = grammaireSelect.Rules.Add("règleSelect", SpeechRuleAttributes.SRATopLevel | SpeechRuleAttributes.SRADefaultToActive, 0);
 
            ISpeechGrammarRuleState étatAprèsSelect;
            étatAprèsSelect = maRègleSelect.AddState();
 
            // Définition de l'état initial, de la première transition
            object propertyValue = "";
            maRègleSelect.InitialState.AddWordTransition(
                   étatAprèsSelect,  // état suivant
                   "select",               // mot à reconnaître
                   " ", SpeechGrammarWordType.SGLexical, "propSelect",
                   0, ref propertyValue, (float)1);
 
            // Définition des transitions suivantes vers l'état final
            étatAprèsSelect.AddWordTransition(null, "one",
                        " ", SpeechGrammarWordType.SGLexical, "propSelect",
                        0, ref propertyValue, (float)1);
            étatAprèsSelect.AddWordTransition(null, "two",
                        " ", SpeechGrammarWordType.SGLexical, "propSelect",
                        0, ref propertyValue, (float)1);
            étatAprèsSelect.AddWordTransition(null, "three",
                        " ", SpeechGrammarWordType.SGLexical, "propSelect",
                        0, ref propertyValue, (float)1);
            // Validation et activation des règles
            grammaireSelect.Rules.Commit();
            grammaireSelect.CmdSetRuleState("règleSelect", SpeechRuleState.SGDSActive);
            // Lien de l'événement Recognation
            RCSelect.Recognition += new
                _ISpeechRecoContextEvents_RecognitionEventHandler(RCSelect_Recognition_EventHandler);
        }
et la methode qui execute l'action :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 private void RCSelect_Recognition_EventHandler(int StreamNumber, object StreamPosition, SpeechRecognitionType RecognitionType, ISpeechRecoResult Result)
        {
            // Désélection de l'image actuellement sélectionnée :
            switch (imageSelectionnée)
            {
                case 1: image1.BorderStyle = BorderStyle.None; break;
                case 2: image2.BorderStyle = BorderStyle.None; break;
                case 3: image3.BorderStyle = BorderStyle.None; break;
                default: break;
            }
            // Ajouté le style Fixed3D à l'image choisie :
            // On choisie le deuxième élément de Result soit l'élément numéro 1
            string sélection = Result.PhraseInfo.GetText(1, 1, true);
            switch (sélection){
                case "one": image1.BorderStyle = BorderStyle.Fixed3D;
                    imageSelectionnée = 1;
                    break;
                case "two": image2.BorderStyle = BorderStyle.Fixed3D;
                    imageSelectionnée = 2;
                    break;
                case "three": image3.BorderStyle = BorderStyle.Fixed3D;
                    imageSelectionnée = 3;
                    break;
                default: break;
            }
        }
toute est bien l'image est sélectionner,mais lorsque je voulais utiliser fichier xml qui contient mon grammaire comme ça,voici les etapes,en premier la méthode qui écoute l'événement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 public void InitialisationContexteRCSelect(){
            // Contexte de reconnaissance RCSelect et sa grammaire
            RCSelect = new SpSharedRecoContext();
            // Lien de l'événement Recognation
            RCSelect.Recognition += new _ISpeechRecoContextEvents_RecognitionEventHandler(
                                   RCSelect_Recognition_EventHandler);
            // Création de la grammaire
            ISpeechRecoGrammar grammaireSelect;
            grammaireSelect = RCSelect.CreateGrammar(0);
            // Chargement de la règle par le fichier .xml
            grammaireSelect.CmdLoadFromFile("regleSelection.xml", SpeechLoadOption.SLODynamic);
            // Validation et activation des règles
            grammaireSelect.Rules.Commit();
            grammaireSelect.CmdSetRuleState("regleSelect",SpeechRuleState.SGDSActive);
        }
est le fichier xml qui contient grammaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<GRAMMAR LANGID="409">
  <RULE NAME="selection" TOPLEVEL="ACTIVE">
    <P>daba</P>
    <RULEREF NAME="imageNumber"/>
  </RULE>
  <RULE NAME="imageNumber">
    <L>
      <P>one</P>
      <P>two</P>
      <P>three</P>
    </L>
  </RULE>
</GRAMMAR>
mon question ,dans la deuxieme méthode est ce qu'il y a une erreur ?
et merci d'avance.