Pregunta

Soy relativamente nuevo tanto en C# como en la plataforma de voz de Microsoft, pero estoy trabajando en una aplicación de servidor que necesitará transcribir el dictado gratuito. El SDK de MS Speech Platform parecía perfecto y funciona en el servidor, a menos que haga referencia al método appenddictation () en grammarbuilder.

Estoy usando el Microsoft Speech Platform SDK 11, y la aplicación funciona bien si defino una gramática, pero en el momento en que agrego appenddictation (), me encuentro 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 de gramática de carga a loadgrammarasync, la gramática se carga (o al menos se llama al controlador de eventos), pero luego el Recoginzer falla con 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 admite 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

¿Fue útil?

Solución

Para cualquiera que pueda encontrarse con esto en el futuro, ahora he enviado un correo electrónico de ida y vuelta con Microsoft y finalmente recibí esta respuesta:

Las interfaces administradas (Microsoft.speech y System.speech) están construidas sobre las interfaces SAPI nativas. Estas interfaces son las mismas tanto para el motor del servidor como para el motor de escritorio.

Pero el motor en sí es responsable de implementar el dictado, y el motor del servidor no lo hace. Por lo tanto, la llamada fallará cuando cargue la gramática.

No es la respuesta que esperaba, pero la explica.

Otros consejos

Si utiliza System.Speech Puedes cargar tu gramática con _recognizer.LoadGrammar(new DictationGrammar()); , y funcionará bien. El reconocimiento no es malo, pero entonces debe usar un archivo de onda PCM de 16kHz u otras configuraciones de archivo de onda compatible. Tristemente el DictationGrammar() no está disponible con Microsoft.Speech.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top