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.
| Stage | Plugin | Input (sink) | Output (source) |
|---|---|---|---|
| Speech-to-text | Elys Listen | microphone | OnText (FString) |
| Language model | Elys Mind | PushText (FString) | OnText (FString) |
| Text-to-speech | Elys Speak | PushText (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 Text → Elys LLM Component · Push Text, then Elys LLM Component · On Text → Elys 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 toSendMessage(Text)— it adds the text as a user message and triggers generation. UseSetSystemPromptRuntimeto set persona first.OnTextcarries the full reply;OnGenerationCompletegives the richerFERP_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.