Umairalam Ответов: 2

У меня что-то не так с моим кодом распознавания голоса C#. Не могли бы вы, ребята, пожалуйста, помочь мне и сказать, как исправить эти ошибки.


using System;
using System.Diagnostics;
using System.Speech.Recognition;
using System.Speech.Synthesis;
using System.Windows.Forms;
using System.Threading.Tasks;


namespace Voice_Recognition
{
    public partial class Form1 : Form
    {
        SpeechSynthesizer ss = new SpeechSynthesizer();
        PromptBuilder pb = new PromptBuilder();
        SpeechRecognitionEngine sre = new SpeechRecognitionEngine();
        Choices clist;

        public Choices Clist { get => clist; set => clist = value; }

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btnstart_Click(object sender, EventArgs e)
        {
            btnstart.Enabled = false;
            btnstart.Enabled = true;
            Clist.Add(new string[] { "Hello", "How are you jarvis", "What is the current time", "Open Google", "Thank you", "Close", });
            Grammar gr = new Grammar(new GrammarBuilder(Clist));

            try
            {
                sre.RequestRecognizerUpdate();
                sre.LoadGrammar(gr);
                sre.SpeechRecognized += sre_SpeechRecognized;  // (" Error 1)")
                sre.SetInputToDefaultAudioDevice();
                sre.RecognizeAsync(RecognizeMode.Multiple);
 
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error");
            }

           
        }

        void sre_SpeechRecognized(object sender, SpeechDetectedEventArgs e)
        {
            switch (e.Result.Text.ToString()) //("Error-2")
            {
                case "Hello":
                    ss.SpeakAsync("Hello Sir");
                    break;
                case "How Are you":
                    ss.SpeakAsync("Every Ting is running smothly. How are you");
                    break;
                case "What is the current time":
                    ss.SpeakAsync("Current time is " + DateTime.Now.ToLongDateString());
                    break;
                case "Thank you Jarvis":
                    ss.SpeakAsync("It's my pleasure to serve you sir");
                    break;
                case "Open Google":
                    Process.Start("Opening Google ", "http://www.google.com");
                    break;
                case "close":
                    Application.Exit();
                    break;
                default:
                    break;
            }
         txtcontents.Text += e.Result.text.ToString() + Environment.NewLine; //("Error-3")
        }

        private void btnstop_Click(object sender, EventArgs e)
        {
            sre.RecognizeAsyncStop();
            btnstart.Enabled = true;
            btnstart.Enabled = false;
        }
    }
}


Что я уже пробовал:

Я старался изо всех сил, но потерпел неудачу. пожалуйста, помогите мне. Любое предложение и помощь будут оценены заранее.

это ошибки в моем коде, и я упомянул эти ошибки в коде, как (Ошибка-1, Ошибка-2 и ошибка-3)

Ошибка-1) нет перегрузки для 'sre_SpeechRecognized' соответствует делегату 'EventHandler<SpeechRecognizedEventArgs

Ошибка-2) SpeechDetectedEventArgs' не содержит определения для 'Result' и никакого метода расширения 'Result', принимающего первый аргумент типа 'SpeechDetectedEventArgs

Ошибка-3) SpeechDetectedEventArgs' не содержит определение для 'результат', а не метод расширения 'результат', принимающий первый аргумент типа 'SpeechDetectedEventArgs'

2 Ответов

Рейтинг:
4

RASHID ALI786

Решение Для Ошибки 1

sre.SpeechRecognized +=new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized);

Решение Для Ошибки 2
Вы создаете метод "SpeechDetectedEventArgs"
void sre_SpeechRecognized(object sender, SpeechDetectedEventArgs e)

И вы должны сделать метод "SpeechRecognizedEventArgs"
private void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)


И ваша третья ошибка будет решена автоматически