Skip to content
This repository has been archived by the owner on Oct 11, 2024. It is now read-only.

Commit

Permalink
v1.6.5
Browse files Browse the repository at this point in the history
  • Loading branch information
lucoiso authored Mar 29, 2023
2 parents 28df7ef + 069718c commit 37ff9be
Show file tree
Hide file tree
Showing 38 changed files with 197 additions and 110 deletions.
4 changes: 2 additions & 2 deletions AzSpeech.uplugin
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"FileVersion": 3,
"Version": 21,
"VersionName": "1.6.4",
"Version": 22,
"VersionName": "1.6.5",
"FriendlyName": "AzSpeech - Voice and Text",
"Description": "Integrates Azure Speech Cognitive Services into the Engine by adding functions to perform recognition and synthesis via asynchronous tasks.",
"Category": "Game Features",
Expand Down
22 changes: 20 additions & 2 deletions Config/DefaultAzSpeech.ini
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,27 @@
+PropertyRedirects=(OldName="AzSpeechHelper.ConvertWavFileToSoundWave.OutputModulePath", NewName="AzSpeechHelper.ConvertWavFileToSoundWave.OutputModule")
+PropertyRedirects=(OldName="AzSpeechHelper.ConvertAudioDataToSoundWave.OutputModulePath", NewName="AzSpeechHelper.ConvertAudioDataToSoundWave.OutputModule")

; v1.6.4
; v1.6.5
; Properties
+PropertyRedirects=(OldName="AzSpeechSettingsOptions.SubscriptionKey", NewName="AzSpeechSettingsOptions.SubscriptionOptions.SubscriptionKey")
+PropertyRedirects=(OldName="AzSpeechSettingsOptions.RegionID", NewName="AzSpeechSettingsOptions.SubscriptionOptions.RegionID")
+PropertyRedirects=(OldName="AzSpeechSettingsOptions.bUsePrivateEndpoint", NewName="AzSpeechSettingsOptions.SubscriptionOptions.bUsePrivateEndpoint")
+PropertyRedirects=(OldName="AzSpeechSettingsOptions.PrivateEndpoint", NewName="AzSpeechSettingsOptions.SubscriptionOptions.PrivateEndpoint")
+PropertyRedirects=(OldName="AzSpeechSettingsOptions.PrivateEndpoint", NewName="AzSpeechSettingsOptions.SubscriptionOptions.PrivateEndpoint")

; v1.6.6
; Functions params
+PropertyRedirects=(OldName="SpeechToTextAsync.SpeechToText_DefaultOptions.LanguageID", NewName="SpeechToTextAsync.SpeechToText_DefaultOptions.Locale")
+PropertyRedirects=(OldName="WavFileToTextAsync.WavFileToText_DefaultOptions.LanguageID", NewName="WavFileToTextAsync.WavFileToText_DefaultOptions.Locale")
+PropertyRedirects=(OldName="TextToSpeechAsync.TextToSpeech_DefaultOptions.VoiceName", NewName="TextToSpeechAsync.TextToSpeech_DefaultOptions.Voice")
+PropertyRedirects=(OldName="TextToSpeechAsync.TextToSpeech_DefaultOptions.LanguageID", NewName="TextToSpeechAsync.TextToSpeech_DefaultOptions.Locale")
+PropertyRedirects=(OldName="TextToSoundWaveAsync.TextToSoundWave_DefaultOptions.VoiceName", NewName="TextToSoundWaveAsync.TextToSoundWave_DefaultOptions.Voice")
+PropertyRedirects=(OldName="TextToSoundWaveAsync.TextToSoundWave_DefaultOptions.LanguageID", NewName="TextToSoundWaveAsync.TextToSoundWave_DefaultOptions.Locale")
+PropertyRedirects=(OldName="TextToWavFileAsync.TextToWavFile_DefaultOptions.VoiceName", NewName="TextToWavFileAsync.TextToWavFile_DefaultOptions.Voice")
+PropertyRedirects=(OldName="TextToWavFileAsync.TextToWavFile_DefaultOptions.LanguageID", NewName="TextToWavFileAsync.TextToWavFile_DefaultOptions.Locale")
+PropertyRedirects=(OldName="TextToAudioDataAsync.TextToAudioData_DefaultOptions.VoiceName", NewName="TextToAudioDataAsync.TextToAudioData_DefaultOptions.Voice")
+PropertyRedirects=(OldName="TextToAudioDataAsync.TextToAudioData_DefaultOptions.LanguageID", NewName="TextToAudioDataAsync.TextToAudioData_DefaultOptions.Locale")

