void Flow_StateChanged(object sender, MediaFlowStateChangedEventArgs e) { Log("ControlAVCall Flow_StateChanged PreviousState=" + e.PreviousState + " State=" + e.State); AudioVideoFlow avFlow = (AudioVideoFlow)sender; if (avFlow.State == MediaFlowState.Active) { SpeechRecognitionConnector speechRecognitionConnector = new SpeechRecognitionConnector(); speechRecognitionConnector.AttachFlow(avFlow); SpeechRecognitionStream stream = speechRecognitionConnector.Start(); _speechRecognitionEngine = new SpeechRecognitionEngine(); _speechRecognitionEngine.SpeechRecognized += new EventHandler <SpeechRecognizedEventArgs>(_speechRecognitionEngine_SpeechRecognized); _speechRecognitionEngine.LoadGrammarCompleted += new EventHandler <LoadGrammarCompletedEventArgs>(_speechRecognitionEngine_LoadGrammarCompleted); Choices pathChoice = new Choices(new string[] { "previous", "next" }); Grammar gr = new Grammar(new GrammarBuilder(pathChoice)); _speechRecognitionEngine.LoadGrammarAsync(gr); SpeechAudioFormatInfo speechAudioFormatInfo = new SpeechAudioFormatInfo(8000, AudioBitsPerSample.Sixteen, Microsoft.Speech.AudioFormat.AudioChannel.Mono); _speechRecognitionEngine.SetInputToAudioStream(stream, speechAudioFormatInfo); _speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); } else { if (avFlow.SpeechRecognitionConnector != null) { avFlow.SpeechRecognitionConnector.DetachFlow(); } } }
public void Run() { // A helper class to take care of platform and endpoint setup and cleanup. _helper = new UCMASampleHelper(); // Create a user endpoint using the network credential object. _userEndpoint = _helper.CreateEstablishedUserEndpoint("Broadcast User"); // Register a delegate to be called when an incoming audio-video call arrives. _userEndpoint.RegisterForIncomingCall <AudioVideoCall>(AudioVideoCall_Received); // Wait for the incoming call to be accepted. Console.WriteLine("Waiting for incoming call..."); _waitForCallToBeAccepted.WaitOne(); // Create a speech recognition connector and attach an AudioVideoFlow to it. SpeechRecognitionConnector speechRecognitionConnector = new SpeechRecognitionConnector(); speechRecognitionConnector.AttachFlow(_audioVideoFlow); // Start the speech recognition connector. SpeechRecognitionStream stream = speechRecognitionConnector.Start(); // Create a speech recognition engine. SpeechRecognitionEngine speechRecognitionEngine = new SpeechRecognitionEngine(); speechRecognitionEngine.SpeechRecognized += new EventHandler <SpeechRecognizedEventArgs>(SpeechRecognitionEngine_SpeechRecognized); //Add a grammar. string[] recoString = { "buy", "sell", "Fabrikam", "Contoso", "maximum", "minimum", "one", "ten", "twenty", "send" }; Choices choices = new Choices(recoString); speechRecognitionEngine.LoadGrammar(new Grammar(new GrammarBuilder(choices))); //Attach to audio stream to the SR engine. SpeechAudioFormatInfo speechAudioFormatInfo = new SpeechAudioFormatInfo(8000, AudioBitsPerSample.Sixteen, Microsoft.Speech.AudioFormat.AudioChannel.Mono); speechRecognitionEngine.SetInputToAudioStream(stream, speechAudioFormatInfo); Console.WriteLine("\r\nGrammar loaded, say send to send IM."); //Prepare the SR engine to perform multiple asynchronous recognitions. speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); //Pause the main thread until recognition completes. _waitForConnectorToStop.WaitOne(); speechRecognitionConnector.Stop(); Console.WriteLine("connector stopped"); // Detach the flow from the speech recognition connector, to prevent the flow from being kept in memory. speechRecognitionConnector.DetachFlow(); // Terminate the call, the conversation, and then unregister the // endpoint from receiving an incoming call. _audioVideoCall.BeginTerminate(CallTerminateCB, _audioVideoCall); _waitForConversationToBeTerminated.WaitOne(); // Shut down the platform. _helper.ShutdownPlatform(); }
public void Run() { // Create AudioVideoFlow AudioVideoFlowHelper audioVideoFlowHelper = new AudioVideoFlowHelper(); _audioVideoFlow = audioVideoFlowHelper.CreateAudioVideoFlow( null, audioVideoFlow_StateChanged); // Create a speech recognition connector and attach it to a AudioVideoFlow SpeechRecognitionConnector speechRecognitionConnector = new SpeechRecognitionConnector(); speechRecognitionConnector.AttachFlow(_audioVideoFlow); //Start recognizing SpeechRecognitionStream stream = speechRecognitionConnector.Start(); // Create speech recognition engine and start recognizing by attaching connector to engine SpeechRecognitionEngine speechRecognitionEngine = new SpeechRecognitionEngine(); speechRecognitionEngine.SpeechRecognized += new EventHandler <SpeechRecognizedEventArgs>(speechRecognitionEngine_SpeechRecognized); string[] recognizedString = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "exit" }; Choices numberChoices = new Choices(recognizedString); speechRecognitionEngine.LoadGrammar(new Grammar(new GrammarBuilder(numberChoices))); SpeechAudioFormatInfo speechAudioFormatInfo = new SpeechAudioFormatInfo(8000, AudioBitsPerSample.Sixteen, Microsoft.Speech.AudioFormat.AudioChannel.Mono); speechRecognitionEngine.SetInputToAudioStream(stream, speechAudioFormatInfo); Console.WriteLine("\r\nGrammar loaded from zero to ten, say exit to shutdown."); speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); _waitForXXXCompleted.WaitOne(); //Stop the connector speechRecognitionConnector.Stop(); Console.WriteLine("Stopping the speech recognition connector"); //speech recognition connector must be detached from the flow, otherwise if the connector is rooted, it will keep the flow in memory. speechRecognitionConnector.DetachFlow(); // Shutdown the platform ShutdownPlatform(); _waitForShutdownEventCompleted.WaitOne(); }
private void StartSpeechRecognition() { if (_isActive && !_isRecognizing) { _isRecognizing = true; _waitForLoadGrammarCompleted.WaitOne(); _speechRecognitionConnector.AttachFlow(_audioVideoFlow); _speechRecognitionStream = _speechRecognitionConnector.Start(); _speechRecognitionEngine.SetInputToAudioStream(_speechRecognitionStream, speechAudioFormatInfo); _speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); #if EMULATE_SPEECH _speechRecognitionEngine.EmulateRecognizeAsync("one"); _speechRecognitionEngine.EmulateRecognizeAsync("two"); _speechRecognitionEngine.EmulateRecognizeAsync("three"); _speechRecognitionEngine.EmulateRecognizeAsync("four"); #endif // EMULATE_SPEECH } }
void Flow_StateChanged(object sender, MediaFlowStateChangedEventArgs e) { Log("ControlAVCall Flow_StateChanged PreviousState=" + e.PreviousState + " State=" + e.State); AudioVideoFlow avFlow = (AudioVideoFlow)sender; if (avFlow.State == MediaFlowState.Active) { SpeechRecognitionConnector speechRecognitionConnector = new SpeechRecognitionConnector(); speechRecognitionConnector.AttachFlow(avFlow); SpeechRecognitionStream stream = speechRecognitionConnector.Start(); _speechRecognitionEngine = new SpeechRecognitionEngine(); _speechRecognitionEngine.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(_speechRecognitionEngine_SpeechRecognized); _speechRecognitionEngine.LoadGrammarCompleted += new EventHandler<LoadGrammarCompletedEventArgs>(_speechRecognitionEngine_LoadGrammarCompleted); Choices pathChoice = new Choices(new string[] { "previous", "next" }); Grammar gr = new Grammar(new GrammarBuilder(pathChoice)); _speechRecognitionEngine.LoadGrammarAsync(gr); SpeechAudioFormatInfo speechAudioFormatInfo = new SpeechAudioFormatInfo(8000, AudioBitsPerSample.Sixteen, Microsoft.Speech.AudioFormat.AudioChannel.Mono); _speechRecognitionEngine.SetInputToAudioStream(stream, speechAudioFormatInfo); _speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); } else { if (avFlow.SpeechRecognitionConnector != null) { avFlow.SpeechRecognitionConnector.DetachFlow(); } } }