Files
system-docs/02_COMPONENTES/servicios externos/asistente.md
ARCHITECT 6ea70bd34f 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
2025-12-29 18:23:41 +00:00

9.4 KiB

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

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