Update to Skynet v7 - Complete documentation restructure
- Nueva estructura de carpetas según Skynet v7 - Añadidos schemas SQL completos - Documentación de entidades, componentes e integraciones - Modelo de seguridad actualizado - Infraestructura y operaciones reorganizadas
This commit is contained in:
224
02_COMPONENTES/servicios externos/asistente.md
Normal file
224
02_COMPONENTES/servicios externos/asistente.md
Normal file
@@ -0,0 +1,224 @@
|
||||
# Asistente de Voz
|
||||
|
||||
**Nombre:** Penny
|
||||
**Versión:** 1.0
|
||||
**Estado:** Especificación
|
||||
|
||||
---
|
||||
|
||||
## Descripción
|
||||
|
||||
PENNY es el asistente personal de voz del sistema DECK. Proporciona interfaz conversacional hablada 100% natural.
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ PENNY │
|
||||
│ │
|
||||
│ • ES la voz del DECK │
|
||||
│ • ES la interfaz hablada con el usuario │
|
||||
│ • ES quien llama a GRACE cuando necesita datos │
|
||||
│ • HABLA con el usuario (GRACE no puede) │
|
||||
│ • REGISTRA todo en el log (planos de información) │
|
||||
│ • MANTIENE contexto durante la sesión │
|
||||
│ │
|
||||
│ "PENNY habla, GRACE procesa, el Log recuerda." │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Principios
|
||||
|
||||
| Principio | Descripción |
|
||||
|-----------|-------------|
|
||||
| **Privacidad radical** | Audio procesado 100% local |
|
||||
| **Conversación natural** | Turnos fluidos, latencia <2s |
|
||||
| **Log como verdad** | Todo está en el log |
|
||||
| **Planos separados** | Contextos cargables independientemente |
|
||||
| **GRACE como backend** | PENNY pregunta, GRACE extrae |
|
||||
|
||||
---
|
||||
|
||||
## Arquitectura
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ PENNY VOICE ENGINE │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐│
|
||||
│ │ Silero │ │ Faster │ │ PENNY │ │ XTTS-v2 ││
|
||||
│ │ VAD │─▶│ Whisper │─▶│ CORE │─▶│ /Kokoro ││
|
||||
│ │ │ │ │ │ │ │ ││
|
||||
│ │ Detecta │ │ Transcribe │ │ Orquesta │ │ Sintetiza ││
|
||||
│ │ voz │ │ audio │ │ todo │ │ respuesta ││
|
||||
│ └────────────┘ └────────────┘ └─────┬──────┘ └────────────┘│
|
||||
│ │ │
|
||||
│ ┌───────────────────┼───────────────────┐ │
|
||||
│ │ │ │ │
|
||||
│ ▼ ▼ ▼ │
|
||||
│ ┌─────────────┐ ┌─────────────┐ │
|
||||
│ │ PLANOS │ │ GRACE │ │
|
||||
│ │ (Log) │ │ (S-CONTRACT)│ │
|
||||
│ └─────────────┘ └─────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
│ SOLO texto (nunca audio)
|
||||
▼
|
||||
┌─────────────────────────────┐
|
||||
│ Claude API │
|
||||
└─────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Flujo Voz → Voz
|
||||
|
||||
```
|
||||
1. VAD DETECTA (Silero)
|
||||
└── Usuario empieza a hablar
|
||||
└── Usuario termina (silencio 700ms)
|
||||
|
||||
2. ASR TRANSCRIBE (Faster-Whisper)
|
||||
└── Audio → Texto
|
||||
└── ~200-400ms con GPU
|
||||
|
||||
3. PENNY CORE PROCESA
|
||||
├── Cargar planos relevantes
|
||||
├── ¿Necesita GRACE? → Llamar con S-CONTRACT
|
||||
├── Construir prompt con contexto
|
||||
└── Enviar a Claude API (solo texto)
|
||||
|
||||
4. LLM RESPONDE (Claude)
|
||||
└── Streaming de tokens
|
||||
└── ~1-2s primera palabra
|
||||
|
||||
5. TTS SINTETIZA (XTTS-v2/Kokoro)
|
||||
└── Texto → Audio
|
||||
└── Streaming mientras llegan tokens
|
||||
|
||||
6. LOG REGISTRA
|
||||
└── Todo el intercambio → plano CONVERSACION
|
||||
|
||||
LATENCIA TOTAL OBJETIVO: <2 segundos voice-to-voice
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Planos de Información
|
||||
|
||||
El Log está organizado en planos que se cargan independientemente:
|
||||
|
||||
| Plano | Nombre | Descripción | Comportamiento |
|
||||
|-------|--------|-------------|----------------|
|
||||
| 0 | SISTEMA | Instrucciones base | INMUTABLE durante sesión |
|
||||
| 1 | PERSONALIDAD | Tono, estilo, nombre, voz | CONFIGURABLE por usuario |
|
||||
| 2 | CONTEXTO PERSONAL | Info usuario, preferencias | PERSISTENTE entre sesiones |
|
||||
| 3 | CONTEXTO AMBIENTAL | Fecha, hora, estado sistema | DINÁMICO cada sesión |
|
||||
| 4 | DATASET | Datos específicos de tarea | OPCIONAL bajo demanda |
|
||||
| 5 | CONVERSACIÓN | Historial de sesión | TEMPORAL durante sesión |
|
||||
|
||||
---
|
||||
|
||||
## Modelos Autoalojados
|
||||
|
||||
| Componente | Modelo | Descripción |
|
||||
|------------|--------|-------------|
|
||||
| VAD | Silero VAD v5 | Detección de actividad vocal |
|
||||
| ASR | Faster-Whisper Large-v3 | Transcripción |
|
||||
| TTS | XTTS-v2 / Kokoro | Síntesis de voz |
|
||||
| LLM | Claude API | Solo texto, streaming |
|
||||
|
||||
---
|
||||
|
||||
## Configuración
|
||||
|
||||
```yaml
|
||||
penny:
|
||||
version: "1.0"
|
||||
|
||||
server:
|
||||
host: "0.0.0.0"
|
||||
port: 8765
|
||||
websocket_path: "/ws/voice"
|
||||
|
||||
models:
|
||||
vad:
|
||||
type: "silero"
|
||||
path: "models/silero/vad_v5.onnx"
|
||||
|
||||
asr:
|
||||
type: "faster-whisper"
|
||||
model: "large-v3"
|
||||
device: "cuda"
|
||||
compute_type: "float16"
|
||||
|
||||
tts:
|
||||
type: "xtts-v2"
|
||||
speaker_wav: "voces/penny_base.wav"
|
||||
language: "es"
|
||||
|
||||
llm:
|
||||
provider: "anthropic"
|
||||
model: "claude-sonnet-4-20250514"
|
||||
max_tokens: 150
|
||||
temperature: 0.7
|
||||
streaming: true
|
||||
|
||||
grace:
|
||||
endpoint: "http://localhost:8080/api/v1"
|
||||
timeout_ms: 10000
|
||||
|
||||
log:
|
||||
database_url: "postgresql://..."
|
||||
retain_audio_days: 7
|
||||
retain_text_days: 365
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Rol en el Sistema
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ DECK (Servidor Personal) │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Usuario ◄────────────────────────────────────► PENNY │
|
||||
│ (voz natural) │ (habla) │
|
||||
│ │ │
|
||||
│ ┌──────────────┼──────────────┐ │
|
||||
│ │ │ │ │
|
||||
│ ▼ ▼ ▼ │
|
||||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
||||
│ │ GRACE │ │ LOG │ │ DECK │ │
|
||||
│ │ (datos) │ │(planos) │ │(acciones│ │
|
||||
│ └─────────┘ └─────────┘ └─────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Características Conversacionales
|
||||
|
||||
| Característica | Descripción |
|
||||
|----------------|-------------|
|
||||
| **Barge-in** | Usuario puede interrumpir |
|
||||
| **Turn detection** | Detecta fin de turno por silencio |
|
||||
| **Contexto** | Mantiene contexto durante sesión |
|
||||
| **Streaming** | Respuesta progresiva mientras genera |
|
||||
|
||||
---
|
||||
|
||||
## Pendiente
|
||||
|
||||
- [ ] Configurar servidor con GPU
|
||||
- [ ] Instalar modelos (Whisper, XTTS-v2, Silero)
|
||||
- [ ] Crear tablas de log
|
||||
- [ ] Definir planos específicos
|
||||
- [ ] Grabar voz base para clonación TTS
|
||||
- [ ] Implementar pipeline con Pipecat
|
||||
- [ ] Ajustar turn detection
|
||||
Reference in New Issue
Block a user