Skip to main content

Ready-to-use runtime UI

Elys Listen remains usable without any UI, but the plugin also ships a neutral ElysListenUI runtime module. Its widgets are safe placeholders for prototypes and shippable projects, and every class can be subclassed in Blueprint when a project is ready to apply its own art direction.

The UI module depends on ElysListen; the speech-to-text runtime never depends back on UI code.

Complete control panel​

Create an Elys Listen Control Panel (UERP_STTControlPanelWidget) and add it to the viewport. It resolves the Game Instance STT subsystem automatically and provides:

  • authoritative Ready, Listening, Speech Detected, Transcribing, Muted, and Error states;
  • a normalized voice-activity meter;
  • start/stop, mute, flush, and clear actions;
  • the latest recognized subtitle;
  • scrollable transcript history;
  • model, worker, latency, and VAD diagnostics.

You can also call BindToSTTSubsystem to inject a specific subsystem explicitly.

Included demo levels​

The plugin ships several playable levels. Open them with Show Plugin Content enabled in the Content Browser, then press Play:

LevelPurpose
/ElysListen/Demo/Maps/L_ElysListenGameplayPlayer-facing VAD and push-to-talk demo with a compact language selector
/ElysListen/Demo/Maps/L_ElysListenWorkbenchComplete model, language, microphone, VAD, transcript, and diagnostics test
/ElysListen/Demo/Maps/L_ElysListenWidgetGalleryVisual review of the individual runtime widgets
/ElysListen/Demo/Maps/L_ElysListenSampleFull acceptance-test composition

The Gameplay demo defaults to automatic language detection. Its selector can also force a language while the session is running. Multilingual Whisper models offer the full language catalog; English-only .en models lock the selector to English so the UI cannot advertise an unsupported mode.

The level uses AERP_ElysListenDemoGameMode. Its ControlPanelClass and VoiceOverlayClass properties are replaceable, so the test flow is not tied to the bundled presentation. It defaults to the Blueprint-ready wrapper assets in /ElysListen/UI/.

Elys Listen playable acceptance UI with model and language selectors, circular microphone control, VAD diagnostics, and transcript history

The four checks at the top make it immediately clear whether the model, microphone, VAD, and transcription pipeline are working.

The plugin-owned sample level using the Elys Listen demo GameMode

The sample also handles the empty state: before a model is configured, the microphone action is disabled and the UI tells the user what to do. Click the image to see the level and GameMode override in Unreal Editor.

Blueprint widget assets​

The plugin includes data-only Widget Blueprint subclasses for every native UI class. They are deliberately thin: runtime behavior stays in C++, while a game can duplicate or derive from these assets to replace visuals safely.

AssetNative parent
WBP_ElysListenControlPanelUERP_STTControlPanelWidget
WBP_ElysListenVoiceOverlayUERP_STTVoiceOverlayWidget
WBP_ElysListenRecordingIndicatorUERP_STTRecordingIndicatorWidget
WBP_ElysListenVADWaveformUERP_STTVADWaveformWidget
WBP_ElysListenGameplaySubtitleUERP_STTGameplaySubtitleWidget
WBP_ElysListenStatusUERP_STTStatusWidget
WBP_ElysListenSubtitleUERP_STTSubtitleWidget
WBP_ElysListenTranscriptHistoryUERP_STTTranscriptHistoryWidget
WBP_ElysListenDiagnosticsUERP_STTDiagnosticsWidget

Individual widgets​

WidgetIntended use
UERP_STTStatusWidgetCompact HUD microphone button, status, and VAD meter
UERP_STTSubtitleWidgetLatest final utterance with optional confidence and auto-dismiss
UERP_STTTranscriptHistoryWidgetScrollable, bounded utterance history
UERP_STTDiagnosticsWidgetDeveloper-facing energy, thresholds, queue, model memory, and errors
UERP_STTControlPanelWidgetComplete composition of the widgets above

Player-facing gameplay widgets​

The diagnostic widgets are intentionally explicit. For a shipping HUD, use the smaller presentation widgets instead:

WidgetIntended use
UERP_STTRecordingIndicatorWidgetLanguage-neutral microphone privacy indicator using only the microphone icon, state color, and pulse animation
UERP_STTVADWaveformWidgetAnimated equalizer driven by the real normalized VAD energy rather than fabricated audio
UERP_STTGameplaySubtitleWidgetBottom-center local-player transcript with optional speaker label, readable timing, wrapping, and fades
UERP_STTVoiceOverlayWidgetDrop-in full-screen HUD composition of the three gameplay widgets

The waveform represents the VAD energy envelope, not raw PCM samples. It adds a small idle motion only while a real listening session is active, then scales and changes color from the authoritative VAD state. All gameplay widgets are non-interactive and use HitTestInvisible, so they do not block game input.

The player-facing recording indicator contains no baked-in status text. It uses the neutral microphone glyph from Resources/Microphone.svg: muted/inactive, listening, speech detected, processing, and error states are communicated by the configured style colors, while active capture pulses. This keeps the default HUD usable in any language. The explicit English labels remain limited to diagnostic and acceptance-test widgets.

The bundled Whisper backend produces completed utterances only. The default gameplay subtitle therefore ignores non-final FERP_STTResult values instead of exposing an interim-results option that the shipped backend cannot exercise.

Styling​

Each widget exposes FERP_STTWidgetStyle. It controls the neutral palette, typography sizes, and spacing without introducing a dependency on another Rogue Paradigm plugin. Projects may set the style directly or derive Blueprint widget classes and replace the layout entirely.

The widgets only consume public Elys Listen APIs. Removing or replacing them has no effect on microphone capture, Whisper inference, or the OnText pipeline.