Распознавание речи с использованием пространства имен Microsoft.Speech или System.Speech

1

Я пытаюсь использовать распознавание речи в рабочем приложении С#, где, если пользователь говорит "нажмите 3" ИЛИ "нажмите 4", тогда этот цифра должна быть записана на диаграмме (например, "Метка"). Я могу определить слово "пресса", который пользователь произнес, но не выше этого. Пожалуйста помоги. Ниже приведен пример кода:

    string txtSpoken = "";
    string[] words = new string[10];

    public Form1()
    {
        InitializeComponent();

        SpeechRecognitionEngine _recognizer = new SpeechRecognitionEngine();
        _recognizer.LoadGrammar(new Grammar(new GrammarBuilder("press")) { Name = "pressGrammar" }); // load a grammar
        _recognizer.SpeechRecognized += _recognizer_SpeechRecognized;
        _recognizer.SetInputToDefaultAudioDevice(); // set the input of the speech recognizer to the default audio device
        _recognizer.RecognizeAsync(RecognizeMode.Multiple); // recognize speech asynchronous
        // _recognizer.Recognize();
    }

    void _recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        string txt = e.Result.Text;
        this.Invoke(new MethodInvoker(() =>
        {
            listBox1.Items.Add("I heard you say: "
                + txt);
        })); // WinForm specific

        if (e.Result.Text == "press") // e.Result.Text contains the recognized text
        {
            textBox1.Text = "3";
            label1.Text += " 3 ";
            //   MessageBox.Show("The test was successful!");
        }

        txtSpoken += e.Result.Text;
        MessageBox.Show(txtSpoken);


        if (txt.IndexOf("press") >= 0)
        {
            words = txt.Split(' ');
        }
    }
  • 0
    что такое содержание txt ?
Теги:

1 ответ

0

Проблема в том, что ваша грамматика содержит только слово press. Для соответствия между речью пользователя и грамматикой пользователь должен говорить точно один из элементов в вашей грамматике. Я предлагаю вам создать Choices например:

Choices inputs = new Choices();
inputs.Add(new string[] {"press 3", "press 4"});

GrammarBuilder gb = new GrammarBuilder();
gb.Append(inputs);
Grammar g = new Grammar(gb);
_recognizer.LoadGrammar(g);

Для получения дополнительной информации следуйте этому руководству.

  • 0
    Спасибо за ваше предложение. Я изменил свой код, и теперь он находится в VB.Net
  • 0
    Это код: Dim _recognizer As New SpeechRecognitionEngine () Dim inputs = Новый Microsoft.Speech.Recognition.Choices () input.add ("probingdepth") input.add ("pocketDepth") Dim gb = Новый Microsoft.Speech.Recognition .GrammarBuilder () gb.Append (входные данные) Dim p = New Microsoft.Speech.Recognition.Grammar (gb) p.Name = "ProbingDepth" _recognizer.LoadGrammar (p)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню