Подтвердить что ты не робот

Хороший API распознавания речи

Я работаю над проектом колледжа, в котором я использую распознавание речи. В настоящее время я разрабатываю его в Windows 7, и я использую пакет API system.speech, который поставляется вместе с .net, и я делаю это на С#.

Проблема, с которой я столкнулась, - это признание диктовки, недостаточно точное. Затем, когда я запускаю приложение, распознавание речи на рабочем столе запускается автоматически. Это большой нюанс для меня. Поскольку уже слова, которые я говорю, недостаточно ясны, а противоречивое признание интерпретируется как команды и действия, такие как минимизация переключения приложений.

Это важная часть моего приложения, и я любезно прошу вас предложить любой хороший API-интерфейс для меня, кроме этой ошибки Microsoft. Это будет хорошо, даже если он сможет понять только простую грамматику диктовки.

4b9b3361

Ответ 1

Я думаю, что распознавание рабочего стола начинается, потому что вы используете общий распознаватель рабочего стола. Вы должны использовать распознаватель inproc только для своего приложения. вы делаете это, создавая экземпляр SpeechRecognitionEngine() в своем приложении.

Поскольку вы используете грамматику диктовки и распознаватель окон для рабочего стола, я считаю, что ее можно обучить говорящему, чтобы повысить его точность. Пройдите через обучение распознавателей Windows 7 и посмотрите, улучшается ли точность.

Чтобы начать работу с .NET-речью, есть очень хорошая статья, которая была опубликована несколько лет назад в http://msdn.microsoft.com/en-us/magazine/cc163663.aspx. Это, вероятно, лучшая вступительная статья, которую я нашел до сих пор. Это немного устарело, но очень helfpul. (Метод AppendResultKeyValue был удален после бета-версии.)

Вот пример, который показывает одно из простейших приложений форм Windows.NET, чтобы использовать грамматику диктовки, о которой я мог думать. Это должно работать в 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??