SAPI и Windows 7 Проблема
Я пытаюсь распознать речь в Windows 7, но она всегда распознает речь как команду или просто говорит "Что это было?".
Как я могу получить все речи?
КОД:
SpeechRecognizer _speechRecognizer;
public Window1()
{
InitializeComponent();
// set up the recognizer
_speechRecognizer = new SpeechRecognizer();
_speechRecognizer.Enabled = false;
_speechRecognizer.SpeechRecognized +=
new EventHandler<SpeechRecognizedEventArgs>(_speechRecognizer_SpeechRecognized); }
1 ответ
Возможно, вы хотите использовать пространство имен.net System.Speech вместо SAPI? Есть очень хорошая статья, которая была опубликована несколько лет назад на http://msdn.microsoft.com/en-us/magazine/cc163663.aspx. Это, пожалуй, лучшая вступительная статья, которую я нашел до сих пор. Это немного устарело, но очень полезно. (Метод AppendResultKeyValue был удален после бета-тестирования.)
Вы пытаетесь использовать общий распознаватель? Возможно, поэтому вы видите команды. У вас есть конкретная задача для признания? В этом случае вам лучше использовать грамматику для конкретной задачи и распознаватель inproc.
Если вам нужно обрабатывать какие-либо слова, используйте DictationGrammar, который поставляется с System.Speech. См. http://msdn.microsoft.com/en-us/library/system.speech.recognition.dictationgrammar%28VS.85%29.aspx
Ради интереса я собрал самое простое приложение Windows. Для форм форм, чтобы использовать грамматику диктовки, о которой я только мог подумать. Я создал форму. Уронил на нее кнопку и сделал кнопку большой. Добавлена ссылка на 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();
}
}