| Layer | Job | Open options |
|---|---|---|
| LLM runtime | The mind | Ollama, llama.cpp, LM Studio |
| Persona | Character definition | System prompt + style rules |
| Memory | Remembers you | Local store / RAG over conversation history |
| Voice (TTS) | Speaks | Piper (light), F5-TTS class (clone) |
| Avatar | A face | Live2D / VRM / generated faces |
| Lip-sync | Mouth matches audio | Wav2Lip-class / viseme drivers |
Our Personaplex project iterated the same idea five times, and the finding generalizes: presence comes from turn-taking, not intelligence. A companion you can interrupt mid-sentence, that responds to your prosody and gaze, feels dramatically more alive than a smarter model that finishes its paragraph. Budget your engineering time for the interaction loop, not the model.
Personaplex implements this stack with generated faces, real-time voice and mid-sentence interruption handling — with biomarker awareness as an experimental input. The voice tooling (qalarc-voice) grew into the terminal voice layer used across our other products.
Personaplex — 5-generation writeup The voice layerIf you only need a chatbot with personality, a system prompt in any chat UI gets you 80% there. Build the full stack when the embodiment — voice, face, presence — is the point.