语音识别所有字典 - 关闭表格

时间:2014-10-24 11:10:25

标签: c# c#-4.0 speech-recognition speech speech-to-text

我正在努力制作像JARVIS这样的语音识别程序,但现在我已经堆叠了。我想写写模式。无论我说什么,这种模式都会写出来。

首先,我想我可以将txt文件用于所有库。我将我的所有txt字典发送到Array,我将String Array定义为语法文件,但我不能仅将其用于单词的句子。

当txt发送到Strings到数组pc堆栈。我无法解释自己,但我想使用语音文本库,我想使用所有语法。当我打招呼的时候,你是怎么写给我的呢?它可以写出来。我的代码

多数民众赞成我的IO。它适用于所有词典单词。

private ArrayList IoS(int x)
{

    ArrayList returner = new ArrayList();
    string path = "";
    string commandDict = @"../../documents/dictionary_C.txt";
    string fullDict = @"../../documents/dictionary_F.txt";
    if (x == 0)
        path = commandDict;
    else
        if (x == 1)
            path = fullDict;

    if (IoChecker(path) == false)
        Console.Error.WriteLine("ERROR");

    using (StreamReader sr = File.OpenText(path))
    {
        string checker = "";
        while ((checker = sr.ReadLine()) != null)
        {
            returner.Add(checker);
        }
    }
    return returner;

}

我的语音识别语法代码。

private void panel_Load(object sender, EventArgs e)
{
    int ListC = 0;
    IO io = new IO();

    string[] list = new string[io.IoSCaller(ListC).Count];
    Choices sList = new Choices();
    for (int i = 0; i < io.IoSCaller(ListC).Count; i++)
    {
        list[i] = (io.IoSCaller(ListC)[i].ToString());
    }

    sList.Add(list);
    Grammar gr = new Grammar(new GrammarBuilder(sList));

    try
    {
        sRecognize.RequestRecognizerUpdate();
        sRecognize.LoadGrammar(gr);
        sRecognize.SpeechRecognized += sRecognize_SpeechRecognized;
        sRecognize.SetInputToDefaultAudioDevice();
        sRecognize.RecognizeAsync(RecognizeMode.Multiple);
        sRecognize.Recognize();
    }
    catch
    {
        return;
    }
}

它为言语而工作,但没有为判刑而工作,我无法挽救所有的感情。我能做些什么呢?我想逐字逐句地使用所有字典和串行输入。

我的第二个问题 我想关闭所有程序,但我无法关闭我的程序。 我正在使用这些代码但是没有关闭我的程序。我无法关闭我的代码,请帮助我。

System.Environment.Exit(0);
Environment.Exit(0);
Application.Exit();

System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName("vshost32");
foreach (System.Diagnostics.Process proc in procs)
{
    proc.CloseMainWindow();
}

我是C#编码的新手。谢谢你的一切。

1 个答案:

答案 0 :(得分:2)

您最好使用DictationGrammar,而不是将大量字符串加载到语法中以使其识别出许多单词。这是一种能够识别你所说的一切的语法。因此,不要从许多字符串构建语法,而是使用new DictationGrammar()作为LoadGrammar方法的参数。此外,拨打Recognize()后,无需致电RecognizeAsync()

sRecognize.RequestRecognizerUpdate();
sRecognize.LoadGrammar(new DictationGrammar());
sRecognize.SpeechRecognized += sRecognize_SpeechRecognized;
sRecognize.SetInputToDefaultAudioDevice();
sRecognize.RecognizeAsync(RecognizeMode.Multiple);
  

我的第二个问题我想关闭所有程序,但我无法关闭我的程序。

为此,我需要一些额外的信息。它是控制台应用程序,Windows窗体应用程序还是WPF应用程序?