; Properties
+PropertyRedirects=(OldName="AzSpeechRecognitionOptions.LanguageID", NewName="AzSpeechRecognitionOptions.Locale")
+PropertyRedirects=(OldName="AzSpeechSynthesisOptions.LanguageID", NewName="AzSpeechSynthesisOptions.Locale")
+PropertyRedirects=(OldName="AzSpeechSynthesisOptions.VoiceName", NewName="AzSpeechSynthesisOptions.Voice")
18 changes: 9 additions & 9 deletions Source/AzSpeech/Private/AzSpeech/AzSpeechSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,17 +65,17 @@ void UAzSpeechSettings::PreEditChange(FProperty* PropertyAboutToChange)
{
Super::PreEditChange(PropertyAboutToChange);

if (PropertyAboutToChange->GetFName() == GET_MEMBER_NAME_CHECKED(FAzSpeechRecognitionOptions, LanguageID))
if (PropertyAboutToChange->GetFName() == GET_MEMBER_NAME_CHECKED(FAzSpeechRecognitionOptions, Locale))
{
DefaultOptions.RecognitionOptions.CandidateLanguages.Remove(DefaultOptions.RecognitionOptions.LanguageID);
DefaultOptions.RecognitionOptions.CandidateLanguages.Remove(DefaultOptions.RecognitionOptions.Locale);
}
}

void UAzSpeechSettings::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
Super::PostEditChangeProperty(PropertyChangedEvent);

if (PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(FAzSpeechRecognitionOptions, CandidateLanguages) || PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(FAzSpeechRecognitionOptions, LanguageID))
if (PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(FAzSpeechRecognitionOptions, CandidateLanguages) || PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(FAzSpeechRecognitionOptions, Locale))
{
constexpr uint8 MaxCandidateLanguages = 10;

Expand Down Expand Up @@ -118,15 +118,15 @@ void UAzSpeechSettings::SetToDefaults()
DefaultOptions.SubscriptionOptions.bUsePrivateEndpoint = false;
DefaultOptions.SubscriptionOptions.PrivateEndpoint = NAME_None;

DefaultOptions.SynthesisOptions.LanguageID = NAME_None;
DefaultOptions.SynthesisOptions.VoiceName = NAME_None;
DefaultOptions.SynthesisOptions.Locale = NAME_None;
DefaultOptions.SynthesisOptions.Voice = NAME_None;
DefaultOptions.SynthesisOptions.bEnableViseme = true;
DefaultOptions.SynthesisOptions.SpeechSynthesisOutputFormat = EAzSpeechSynthesisOutputFormat::Riff16Khz16BitMonoPcm;
DefaultOptions.SynthesisOptions.bUseLanguageIdentification = false;
DefaultOptions.SynthesisOptions.ProfanityFilter = EAzSpeechProfanityFilter::Raw;
DefaultOptions.SynthesisOptions.LanguageIdentificationMode = EAzSpeechLanguageIdentificationMode::AtStart;

DefaultOptions.RecognitionOptions.LanguageID = NAME_None;
DefaultOptions.RecognitionOptions.Locale = NAME_None;
DefaultOptions.RecognitionOptions.SpeechRecognitionOutputFormat = EAzSpeechRecognitionOutputFormat::Detailed;
DefaultOptions.RecognitionOptions.bUseLanguageIdentification = false;
DefaultOptions.RecognitionOptions.ProfanityFilter = EAzSpeechProfanityFilter::Raw;
Expand All @@ -136,7 +136,7 @@ void UAzSpeechSettings::SetToDefaults()

if (AzSpeech::Internal::HasEmptyParam(DefaultOptions.RecognitionOptions.CandidateLanguages))
{
DefaultOptions.RecognitionOptions.CandidateLanguages.Add(DefaultOptions.RecognitionOptions.LanguageID);
DefaultOptions.RecognitionOptions.CandidateLanguages.Add(DefaultOptions.RecognitionOptions.Locale);
}
}

