Skip to content

Commit

Permalink
Update DictationHandler Example Script to work with SpeechRecognition…
Browse files Browse the repository at this point in the history
…Subsystem (#11696)

Update DictationHandler Example Script to work with SpeechRecognitionSubsystem.
  • Loading branch information
marlenaklein-msft committed Jul 10, 2023
1 parent 7bff152 commit ee4b286
Showing 1 changed file with 25 additions and 2 deletions.
27 changes: 25 additions & 2 deletions UnityProjects/MRTKDevTemplate/Assets/Scripts/DictationHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ public class StringUnityEvent : UnityEvent<string> { }
[field: SerializeField]
public StringUnityEvent OnRecognitionFaulted { get; private set; }

private DictationSubsystem dictationSubsystem;
private IDictationSubsystem dictationSubsystem = null;
private IKeywordRecognitionSubsystem keywordRecognitionSubsystem = null;

/// <summary>
/// Start dictation on a DictationSubsystem.
Expand All @@ -54,9 +55,15 @@ public void StartRecognition()
// Make sure there isn't an ongoing recognition session
StopRecognition();

dictationSubsystem = XRSubsystemHelpers.GetFirstRunningSubsystem<DictationSubsystem>();
dictationSubsystem = XRSubsystemHelpers.DictationSubsystem;
if (dictationSubsystem != null)
{
keywordRecognitionSubsystem = XRSubsystemHelpers.KeywordRecognitionSubsystem;
if (keywordRecognitionSubsystem != null)
{
keywordRecognitionSubsystem.Stop();
}

dictationSubsystem.Recognizing += DictationSubsystem_Recognizing;
dictationSubsystem.Recognized += DictationSubsystem_Recognized;
dictationSubsystem.RecognitionFinished += DictationSubsystem_RecognitionFinished;
Expand All @@ -73,11 +80,13 @@ public void StartRecognition()
private void DictationSubsystem_RecognitionFaulted(DictationSessionEventArgs obj)
{
OnRecognitionFaulted.Invoke("Recognition faulted. Reason: " + obj.ReasonString);
HandleDictationShutdown();
}

private void DictationSubsystem_RecognitionFinished(DictationSessionEventArgs obj)
{
OnRecognitionFinished.Invoke("Recognition finished. Reason: " + obj.ReasonString);
HandleDictationShutdown();
}

private void DictationSubsystem_Recognized(DictationResultEventArgs obj)
Expand Down Expand Up @@ -105,5 +114,19 @@ public void StopRecognition()
dictationSubsystem = null;
}
}

/// <summary>
/// Stop dictation on the current DictationSubsystem.
/// </summary>
public void HandleDictationShutdown()
{
StopRecognition();

if (keywordRecognitionSubsystem != null)
{
keywordRecognitionSubsystem.Start();
keywordRecognitionSubsystem = null;
}
}
}
}

0 comments on commit ee4b286

Please sign in to comment.