当他们拿起另一端的接收器时,我需要检测用户的声音。
因为调制解调器通常在第一个铃声响起时开始播放文件(播放终端)。所以我打算在他们说“你好”时使用语音识别,它可以开始播放文件,直到等待播放文件。
甚至它可以开始说话的任何噪音干扰。
我用很少的设置完成了这个。我发现我的引擎在我们说话时检测到的几个常见词以及在它响起时出现的词。它作为一个独立的应用程序可以正常工作,但如果我尝试将它与我的应用程序集成,它不会引发“SpeechHypothesized”事件。
我不明白为什么会这样。
如果我看到使用断点,则引擎正在分配委托,并且调用属性也已正确初始化,但不会调用事件。对于呼叫,我使用 C4F Tapi 管理器,对于语音识别,我使用 System.Speech .Net 3.5 库。
事件代码如下:
engine.SpeechDetected += new EventHandler<SpeechDetectedEventArgs>(engine_SpeechDetected);
engine.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(engine_SpeechRecognized);
engine.SpeechHypothesized+=new EventHandler<SpeechHypothesizedEventArgs> (engine_SpeechHypothesized);
engine.SpeechRecognitionRejected += new EventHandler<SpeechRecognitionRejectedEventArgs>(engine_SpeechRecognitionRejected);
除语音假设事件外,所有事件都被引发。
知道为什么会这样吗???
编辑:
错误不是由服务引发的,而是引发错误的 Windows 窗体!!!
语音识别的代码如下:
System.Collections.ObjectModel.ReadOnlyCollection<RecognizerInfo>
识别语音 = System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers(); if (recognizedSpeeches != null) {
Console.WriteLine("Recognized Speeches:");
int 识别器编号 = 0;engine = new SpeechRecognitionEngine(recognizedSpeeches[recognizerNumber]); engine.SetInputToDefaultAudioDevice(); engine.SpeechDetected -= new
EventHandler(engine_SpeechDetected); engine.SpeechRecognized -= new EventHandler(engine_SpeechRecognized); engine.SpeechHypothesized -= new EventHandler(engine_SpeechHypothesized); engine.SpeechRecognitionRejected -= new EventHandler(engine_SpeechRecognitionRejected); engine.SpeechDetected += new EventHandler(engine_SpeechDetected); engine.SpeechRecognized += new EventHandler(engine_SpeechRecognized); engine.SpeechHypothesized+=new EventHandler(engine_SpeechHypothesized); engine.SpeechRecognitionRejected += new EventHandler(engine_SpeechRecognitionRejected); engine.LoadGrammar(new DictationGrammar());
RecognitionResult srResult = engine.Recognize(new TimeSpan(0, 0, 30)); }
有什么线索吗???