in Source/AmazonPollyMetaHuman/Private/SpeechComponent.cpp [179:201]
void USpeechComponent::GenerateVisemeEvents(FString VisemeJson) {
VisemeEventArray = {};
TArray<FString> VisemeStrings;
VisemeJson.ParseIntoArray(VisemeStrings, TEXT("\n"), true);
for (FString VisemeSet : VisemeStrings) {
TSharedPtr<FJsonObject> JsonParsed = MakeShareable(new FJsonObject);
TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(VisemeSet);
FString OutString;
double OutNumber;
if (FJsonSerializer::Deserialize(JsonReader, JsonParsed) && JsonParsed->TryGetStringField("value", OutString) && JsonParsed->TryGetNumberField("time", OutNumber)) {
VisemeEvent CurrentVisemeEvent;
CurrentVisemeEvent.Viseme = GetVisemeValueFromString(JsonParsed->GetStringField("value"));
CurrentVisemeEvent.TimeMilliseconds = JsonParsed->GetIntegerField("time");
VisemeEventArray.Add(CurrentVisemeEvent);
}
else {
UE_LOG(LogPollyMsg, Error, TEXT("Failed to parse json formatted viseme sequence returned by Amazon Polly."));
VisemeEventArray = {};
Audiobuffer.Empty();
break;
}
}
}