2011-03-30 31 views
6

Utilizo la biblioteca System.Speech para poder reconocer el habla pero generalmente reconoce muy diferente.Mejore el reconocimiento de voz, C#

SpeechRecognizer_rec = new SpeechRecognizer(); 
DictationGrammar grammar = new DictationGrammar(); 

grammar.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(grammar_SpeechRecognized); 
_rec.LoadGrammar(grammar); 

¿Cómo puedo mejorar la recisión? ¿Tiene una relación con la clase Grammer?

Respuesta

5

Si usted puede permitirse el lujo de pedir a los usuarios ir al proceso de formación que sin duda le dió resultados mucho mejores. Lo he usado por mí mismo (y tengo un acento) y mejoró significativamente la precisión del reconocimiento en mis aplicaciones. Como mínimo, puede intentarlo usted mismo (Panel de control, Reconocimiento de voz, Capacite a su computadora para que lo entienda mejor). Realmente, entrenar o reducir el modelo (o, por supuesto, usar su aplicación en un lugar silencioso con un micrófono mejor) son las únicas formas de mejorar la precisión de sus resultados.

+0

¿Puede entrenar el motor de reconocimiento de voz programáticamente? – NuWin

+0

Parece que puede usar SAPI. – NuWin

7

Tiene que limitar el modelo (básicamente, la asignación de la entrada de voz a la salida de texto en inglés permitida) utilizado por el motor de reconocimiento de voz para obtener una salida de alta confianza. Cuanto menor sea su modelo, mejores serán sus resultados en general, ya que hay menos posibilidades de que el reconocedor escoja, es decir, la palabra incorrecta entre dos palabras que suenan de forma similar.

Este ejemplo simplificado es decir, solamente sería capaz de reconocer los números del uno al tres:

SpeechRecognizer rec = new SpeechRecognizer(); 
Choices c = new Choices(); 

c.Add("one"); 
c.Add("two"); 
c.Add("three"); 

var gb = new GrammarBuilder(c); 
var g = new Grammar(gb); 
rec.LoadGrammar(g); 
+0

pero necesito reconocer lo que dijo el usuario. – Kaan

+0

@Kaan: generalmente para el reconocimiento de voz del centro de llamadas, el modelo está limitado a opciones específicas, es decir, "Quiero mi pastel" o "y cómelo también", tendrá que crear una gramática personalizada para permitir diferentes combinaciones. Si desea seguir con el modelo estándar, no hay forma de que pueda aumentar la precisión, a menos que deba volver a entrenar el modelo en función de un hablante (o acento) específico, lo cual no es práctico o incluso factible en general. – BrokenGlass

2

El DictationGrammar produce resultados algo extraños, probé diferentes propiedades del motor SpeechRecognitionEngine, apenas exitosas. Pruebe: SpeechRecognitionEngine.BabbleTimeOut Pero lea primero sobre el uso para evitar errores.

Cuestiones relacionadas