void USpeechComponent::GenerateVisemeEvents()

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;
        }
    }
}