/// <inheritdoc /> public async Task <AudioClip> StopRecordingAsync() { Profiler.BeginSample("[MRTK] WindowsDictationInputProvider.StopRecordingAsync"); #if UNITY_STANDALONE_WIN || UNITY_WSA || UNITY_EDITOR_WIN if (!IsListening || isTransitioning || !Application.isPlaying) { Debug.LogWarning("Unable to stop recording"); Profiler.EndSample(); // StopRecordingAsync - failure return(null); } IsListening = false; isTransitioning = true; IMixedRealityInputSystem inputSystem = Service as IMixedRealityInputSystem; if (hasListener) { inputSystem?.PopModalInputHandler(); hasListener = false; } Microphone.End(deviceName); if (dictationRecognizer.Status == SpeechSystemStatus.Running) { dictationRecognizer.Stop(); } await waitUntilDictationRecognizerHasStopped; Debug.Assert(dictationRecognizer.Status == SpeechSystemStatus.Stopped); PhraseRecognitionSystem.Restart(); await waitUntilPhraseRecognitionSystemHasStarted; Debug.Assert(PhraseRecognitionSystem.Status == SpeechSystemStatus.Running); isTransitioning = false; Profiler.EndSample(); // StopRecordingAsync return(dictationAudioClip); #else await Task.CompletedTask; Profiler.EndSample(); // StopRecordingAsync return(null); #endif }
/// <inheritdoc /> public async Task <AudioClip> StopRecordingAsync() { if (!IsListening || isTransitioning || !Application.isPlaying) { Debug.LogWarning("Unable to stop recording"); return(null); } IsListening = false; isTransitioning = true; IMixedRealityInputSystem inputSystem = Service as IMixedRealityInputSystem; if (hasListener) { inputSystem?.PopModalInputHandler(); hasListener = false; } Microphone.End(deviceName); if (dictationRecognizer.Status == SpeechSystemStatus.Running) { dictationRecognizer.Stop(); } await waitUntilDictationRecognizerHasStopped; Debug.Assert(dictationRecognizer.Status == SpeechSystemStatus.Stopped); PhraseRecognitionSystem.Restart(); await waitUntilPhraseRecognitionSystemHasStarted; Debug.Assert(PhraseRecognitionSystem.Status == SpeechSystemStatus.Running); isTransitioning = false; return(dictationAudioClip); }