This module provides the core Voxta integration for Unreal Engine, handling state tracking, audio playback, and communication with the Voxta server.
Main components
UVoxtaClient
The main public-facing subsystem for Voxta integration. Manages:
- Stateful connection to VoxtaServer
- Chat session lifecycle
- Audio input/output
- Character state management
- Event broadcasting
Access via:
UVoxtaClient Main public-facing subsystem for Voxta integration.
Definition VoxtaClient.h:50
UVoxtaAudioPlayback
Component that handles audio playback and lipsync for AI character responses. Features:
- Character-specific audio playback
- Multiple lipsync types (OVRLipSync, Audio2Face, Custom)
- Automatic audio download and processing
- Sequence management for multi-chunk responses
UVoxtaAudioInput
Handles microphone input and streaming to the Voxta server:
- Configurable input buffer and format settings
- Automatic reconnection handling
- Voice activity detection
- Silent mode toggles
Sequence diagram
Example flow of authentication, starting chat, receiving a response and sending microphone data. Along with fetching the character thumbnail.
Depending on your use case, the sequence will differ ofc.

Getting Started (C++)
- Add the UnrealVoxta plugin to your project
- Add UVoxtaClient to your GameInstance subsystems
- Initialize connection to Voxta server:
void StartConnection(const FString &ipv4Address, int port)
Start the VoxtaClient and connect to the Voxta SignalR hub.
Definition VoxtaClient.cpp:56
- Listen for connection and character events:
{
if(NewState == VoxtaClientState::Idle)
{
}
}
void OnCharacterRegistered(
const FAiCharData& CharData)
{
FGuid CharId = CharData.
GetId();
}
VoxtaClientState
VoxtaClientState Contains the possible states that can be reported by the VoxtaClient when polled.
Definition VoxtaClientState.h:16
FVoxtaClientCharacterRegistered VoxtaClientCharacterRegisteredEvent
Event fired when the internal VoxtaClient has loaded the metadata of an AiCharData.
Definition VoxtaClient.h:96
FVoxtaClientStateChanged VoxtaClientStateChangedEvent
Event fired when the internal VoxtaClient has finished transitioning to a different state.
Definition VoxtaClient.h:90
FAiCharData Read-only data struct containing all the relevant information for an AI character.
Definition AiCharData.h:21
FStringView GetName() const
Definition BaseCharData.h:26
const FGuid & GetId() const
Definition BaseCharData.h:23
- Get available characters:
{
if(Character.GetName() == "DesiredName")
{
StartChatWithCharacter(Character.GetId());
}
}
TArray< FAiCharData > GetAvailableAiCharactersCopy() const
Definition VoxtaClient.cpp:493
- Create chat sessions:
{
}
{
}
void SendUserInput(const FString &inputText, bool generateReply=true, bool characterActionInference=false)
Send user input text to the server as part of the current chat session.
Definition VoxtaClient.cpp:186
FVoxtaClientChatSessionStarted VoxtaClientChatSessionStartedEvent
Event fired when the chat session has begun.
Definition VoxtaClient.h:140
void StartChatWithCharacter(const FGuid &charId, const FString &context=TEXT(""))
Tell the server to initiate a chat session with the character of the provided ID.
Definition VoxtaClient.cpp:121
FVoxtaClientCharMessageAdded VoxtaClientCharMessageAddedEvent
Event fired when the VoxtaClient is notified by the server that a message is added.
Definition VoxtaClient.h:106
FBaseCharData Read-only data struct containing all the universal information fields for a character.
Definition BaseCharData.h:17
FChatMessage Represents a single message in a chat conversation, containing both text and audio data.
Definition ChatMessage.h:16
FStringView GetTextContent() const
Get the current text content of the message.
Definition ChatMessage.h:43
FChatSession Data struct containing all the relevant information regarding a chat session between the...
Definition ChatSession.h:20
- Add audio playback for characters:
UVoxtaAudioPlayback* AudioComp = NewObject<UVoxtaAudioPlayback>(this);
AudioComp->RegisterComponent();
AudioComp->Initialize(CharacterId);
AudioComp->VoxtaMessageAudioPlaybackFinishedEvent.AddDynamic(this, &ThisClass::OnAudioFinished);
Events
The module provides extensive event systems for state changes:
- VoxtaClientStateChangedEvent - Connection state changes
- VoxtaClientCharacterRegisteredEvent - New character data loaded
- VoxtaClientCharMessageAddedEvent - New chat messages
- VoxtaClientChatSessionStartedEvent - Chat session lifecycle
- VoxtaClientAudioPlaybackRegisteredEvent - Audio handler registration
Server Requirements
- Requires a running Voxta server
- Compatible with Voxta API version defined in VoxtaVersionData
- Supports HTTP/WebSocket communication
- Optional services: TextToSpeech, SpeechToText
Additional Features
- Global audio fallback system
- Character thumbnail caching
- Automatic reconnection handling
- Debug logging utilities
- Audio format conversion
Dependencies
- UnrealEngine
Core
CoreUObject
Engine
Json
HTTP
WebSockets
Voice
Projects
ImageWrapper
Networking
RenderCore
- UnrealVoxta
- Third-party
Licensing
MIT license - copyright (c) 2025 grrimgrriefer & DZnnah. See LICENSE in root for details.