Problema SAPI e Windows 7

Eu estou tentando reconhecer a fala com o Windows 7, mas sempre reconhece um discurso como um comando ou apenas diz “O que foi isso?”.

Como eu posso conseguir todos os discursos?

CÓDIGO:

SpeechRecognizer _speechRecognizer; public Window1() { InitializeComponent(); // set up the recognizer _speechRecognizer = new SpeechRecognizer(); _speechRecognizer.Enabled = false; _speechRecognizer.SpeechRecognized += new EventHandler(_speechRecognizer_SpeechRecognized); } 

Talvez você queira usar o namespace .net System.Speech em vez de SAPI? Há um artigo muito bom que foi publicado há alguns anos em http://msdn.microsoft.com/en-us/magazine/cc163663.aspx . É provavelmente o melhor artigo introdutório que encontrei até agora. É um pouco desatualizado, mas muito confiável. (O método AppendResultKeyValue foi descartado após a versão beta.)

Você está tentando usar um reconhecedor compartilhado? Isso pode ser porque você está vendo comandos. Você tem uma tarefa específica para reconhecimento? Nesse caso, você seria melhor servido com uma gramática específica de tarefa e um reconhecedor inproc.

Se você precisar lidar com qualquer palavra, use o DictationGrammar que vem com System.Speech. Consulte http://msdn.microsoft.com/pt-br/library/system.speech.recognition.dictationgrammar%28VS.85%29.aspx

Por diversão, juntei o mais simples aplicativo de formulários do Windows para usar uma gramática de ditado que eu pudesse imaginar. Eu criei um formulário. Soltou um botão e fez o botão grande. Adicionada uma referência a System.Speech e a linha:

 using System.Speech.Recognition; 

Então eu adicionei o seguinte manipulador de events ao 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(); } } 
Intereting Posts