2009-02-13 8 views
0

Ma question est comment puis-je charger un fichier de grammaire qui utilise les balises qu'ils listent dans les documents MSDN? Je souhaite utiliser les balises de format documentées dans MSDN sous la rubrique Balises au format grammaire (SAPI 5.3).Comment charger un fichier XML Grammaire utilisant des balises SAPI 5.3?

http://msdn.microsoft.com/en-us/library/ms723634(VS.85).aspx

Il répertorie les balises comme il DEFINE, LIST, OPT etc. Cependant chaque fois que j'essaie d'utiliser ces balises dans le fichier grammar.xml je reçois une erreur disant que cette balise est pas pris en charge.

Si vous utilisez un fichier de grammaire qui utilise uniquement les balises one-of, item, etc. Qui sont listés ici dans le MSDN; le fichier de grammaire se charge.

http://msdn.microsoft.com/en-us/library/ms870140.aspx

Je sais qu'il est probablement quelque chose de simple, mais je ne peux pas l'air de le comprendre ...

fichier grammaire ... qui fonctionne

<grammar xmlns="http://www.w3.org/2001/06/grammar" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://www.w3.org/2001/06/grammar 
           http://www.w3.org/TR/speech-grammar/grammar.xsd" 
      xml:lang="en-US" version="1.0" root="command"> 


    <rule id="command" scope="public"> 

    <one-of> 
     <item>nail</item> 
     <item>hammer</item> 
     <item>saw</item> 
    </one-of> 
    </rule> 

    </grammar> 

Exemple de code --- ----------------

public Form1() 
    { 

     InitializeComponent(); 

     // set up the recognizer 
     _speechRecognizer = new SpeechRecognizer(); 
     _speechRecognizer.Enabled = false; 
     _speechRecognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(_speechRecognizer_SpeechRecognized); 

     // set up the command and control grammar 
     Grammar commandGrammar = new Grammar(@"grammar.xml"); 
     commandGrammar.Name = "main command grammar"; 
     commandGrammar.Enabled = true; 

     // activate the command grammer 
     _speechRecognizer.LoadGrammar(commandGrammar); 

     _speechRecognizer.Enabled = true; 
    } 

Répondre

1

Vous semblez utiliser C#, et donc le .NET interface avec le système vocal. Autant que je sache, l'interface .NET ne prend en charge explicitement le format de grammaire XML W3C SRGS, http://www.w3.org/TR/speech-grammar/. Alors que le format de grammaire que vous liez est un format spécifique à MS, qu'ils semblent appeler CFG. Seule l'API COM de niveau inférieur donne des détails sur le format CFG.

Vous devriez être capable de faire les mêmes choses dans SRGS que dans CFG.

Vous pouvez charger la version binaire de CFG après l'avoir compilé à l'aide des outils SDK.

Questions connexes