ObjectVoiceExperience.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /*
  2. * Copyright (c) Meta Platforms, Inc. and affiliates.
  3. * All rights reserved.
  4. *
  5. * This source code is licensed under the license found in the
  6. * LICENSE file in the root directory of this source tree.
  7. */
  8. using Meta.WitAi.Configuration;
  9. using Meta.WitAi.Events;
  10. using Meta.WitAi.Requests;
  11. using UnityEngine;
  12. using UnityEngine.Serialization;
  13. namespace Oculus.Voice
  14. {
  15. public class ObjectVoiceExperience : MonoBehaviour
  16. {
  17. // TODO: T149927662 Clean FormerlySerializedAs in a follow up diff before release.
  18. [FormerlySerializedAs("voiceEvents")]
  19. [SerializeField] private VoiceEvents _voiceEvents = new VoiceEvents();
  20. private AppVoiceExperience _voice;
  21. private VoiceServiceRequest _activation;
  22. private VoiceServiceRequestEvents _events = new VoiceServiceRequestEvents();
  23. private void OnEnable()
  24. {
  25. if (!_voice) _voice = FindObjectOfType<AppVoiceExperience>();
  26. _events.OnCancel.AddListener(HandleCancel);
  27. _events.OnComplete.AddListener(HandleComplete);
  28. _events.OnFailed.AddListener(HandleFailed);
  29. _events.OnInit.AddListener(HandleInit);
  30. _events.OnSend.AddListener(HandleSend);
  31. _events.OnSuccess.AddListener(HandleSuccess);
  32. _events.OnAudioActivation.AddListener(HandleAudioActivation);
  33. _events.OnAudioDeactivation.AddListener(HandleAudioDeactivation);
  34. _events.OnPartialTranscription.AddListener(HandlePartialTranscription);
  35. _events.OnFullTranscription.AddListener(HandleFullTranscription);
  36. _events.OnStateChange.AddListener(HandleStateChange);
  37. _events.OnStartListening.AddListener(HandleStartListening);
  38. _events.OnStopListening.AddListener(HandleStopListening);
  39. _events.OnDownloadProgressChange.AddListener(HandleDownloadProgressChange);
  40. _events.OnUploadProgressChange.AddListener(HandleUploadProgressChange);
  41. _events.OnAudioInputStateChange.AddListener(HandleAudioInputStateChange);
  42. }
  43. private void OnDisable()
  44. {
  45. _events.OnCancel.RemoveListener(HandleCancel);
  46. _events.OnComplete.RemoveListener(HandleComplete);
  47. _events.OnFailed.RemoveListener(HandleFailed);
  48. _events.OnInit.RemoveListener(HandleInit);
  49. _events.OnSend.RemoveListener(HandleSend);
  50. _events.OnSuccess.RemoveListener(HandleSuccess);
  51. _events.OnAudioActivation.RemoveListener(HandleAudioActivation);
  52. _events.OnAudioDeactivation.RemoveListener(HandleAudioDeactivation);
  53. _events.OnFullTranscription.RemoveListener(HandleFullTranscription);
  54. _events.OnPartialTranscription.RemoveListener(HandlePartialTranscription);
  55. _events.OnStateChange.RemoveListener(HandleStateChange);
  56. _events.OnStartListening.RemoveListener(HandleStartListening);
  57. _events.OnStopListening.RemoveListener(HandleStopListening);
  58. _events.OnDownloadProgressChange.RemoveListener(HandleDownloadProgressChange);
  59. _events.OnUploadProgressChange.RemoveListener(HandleUploadProgressChange);
  60. _events.OnAudioInputStateChange.RemoveListener(HandleAudioInputStateChange);
  61. }
  62. private void HandleAudioInputStateChange(VoiceServiceRequest request)
  63. {
  64. SendMessage("OnAudioInputStateChange", request, SendMessageOptions.DontRequireReceiver);
  65. }
  66. private void HandleUploadProgressChange(VoiceServiceRequest request)
  67. {
  68. SendMessage("OnUploadProgressChange", request, SendMessageOptions.DontRequireReceiver);
  69. }
  70. private void HandleDownloadProgressChange(VoiceServiceRequest request)
  71. {
  72. SendMessage("OnDownloadProgressChange", request, SendMessageOptions.DontRequireReceiver);
  73. }
  74. private void HandleStopListening(VoiceServiceRequest request)
  75. {
  76. SendMessage("OnStopListening", request, SendMessageOptions.DontRequireReceiver);
  77. }
  78. private void HandleStartListening(VoiceServiceRequest request)
  79. {
  80. SendMessage("OnStartListening", request, SendMessageOptions.DontRequireReceiver);
  81. }
  82. private void HandleStateChange(VoiceServiceRequest request)
  83. {
  84. SendMessage("OnStateChange", request, SendMessageOptions.DontRequireReceiver);
  85. }
  86. private void HandleFullTranscription(string transcription)
  87. {
  88. SendMessage("OnFullTranscription", transcription, SendMessageOptions.DontRequireReceiver);
  89. }
  90. private void HandlePartialTranscription(string transcription)
  91. {
  92. SendMessage("OnPartialTranscription", transcription, SendMessageOptions.DontRequireReceiver);
  93. }
  94. private void HandleAudioDeactivation(VoiceServiceRequest request)
  95. {
  96. SendMessage("OnAudioDeactivation", request, SendMessageOptions.DontRequireReceiver);
  97. }
  98. private void HandleAudioActivation(VoiceServiceRequest request)
  99. {
  100. SendMessage("OnAudioActivation", request, SendMessageOptions.DontRequireReceiver);
  101. }
  102. private void HandleSuccess(VoiceServiceRequest request)
  103. {
  104. SendMessage("OnSuccess", request, SendMessageOptions.DontRequireReceiver);
  105. }
  106. private void HandleSend(VoiceServiceRequest request)
  107. {
  108. SendMessage("OnSend", request, SendMessageOptions.DontRequireReceiver);
  109. }
  110. private void HandleInit(VoiceServiceRequest request)
  111. {
  112. SendMessage("OnInit", request, SendMessageOptions.DontRequireReceiver);
  113. }
  114. private void HandleFailed(VoiceServiceRequest request)
  115. {
  116. SendMessage("OnFailed", request, SendMessageOptions.DontRequireReceiver);
  117. }
  118. private void HandleComplete(VoiceServiceRequest request)
  119. {
  120. _voiceEvents?.OnComplete?.Invoke(request);
  121. SendMessage("OnComplete", request, SendMessageOptions.DontRequireReceiver);
  122. }
  123. private void HandleCancel(VoiceServiceRequest request)
  124. {
  125. _voiceEvents?.OnCanceled?.Invoke("");
  126. SendMessage("OnCancel", request, SendMessageOptions.DontRequireReceiver);
  127. }
  128. public void Activate()
  129. {
  130. _activation = _voice.Activate(new WitRequestOptions(), _events);
  131. }
  132. public void Deactivate()
  133. {
  134. _activation.Cancel();
  135. }
  136. }
  137. }