← Volver a proyectos

SofiaAgente de voz con IA en tiempo real

Agente de voz con IA en tiempo real

Sofia

2026Repo privado
  • Python 3.12
  • LiveKit Agents
  • Deepgram Nova-3
  • Claude Haiku 4.5
  • Gemini 2.5 Flash
  • ElevenLabs Flash
  • Silero VAD
  • PostgreSQL
  • Docker

Resumen

Sofia es una recepcionista telefónica con IA, 24/7, para clínicas. El paciente marca un número normal y habla con un agente en tiempo real que agenda, captura datos y deriva a un humano cuando duda — en habla natural, en menos de un segundo y medio por turno.

Arquitectura

caller
STTDeepgram Nova-3
LLMClaude Haiku 4.5 · Gemini 2.5 Flash
TTSElevenLabs Flash
caller

Cascada en tiempo real, residente en la UE. Cada etapa es observable y medible por separado.

LiveKit transport · Silero VAD + LM end-of-turn detector · Postgres tool-calls

~416 ms
STT
~882 ms
LLM
~163 ms
TTS
~1.46 s
median e2e

Latencia por turno

0500100015001.5 s · umbral de cuelgue1461turno 11394turno 21286turno 31467turno 41530turno 5median ~1461 msSTTLLMTTS
Mediana ~1.46 s de extremo a extremo. Los cinco turnos por debajo del umbral donde quien llama cuelga.

Lo clave

  • Cascada en tiempo real: Deepgram Nova-3 (voz→texto) → un LLM (Claude Haiku 4.5, con Gemini 2.5 Flash como respaldo intercambiable en caliente) → ElevenLabs Flash (texto→voz), orquestado sobre LiveKit.
  • Latencia mediana ~1.46s de extremo a extremo por turno, medida y registrada por turno (desglose STT / LLM / TTS): pasados ~1.5s el que llama cree que es un buzón y cuelga.
  • Tool-calling idempotente: el modelo llama save_caller_name una vez; un índice único en Postgres garantiza exactamente una fila por llamada, así los reintentos no duplican.
  • Silero VAD + un detector de fin-de-turno por modelo deciden cuándo el paciente realmente terminó — sin cortes a mitad de frase.
  • Tipado estricto (mypy --strict), ≥90% de cobertura en la lógica de negocio, Dockerizado y con CI. Stack residente en la UE para GDPR.