【问题标题】:SAPI and Windows 7 ProblemSAPI 和 Windows 7 问题
【发布时间】:2023-03-25 06:57:01
【问题描述】:

我正在尝试使用 Windows 7 识别语音,但它总是将语音识别为命令或只是说“那是什么?”。

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

代码:

SpeechRecognizer _speechRecognizer;

    public Window1()
    {
        InitializeComponent();

        // set up the recognizer
        _speechRecognizer = new SpeechRecognizer();
        _speechRecognizer.Enabled = false;
        _speechRecognizer.SpeechRecognized +=
      new EventHandler<SpeechRecognizedEventArgs>(_speechRecognizer_SpeechRecognized); }

【问题讨论】:

    标签: windows-7 speech-recognition sapi speech-to-text


    【解决方案1】:

    也许您想使用 .net System.Speech 命名空间而不是 SAPI?几年前在http://msdn.microsoft.com/en-us/magazine/cc163663.aspx 发表了一篇非常好的文章。这可能是迄今为止我找到的最好的介绍性文章。它有点过时了,但很有帮助。 (在 beta 之后,AppendResultKeyValue 方法被删除了。)

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

    如果您需要处理任何单词,请使用 System.Speech 附带的 DictationGrammar。见http://msdn.microsoft.com/en-us/library/system.speech.recognition.dictationgrammar%28VS.85%29.aspx

    为了好玩,我拼凑了一个最简单的 .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 附带),它带有内置的听写语法。见msdn.microsoft.com/en-us/library/…
    • 我更新了答案以包含使用 DictationGrammar 的示例。
    • @Michael Levy:我使用了你的代码,但它并没有给我准确的答案。:/为什么会这样?
    • 识别器结果可能因许多因素而异。背景噪音、麦克风质量、音频输入设置和电平。在具有听写语法的 Windows 7 中,您还可以使用 Windows 7 语音识别功能来训练识别器以更好地识别单个说话者。请参阅windows.microsoft.com/en-US/windows7/Set-up-Speech-Recognition 了解更多信息。
    猜你喜欢
    • 2014-02-05
    • 2011-07-02
    • 2011-01-02
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    相关资源
    最近更新 更多