Character Components
Per-character conversation, voice input, and TTS playback.
UEstuaryCharacterComponent
UActorComponent — the per-character conversation interface. Created automatically on AEstuaryCharacter. This is the component you use most.
Methods
| Function | Returns | Description |
|---|---|---|
SendText(const FString& Text) | FString | Send a user message. Returns the generated message_id. |
SayLine(const FString& Text, bool bTextOnly = false) | void | Speak a scripted line via TTS (skips the LLM, auto-interrupts). |
Interrupt() | void | Abort the currently-streaming response. No-op if no active turn. |
UpdatePreferences(const FEstuaryPreferences& Prefs) | void | Update session-level behavior flags. |
SetEnableAnimation(bool bEnable) | void | Opt into ARKit-52 lipsync. Call before Connect. |
SetEnableBodyAnimation(bool bEnable) | void | Opt into body animation (experimental). Call before Connect. |
IsRegistered() const | bool | True when registered with the subsystem and routing is active. |
GetCurrentMessageId() const | FString | message_id of the most recent turn. |
GetCharacterId() const | FString | Character ID inherited from the owning actor. |
GetLiveLinkSubjectName() const | FName | Resolved Live Link subject for lipsync. |
Properties
| Property | Type | Description |
|---|---|---|
LiveLinkSubjectOverride | FName | Override the Live Link subject name. None = use Character ID. |
Events (BlueprintAssignable)
| Delegate | Payload | Fires when |
|---|---|---|
OnBotResponse | FEstuaryBotResponse | Each streaming text chunk (bIsFinal on the last). |
OnBotVoice | FEstuaryBotVoice | Each streaming TTS audio chunk. |
OnSttResponse | FEstuarySttResponse | Each partial/final transcription during voice input. |
OnInterruptAcked | FEstuaryInterruptPayload | The server confirms an interrupt. |
OnBotAnimation | FEstuaryBotAnimation | A renderable ARKit-52 lipsync frame. |
OnBotPose | FEstuaryBotPose | A renderable body-pose frame (experimental). |
OnVisionResponse | FEstuaryVisionResponse | A vision (VLM) result for a sent camera frame. |
OnCameraCaptureRequested | FEstuaryCameraCapture | The server requests an image capture. |
CharacterComponent->OnBotResponse.AddDynamic(this, &AMyActor::HandleResponse);
FString Id = CharacterComponent->SendText(TEXT("Hello!"));
UEstuaryAudioPlayerComponent
UAudioComponent — decodes and plays streaming TTS audio (bot_voice) with a short pre-buffer for pop-free playback. Add it to the character actor; it auto-wires to the conversation stream on BeginPlay.
Methods
| Function | Returns | Description |
|---|---|---|
EnqueueBotVoice(const FEstuaryBotVoice& Voice) | void | Queue a TTS chunk (called automatically). |
EnqueueRawPcm16(const TArray<uint8>& PcmBytes, int32 RemoteSampleRate) | void | Queue raw PCM16 audio you produced. |
FlushAllForMessage(const FString& MessageId) | void | Drop queued audio for a message (used on interrupt). |
SetEnableAnimation(bool bEnable) | void | Enable the amplitude envelope tap used by lipsync. |
GetCurrentAudioTime() const | float | Seconds elapsed in the current utterance. |
GetPlaybackTimeSeconds() const | float | Total playback time. |
IsBotAudioActive() const | bool | True while TTS is playing. |
GetCurrentJawWeight() const | float | Current amplitude-driven jaw weight (lipsync fallback). |
UEstuaryMicrophoneComponent
UActorComponent — captures the player's microphone and streams it for transcription. Cross-platform (Win64 / Mac / iOS / Android). Created automatically on AEstuaryCharacter.
Microphone capture is fixed at 16 kHz mono for transcription.
Methods
| Function | Description |
|---|---|
StartListening() | Begin the voice session and stream microphone audio. |
StopListening() | End the session and trigger final transcription. |
SetMuted(bool bMuted) | User mute. Never toggled automatically. |
SetSuppressed(bool bSuppressed) | Half-duplex guard — stop sending while the bot speaks (WebSocket voice). |
SetAutoBargeIn(bool bEnable) | Enable/disable auto-interrupt when the user speaks. Default on. |
Properties (read-only)
| Property | Type | Description |
|---|---|---|
bIsCapturing | bool | True between StartListening and StopListening. |
bIsMuted | bool | Current user-mute state. |
bIsSuppressed | bool | Current half-duplex suppression state. |
bAutoBargeIn | bool | Whether auto barge-in is enabled. |
// Push-to-talk
void AMyPawn::OnTalkPressed() { MicrophoneComponent->StartListening(); }
void AMyPawn::OnTalkReleased() { MicrophoneComponent->StopListening(); }
See Voice Connection for the full voice workflow.