Expand All @@ -162,9 +162,9 @@ void UAzSpeechSettings::ValidateCandidateLanguages(const bool bRemoveEmpties)
DefaultOptions.RecognitionOptions.CandidateLanguages.Remove(NAME_None);
}

if (!DefaultOptions.RecognitionOptions.CandidateLanguages.Contains(DefaultOptions.RecognitionOptions.LanguageID))
if (!DefaultOptions.RecognitionOptions.CandidateLanguages.Contains(DefaultOptions.RecognitionOptions.Locale))
{
DefaultOptions.RecognitionOptions.CandidateLanguages.Insert(DefaultOptions.RecognitionOptions.LanguageID, 0);
DefaultOptions.RecognitionOptions.CandidateLanguages.Insert(DefaultOptions.RecognitionOptions.Locale, 0);
}

DefaultOptions.RecognitionOptions.CandidateLanguages.Shrink();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,9 @@ const bool FAzSpeechRecognitionRunnable::ApplySDKSettings(const std::shared_ptr<
return true;
}

UE_LOG(LogAzSpeech_Internal, Display, TEXT("Thread: %s; Function: %s; Message: Using language: %s"), *GetThreadName(), *FString(__func__), *RecognizerTask->GetRecognitionOptions().LanguageID.ToString());
UE_LOG(LogAzSpeech_Internal, Display, TEXT("Thread: %s; Function: %s; Message: Using language: %s"), *GetThreadName(), *FString(__func__), *RecognizerTask->GetRecognitionOptions().Locale.ToString());

const std::string UsedLang = TCHAR_TO_UTF8(*RecognizerTask->GetRecognitionOptions().LanguageID.ToString());
const std::string UsedLang = TCHAR_TO_UTF8(*RecognizerTask->GetRecognitionOptions().Locale.ToString());
InConfig->SetSpeechRecognitionLanguage(UsedLang);

return !AzSpeech::Internal::HasEmptyParam(UsedLang);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,13 +135,13 @@ const bool FAzSpeechSynthesisRunnable::ApplySDKSettings(const std::shared_ptr<Mi
return true;
}

const std::string UsedLang = TCHAR_TO_UTF8(*SynthesizerTask->GetSynthesisOptions().LanguageID.ToString());
const std::string UsedVoice = TCHAR_TO_UTF8(*SynthesizerTask->GetSynthesisOptions().VoiceName.ToString());
const std::string UsedLang = TCHAR_TO_UTF8(*SynthesizerTask->GetSynthesisOptions().Locale.ToString());
const std::string UsedVoice = TCHAR_TO_UTF8(*SynthesizerTask->GetSynthesisOptions().Voice.ToString());

UE_LOG(LogAzSpeech_Internal, Display, TEXT("Thread: %s; Function: %s; Message: Using language: %s"), *GetThreadName(), *FString(__func__), *SynthesizerTask->GetSynthesisOptions().LanguageID.ToString());
UE_LOG(LogAzSpeech_Internal, Display, TEXT("Thread: %s; Function: %s; Message: Using language: %s"), *GetThreadName(), *FString(__func__), *SynthesizerTask->GetSynthesisOptions().Locale.ToString());
InConfig->SetSpeechSynthesisLanguage(UsedLang);

UE_LOG(LogAzSpeech_Internal, Display, TEXT("Thread: %s; Function: %s; Message: Using voice: %s"), *GetThreadName(), *FString(__func__), *SynthesizerTask->GetSynthesisOptions().VoiceName.ToString());
UE_LOG(LogAzSpeech_Internal, Display, TEXT("Thread: %s; Function: %s; Message: Using voice: %s"), *GetThreadName(), *FString(__func__), *SynthesizerTask->GetSynthesisOptions().Voice.ToString());
InConfig->SetSpeechSynthesisVoiceName(UsedVoice);

return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ void FAzSpeechRunnableBase::Exit()
UE_LOG(LogAzSpeech_Internal, Display, TEXT("Thread: %s; Function: %s; Message: Exiting thread"), *GetThreadName(), *FString(__func__));

