У меня есть кнопка ac # .net, которая должна включать и выключать распознавание речи.В основном включить и выключить прослушивание.Он является непрерывным, поэтому после активации он будет продолжать прослушивать и запускать события распознавания каждый раз, когда слышит «Привет, Apple», пока кнопка не будет нажата снова и не остановит его.Однако кажется, что он работает только один или два раза, затем он перестает распознавать «Эй, яблоко», или иногда он распознает даже после того, как я снова нажму кнопку, которая должна завершить сеанс распознавания.Логика кнопок за этим испорчена, или я пропускаю какую-то часть распознавания речи?
internal class Button1 : Button
{
private bool isCheck = true;
protected override void OnClick()
{
SpeechSynthesizer ss = new SpeechSynthesizer();
PromptBuilder pb = new PromptBuilder();
SpeechRecognitionEngine sre = new SpeechRecognitionEngine();
Choices keyWords = new Choices(new string[] { "Hey Apple", "hey apple" });
Grammar gr = new Grammar(new GrammarBuilder(keyWords));
if (isCheck == true)
{
sre.RequestRecognizerUpdate();
sre.LoadGrammar(gr);
sre.SpeechRecognized += sre_SpeechRecognized;
sre.SetInputToDefaultAudioDevice();
sre.RecognizeAsync(RecognizeMode.Multiple);
Debug.WriteLine("I'M LISTENING");
Caption = "Listening2u";
isCheck = false;
}
else
{
Caption = "Not Listening2u";
sre.RecognizeAsyncCancel();
sre.Dispose();
Debug.WriteLine("NOT LISTENING");
isCheck = true;
}
}
async void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
SoundPlayer player = new SoundPlayer(Properties.Resources.beep1);
player.Play();
Debug.WriteLine("recognized = " + e.Result.Text.ToString());
}
}