Я думаю, что распознавание рабочего стола начинается, потому что вы используете общий распознаватель рабочего стола. Вы должны использовать распознаватель inproc только для вашего приложения. Вы делаете это, создавая экземпляр SpeechRecognitionEngine () в своем приложении.
Поскольку вы используете грамматику диктовки и распознаватель окон рабочего стола, я полагаю, что говорящий может обучить ее повышению точности. Пройдите обучение по распознавателю Windows 7 и посмотрите, улучшится ли точность.
Чтобы начать работу с речью .NET, есть очень хорошая статья, которая была опубликована несколько лет назад на http://msdn.microsoft.com/en-us/magazine/cc163663.aspx. Это, пожалуй, лучшая вступительная статья, которую я когда-либо встречал. Это немного устарело, но очень полезно. (Метод AppendResultKeyValue был удален после бета-тестирования.)
Вот краткий пример, демонстрирующий одно из самых простых приложений Windows. Для форм форм, использующее грамматику диктовки, о которой я только мог подумать. Это должно работать на Windows Vista или Windows 7. Я создал форму. Уронил на нее кнопку и сделал кнопку большой. Добавлена ссылка на System.Speech и строка:
using System.Speech.Recognition;
Затем я добавил следующий обработчик событий для 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();
}
}
Немного больше информации, сравнивающей различные варианты речевых движков и API, поставляемых Microsoft, можно найти по адресу В чем разница между System.Speech.Recognition и Microsoft.Speech.Recognition? ?