2012-02-19 13 views
9

Soy relativamente nuevo en C# y en la plataforma Microsoft Speech, pero estoy trabajando en una aplicación de servidor que tendrá que transcribir el dictado libre. MS Speech Platform SDK parecía perfecto y funciona en el servidor, a menos que haga referencia al método AppendDictation() en GrammarBuilder.AppendDictation en Microsoft Speech Platform 11 (Servidor)?

estoy usando la plataforma de Microsoft Speech SDK 11, y la aplicación funciona bien si defino una gramática, pero en el momento añado en AppendDictation(), estoy reunió con este error:

Cannot find grammar referenced by this grammar. 

Incluso esta muestra de la documentación parece fallar:

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

Curiosamente, si cambio LoadGrammar a LoadGrammarAsync, las cargas de gramática (o, al menos, el controlador de eventos se llama), pero entonces el recoginzer produce este error:

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

He leído que la versión del servidor de la plataforma no es compatible con el dictado, pero parece extraño que se envíe con un método que simplemente no funciona. ¿Alguien ha logrado obtener una gramática de dictado para trabajar en el servidor? ¿Qué estoy haciendo mal?

Muchas gracias

Respuesta

11

Para cualquier persona que pueda venir a través de esto en el futuro - ahora he enviado por correo electrónico de ida y vuelta con Microsoft, y en última instancia recibió esta respuesta:

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.

No es la respuesta que

estaba esperando, pero lo explica.

+1

¿Hay alguna otra manera de hacer dictados entonces? – KTF

3

Si usa System.Speech puede cargar su gramática con _recognizer.LoadGrammar(new DictationGrammar());, y funcionará bien. El reconocimiento no es malo, pero luego debe usar un archivo de onda PCM de 16KHz u otras configuraciones de archivos de onda compatibles. Lamentablemente, el no está disponible con Microsoft.Speech.