Lyly é uma V-Tuber com corpo virtual 3D que reage, conversa e expressa emoções em tempo real.
Lyly é um avatar VRM 3D com animações procedurais integradas a uma IA conversacional. Ela não usa keyframes ou animações pré-gravadas — cada expressão facial, piscada de olhos e movimento labial é calculado em tempo real pela GPU.
| Component | Tecnologia |
|---|---|
| Avatar 3D | Three.js + three-vrm (modelo VRM) |
| Renderização | Morph targets diretos na GPU (sem expressionManager) |
| Animação facial | 100% procedural — senoides, lerp, noise |
| Lip-sync | Queue-synced com closure natural (Fcl_MTH_A/I/U/E/O) |
| IA / LLM | Ollama (meta-llama-3.1-8b-instruct-abliterated) |
| Memória vetorial | ChromaDB (3 coleções: usuário, identidade, diário) |
| TTS | F5-TTS via FastAPI — pipeline 100% em RAM |
| Áudio playback | ffplay pipe stream (zero-disk) |
| Desktop app | Electron + IPC bidirecional |
- Você digita uma mensagem no chat flutuante
- Lyly reage instantaneamente — pré-análise emocional (reflexo facial)
- LLM gera a resposta em streaming, frase por frase
- Cada frase vira áudio via TTS e toca no pipe do ffplay
- A boca se sincroniza com o áudio real (visemas baseados nas vogais)
- Expressões faciais mudam conforme a emoção detectada no contexto
- Memória é salva — Lyly lembra quem você é e o que conversaram
- Node.js ≥ 18
- Python 3.12+ (para ChromaDB)
- Ollama com os modelos carregados
- FFmpeg/ffplay no PATH
- Servidor TTS rodando em
http://localhost:8005
# 1. Clone o repositório
git clone https://github.com/seu-usuario/lyly-corpo.git
cd lyly-corpo
# 2. Instale dependências
npm install
cd lyly-bot && npm install && cd ..
# 3. Configure variáveis de ambiente
cp .env.example .env
# Edite .env com seus caminhos e URLs
# 4. Baixe o modelo VRM (lyly.vrm) e coloque na raiz do projeto
# 5. Inicie os serviços externos:
# ChromaDB (memória vetorial)
cd lyly-bot && python chroma.py # roda na porta 8000
# Ollama (IA local)
ollama serve
ollama pull meta-llama-3.1-8b-instruct-abliterated
ollama pull gemma-2-2b-it
# TTS (exemplo com Docker)
docker run -p 8005:8005 f5-tts-amd
# 6. Execute a aplicação
npm start| Emoção | Descrição |
|---|---|
| 😊 Happy | Olhos brilhantes, sobrancelhas elevadas |
| 😢 Sad | Olhos baixos, sobrancelhas tristes |
| 😠 Angry | Olhar fixo intenso, sobrancelhas franzidas, blink reduzido |
| 😲 Surprised | Olhos arregalados, sobrancelhas altas |
| 😌 Relaxed | Expressão natural e calma |
| 🤔 Thinking | Olhar pensativo, foco direcionado |
| 😳 Embarrassed | Mistura de alegria e tristeza nos olhos |
Cada emoção controla blendshapes específicos na GPU:
Fcl_EYE_*para olhos,Fcl_BRW_*para sobrancelhas. A boca é exclusiva do lip-sync (Fcl_MTH_A/I/U/E/O).
lyly-corpo/
├── main.js # IPC Hub — roteia eventos entre renderer e brain
├── preload.js # Security bridge (contextBridge)
├── renderer.js # Avatar 3D — Three.js, VRM, animações procedurais
├── index.html # Janela do avatar (transparente)
│
├── chat/ # Chat flutuante overlay
│ ├── chat.html
│ ├── chat.js
│ └── style.css
│
└── lyly-bot/ # Cérebro da Lyly (Node.js ESM)
├── brain/ # Orquestração cognitiva
│ ├── lylyBrain.js # Prompts, sessão, contexto
│ ├── streamProcessor.js # TTS + streaming + visemes IPC
│ └── reflectionEngine.js # Memória + análise emocional
├── llm/ # Cliente Ollama (OpenAI-compatible)
├── memory/ # ChromaDB — memória vetorial
└── chroma.py # Servidor ChromaDB (Python)
| Parâmetro | Valor |
|---|---|
| Lerp speed (olhos/sobrancelhas) | delta * 4.5 |
| Attack speed (boca abrindo) | 12.0 |
| Release speed (boca fechando) | 6.5 |
| Closure threshold | 0.52 (~48% final do áudio) |
| Anti-flickering cooldown | 1400ms |
| Blink duração | 0.12s |
| Timer idle emotion | 3s + (intensidade × 2s) |
| Timer focus reset | 4.0s fixos |
- Pipeline TTS zero-disk com pipe stream
- Lip-sync queue-synced com closure natural
- Análise emocional contextual
- Lógica "skip" inteligente (preserva expressões fortes)
- Timers de decaimento duplos (idle + focus independentes)
- Perlin noise para micro-movimentos mais orgânicos
- Respiração emocional (angry = rápida, sad = lenta)
- Eye tracking realista (mouse/cursor)
- Análise espectral de áudio para visemas via FFT
Projeto pessoal.









