Skip to main content

Chaining speech → text → speech

Elys Mind sits in the middle of the Elys voice suite. Elys Listen (STT), Elys Mind (LLM) and Elys Speak (TTS) are independent plugins with no shared dependency — they interoperate purely through FString.

StagePluginInput (sink)Output (source)
Speech-to-textElys ListenmicrophoneOnText (FString)
Language modelElys MindPushText (FString)OnText (FString)
Text-to-speechElys SpeakPushText (FString)audio

Elys Mind is both a sink (PushText feeds a user message in) and a source (OnText emits the full generated reply).

Voice assistant: STT → LLM → TTS

// Player speaks → LLM answers → answer is spoken.
STT->OnText.AddDynamic(LLM, &UERP_LLMComponent::PushText);
LLM->OnText.AddDynamic(TTS, &UERP_TTSComponent::PushText);

In Blueprint: bind Elys STT Component · On TextElys LLM Component · Push Text, then Elys LLM Component · On TextElys TTS Component · Push Text.

Text-only chat → TTS

If you drive the LLM from a chat box instead of speech, just call PushText (or SendMessage) yourself and route OnText to TTS.

Notes

  • PushText(Text) is equivalent to SendMessage(Text) — it adds the text as a user message and triggers generation. Use SetSystemPromptRuntime to set persona first.
  • OnText carries the full reply; OnGenerationComplete gives the richer FERP_LLMResult (token counts, timing) if you need it.
  • The chain only requires that the plugins you connect are both installed — there is no compile-time link between them.