diff --git a/Unreal/Content/Schema/Spie_Config.schema.json b/Unreal/Content/Schema/Spie_Config.schema.json new file mode 100644 index 0000000..cef65b2 --- /dev/null +++ b/Unreal/Content/Schema/Spie_Config.schema.json @@ -0,0 +1,535 @@ +{ + "Categories": [ + "Project Setup", + "Debug", + "Volume", + "Engine Settings", + "Avatar Core" + ], + "Variables": [ + { + "Avatar": + { + "type": "enum", + "default": "Ben BREX", + "tooltip": "Which type of Avatar to spawn at the beginning", + "category": "Project Setup", + "enum": [ + "Ben BREX" + ] + } + }, + { + "Prompts": + { + "type": "enum", + "default": "Base", + "tooltip": "When changing the prompt setup, you need to delete the prompt config and restart the showcase to regenerate the correct prompts", + "category": "Project Setup", + "enum": [ + "Base" + ] + } + }, + { + "HasIntroDialogue": + { + "type": "boolean", + "default": true, + "tooltip": "If active, the Intro-State is active and the dialogue from the intro prompt will be used", + "hotreload": true, + "category": "Project Setup" + } + }, + { + "HideUI": + { + "type": "boolean", + "default": false, + "tooltip": "Hides the UI", + "hotreload": true, + "category": "Project Setup" + } + }, + { + "HideDialogueBoxAtStart": + { + "type": "boolean", + "default": false, + "tooltip": "If activated, the DialogueBox will hide after the first Button press to initialize the conversation. Can be show again by pressing \"H\"", + "hotreload": true, + "category": "Project Setup" + } + }, + { + "ConstrainAspectRatio": + { + "type": "boolean", + "default": false, + "tooltip": "If the camera should contrain to a vertical aspect ration. Can be used to enable a horizontal screen", + "hotreload": true, + "category": "Project Setup" + } + }, + { + "DebugAI": + { + "type": "enum", + "default": "Normal", + "tooltip": "Debugging mode for the AI Module", + "category": "Debug", + "enum": [ + "Normal", + "DebugModule", + "DebugNoModule" + ] + } + }, + { + "DebugTTS": + { + "type": "enum", + "default": "Normal", + "tooltip": "Debugging mode for the TTS Module", + "category": "Debug", + "enum": [ + "Normal", + "DebugModule", + "DebugNoModule" + ] + } + }, + { + "DebugSTT": + { + "type": "enum", + "default": "Normal", + "tooltip": "Debugging mode for the STT Module", + "category": "Debug", + "enum": [ + "Normal", + "DebugModule", + "DebugNoModule" + ] + } + }, + { + "DebugAvatar": + { + "type": "boolean", + "default": false, + "tooltip": "Activated the debugging Mode for the Avatar", + "category": "Debug" + } + }, + { + "AvatarVolume": + { + "type": "float", + "default": 1, + "tooltip": "Volume from 0-1 for the Avatar (Doesnt work with A2F)", + "category": "Volume" + } + }, + { + "VFXVolume": + { + "type": "float", + "default": 0.29999999999999999, + "tooltip": "Volume from 0-1 for the VFX Sounds", + "hotreload": true, + "category": "Volume" + } + }, + { + "ScreenPercentage": + { + "type": "float", + "default": 100, + "tooltip": "Sets the Screen-Percentage of the project", + "hotreload": true, + "category": "Engine Settings" + } + }, + { + "VSync": + { + "type": "boolean", + "default": true, + "tooltip": "Activated VSync", + "hotreload": true, + "category": "Engine Settings" + } + }, + { + "FPSCap": + { + "type": "integer", + "default": 60, + "tooltip": "Caps the FPS", + "hotreload": true, + "category": "Engine Settings" + } + }, + { + "RaytracingReflectionSamples": + { + "type": "integer", + "default": 1, + "tooltip": "Samples in the Reflection, increases quality of Avatar Reflection on Ground", + "hotreload": true, + "category": "Engine Settings" + } + }, + { + "UseLookAt": + { + "type": "boolean", + "default": true, + "tooltip": "Activated LookAt in Avatar AnimationSystem", + "category": "Avatar Core" + } + }, + { + "LookAtLocation": + { + "type": "vector3", + "default": + { + "X": 0, + "Y": 560, + "Z": 110 + }, + "tooltip": "Location for the LookAt", + "category": "Avatar Core" + } + }, + { + "UseMCPServer": + { + "type": "boolean", + "default": false, + "tooltip": "Active MCP Server", + "category": "Avatar Core" + } + }, + { + "LipSyncModel": + { + "type": "enum", + "default": "Original (Highest Quality)", + "category": "Avatar Core", + "enum": [ + "Original (Highest Quality)", + "Semi-Optimized (Balanced)", + "Highly Optimized (Fastest)" + ] + } + }, + { + "AvatarResetTimerLength": + { + "type": "float", + "default": 60, + "tooltip": "How long to wait for a reset after avatar stopped talking. A value of 0 deactivates the timer", + "hotreload": true, + "category": "Avatar Core" + } + }, + { + "AvatarResetTimerAnimation": + { + "type": "float", + "default": 15, + "tooltip": "For how many seconds of the end of the reset timer length should we show the circle animation?", + "hotreload": true, + "category": "Avatar Core" + } + }, + { + "TalkByHoldTimerLength": + { + "type": "float", + "default": 2, + "tooltip": "In seconds: If jumping to TalkToAvatar by pressing the button, how long to wait to skip the disclaimer if still holding the button?", + "hotreload": true, + "category": "Avatar Core" + } + }, + { + "AzureAPI": + { + "type": "string", + "default": "2wRZn32rqRxQZD3ZLQFqeIu8YUysSgfPRkcNEto/PpG43bF5inU4jmEUiO6r6czJeStWsw==", + "tooltip": "Encrypted Azure API Key", + "category": "Avatar Core" + } + }, + { + "AzureRegion": + { + "type": "string", + "default": "germanywestcentral", + "tooltip": "Azure Region", + "category": "Avatar Core" + } + }, + { + "STTSettings": + { + "type": "struct", + "default": + { + "bUsePTT": true, + "bCanInterrupt": true, + "bSTTDebugAudioSave": false, + "bSTTDebugLoopback": false, + "VADSettings": + { + "VAD_Mode": 2, + "VAD_SilenceThreshold": 300, + "VAD_SpeechWhileBlocked": 0.5 + }, + "SpeexDSPSettings": + { + "StateNames": [], + "SettingEntries": [ + { + "TypeName": "preprocessor Automatic Gain Control state", + "Value": 0 + }, + { + "TypeName": "preprocessor dereverb state", + "Value": 10 + }, + { + "TypeName": "maximum attenuation of the noise in dB (negative number)", + "Value": -10 + }, + { + "TypeName": "attenuation of the residual echo in dB (negative number)", + "Value": -40 + }, + { + "TypeName": "maximum attenuation of the residual echo in dB when near end is active (negative number)", + "Value": -15 + } + ], + "SpeexDSP_AEC_Tail": 500, + "bSpeexDSP_UseAEC": false + }, + "STTReplacements": [] + }, + "category": "Avatar Core", + "fields": + { + "bUsePTT": + { + "type": "boolean" + }, + "bCanInterrupt": + { + "type": "boolean" + }, + "bSTTDebugAudioSave": + { + "type": "boolean" + }, + "bSTTDebugLoopback": + { + "type": "boolean" + }, + "VADSettings": + { + "type": "struct", + "fields": + { + "VAD_Mode": + { + "type": "integer" + }, + "VAD_SilenceThreshold": + { + "type": "integer" + }, + "VAD_SpeechWhileBlocked": + { + "type": "float" + } + } + }, + "SpeexDSPSettings": + { + "type": "struct", + "fields": + { + "StateNames": + { + "type": "array", + "itemsType": "enum", + "itemsEnum": [ + "preprocessor denoiser state", + "preprocessor Automatic Gain Control state", + "preprocessor Voice Activity Detection state", + "preprocessor dereverb state", + "preprocessor dereverb level", + "preprocessor dereverb decay", + "probability required for the VAD to go from silence to voice", + "probability required for the VAD to stay in the voice state (integer percent)", + "maximum attenuation of the noise in dB (negative number)", + "attenuation of the residual echo in dB (negative number)", + "maximum attenuation of the residual echo in dB when near end is active (negative number)", + "the corresponding echo canceller state so that residual echo suppression can be performed (NULL for no residual echo suppression)", + "maximal gain increase in dB/second (int32)", + "maximal gain decrease in dB/second (int32)", + "maximal gain in dB (int32)", + "preprocessor Automatic Gain Control level (int32)" + ] + }, + "SettingEntries": + { + "type": "array", + "itemsType": "struct", + "itemsFields": + { + "TypeName": + { + "type": "enum" + }, + "Value": + { + "type": "integer" + } + } + }, + "SpeexDSP_AEC_Tail": + { + "type": "integer" + }, + "bSpeexDSP_UseAEC": + { + "type": "boolean" + } + } + }, + "STTReplacements": + { + "type": "array", + "itemsType": "struct", + "itemsFields": + { + "TranscribedWords": + { + "type": "array", + "itemsType": "string" + }, + "ReplacementWord": + { + "type": "string" + } + } + } + } + } + }, + { + "OpenAIAPI": + { + "type": "string", + "default": "q2N0wL09j85JFsDL60ka02t69h5QGFMnKJX+khETkynDpCDwwpqs15wmAi41GuyhHYNc99Rvl7UAAcvlzWSDMGCC62MT7X8G+1xhr4+JVLHV9UP/C8w2shcRLkDc01Og57CDhFcDJAs3jjatdd+XW/Qs0smCw5zDO4buYe30H8+agn2tshCpHaUy6oTtuXjvNX+usuw+U1ORFx72j/k3A09tqDZtbLO+YyQGND3c94xT8IFr", + "tooltip": "Encrypted OpenAI API Key", + "category": "Avatar Core" + } + }, + { + "OpenAIModel": + { + "type": "string", + "default": "gpt-realtime", + "tooltip": "Open AI Model", + "category": "Avatar Core" + } + }, + { + "OpenAIAudioOut": + { + "type": "boolean", + "default": true, + "tooltip": "Direct audio generation by OpenAI", + "category": "Avatar Core" + } + }, + { + "CustomOpenAIVoice": + { + "type": "enum", + "default": "UNDEFINED", + "tooltip": "Only Set if you want to override the Avatars Voice", + "category": "Avatar Core", + "enum": [ + "UNDEFINED", + "alloy", + "ash", + "ballad", + "coral", + "echo", + "sage", + "shimmer", + "verse" + ] + } + }, + { + "OpenAIRequestTimeout": + { + "type": "integer", + "default": 10, + "tooltip": "OpenAI Timeout in seconds", + "category": "Avatar Core" + } + }, + { + "AITemperature": + { + "type": "float", + "default": 0.80000000000000004, + "tooltip": "Temperature of the AI Model", + "category": "Avatar Core" + } + }, + { + "AIMaxTokens": + { + "type": "integer", + "default": 2000, + "tooltip": "Max Token per Request of the AI Model", + "category": "Avatar Core" + } + }, + { + "ChunkLength": + { + "type": "float", + "default": 0.01, + "category": "Avatar Core" + } + }, + { + "StreamAmplitudeMultiplier": + { + "type": "float", + "default": 0.25, + "category": "Avatar Core" + } + }, + { + "MaxConcurrentTTSGenerations": + { + "type": "integer", + "default": 2, + "tooltip": "Max concurrent Task for audio generation", + "category": "Avatar Core" + } + } + ] +} \ No newline at end of file