хороший API распознавания речи - PullRequest
27 голосов
/ 29 марта 2011

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

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

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

1 Ответ

36 голосов
/ 29 марта 2011

Я думаю, что распознавание рабочего стола начинается, потому что вы используете общий распознаватель рабочего стола. Вы должны использовать распознаватель 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? ?

...