C#语音识别引擎识别一切错误

C# speech recogntion engine recognizes everything wrong

我一直在努力在空闲时间做一个私人助理,到目前为止我已经让他说话了,但现在我想和他说话。然而,每当我这样做时,他都会失败。当我说 "Hello my name is Alexander" 他认出 "in the name is unresolved bush" 或其他不正确的东西。我是做错了什么还是内置的 C# 识别引擎坏了?

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);
    }
}
}

您应该通过转到控制 Panel\All 控制面板 Items\Speech 识别

来训练您的计算机更好地理解您