2015-05-08 1 views
0

Я сделал некоторую кодировку на виртуальном помощнике, и я ударил блок. Вот код:Как добавить переменные в распознавание речи?

private void Form1_Load_1(object sender, System.EventArgs e) 
    { 
     SrgsDocument commands = new SrgsDocument(); 
     SrgsRule displayList = new SrgsRule("selectList"); 
     SrgsOneOf listTypes = new SrgsOneOf(new string[] { "hi " + name + ", my name is" , "hi " + name}); 
     displayList.Scope = SrgsRuleScope.Public; 
     displayList.Elements.Add(listTypes); 
     commands.Rules.Add(displayList); 
     commands.Root = displayList; 
     Grammar grammar = new Grammar(commands); 
     recEngine.LoadGrammarAsync(grammar); 
     recEngine.SetInputToDefaultAudioDevice(); 
     recEngine.RecognizeAsync(RecognizeMode.Multiple); 
     recEngine.SpeechRecognized +=recEngine_SpeechRecognized; 

    }      
    SpeechSynthesizer synth = new SpeechSynthesizer(); 
    void recEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
    { 
     String message = e.Result.Text.ToLower(); 
     if (message.Contains("hi " + name + ", my name is")) 
     { 
      message = message.Replace("hi " + "name" + ", my name is", ""); 
      synth.Speak("Hello " + message + ", my name is " + name); 
     } 
     else if (message.Contains("hi " + name)) 
     { 
      synth.Speak("Hello!"); 
     } 
    } 

То, что я пытаюсь сделать, как следует из названия, это есть имя переменной заполняется из распознавания речи. Я ищу способ сделать это, который включает в себя ввод пользователя, а не добавление каждой возможности для имени отдельно. К сожалению, SpeechRecognizer смотрит только на «Мое имя», и больше ничего.

Кто-то рассказал мне о классе мусора, но я не могу понять, как его реализовать.

+0

Мне непонятно, что вы просите. Значение 'name' имеет значение? –

+0

Да, его не показано. 'String name =" testname ";' Я пытаюсь сопоставить предложение в грамматике, а затем дополнительное слово, которое может быть чем угодно. Я не знаю, как заставить его продолжать слушать. – Minedude78910

+0

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

ответ

0

То, что я закончил, заключается в добавлении грамматики диктовки и установке таймера. Таймер сбрасывается каждый раз, когда кто-то говорит. Грамматика диктовки переходит в текстовое поле. Когда таймер = 0, используйте код для проверки текстового поля. Просто и сделано!