2012-02-19 9 views
9

Jestem względnie nową platformą C# i Microsoft Speech, ale pracuję nad aplikacją serwera, która będzie musiała przetworzyć darmową dyktando. Zestaw SDK MS Speech Platform wydawał się idealny i działa na serwerze, chyba że odwołuję się do metody AppendDictation() w GrammarBuilder.AppendDictation na platformie Microsoft Speech Platform 11 (serwer)?

Używam Microsoft Speech Platform SDK 11, a aplikacja działa dobrze, jeśli zdefiniować gramatyki, ale chwila dodam w AppendDictation(), ja spotkałem się z tego błędu:

Cannot find grammar referenced by this grammar. 

Nawet ta próbka z dokumentacji wydaje się niepowodzeniem:

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); 

dziwne, jeśli zmienię LoadGrammar do LoadGrammarAsync, ładunki gramatyczne (lub przynajmniej obsługi zdarzeń nazywa), ale wtedy recoginzer nie powiedzie się z tego błędu:

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

Przeczytałem, że wersja serwerowa platformy nie obsługuje dyktowania, ale wydaje się dziwne, że będzie dostarczana z metodą, która po prostu nie działa. Czy ktoś zdołał uzyskać gramatykę dyktowania do pracy na serwerze? Co ja robię źle?

Dziękujemy

Odpowiedz

11

Dla każdego, kto może zetknąć się z tym w przyszłości - mam teraz e-maila tam iz powrotem z Microsoft, a ostatecznie otrzymał tę odpowiedź:

The managed interfaces (Microsoft.Speech and System.Speech) are built on top of the native SAPI interfaces. These interfaces are the same for both the Server engine and the Desktop engine.

BUT the engine itself is responsible for implementing dictation, and the Server engine does not do so. Therefore, the call will fail when you load the grammar.

Nie mam odpowiedź miał nadzieję, ale to wyjaśnia.

+1

Czy jest zatem jakikolwiek inny sposób na dyktowanie? – KTF

3

Jeśli używasz System.Speech, możesz załadować gramatykę za pomocą _recognizer.LoadGrammar(new DictationGrammar()); i będzie działać poprawnie. Rozpoznanie nie jest złe, ale musisz użyć pliku wave PCM 16 kHz lub innej kompatybilnej konfiguracji falowej. Niestety, nie jest dostępny z Microsoft.Speech.

Powiązane problemy