ユーザーが相手側の受信機を手に取ったときに、ユーザーの声を検出する必要があります。
モデムは通常、最初のリングがそこに行くとファイル (再生端末) の再生を開始するためです。そのため、「こんにちは」と言うと音声認識を使用して、ファイルの再生を待つまでファイルの再生を開始できるようにすることを計画しました。
または、ノイズ干渉さえも話し始める可能性があります。
いくつかの設定でこれを達成しました。私が話しているときにエンジンが検出する一般的な単語と、エンジンが鳴っているときに来る単語をいくつか見つけました。スタンドアロン アプリケーションとしては正常に動作しますが、これを自分のアプリケーションに統合しようとすると、「SpeechHypotheized」イベントが発生しません。
なぜこれが起こるのか理解できません。
ブレークポイントを使用している場合、エンジンはデリゲートを割り当てており、呼び出しプロパティも適切に初期化されていますが、イベントが呼び出されていません。通話には C4F タピ マネージャーを使用し、音声認識には .Net 3.5 の System.Speech ライブラリを使用しています。
イベントのコードは次のとおりです。
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);
speechhypothesized イベントを除くすべてのイベントが発生します。
なぜこれが起こるのか?
編集:
サービスによってエラーがスローされるのではなく、エラーをスローするのは Windows フォームです!!!
音声認識のコードは次のとおりです。
System.Collections.ObjectModel.ReadOnlyCollection<RecognizerInfo>
認識されたSpeeches = System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers(); if (recognizedSpeeches != null) {
Console.WriteLine("認識された音声:");
int 認識番号 = 0;engine = new SpeechRecognitionEngine(recognizedSpeeches[recognizerNumber]); engine.SetInputToDefaultAudioDevice(); engine.SpeechDetected -= new
EventHandler(engine_SpeechDetected); engine.SpeechRecognized -= 新しい EventHandler(engine_SpeechRecognized); engine.SpeechHypotheized -= 新しい EventHandler(engine_SpeechHypothesized); engine.SpeechRecognitionRejected -= new EventHandler(engine_SpeechRecognitionRejected); engine.SpeechDetected += 新しい EventHandler(engine_SpeechDetected); engine.SpeechRecognized += 新しい EventHandler(engine_SpeechRecognized); engine.SpeechHypothesized+=new EventHandler(engine_SpeechHypothesized); engine.SpeechRecognitionRejected += new EventHandler(engine_SpeechRecognitionRejected); engine.LoadGrammar(新しい DictationGrammar());
RecognitionResult srResult = engine.Recognize(新しい TimeSpan(0, 0, 30)); }
どんな手掛かり????