user4291359
user4291359

Reputation:

C# speech recogntion engine recognizes everything wrong

I have been trying to make a personal assistant in my free time, and so far i have made him speak, but now i am trying to speak to him. Whenever i do however, he fails massively. When i say "Hello my name is Alexander" he recognizes "in the name is unresolved bush" or something else that is just not correct. am i doing something wrong or is the built in C# recognition engine just broken?

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Speech.Recognition;
using System.Speech.Synthesis;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TTS_Test
{
class Jarvis
{
    private static SpeechSynthesizer synthezier;
    private static String name;
    public Jarvis()
    {
        synthezier = new SpeechSynthesizer();
        synthezier.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Senior);
        synthezier.Volume = 100;
        synthezier.Rate = 0;
    }

    private bool isFirstTime() 
    {
        if (File.Exists("config"))
        {
            return false;
        }else{
            return true;
        }
    }

    private void firstTimeSetup()
    {
        say("Hello, My name is Jarvis. It seems that this is your first time here. Please take some time to configure the application.");
        Config config = new Config();
        config.ShowDialog();
        say("Thank you! I should be up and running now.");
    }

    public void initiate()
    {
        if (isFirstTime()) 
        {
            firstTimeSetup();
        }
        setupUserData();
        say("Hello " + name+". How may i help you today?");
        recognize();
    }

    public void setupUserData()
    {
        StreamReader reader = new StreamReader("config");
        name = reader.ReadLine();
        reader.Close();
    }

    public void say(string output)
    {
        synthezier.Speak(output);
    }

    public void recognize()
    {
        SpeechRecognitionEngine sr = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-GB"));
        sr.LoadGrammar(new DictationGrammar());
        sr.InitialSilenceTimeout = TimeSpan.FromSeconds(5);
        sr.SetInputToDefaultAudioDevice();
        RecognitionResult result = sr.Recognize();
        MessageBox.Show(result.Text);
    }
}
}

Upvotes: 1

Views: 151

Answers (1)

user2930590
user2930590

Reputation:

You should train your computer to better understand you by going to the Control Panel\All Control Panel Items\Speech Recognition

Upvotes: 1

Related Questions