diff --git a/Unreal/Content/Project/BP/BP_Project_Manager.uasset b/Unreal/Content/Project/BP/BP_Project_Manager.uasset index e506143..3541dd7 100644 Binary files a/Unreal/Content/Project/BP/BP_Project_Manager.uasset and b/Unreal/Content/Project/BP/BP_Project_Manager.uasset differ diff --git a/Unreal/Content/Project/BP/Base/UEC_AzureAISearch.uasset b/Unreal/Content/Project/BP/Base/UEC_AzureAISearch.uasset index f2dc62b..169b3cb 100644 Binary files a/Unreal/Content/Project/BP/Base/UEC_AzureAISearch.uasset and b/Unreal/Content/Project/BP/Base/UEC_AzureAISearch.uasset differ diff --git a/Unreal/Content/Project/BP/EnumsAndStructs/S_ConfigSettings.uasset b/Unreal/Content/Project/BP/EnumsAndStructs/S_ConfigSettings.uasset index d724f79..429744e 100644 Binary files a/Unreal/Content/Project/BP/EnumsAndStructs/S_ConfigSettings.uasset and b/Unreal/Content/Project/BP/EnumsAndStructs/S_ConfigSettings.uasset differ diff --git a/Unreal/Content/Schema/Spie_Config.schema.json b/Unreal/Content/Schema/Spie_Config.schema.json index 8cdbedb..e75cef1 100644 --- a/Unreal/Content/Schema/Spie_Config.schema.json +++ b/Unreal/Content/Schema/Spie_Config.schema.json @@ -4,7 +4,10 @@ "Debug", "Volume", "Engine Settings", - "Avatar Core" + "Avatar Core", + "STT Settings", + "AI Settings", + "TTS Settings" ], "Variables": [ { @@ -262,7 +265,7 @@ "type": "string", "default": "0Gc0wvOF2tTCr4APvZkDaieKCGeBR9c5EbC5utXgVWZUqu4IAEf6NQ721iHNu74SwfDoYSBGJHLmCbcXVDP+F4HKnwsfHr7WYi9Gv+CjJ7/UrOygkqlrP05hbHBrJiPLWDv4Gw==", "tooltip": "Encrypted Azure API Key", - "category": "Avatar Core" + "category": "STT Settings" } }, { @@ -271,7 +274,7 @@ "type": "string", "default": "germanywestcentral", "tooltip": "Azure Region", - "category": "Avatar Core" + "category": "STT Settings" } }, { @@ -320,7 +323,7 @@ }, "STTReplacements": [] }, - "category": "Avatar Core", + "category": "STT Settings", "fields": { "bUsePTT": @@ -438,7 +441,7 @@ "type": "string", "default": "UjzfgavJ45lCu+oB2vVAsKNbPT+k3XCv7t69Og6j0LmwxhD3OK5WDBxUvgKnuDrz3xuNHg==", "tooltip": "Encrypted Azure OpenAI API Key", - "category": "Avatar Core" + "category": "AI Settings" } }, { @@ -447,7 +450,7 @@ "type": "string", "default": "gpt-realtime", "tooltip": "Open AI Model", - "category": "Avatar Core" + "category": "AI Settings" } }, { @@ -456,7 +459,7 @@ "type": "string", "default": "aiwa-ai-new.openai.azure.com/openai", "tooltip": "URL to Azure OpenAI Resource", - "category": "Avatar Core" + "category": "AI Settings" } }, { @@ -465,23 +468,25 @@ "type": "boolean", "default": true, "tooltip": "Direct audio generation by OpenAI", - "category": "Avatar Core" + "category": "AI Settings" } }, { "CustomOpenAIVoice": { "type": "enum", - "default": "UNDEFINED", + "default": "coral", "tooltip": "Only Set if you want to override the Avatars Voice", - "category": "Avatar Core", + "category": "AI Settings", "enum": [ "UNDEFINED", "alloy", "ash", "ballad", + "cedar", "coral", "echo", + "marin", "sage", "shimmer", "verse" @@ -494,7 +499,7 @@ "type": "integer", "default": 10, "tooltip": "OpenAI Timeout in seconds", - "category": "Avatar Core" + "category": "AI Settings" } }, { @@ -503,7 +508,7 @@ "type": "float", "default": 0.80000000000000004, "tooltip": "Temperature of the AI Model", - "category": "Avatar Core" + "category": "AI Settings" } }, { @@ -512,7 +517,7 @@ "type": "integer", "default": 2000, "tooltip": "Max Token per Request of the AI Model", - "category": "Avatar Core" + "category": "AI Settings" } }, { @@ -521,7 +526,7 @@ "type": "string", "default": "9ksww+/kHZPYMfUFTWSi1QgaDjXaB7vxdGKPgmfGhPEx321nfpdbkUnThXT4BWrkKMAR0MF2zJT17fJSday8yBiftv0=", "tooltip": "Azure AI Search API Key", - "category": "Avatar Core" + "category": "AI Settings" } }, { @@ -530,7 +535,7 @@ "type": "string", "default": "aiwa-ai-search.search.windows.net", "tooltip": "Azure AIWA URL", - "category": "Avatar Core" + "category": "AI Settings" } }, { @@ -539,7 +544,15 @@ "type": "string", "default": "aiwa-ai-search", "tooltip": "Azure AI Search Indexname", - "category": "Avatar Core" + "category": "AI Settings" + } + }, + { + "UseCachingSystem": + { + "type": "boolean", + "default": true, + "category": "TTS Settings" } }, { @@ -547,7 +560,7 @@ { "type": "float", "default": 0.01, - "category": "Avatar Core" + "category": "TTS Settings" } }, { @@ -555,16 +568,7 @@ { "type": "float", "default": 0.25, - "category": "Avatar Core" - } - }, - { - "MaxConcurrentTTSGenerations": - { - "type": "integer", - "default": 2, - "tooltip": "Max concurrent Task for audio generation", - "category": "Avatar Core" + "category": "TTS Settings" } } ] diff --git a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h index 307362f..6f83d31 100644 --- a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h +++ b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h @@ -31,18 +31,6 @@ enum class EOpenAIRequestType : uint8 { error UMETA(DisplayName = "Error") }; -UENUM(BlueprintType) -enum class EOpenAIRealtimeVoices : uint8 { - alloy UMETA(DisplayName = "alloy"), - ash UMETA(DisplayName = "ash"), - ballad UMETA(DisplayName = "ballad"), - coral UMETA(DisplayName = "coral"), - echo UMETA(DisplayName = "echo"), - sage UMETA(DisplayName = "sage"), - shimmer UMETA(DisplayName = "shimmer"), - verse UMETA(DisplayName = "verse") -}; - UENUM(BlueprintType) enum class EOpenAIRequestState : uint8 { undefined UMETA(DisplayName = "UNDEFINED"), diff --git a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/RealtimeAPIConfig.h b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/RealtimeAPIConfig.h index 567b3a6..0fbcead 100644 --- a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/RealtimeAPIConfig.h +++ b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/RealtimeAPIConfig.h @@ -12,8 +12,10 @@ enum class EOpenAIRealtimeVoice : uint8 { alloy UMETA(DisplayName = "alloy"), ash UMETA(DisplayName = "ash"), ballad UMETA(DisplayName = "ballad"), + cedar UMETA(DisplayName = "cedar"), coral UMETA(DisplayName = "coral"), echo UMETA(DisplayName = "echo"), + marin UMETA(DisplayName = "marin"), sage UMETA(DisplayName = "sage"), shimmer UMETA(DisplayName = "shimmer"), verse UMETA(DisplayName = "verse") @@ -31,27 +33,35 @@ public: URealtimeAPIConfig(const FObjectInitializer& ObjectInitializer); + //Base URL - Change this to the correct Azure API URL UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AvatarCoreAI|Settings", meta = (ExposeOnSpawn = "true")) FString BaseURL = "api.openai.com"; + //Do we use the Microsoft Azure OpenAI API UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AvatarCoreAI|Settings", meta = (ExposeOnSpawn = "true")) bool IsAzureOpenAI = false; + //The OpenAI API Key UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AvatarCoreAI|Settings", meta = (ExposeOnSpawn = "true")) FString APIKey; + //OpenAI Model UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AvatarCoreAI|Settings", meta = (ExposeOnSpawn = "true")) FString Model = "gpt-realtime"; + //OpenAI RealtimeAPI Voice UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AvatarCoreAI|Settings", meta = (ExposeOnSpawn = "true")) EOpenAIRealtimeVoice Voice = EOpenAIRealtimeVoice::alloy; + //Max Token per Request UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AvatarCoreAI|Settings", meta = (ExposeOnSpawn = "true")) int MaxTokens = 1500; + //Temperature of the AI model UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AvatarCoreAI|Settings", meta = (ExposeOnSpawn = "true")) float Temperature = 0.8f; + //Shall we forward all audio chunks directly to OpenAI - Does not work well, if we do not forward silence as well UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AvatarCoreAI|Settings", meta = (ExposeOnSpawn = "true")) bool InputAudioStreaming = false; };