From f41925a90d801f5ad9df12a8de496ec186690200 Mon Sep 17 00:00:00 2001 From: Tillman Staffen Date: Wed, 13 May 2026 16:32:49 +0200 Subject: [PATCH] Matched with base --- .../DA_PersonalityConfig_SpieFrau.uasset | 4 +- .../DA_PersonalityConfig_SpieFrau_Vest.uasset | 4 +- .../SPIE/BP/BP_SPIE_Manager_Child.uasset | 4 +- .../SPIE/BP/S_SPIE_ConfigSettings.uasset | 4 +- Unreal/Content/SPIE/Maps/M_SPIE_Startup.umap | 4 +- Unreal/Content/Schema/Spie_Config.schema.json | 433 ++++++++++++++---- ...vatar_SPIE_Avatar_Instructions.schema.json | 2 +- ...SpieInnovationDay_Instructions.schema.json | 2 +- 8 files changed, 344 insertions(+), 113 deletions(-) diff --git a/Unreal/Content/SPIE/Avatars/PersonalityConfigs/DA_PersonalityConfig_SpieFrau.uasset b/Unreal/Content/SPIE/Avatars/PersonalityConfigs/DA_PersonalityConfig_SpieFrau.uasset index a0f7507..901aff3 100644 --- a/Unreal/Content/SPIE/Avatars/PersonalityConfigs/DA_PersonalityConfig_SpieFrau.uasset +++ b/Unreal/Content/SPIE/Avatars/PersonalityConfigs/DA_PersonalityConfig_SpieFrau.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ef4ef7c6ab7456e3e7efb0f6c23904688114c22948b4108f1ad2024d773bd5c -size 3719 +oid sha256:7b20f741a11d868f84a31190aa5ed16c7cb098a5d3737ebf101c7bb106f3127f +size 3943 diff --git a/Unreal/Content/SPIE/Avatars/PersonalityConfigs/DA_PersonalityConfig_SpieFrau_Vest.uasset b/Unreal/Content/SPIE/Avatars/PersonalityConfigs/DA_PersonalityConfig_SpieFrau_Vest.uasset index b129dda..bcca79d 100644 --- a/Unreal/Content/SPIE/Avatars/PersonalityConfigs/DA_PersonalityConfig_SpieFrau_Vest.uasset +++ b/Unreal/Content/SPIE/Avatars/PersonalityConfigs/DA_PersonalityConfig_SpieFrau_Vest.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89cd355aaa8b9e953fa4a6045cadaa8bef56bc1867b99640b873a40e4d1ab30e -size 3776 +oid sha256:9f657e22885366c3833b06227f0480cf8ecb0a145e532659637eb1117f3d8cff +size 4000 diff --git a/Unreal/Content/SPIE/BP/BP_SPIE_Manager_Child.uasset b/Unreal/Content/SPIE/BP/BP_SPIE_Manager_Child.uasset index 032fa8f..0bc1cad 100644 --- a/Unreal/Content/SPIE/BP/BP_SPIE_Manager_Child.uasset +++ b/Unreal/Content/SPIE/BP/BP_SPIE_Manager_Child.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6aeef3ce906f6da6cc3f49d4dd817b17cb34df5cfe5245b855f64448cfc4c47b -size 637065 +oid sha256:adb2d8a6844f40ee41e217731f42fa64128a85d3eb5bc0d2327436619750cfbd +size 524584 diff --git a/Unreal/Content/SPIE/BP/S_SPIE_ConfigSettings.uasset b/Unreal/Content/SPIE/BP/S_SPIE_ConfigSettings.uasset index 3cc0fd4..748b063 100644 --- a/Unreal/Content/SPIE/BP/S_SPIE_ConfigSettings.uasset +++ b/Unreal/Content/SPIE/BP/S_SPIE_ConfigSettings.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9636555876858637ed314d998d902ce7dab771d05c4ea6fb3a746077606a48ad -size 89797 +oid sha256:bceba072a5ff554ef052a9bd0b7fe0e8c1b6fbb01f30155d2b8b36922d354e89 +size 87435 diff --git a/Unreal/Content/SPIE/Maps/M_SPIE_Startup.umap b/Unreal/Content/SPIE/Maps/M_SPIE_Startup.umap index dd605aa..565f634 100644 --- a/Unreal/Content/SPIE/Maps/M_SPIE_Startup.umap +++ b/Unreal/Content/SPIE/Maps/M_SPIE_Startup.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39f4cc7a019490f574713c05b4658d0de503e1a10338d55a9c74b5de32b485ed -size 178485 +oid sha256:0f9faf3c9f04451fb795dfc9933989f1a823528b7e28e656c778a6f9debf7cc5 +size 178705 diff --git a/Unreal/Content/Schema/Spie_Config.schema.json b/Unreal/Content/Schema/Spie_Config.schema.json index 47004f3..1cc0cf3 100644 --- a/Unreal/Content/Schema/Spie_Config.schema.json +++ b/Unreal/Content/Schema/Spie_Config.schema.json @@ -7,8 +7,9 @@ "Engine Settings", "Avatar Core", "STT Settings", - "AI Settings", - "TTS Settings" + "STT", + "AI", + "TTS" ], "Variables": [ { @@ -204,6 +205,7 @@ "DebugModule", "DebugNoModule" ], + "enumTypeName": "EAvatarCoreDebugModules", "default": "Normal", "category": "Debug" } @@ -218,6 +220,7 @@ "DebugModule", "DebugNoModule" ], + "enumTypeName": "EAvatarCoreDebugModules", "default": "Normal", "category": "Debug" } @@ -232,6 +235,7 @@ "DebugModule", "DebugNoModule" ], + "enumTypeName": "EAvatarCoreDebugModules", "default": "Normal", "category": "Debug" } @@ -331,6 +335,7 @@ "Semi-Optimized (Balanced)", "Highly Optimized (Fastest)" ], + "enumTypeName": "ERealisticMetaHumanLipSyncModelType", "default": "Original (Highest Quality)", "category": "Avatar Core" } @@ -394,10 +399,11 @@ "type": "enum", "tooltip": "Which Service to use, can be overridden by �I settings to stream directly to OpenAI", "enum": [ - "OpenAI Transcription", "Mircosoft Azure Congnitive Speech Services", + "OpenAI Transcription", "nvidia NeMo Parakeet (local transcription)" - ] + ], + "enumTypeName": "ESTTTranscriptionType" }, "bUsePTT": { @@ -546,7 +552,8 @@ "maximal gain decrease in dB/second (int32)", "maximal gain in dB (int32)", "preprocessor Automatic Gain Control level (int32)" - ] + ], + "itemsEnumTypeName": "ESpeexDSPState" }, "SettingEntries": { @@ -574,7 +581,8 @@ "maximal gain decrease in dB/second (int32)", "maximal gain in dB (int32)", "preprocessor Automatic Gain Control level (int32)" - ] + ], + "enumTypeName": "ESpeexDSPState" }, "Value": { @@ -584,6 +592,58 @@ } } }, + "STTLanguages": + { + "type": "array", + "tooltip": "All languages the STT module should understand simultaneously.", + "itemsType": "enum", + "itemsEnum": [ + "Unset", + "English", + "French", + "German", + "Spanish", + "Portuguese", + "Chinese", + "Japanese", + "Hindi", + "Italian", + "Korean", + "Dutch", + "Polish", + "Russian", + "Swedish", + "Turkish", + "Filipino", + "Bulgarian", + "Romanian", + "Arabic", + "Czech", + "Greek", + "Finnish", + "Croatian", + "Malay", + "Slovak", + "Danish", + "Tamil", + "Ukrainian", + "Hungarian", + "Norwegian", + "Vietnamese", + "Bengali", + "Thai", + "Hebrew", + "Georgian", + "Indonesian", + "Telugu", + "Gujarati", + "Kannada", + "Malayalam", + "Marathi", + "Punjabi" + ], + "itemsEnumTypeName": "ESTTLanguage" + }, "STTReplacements": { "type": "array", @@ -680,6 +740,10 @@ } ] }, + "STTLanguages": [ + "German", + "English" + ], "STTReplacements": [ { "TranscribedWords": [ @@ -702,7 +766,7 @@ "FreespeechPostRollTime": 0.5, "MaxTalkingTime": 120 }, - "category": "STT Settings" + "category": "STT" } }, { @@ -711,7 +775,7 @@ "type": "string", "tooltip": "Encrypted Azure OpenAI API Key", "default": "UjzfgavJ45lCu+oB2vVAsKNbPT+k3XCv7t69Og6j0LmwxhD3OK5WDBxUvgKnuDrz3xuNHg==", - "category": "AI Settings" + "category": "AI" } }, { @@ -720,83 +784,138 @@ "type": "string", "tooltip": "OpenAI API key for translation testing", "default": "UWOrSTUJn8TJJmJWPR10q2NTUJgX4JGvzMzr5/j9tjwcx02VEWRMuW0plF8vulntD2ipUwjmodUX0lD7XM5rG6Po7Ayam/fqLG5QyEaofbQN2j6zyZx/0recl7nFTTBH18La5YQDZm+BERpxMvdE5wmx50Vcl1z5PgeF1L1IvjAgh9nNRpjAaDzTAD9iHhVmtfxjCEHvcl9L8xc5ip6eKzWMXHlTv76DASeiwcBp1BFVTXPz", - "category": "AI Settings" - } - }, - { - "AzureOpenAI_Model": - { - "type": "string", - "tooltip": "Open AI Model", - "default": "gpt-realtime", - "category": "AI Settings" - } - }, - { - "AzureOpenAI_URL": - { - "type": "string", - "tooltip": "URL to Azure OpenAI Resource", - "default": "aiwa-ai-new.openai.azure.com/openai", - "category": "AI Settings" - } - }, - { - "OpenAIAudioOut": - { - "type": "boolean", - "tooltip": "Direct audio generation by OpenAI", - "default": true, - "category": "AI Settings" + "category": "AI" } }, { - "CustomOpenAIVoice": + "OpenAISettings": { - "type": "enum", - "tooltip": "Only Set if you want to override the Avatars Voice", - "enum": [ - "UNDEFINED", - "alloy", - "ash", - "ballad", - "cedar", - "coral", - "echo", - "marin", - "sage", - "shimmer", - "verse" - ], - "default": "shimmer", - "category": "AI Settings" - } - }, - { - "OpenAIRequestTimeout": - { - "type": "integer", - "tooltip": "OpenAI Timeout in seconds", - "default": 10, - "category": "AI Settings" - } - }, - { - "AITemperature": - { - "type": "float", - "tooltip": "Temperature of the AI Model", - "default": 0.80000000000000004, - "category": "AI Settings" + "type": "struct", + "fields": + { + "BaseAISettings": + { + "type": "struct", + "tooltip": "Base URL - Change this to the correct Azure API URL", + "fields": + { + "APIKey": + { + "type": "string" + }, + "ModelID": + { + "type": "string" + } + } + }, + "BaseURL": + { + "type": "string", + "tooltip": "Base URL - Change this to the correct Azure API URL" + }, + "IsAzureOpenAI": + { + "type": "boolean", + "tooltip": "Do we use the Microsoft Azure OpenAI API" + }, + "Voice": + { + "type": "enum", + "tooltip": "OpenAI RealtimeAPI Voice", + "enum": [ + "UNDEFINED", + "alloy", + "ash", + "ballad", + "cedar", + "coral", + "echo", + "marin", + "sage", + "shimmer", + "verse" + ], + "enumTypeName": "EOpenAIRealtimeVoice" + }, + "InputAudioStreaming": + { + "type": "boolean", + "tooltip": "Shall we forward all audio chunks directly to OpenAI - Does not work well, if we do not forward silence as well" + } + }, + "default": + { + "BaseAISettings": + { + "APIKey": "UjzfgavJ45lCu+oB2vVAsKNbPT+k3XCv7t69Og6j0LmwxhD3OK5WDBxUvgKnuDrz3xuNHg==", + "ModelID": "gpt-realtime" + }, + "BaseURL": "aiwa-ai-new.openai.azure.com/openai", + "IsAzureOpenAI": true, + "Voice": "UNDEFINED", + "InputAudioStreaming": false + }, + "category": "AI" } }, { - "AIMaxTokens": + "GlobalAISettings": { - "type": "integer", - "tooltip": "Max Token per Request of the AI Model", - "default": 3000, - "category": "AI Settings" + "type": "struct", + "fields": + { + "bUseModeration": + { + "type": "boolean", + "tooltip": "Check user transcription for inappropriate behaviour first (adds a delay!)" + }, + "bUseMCPServer": + { + "type": "boolean", + "tooltip": "Boot up a FastMCP Server on Startup (On close keep open in Editor Mode, kill in shipping)" + }, + "AIModelAudioOutput": + { + "type": "boolean", + "tooltip": "Does the AI model generate Audio Chunks that can be forwarded to the TTS Manager?" + }, + "MaxTokens": + { + "type": "integer" + }, + "Temperature": + { + "type": "float" + }, + "RequestTimeout": + { + "type": "integer", + "tooltip": "Does the AI model generate Audio Chunks that can be forwarded to the TTS Manager?" + }, + "DelayAnswerSeconds": + { + "type": "float", + "tooltip": "How many seconds before the delayedanswer event is triggered" + }, + "MaxMessages": + { + "type": "integer", + "tooltip": "How many messages to keep in context (-1 for infinite)" + } + }, + "default": + { + "bUseModeration": false, + "bUseMCPServer": false, + "AIModelAudioOutput": true, + "MaxTokens": 1500, + "Temperature": 0.80000001192092896, + "RequestTimeout": 10, + "DelayAnswerSeconds": 1.5, + "MaxMessages": -1 + }, + "category": "AI" } }, { @@ -805,7 +924,7 @@ "type": "string", "tooltip": "Azure AI Search API Key", "default": "9ksww+/kHZPYMfUFTWSi1QgaDjXaB7vxdGKPgmfGhPEx321nfpdbkUnThXT4BWrkKMAR0MF2zJT17fJSday8yBiftv0=", - "category": "AI Settings" + "category": "AI" } }, { @@ -814,7 +933,7 @@ "type": "string", "tooltip": "Azure AIWA URL", "default": "aiwa-ai-search.search.windows.net", - "category": "AI Settings" + "category": "AI" } }, { @@ -823,7 +942,7 @@ "type": "string", "tooltip": "Azure AI Search Indexname", "default": "innovationday", - "category": "AI Settings" + "category": "AI" } }, { @@ -832,31 +951,143 @@ "type": "string", "tooltip": "For all questions related to SPIE, the Innovation Day, projects, technologies, or company initiatives, retrieve information from the internal database. Use the database as the primary source of information.", "default": "For all questions related to SPIE, the Innovation Day, keynotes, projects, technologies, or company initiatives, retrieve information from the internal database. Use the database as the primary source of information.", - "category": "AI Settings" - } - }, - { - "UseCachingSystem": - { - "type": "boolean", - "default": true, - "category": "TTS Settings" + "category": "AI" } }, { - "ChunkLength": + "GlobalTTSSettings": { - "type": "float", - "default": 0.01, - "category": "TTS Settings" - } - }, - { - "StreamAmplitudeMultiplier": - { - "type": "float", - "default": 0.25, - "category": "TTS Settings" + "type": "struct", + "fields": + { + "UseCacheSystem": + { + "type": "boolean", + "tooltip": "If true, the audio will be cached" + }, + "WordReplacements": + { + "type": "string", + "tooltip": "A map of words to replace in the text to fix pronauncation" + }, + "AudioNumChannels": + { + "type": "integer", + "tooltip": "Number of Audio Channels - Only tested with 1 but who needs more anyway?" + }, + "AudioSampleRate": + { + "type": "integer", + "tooltip": "Samplerate of the audio to be produced" + }, + "ResampleToSampleRate": + { + "type": "integer", + "tooltip": "Resample the produced audio ot this samplerate if neccessary (-1 to deactivate)" + }, + "ChunkLength": + { + "type": "float", + "tooltip": "Chunk length in seconds" + }, + "StreamAmplitudeMultiplier": + { + "type": "float", + "tooltip": "Multiplier to make stream audio less loud" + }, + "MaxConcurrentGenerations": + { + "type": "integer", + "tooltip": "Max concurrent generations possible" + }, + "bCommaSplitRule": + { + "type": "enum", + "tooltip": "How to split the text (if input text streaming is not activated by the audio generation mode)", + "enum": [ + "Do not split sentences on comma", + "Split on comma on first occurence", + "Split on every comma.", + "Split on every comma, but add fill words." + ], + "enumTypeName": "ECommaSplitRule" + }, + "MaxCharacterForSplit": + { + "type": "integer", + "tooltip": "Min amount to text for splitting rule to be applied" + }, + "MaxCharacterForGeneration": + { + "type": "integer", + "tooltip": "Max allowed characters for text generation" + }, + "Language": + { + "type": "enum", + "enum": [ + "Unset", + "English", + "French", + "German", + "Spanish", + "Portuguese", + "Chinese", + "Japanese", + "Hindi", + "Italian", + "Korean", + "Dutch", + "Polish", + "Russian", + "Swedish", + "Turkish", + "Filipino", + "Bulgarian", + "Romanian", + "Arabic", + "Czech", + "Greek", + "Finnish", + "Croatian", + "Malay", + "Slovak", + "Danish", + "Tamil", + "Ukrainian", + "Hungarian", + "Norwegian", + "Vietnamese", + "Bengali", + "Thai", + "Hebrew", + "Georgian", + "Indonesian", + "Telugu", + "Gujarati", + "Kannada", + "Malayalam", + "Marathi", + "Punjabi" + ], + "enumTypeName": "ETTSLanguage" + } + }, + "default": + { + "UseCacheSystem": true, + "AudioNumChannels": 1, + "AudioSampleRate": 22050, + "ResampleToSampleRate": -1, + "ChunkLength": 0.0099999997764825821, + "StreamAmplitudeMultiplier": 0.25, + "MaxConcurrentGenerations": 3, + "bCommaSplitRule": "Split on comma on first occurence", + "MaxCharacterForSplit": 20, + "MaxCharacterForGeneration": 0, + "Language": "German" + }, + "category": "TTS" } } ] diff --git a/Unreal/Content/Schema/SystemInstructions/Avatar_SPIE_Avatar_Instructions.schema.json b/Unreal/Content/Schema/SystemInstructions/Avatar_SPIE_Avatar_Instructions.schema.json index 1497beb..12f34e0 100644 --- a/Unreal/Content/Schema/SystemInstructions/Avatar_SPIE_Avatar_Instructions.schema.json +++ b/Unreal/Content/Schema/SystemInstructions/Avatar_SPIE_Avatar_Instructions.schema.json @@ -32,7 +32,7 @@ }, { "Name": "Clothing Description", - "Instruction": "She is wearing a white polo shirt with the SPIE logo on the left side of the chest. The shirt has a collar and a few buttons at the neck. She is wearing a brown leather belt and a blue jeans. She wears light gray safety shoes with black shoe laces." + "Instruction": "She is wearing a white polo shirt with the SPIE logo on the left side of the chest. The shirt has a collar and a few buttons at the neck. She is wearing a brown leather belt and a blue jeans, with a safety vest on top. She wears light gray safety shoes with black shoe laces." } ] } diff --git a/Unreal/Content/Schema/SystemInstructions/Mode_DA_Mode_SPIE_SpieInnovationDay_Instructions.schema.json b/Unreal/Content/Schema/SystemInstructions/Mode_DA_Mode_SPIE_SpieInnovationDay_Instructions.schema.json index 775e5ac..ddc5159 100644 --- a/Unreal/Content/Schema/SystemInstructions/Mode_DA_Mode_SPIE_SpieInnovationDay_Instructions.schema.json +++ b/Unreal/Content/Schema/SystemInstructions/Mode_DA_Mode_SPIE_SpieInnovationDay_Instructions.schema.json @@ -28,7 +28,7 @@ "default": [ { "Name": "Role", - "Instruction": "You are Nova Spieker A forty year old athletic woman with blond hair and you work in facility management as an operations lead with strong office and leadership responsibilities. You are energetic and very percise in the information youi provde." + "Instruction": "You are Nova Spieker A forty year old athletic woman with blond hair and you work as an operations lead with strong office and leadership responsibilities. You are energetic and very percise in the information youi provde." }, { "Name": "Language",