Question

Je suis relativement nouveau pour C # et la plate-forme Microsoft Speech, mais je travaille sur une application serveur qui devra retranscrire la dictée libre. La plate-forme MS Speech SDK semblait parfait, et fonctionne sur le serveur, à moins que je référence à la méthode AppendDictation () dans GrammarBuilder.

J'utilise Platform SDK Microsoft Speech 11, et l'application fonctionne très bien si je définis une grammaire, mais dès que j'ajouter à AppendDictation (), je suis rencontré cette erreur:

Cannot find grammar referenced by this grammar.

Même cet échantillon de la documentation semble échouer:

GrammarBuilder startStop = new GrammarBuilder();
GrammarBuilder dictation = new GrammarBuilder();
dictation.AppendDictation();

startStop.Append(new SemanticResultKey("StartDictation", new SemanticResultValue("Start Dictation",true)));
startStop.Append(new SemanticResultKey("DictationInput", dictation));
startStop.Append(new SemanticResultKey("StopDictation", new SemanticResultValue("Stop Dictation", false)));
Grammar grammar=new Grammar(startStop);
grammar.Enabled=true;
grammar.Name=" Free-Text Dictation ";
_recognizer.LoadGrammar(grammar);

Curieusement, si je change LoadGrammar à LoadGrammarAsync, les charges de grammaire (ou au moins le gestionnaire d'événements est appelé), mais alors le recoginzer échoue avec cette erreur:

Error: At least one grammar must be loaded before doing a recognition.

J'ai lu que la version du serveur de la plate-forme ne fonctionne pas dictée soutien, mais il semble étrange que ce serait livré avec une méthode qui ne fonctionne tout simplement pas. Quelqu'un at-il réussi à obtenir une grammaire de dictée au travail sur le serveur? Qu'est-ce que je fais mal?

Merci beaucoup

Était-ce utile?

La solution

Pour tous ceux qui peuvent venir à travers à l'avenir - je l'ai maintenant envoyé par courrier électronique avant et en arrière avec Microsoft, et a finalement reçu cette réponse:

Les interfaces gérées (Microsoft.Speech et System.Speech) sont construits sur des interfaces natives SAPI. Ces interfaces sont les mêmes tant pour le moteur de serveur et le moteur de bureau.

Mais le moteur lui-même est responsable de la mise en œuvre de la dictée, et le serveur moteur ne le fait pas. Par conséquent, l'appel échouera lorsque vous chargez la grammaire.

Pas la réponse que j'espérais, mais il ne l'expliquer.

Autres conseils

Si vous utilisez System.Speech vous pouvez charger vous avec la grammaire _recognizer.LoadGrammar(new DictationGrammar());, et il fonctionne bien. La reconnaissance est pas mal, mais alors vous devez utiliser un fichier d'onde PCM 16 kHz ou d'autres configurations de fichiers d'onde compatibles. Malheureusement, le DictationGrammar() n'est pas disponible Microsoft.Speech.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top