Initial Commit

This commit is contained in:
2025-07-04 20:33:06 +03:00
commit 8f09347ae0
9219 changed files with 2447903 additions and 0 deletions
@@ -0,0 +1,112 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* This source code is licensed under the license found in the
* LICENSE file in the root directory of this source tree.
*/
using Meta.WitAi.Configuration;
using Meta.WitAi.Data;
using Meta.WitAi.Interfaces;
using Meta.WitAi.Requests;
using UnityEngine;
namespace Meta.WitAi
{
public class Wit : VoiceService, IWitRuntimeConfigProvider
{
[SerializeField] private WitRuntimeConfiguration witRuntimeConfiguration;
public WitRuntimeConfiguration RuntimeConfiguration
{
get => witRuntimeConfiguration;
set => witRuntimeConfiguration = value;
}
private WitService witService;
#region Voice Service Properties
public override bool Active => base.Active || (null != witService && witService.Active);
public override bool IsRequestActive => base.IsRequestActive || (null != witService && witService.IsRequestActive);
public override ITranscriptionProvider TranscriptionProvider
{
get => witService.TranscriptionProvider;
set => witService.TranscriptionProvider = value;
}
public override bool MicActive => null != witService && witService.MicActive;
protected override bool ShouldSendMicData => witRuntimeConfiguration.sendAudioToWit ||
null == TranscriptionProvider;
#endregion
#region Voice Service Methods
protected override string GetSendError()
{
if (!RuntimeConfiguration?.witConfiguration)
{
return $"Your {GetType().Name} \"{gameObject.name}\" does not have a wit configuration assigned. Voice interactions are not possible without the configuration.";
}
if (string.IsNullOrEmpty(RuntimeConfiguration.witConfiguration.GetClientAccessToken()))
{
return $"The configuration \"{RuntimeConfiguration.witConfiguration.name}\" is not setup with a valid client access token. Voice interactions are not possible without the token.";
}
return base.GetSendError();
}
protected override string GetActivateAudioError()
{
if (!AudioBuffer.Instance.IsInputAvailable)
{
return "No Microphone(s)/recording devices found. You will be unable to capture audio on this device.";
}
return string.Empty;
}
public override VoiceServiceRequest Activate(string text, WitRequestOptions requestOptions, VoiceServiceRequestEvents requestEvents)
{
VoiceServiceRequest request = witService.Activate(text, requestOptions, requestEvents);
OnTextRequestCreated(request);
return request;
}
public override VoiceServiceRequest Activate(WitRequestOptions requestOptions, VoiceServiceRequestEvents requestEvents)
{
VoiceServiceRequest request = witService.Activate(requestOptions, requestEvents);
OnAudioRequestCreated(request);
return request;
}
public override VoiceServiceRequest ActivateImmediately(WitRequestOptions requestOptions, VoiceServiceRequestEvents requestEvents)
{
VoiceServiceRequest request = witService.ActivateImmediately(requestOptions, requestEvents);
OnAudioRequestCreated(request);
return request;
}
public override void Deactivate()
{
witService.Deactivate();
}
public override void DeactivateAndAbortRequest()
{
witService.DeactivateAndAbortRequest();
}
#endregion
protected override void Awake()
{
base.Awake();
// WitService is 1:1 tied to a VoiceService. In the event there
// are multiple voice services on a game object this will ensure
// that this component has its own dedicated WitService
witService = gameObject.AddComponent<WitService>();
witService.VoiceEventProvider = this;
witService.TelemetryEventsProvider = this;
witService.ConfigurationProvider = this;
}
}
}