使用SpeechLib DLL语音到文本不触发识别事件

时间:2014-02-05 12:07:22

标签: c# speech-recognition

这是我的代码,我不熟悉SpeechLib Dll我推荐了一个网站,我刚试过。

我已经使用System.Speech命名空间对文本应用程序进行了语音处理。但在那里我无法获得100%的准确度,所以只有我只是尝试可能的可能性。

    static void Main(string[] args)
    {
        wavRecoContext = new SpInProcRecoContext();
        ((SpInProcRecoContext)wavRecoContext).Recognition += new _ISpeechRecoContextEvents_RecognitionEventHandler(Program_Recognition);
        ((SpInProcRecoContext)wavRecoContext).Hypothesis += new _ISpeechRecoContextEvents_HypothesisEventHandler(Program_Hypothesis);
        ((SpInProcRecoContext)wavRecoContext).EndStream += new _ISpeechRecoContextEvents_EndStreamEventHandler(Program_EndStream);
        grammar = wavRecoContext.CreateGrammar(0);
        grammar.DictationLoad("", SpeechLoadOption.SLOStatic);
        inputFileStream = new SpFileStream();
        inputFileStream.Open("aboutus.wav", SpeechStreamFileMode.SSFMOpenForRead, false);
        wavRecoContext.Recognizer.AudioInputStream = inputFileStream;
        grammar.DictationSetState(SpeechRuleState.SGDSActive);
        Console.ReadKey();

    }

    static void Program_Hypothesis(int StreamNumber, object StreamPosition, ISpeechRecoResult Result)
    {
        throw new NotImplementedException();
    }

    static void Program_EndStream(int StreamNumber, object StreamPosition, bool StreamReleased)
    {
        grammar.DictationSetState(SpeechRuleState.SGDSInactive);
    }

    static void Program_Recognition(int StreamNumber, object StreamPosition, SpeechRecognitionType RecognitionType, ISpeechRecoResult Result)
    {
        Console.WriteLine(Result.PhraseInfo.GetText(0, -1, true));
    }

}

我无法弄清楚我在这里犯了什么错误。 如果有人有这个问题的经验,请给我解决方案。

1 个答案:

答案 0 :(得分:1)

您没有选择SR引擎。进程内重新上下文需要指定音频源识别引擎。

我有一些C++ code to do this,但我还没有把它翻译成C#/ SpeechLib。