c# - visual - buena API de reconocimiento de voz
speech recognition c# (1)
Estoy trabajando en un proyecto universitario en el que estoy usando el reconocimiento de voz. Actualmente lo estoy desarrollando en Windows 7 y estoy usando el paquete API system.speech que viene con .net y lo estoy haciendo en C #.
El problema al que me enfrento es que el reconocimiento de dictados no es lo suficientemente preciso. Luego, cada vez que inicio mi aplicación, el reconocimiento de voz de escritorio se inicia automáticamente. Esto es una gran molestia para mí. Como ya las palabras que pronuncio no son lo suficientemente claras y los reconocimientos en conflicto se interpretan como comandos y acciones como el cambio de aplicación se está llevando a cabo.
Esta es una parte crítica de mi aplicación y le ruego que me sugiera cualquier otra API de voz para mí que no sea este error de Microsoft. Será bueno incluso si puede entender simplemente la gramática del dictado simple.
Creo que el reconocimiento de escritorio se está iniciando porque está utilizando un reconocedor de escritorio compartido. Debe utilizar un reconocedor inproc solo para su aplicación. lo hace al crear una instancia de SpeechRecognitionEngine () en su aplicación.
Dado que está utilizando la gramática de dictado y el reconocedor de ventanas de escritorio, creo que el orador puede capacitarlo para mejorar su precisión. Ir a través de la formación de reconocedor de Windows 7 y ver si mejora la precisión.
Para comenzar con el discurso .NET, hay un muy buen artículo que se publicó hace unos años en http://msdn.microsoft.com/en-us/magazine/cc163663.aspx . Es probablemente el mejor artículo introductorio que he encontrado hasta ahora. Está un poco desactualizado, pero muy inútil. (El método AppendResultKeyValue se eliminó después de la versión beta).
Aquí hay una muestra rápida que muestra una de las aplicaciones de formularios .NET de Windows más sencillas para usar una gramática de dictado en la que podría pensar. Esto debería funcionar en Windows Vista o Windows 7. He creado un formulario. Dejó caer un botón y lo hizo grande. Se agregó una referencia a System.Speech y la línea:
using System.Speech.Recognition;
Luego agregué el siguiente controlador de eventos a button1:
private void button1_Click(object sender, EventArgs e)
{
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
Grammar dictationGrammar = new DictationGrammar();
recognizer.LoadGrammar(dictationGrammar);
try
{
button1.Text = "Speak Now";
recognizer.SetInputToDefaultAudioDevice();
RecognitionResult result = recognizer.Recognize();
button1.Text = result.Text;
}
catch (InvalidOperationException exception)
{
button1.Text = String.Format("Could not recognize input from default aduio device. Is a microphone or sound card available?/r/n{0} - {1}.", exception.Source, exception.Message);
}
finally
{
recognizer.UnloadAllGrammars();
}
}
Se puede encontrar un poco más de información sobre los distintos tipos de motores de voz y API enviados por Microsoft en ¿Cuál es la diferencia entre System.Speech.Recognition y Microsoft.Speech.Recognition? ?