{ "Categories": [ "SPIE", "Project Setup", "Debug", "Volume", "Engine Settings", "Avatar Core", "STT Settings", "AI Settings", "TTS Settings" ], "Variables": [ { "InitialMode": { "type": "integer", "tooltip": "Which mode to load at startup", "default": 0, "category": "SPIE" } }, { "AvatarInstance": { "type": "string", "tooltip": "Unique Name of this Avatar Application", "default": "SPIE", "category": "SPIE" } }, { "UseLogging": { "type": "boolean", "tooltip": "Do you want to log all interaction?", "default": true, "category": "SPIE" } }, { "LogoText": { "type": "string", "tooltip": "Showing in background logo", "default": "One SPIE. \r\nJust ask me.", "hotreload": true, "category": "SPIE" } }, { "ButtonHint": { "type": "string", "tooltip": "What to say, when user is allowed to speak?", "default": "Drücke und halte beim Sprechen den Knopf vor dir, damit ich dich hören kann.", "category": "SPIE" } }, { "NoSpeechWarning": { "type": "string", "tooltip": "What to say, when the Transcription was empty", "default": "Ich kann dich nicht hören: Drücke und halte den Knopf vor dir, um zu sprechen!", "category": "SPIE" } }, { "NoMicWarning": { "type": "string", "tooltip": "What to say if the microphone does not seem to work", "default": "Das Mikrofon scheint nicht zu funktionieren - am besten suchst du dir Hilfe!", "category": "SPIE" } }, { "InnovationDayIntro": { "type": "string", "tooltip": "Intro speech for the Innovation Day mode", "default": "Hallo und willkommen auf der One SPIE ! Ich bin ein virtueller Avatar mit dem du dich über unsere Hausmesse unterhalten kannst. By the way, you can talk in any language with me!", "category": "SPIE" } }, { "AppTimeoutTimeS": { "type": "float", "default": 20, "category": "SPIE" } }, { "SpieRecordButtonScale": { "type": "float", "default": 1, "category": "SPIE" } }, { "SpieLogoScale": { "type": "float", "default": 1, "hotreload": true, "category": "SPIE" } }, { "SpieLogoOffset": { "type": "vector3", "default": { "X": 0, "Y": 0, "Z": 0 }, "hotreload": true, "category": "SPIE" } }, { "MicrofonMaxInputLevel": { "type": "float", "default": 0.02, "category": "SPIE" } }, { "MicrofonInputInterpSpeed": { "type": "float", "default": 10, "category": "SPIE" } }, { "UseDebugDialogueWidget": { "type": "boolean", "default": false, "category": "SPIE" } }, { "HideUI": { "type": "boolean", "tooltip": "Hides the UI", "default": false, "hotreload": true, "category": "Project Setup" } }, { "HideDialogueBoxAtStart": { "type": "boolean", "tooltip": "If activated, the DialogueBox will hide after the first Button press to initialize the conversation. Can be show again by pressing \"H\"", "default": false, "hotreload": true, "category": "Project Setup" } }, { "ConstrainAspectRatio": { "type": "boolean", "tooltip": "If the camera should contrain to a vertical aspect ration. Can be used to enable a horizontal screen", "default": false, "hotreload": true, "category": "Project Setup" } }, { "CurrentLocation": { "type": "string", "tooltip": "Where is the user currently located?", "default": "EUREF-Campus, 40472 Düsseldorf, Germany", "category": "Project Setup" } }, { "DebugAI": { "type": "enum", "tooltip": "Debugging mode for the AI Module", "enum": [ "Normal", "DebugModule", "DebugNoModule" ], "default": "Normal", "category": "Debug" } }, { "DebugTTS": { "type": "enum", "tooltip": "Debugging mode for the TTS Module", "enum": [ "Normal", "DebugModule", "DebugNoModule" ], "default": "Normal", "category": "Debug" } }, { "DebugSTT": { "type": "enum", "tooltip": "Debugging mode for the STT Module", "enum": [ "Normal", "DebugModule", "DebugNoModule" ], "default": "Normal", "category": "Debug" } }, { "DebugAvatar": { "type": "boolean", "tooltip": "Activated the debugging Mode for the Avatar", "default": false, "category": "Debug" } }, { "AvatarVolume": { "type": "float", "tooltip": "Volume from 0-1 for the Avatar (Doesnt work with A2F)", "default": 1, "category": "Volume" } }, { "VFXVolume": { "type": "float", "tooltip": "Volume from 0-1 for the VFX Sounds", "default": 0.29999999999999999, "hotreload": true, "category": "Volume" } }, { "ConsoleCommands": { "type": "array", "tooltip": "The one place to configure Console Commands", "itemsType": "string", "default": [ "r.ScreenPercentage 100", "t.MaxFPS 60", "r.VSync 1", "r.AntiAliasingMethod 2", "r.RayTracing.Reflections.SamplesPerPixel 1", "r.HairStrands.ComposeAfterTranslucency 0", "r.HairStrands.DOFDepth 0", "r.Lumen.ScreenProbeGather.DownsampleFactor 32", "r.Lumen.Reflections.RadianceCache 1", "r.Lumen.Reflections.MaxRoughnessToTraceClamp 0.3", "r.Lumen.Reflections.AsyncCompute 1", "r.RayTracing.Shadows 0", "r.TemporalAASamples 16", "r.RayTracing.Shadows.SamplesPerPixel 2" ], "hotreload": true, "category": "Engine Settings" } }, { "LookAtEnabled": { "type": "boolean", "tooltip": "Activated LookAt in Avatar AnimationSystem", "default": true, "category": "Avatar Core" } }, { "LookAtLocation": { "type": "vector3", "tooltip": "Location for the LookAt", "default": { "X": 0, "Y": 560, "Z": 110 }, "category": "Avatar Core" } }, { "UseMCPServer": { "type": "boolean", "tooltip": "Active MCP Server", "default": false, "category": "Avatar Core" } }, { "LipSyncModel": { "type": "enum", "enum": [ "Original (Highest Quality)", "Semi-Optimized (Balanced)", "Highly Optimized (Fastest)" ], "default": "Original (Highest Quality)", "category": "Avatar Core" } }, { "AvatarResetTimerLength": { "type": "float", "tooltip": "How long to wait for a reset after avatar stopped talking. A value of 0 deactivates the timer", "default": 60, "hotreload": true, "category": "Avatar Core" } }, { "AvatarResetTimerAnimation": { "type": "float", "tooltip": "For how many seconds of the end of the reset timer length should we show the circle animation?", "default": 15, "hotreload": true, "category": "Avatar Core" } }, { "TalkByHoldTimerLength": { "type": "float", "tooltip": "In seconds: If jumping to TalkToAvatar by pressing the button, how long to wait to skip the disclaimer if still holding the button?", "default": 2, "hotreload": true, "category": "Avatar Core" } }, { "AzureSpeechService_API": { "type": "string", "tooltip": "Encrypted Azure API Key", "default": "0Gc0wvOF2tTCr4APvZkDaieKCGeBR9c5EbC5utXgVWZUqu4IAEf6NQ721iHNu74SwfDoYSBGJHLmCbcXVDP+F4HKnwsfHr7WYi9Gv+CjJ7/UrOygkqlrP05hbHBrJiPLWDv4Gw==", "category": "STT Settings" } }, { "AzureSpeechService_Region": { "type": "string", "tooltip": "Azure Region", "default": "germanywestcentral", "category": "STT Settings" } }, { "STTSettings": { "type": "struct", "fields": { "STTTranscriptionType": { "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", "nvidia NeMo Parakeet (local transcription)" ] }, "bUsePTT": { "type": "boolean", "tooltip": "Use the push to talk button or allow freespeech" }, "bCanInterrupt": { "type": "boolean", "tooltip": "Can the suer interrupt the avatar" }, "bSTTDebugAudioSave": { "type": "boolean", "tooltip": "Save the final recording from microphone to Saved/STT folder" }, "WebRTCSettings": { "type": "struct", "tooltip": "Settings of the WebRTC Channel.", "fields": { "pipeline_multi_channel_capture": { "type": "boolean", "tooltip": "Enables capturing audio with more than one input channel.\nWhen false, WebRTC downmixes input to mono before processing." }, "pipeline_multi_channel_render": { "type": "boolean", "tooltip": "Enables rendering audio with multiple output channels.\nWhen false, WebRTC outputs mono audio." }, "pipeline_maximum_internal_processing_rate": { "type": "integer", "tooltip": "Upper limit for WebRTC�s internal audio processing sample rate in Hz.\nWebRTC will resample input audio to this rate for all DSP stages.\nCommon values are 16000, 32000, or 48000." }, "echo_canceller": { "type": "boolean", "tooltip": "Enables WebRTC Acoustic Echo Cancellation (AEC).\nRemoves far end audio that is played through speakers from the microphone signal." }, "pre_amplifier": { "type": "boolean", "tooltip": "Enables a fixed pre amplification stage before other processing.\nThis boosts quiet microphone signals but can amplify noise if misused." }, "high_pass_filter": { "type": "boolean", "tooltip": "Enables a high pass filter that removes low frequency noise.\nUseful for eliminating rumble or microphone DC offset." }, "noise_suppression": { "type": "boolean", "tooltip": "Enables WebRTC noise suppression.\nReduces stationary background noise like fans or ambient hum." }, "noise_suppression_level": { "type": "integer" }, "transient_suppression": { "type": "boolean", "tooltip": "Enables transient noise suppression.\nTargets short non speech sounds like keyboard clicks or taps." }, "gain_controller1": { "type": "boolean", "tooltip": "Enables legacy automatic gain control (AGC1).\nAdjusts microphone gain slowly over time.\nUsually disabled in favor of gain_controller2." }, "gain_controller2": { "type": "boolean", "tooltip": "Enables modern automatic gain control (AGC2).\nProvides faster and more stable loudness normalization." }, "voice_detection": { "type": "boolean", "tooltip": "Enables voice activity detection.\nWebRTC estimates whether the current audio frame contains speech.\nOnly available when WEBRTC_5414 or newer is used which it is by default in 5.6." }, "residual_echo_detector": { "type": "boolean", "tooltip": "Enables residual echo detection.\nDetects remaining echo after echo cancellation and can influence other DSP stages.\nOnly available when WEBRTC_5414 or newer is used which it is by default in 5.6." }, "level_estimation": { "type": "boolean", "tooltip": "Enables internal audio level estimation.\nWebRTC computes signal loudness metrics for diagnostics or downstream logic.\nOnly available when WEBRTC_5414 or newer is used which it is by default in 5.6." } } }, "VADSettings": { "type": "struct", "tooltip": "Settings of the VAD module that determine if user is currently speaking.", "fields": { "VAD_Mode": { "type": "integer", "tooltip": "How aggressive is the VAD Module (quality, normal, aggressive, very aggresive)" }, "VAD_SpeechWhileBlocked": { "type": "float", "tooltip": "How long to record to consider it, user wants to interrupt avatar" }, "VAD_MinSpeechTime": { "type": "float", "tooltip": "How long to speak until it is considert speaking?" }, "VAD_MinSpeechAmplitude": { "type": "integer", "tooltip": "Much background noise? Try to raise the limit of -dB to even consider speech?" } } }, "SpeexDSPSettings": { "type": "struct", "tooltip": "Settings of the SpeexDSP Module", "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", "enum": [ "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)" ] }, "Value": { "type": "integer" } } } } }, "STTReplacements": { "type": "array", "tooltip": "Transcriptions to always change to another word.", "itemsType": "struct", "itemsFields": { "TranscribedWords": { "type": "array", "itemsType": "string" }, "ReplacementWord": { "type": "string" } } }, "STTSpecialWords": { "type": "array", "tooltip": "Special words that the transcription service needs to know (e.g. b.ReX or Bruce-B).", "itemsType": "string" }, "PTTPostRollTime": { "type": "float", "tooltip": "How long to keep transcribing when user released button. Users like to finish early ;)" }, "FreespeechPostRollTime": { "type": "float", "tooltip": "How long to keep transcribing when user stopped talking.)" }, "MaxTalkingTime": { "type": "float", "tooltip": "How long can the user press the button?)" } }, "default": { "STTTranscriptionType": "Mircosoft Azure Congnitive Speech Services", "bUsePTT": true, "bCanInterrupt": true, "bSTTDebugAudioSave": false, "WebRTCSettings": { "pipeline_multi_channel_capture": false, "pipeline_multi_channel_render": false, "pipeline_maximum_internal_processing_rate": 48000, "echo_canceller": true, "pre_amplifier": false, "high_pass_filter": true, "noise_suppression": true, "noise_suppression_level": 3, "transient_suppression": true, "gain_controller1": false, "gain_controller2": false, "voice_detection": false, "residual_echo_detector": true, "level_estimation": false }, "VADSettings": { "VAD_Mode": 2, "VAD_SpeechWhileBlocked": 0.5, "VAD_MinSpeechTime": 0.25, "VAD_MinSpeechAmplitude": -55 }, "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 } ] }, "STTReplacements": [ { "TranscribedWords": [ "spie", "schpie", "spieh", "spiel" ], "ReplacementWord": "SPIE" } ], "STTSpecialWords": [ "SPIE", "Innovation Day", "Keynote", "Clarissa Hack", "Jérôme Morisson" ], "PTTPostRollTime": 0.40000000596046448, "FreespeechPostRollTime": 0.5, "MaxTalkingTime": 120 }, "category": "STT Settings" } }, { "AzureOpenAI_API": { "type": "string", "tooltip": "Encrypted Azure OpenAI API Key", "default": "UjzfgavJ45lCu+oB2vVAsKNbPT+k3XCv7t69Og6j0LmwxhD3OK5WDBxUvgKnuDrz3xuNHg==", "category": "AI Settings" } }, { "DebugOpenAI_API": { "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" } }, { "CustomOpenAIVoice": { "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" } }, { "AIMaxTokens": { "type": "integer", "tooltip": "Max Token per Request of the AI Model", "default": 3000, "category": "AI Settings" } }, { "AzureAISearch_API": { "type": "string", "tooltip": "Azure AI Search API Key", "default": "9ksww+/kHZPYMfUFTWSi1QgaDjXaB7vxdGKPgmfGhPEx321nfpdbkUnThXT4BWrkKMAR0MF2zJT17fJSday8yBiftv0=", "category": "AI Settings" } }, { "AzureAISearch_URL": { "type": "string", "tooltip": "Azure AIWA URL", "default": "aiwa-ai-search.search.windows.net", "category": "AI Settings" } }, { "AzureAISearch_Index": { "type": "string", "tooltip": "Azure AI Search Indexname", "default": "innovationday", "category": "AI Settings" } }, { "DatabaseDescription": { "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" } }, { "ChunkLength": { "type": "float", "default": 0.01, "category": "TTS Settings" } }, { "StreamAmplitudeMultiplier": { "type": "float", "default": 0.25, "category": "TTS Settings" } } ] }