UAzSpeechTaskBase* const Task = GetOwningTask();
if (!Task)
if (!UAzSpeechTaskStatus::IsTaskActive(Task))
{
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,21 +63,21 @@ FAzSpeechRecognitionOptions::FAzSpeechRecognitionOptions()
SetDefaults();
}

FAzSpeechRecognitionOptions::FAzSpeechRecognitionOptions(const FName& LanguageID)
FAzSpeechRecognitionOptions::FAzSpeechRecognitionOptions(const FName& Locale)
{
SetDefaults();

if (IsAutoLanguage(LanguageID))
if (IsAutoLanguage(Locale))
{
this->bUseLanguageIdentification = true;
this->LanguageID = LanguageID;
this->Locale = Locale;
}
else if (IsDefault(LanguageID))
else if (IsDefault(Locale))
{
this->LanguageID = GetDefault<UAzSpeechSettings>()->DefaultOptions.RecognitionOptions.LanguageID;
this->Locale = GetDefault<UAzSpeechSettings>()->DefaultOptions.RecognitionOptions.Locale;
}

this->LanguageID = LanguageID;
this->Locale = Locale;
}

uint8 FAzSpeechRecognitionOptions::GetMaxAllowedCandidateLanguages() const
Expand All @@ -101,7 +101,7 @@ void FAzSpeechRecognitionOptions::SetDefaults()
{
if (const UAzSpeechSettings* const Settings = GetDefault<UAzSpeechSettings>())
{
LanguageID = Settings->DefaultOptions.RecognitionOptions.LanguageID;
Locale = Settings->DefaultOptions.RecognitionOptions.Locale;
CandidateLanguages = Settings->DefaultOptions.RecognitionOptions.CandidateLanguages;
SpeechRecognitionOutputFormat = Settings->DefaultOptions.RecognitionOptions.SpeechRecognitionOutputFormat;
bUseLanguageIdentification = Settings->DefaultOptions.RecognitionOptions.bUseLanguageIdentification;
Expand All @@ -117,47 +117,47 @@ FAzSpeechSynthesisOptions::FAzSpeechSynthesisOptions()
SetDefaults();
}

FAzSpeechSynthesisOptions::FAzSpeechSynthesisOptions(const FName& LanguageID)
FAzSpeechSynthesisOptions::FAzSpeechSynthesisOptions(const FName& Locale)
{
SetDefaults();

if (IsAutoLanguage(LanguageID))
if (IsAutoLanguage(Locale))
{
this->bUseLanguageIdentification = true;
this->LanguageID = LanguageID;
this->Locale = Locale;
}
else if (IsDefault(LanguageID))
else if (IsDefault(Locale))
{
this->LanguageID = GetDefault<UAzSpeechSettings>()->DefaultOptions.SynthesisOptions.LanguageID;
this->Locale = GetDefault<UAzSpeechSettings>()->DefaultOptions.SynthesisOptions.Locale;
}

this->LanguageID = LanguageID;
this->Locale = Locale;
}

FAzSpeechSynthesisOptions::FAzSpeechSynthesisOptions(const FName& LanguageID, const FName& VoiceName)
FAzSpeechSynthesisOptions::FAzSpeechSynthesisOptions(const FName& Locale, const FName& Voice)
{
SetDefaults();

if (IsAutoLanguage(LanguageID))
if (IsAutoLanguage(Locale))
{
this->bUseLanguageIdentification = true;
this->LanguageID = LanguageID;
this->Locale = Locale;
}
else if (IsDefault(LanguageID))
else if (IsDefault(Locale))
{
this->LanguageID = GetDefault<UAzSpeechSettings>()->DefaultOptions.SynthesisOptions.LanguageID;
this->Locale = GetDefault<UAzSpeechSettings>()->DefaultOptions.SynthesisOptions.Locale;
}

this->LanguageID = LanguageID;
this->VoiceName = IsDefault(VoiceName) ? GetDefault<UAzSpeechSettings>()->DefaultOptions.SynthesisOptions.VoiceName : VoiceName;
this->Locale = Locale;
this->Voice = IsDefault(Voice) ? GetDefault<UAzSpeechSettings>()->DefaultOptions.SynthesisOptions.Voice : Voice;
}

void FAzSpeechSynthesisOptions::SetDefaults()
{
if (const UAzSpeechSettings* const Settings = GetDefault<UAzSpeechSettings>())
{
LanguageID = Settings->DefaultOptions.SynthesisOptions.LanguageID;
VoiceName = Settings->DefaultOptions.SynthesisOptions.VoiceName;
Locale = Settings->DefaultOptions.SynthesisOptions.Locale;
Voice = Settings->DefaultOptions.SynthesisOptions.Voice;
bEnableViseme = Settings->DefaultOptions.SynthesisOptions.bEnableViseme;
SpeechSynthesisOutputFormat = Settings->DefaultOptions.SynthesisOptions.SpeechSynthesisOutputFormat;
bUseLanguageIdentification = Settings->DefaultOptions.SynthesisOptions.bUseLanguageIdentification;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ void UAzSpeechRecognizerTaskBase::StartRecognitionWork(const std::shared_ptr<Mic

void UAzSpeechRecognizerTaskBase::BroadcastFinalResult()
{
FScopeLock Lock(&Mutex);

if (!UAzSpeechTaskStatus::IsTaskActive(this))
{
return;
Expand Down
29 changes: 24 additions & 5 deletions Source/AzSpeech/Private/AzSpeech/Tasks/Bases/AzSpeechTaskBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "AzSpeech/AzSpeechSettings.h"
#include "AzSpeechInternalFuncs.h"
#include "LogAzSpeech.h"
#include <Misc/ScopeTryLock.h>

#if WITH_EDITOR
#include <Editor.h>
Expand Down Expand Up @@ -50,15 +51,22 @@ void UAzSpeechTaskBase::Activate()
}

#if WITH_EDITOR
FEditorDelegates::PrePIEEnded.AddUObject(this, &UAzSpeechTaskBase::PrePIEEnded);
if (bIsEditorTask)
{
SetFlags(RF_Standalone);
}
else
{
FEditorDelegates::PrePIEEnded.AddUObject(this, &UAzSpeechTaskBase::PrePIEEnded);
}
#endif
}

void UAzSpeechTaskBase::StopAzSpeechTask()
{
FScopeLock Lock(&Mutex);
FScopeTryLock TryLock(&Mutex);

if (!UAzSpeechTaskStatus::IsTaskActive(this) || UAzSpeechTaskStatus::IsTaskReadyToDestroy(this))
if (!TryLock.IsLocked() || !UAzSpeechTaskStatus::IsTaskActive(this) || UAzSpeechTaskStatus::IsTaskReadyToDestroy(this))
{
return;
}
Expand Down Expand Up @@ -86,9 +94,9 @@ const FAzSpeechSubscriptionOptions UAzSpeechTaskBase::GetSubscriptionOptions() c

void UAzSpeechTaskBase::SetReadyToDestroy()
{
FScopeLock Lock(&Mutex);
FScopeTryLock TryLock(&Mutex);

if (UAzSpeechTaskStatus::IsTaskReadyToDestroy(this))
if (!TryLock.IsLocked() || UAzSpeechTaskStatus::IsTaskReadyToDestroy(this))
{
return;
}
Expand All @@ -97,6 +105,17 @@ void UAzSpeechTaskBase::SetReadyToDestroy()
bIsReadyToDestroy = true;

#if WITH_EDITOR
if (bIsEditorTask)
{
ClearFlags(RF_Standalone);

#if ENGINE_MAJOR_VERSION >= 5
MarkAsGarbage();
#else
MarkPendingKill();
#endif
}

if (FEditorDelegates::PrePIEEnded.IsBoundToObject(this))
{
FEditorDelegates::PrePIEEnded.RemoveAll(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ bool UAzSpeechWavFileSynthesisBase::StartAzureTaskWork()
return false;
}

if (AzSpeech::Internal::HasEmptyParam(SynthesisText, FilePath, FileName) || (!bIsSSMLBased && AzSpeech::Internal::HasEmptyParam(GetSynthesisOptions().VoiceName, GetSynthesisOptions().LanguageID)))
if (AzSpeech::Internal::HasEmptyParam(SynthesisText, FilePath, FileName) || (!bIsSSMLBased && AzSpeech::Internal::HasEmptyParam(GetSynthesisOptions().Voice, GetSynthesisOptions().Locale)))
{
return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ THIRD_PARTY_INCLUDES_END
UGetAvailableVoicesAsync* UGetAvailableVoicesAsync::GetAvailableVoicesAsync(UObject* WorldContextObject, const FString& Locale)
{
UGetAvailableVoicesAsync* const NewAsyncTask = NewObject<UGetAvailableVoicesAsync>();
NewAsyncTask->WorldContextObject = WorldContextObject;
NewAsyncTask->TaskName = *FString(__func__);
NewAsyncTask->Locale = Locale;

NewAsyncTask->RegisterWithGameInstance(WorldContextObject);

return NewAsyncTask;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
URecognitionMapCheckAsync* URecognitionMapCheckAsync::RecognitionMapCheckAsync(UObject* WorldContextObject, const FString& InString, const FName GroupName, const bool bStopAtFirstTrigger)
{
URecognitionMapCheckAsync* const NewAsyncTask = NewObject<URecognitionMapCheckAsync>();
NewAsyncTask->WorldContextObject = WorldContextObject;
NewAsyncTask->InputString = InString;
NewAsyncTask->GroupName = GroupName;
NewAsyncTask->bStopAtFirstTrigger = bStopAtFirstTrigger;
NewAsyncTask->TaskName = *FString(__func__);

NewAsyncTask->RegisterWithGameInstance(WorldContextObject);

return NewAsyncTask;
Expand Down
17 changes: 16 additions & 1 deletion Source/AzSpeech/Private/AzSpeech/Tasks/SSMLToAudioDataAsync.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,30 @@

#include "AzSpeech/Tasks/SSMLToAudioDataAsync.h"

#if WITH_EDITOR
#include <Editor.h>
#endif

#ifdef UE_INLINE_GENERATED_CPP_BY_NAME
#include UE_INLINE_GENERATED_CPP_BY_NAME(SSMLToAudioDataAsync)
#endif

#if WITH_EDITOR
USSMLToAudioDataAsync* USSMLToAudioDataAsync::EditorTask(const FString& SynthesisSSML)
{
USSMLToAudioDataAsync* const NewAsyncTask = SSMLToAudioData_DefaultOptions(GEditor->GetEditorWorldContext().World(), SynthesisSSML);
NewAsyncTask->bIsEditorTask = true;

return NewAsyncTask;
}
#endif

USSMLToAudioDataAsync* USSMLToAudioDataAsync::SSMLToAudioData_DefaultOptions(UObject* WorldContextObject, const FString& SynthesisSSML)
{
return SSMLToAudioData_CustomOptions(WorldContextObject, FAzSpeechSubscriptionOptions(), FAzSpeechSynthesisOptions(), SynthesisSSML);
}

USSMLToAudioDataAsync* USSMLToAudioDataAsync::SSMLToAudioData_CustomOptions(UObject* WorldContextObject, const FAzSpeechSubscriptionOptions& SubscriptionOptions, const FAzSpeechSynthesisOptions& SynthesisOptions, const FString& SynthesisSSML)
USSMLToAudioDataAsync* USSMLToAudioDataAsync::SSMLToAudioData_CustomOptions(UObject* WorldContextObject, const FAzSpeechSubscriptionOptions SubscriptionOptions, const FAzSpeechSynthesisOptions SynthesisOptions, const FString& SynthesisSSML)
{
USSMLToAudioDataAsync* const NewAsyncTask = NewObject<USSMLToAudioDataAsync>();
NewAsyncTask->WorldContextObject = WorldContextObject;
Expand All @@ -22,6 +36,7 @@ USSMLToAudioDataAsync* USSMLToAudioDataAsync::SSMLToAudioData_CustomOptions(UObj
NewAsyncTask->SynthesisText = SynthesisSSML;
NewAsyncTask->bIsSSMLBased = true;
NewAsyncTask->TaskName = *FString(__func__);

NewAsyncTask->RegisterWithGameInstance(WorldContextObject);

return NewAsyncTask;
Expand Down
Loading

0 comments on commit 37ff9be

Please sign in to comment.