Windows 7 SAPI和Windows 7问题

Windows 7 SAPI和Windows 7问题,windows-7,speech-recognition,sapi,speech-to-text,Windows 7,Speech Recognition,Sapi,Speech To Text,我试图用Windows7识别语音,但它总是将语音识别为命令,或者只是说那是什么 我怎样才能得到所有的演讲 代码: 也许您想使用.net System.Speech命名空间而不是SAPI?几年前在上发表了一篇非常好的文章。这可能是迄今为止我找到的最好的介绍性文章。这有点过时,但很有用。AppendResultKeyValue方法在测试后被删除 您正在尝试使用共享识别器吗?这可能就是您看到命令的原因。您是否有特定的识别任务?在这种情况下,您最好使用特定于任务的语法和inproc识别器 如果您需要处理

我试图用Windows7识别语音,但它总是将语音识别为命令,或者只是说那是什么

我怎样才能得到所有的演讲

代码:


也许您想使用.net System.Speech命名空间而不是SAPI?几年前在上发表了一篇非常好的文章。这可能是迄今为止我找到的最好的介绍性文章。这有点过时,但很有用。AppendResultKeyValue方法在测试后被删除

您正在尝试使用共享识别器吗?这可能就是您看到命令的原因。您是否有特定的识别任务?在这种情况下,您最好使用特定于任务的语法和inproc识别器

如果您需要处理任何单词,请使用System.Speech附带的听写语法。看

为了好玩,我设计了一个最简单的.NET windows窗体应用程序,使用我能想到的口述语法。我创建了一个表单。在上面掉了一个钮扣,把钮扣弄大了。添加了对System.Speech和行的引用:

using System.Speech.Recognition;
然后,我将以下事件处理程序添加到button1:

private void button1_Click(object sender, EventArgs e)
{         
    SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
    Grammar dictationGrammar = new DictationGrammar();
    recognizer.LoadGrammar(dictationGrammar);
    try
    {
        button1.Text = "Speak Now";
        recognizer.SetInputToDefaultAudioDevice();
        RecognitionResult result = recognizer.Recognize();
        button1.Text = result.Text;
    }
    catch (InvalidOperationException exception)
    {
        button1.Text = String.Format("Could not recognize input from default aduio device. Is a microphone or sound card available?\r\n{0} - {1}.", exception.Source, exception.Message);
    }
    finally
    {
        recognizer.UnloadAllGrammars();
    }                          
}

谢谢你,迈克尔。我需要识别每个单词。链接中的所有示例实际上都是关于生成命令的。如何获取所有信息?如果您使用Windows Vista和7附带的桌面识别器,它附带了内置的听写语法。请参阅我更新了答案,以包含使用听写语法的示例。@Michael Levy:我使用了您的代码,但它没有给出我所说内容的准确答案。:/为什么会这样?识别器的结果可能会因许多因素而有所不同。背景噪音、麦克风质量、音频输入设置和音量。在具有听写语法的Windows 7中,您还可以使用Windows 7语音识别功能来训练识别器更好地识别单个说话人。有关更多信息,请参阅。
private void button1_Click(object sender, EventArgs e)
{         
    SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
    Grammar dictationGrammar = new DictationGrammar();
    recognizer.LoadGrammar(dictationGrammar);
    try
    {
        button1.Text = "Speak Now";
        recognizer.SetInputToDefaultAudioDevice();
        RecognitionResult result = recognizer.Recognize();
        button1.Text = result.Text;
    }
    catch (InvalidOperationException exception)
    {
        button1.Text = String.Format("Could not recognize input from default aduio device. Is a microphone or sound card available?\r\n{0} - {1}.", exception.Source, exception.Message);
    }
    finally
    {
        recognizer.UnloadAllGrammars();
    }                          
}