2014-02-05 67 views
1

這裏是我的代碼,我不熟悉SpeechLib DLL我引用了一個網站,我只是試過。使用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)); 
    } 

} 

我無法弄清楚我在這裏犯了什麼錯誤。 如果有人在這個問題上有經驗,請給我解決方案。

+0

如何在項目引用中添加SpeechLib?它是一個COM,但它不出現在COM列表中。 – Kiquenet

回答

1

您並未選擇SR引擎。進行中回放上下文需要指定音頻源識別引擎。

我有一些C++ code to do this,但我沒有將它翻譯成C#/ SpeechLib。