Caso práctico sobre un asistente de voz con IA

Vocale

Un agente que responde a la línea telefónica de una empresa, encuentra la respuesta en los propios documentos de dicha empresa y abre el ticket de asistencia antes de que la persona que llama haya colgado —utilizando los números de los que ya disponen y en su propio equipo, si así lo desean—.

  • SectorInbound support and telephony
  • UsuariosSupport teams on a Yeastar or SIP PBX
  • CoberturaEvery call, around the clock
  • ServiciosProduct Design, Development, AI
Vocale: Plataforma de agentes de voz con IA

Resumen

Vocale integra un agente de IA en la línea telefónica que la empresa ya tiene. El cliente marca el número al que siempre ha llamado; el agente contesta al primer tono, habla en su idioma, responde basándose en los manuales y las políticas de la propia empresa y, cuando la respuesta es realmente «alguien tiene que echarle un vistazo a esto», abre un ticket de asistencia con los datos ya recopilados.

El sistema telefónico no sufre ningún cambio. La empresa conserva su proveedor, sus números y su plan de llamadas; se conecta una vez una plataforma SIP de Yeastar o compatible a través de un formulario, y el enlace y el enrutamiento de llamadas se configuran a través de ella. A partir de ahí, el trabajo consiste en subir los documentos que el agente debe conocer, redactar las pocas frases que definen su estilo y probarlo en un navegador hasta que suene bien —todo ello antes de que se le desvíe ni una sola llamada real—.

La decisión que determina el éxito o el fracaso económico radica en dónde se ejecutan los modelos, por lo que la plataforma ofrece dos motores en un mismo producto. En el nivel alojado, el reconocimiento de voz, el razonamiento y la voz provienen de una API de terceros y se cobra por cada minuto. En el nivel autohospedado, los tres se ejecutan en una GPU bajo el control de la propia empresa, ningún archivo de audio ni documento sale de las instalaciones, y una llamada solo cuesta electricidad. Cambiar de uno a otro es cuestión de configuración; el agente se comporta igual en ambos casos.

  • Next.js 15
  • TypeScript
  • Tailwind CSS
  • Supabase
  • PostgreSQL
  • LiveKit
  • WebRTC
  • SIP telephony
  • Python
  • vLLM + Qwen3-8B
  • Faster-Whisper
  • Coqui XTTS-v2
  • Pinecone

Vídeo del proyecto

vocaleConecta la línea telefónica. Suena.

Una guía paso a paso de Vocale, desde la conexión de un sistema telefónico y la carga de un manual hasta una llamada real en la que se responde a la pregunta y se registra aquella que no se ha podido resolver.

Capacidades clave

  • Contesta el teléfono

    Se conecta al sistema Yeastar o SIP que la empresa ya utiliza, de modo que las llamadas llegan al agente a través de los números que los clientes siempre han marcado.

  • Basado en tus documentos

    Los manuales, las políticas y las listas de precios se cargan, se indexan y se consultan en el momento en que se formula la pregunta, de modo que la respuesta procede del propio material de la empresa y no de la memoria del modelo.

  • Abre tickets durante la llamada

    Cuando una persona que llama necesita hablar con alguien, el agente recopila el asunto, los datos de contacto y el grado de urgencia mientras aún tiene a la persona al teléfono, y luego crea él mismo el ticket.

  • Sabe quién llama

    La base de datos de clientes existente está conectada en modo de solo lectura, por lo que el número de llamada entrante se asocia a una cuenta antes de que el agente diga una sola palabra.

  • Dos motores, un producto

    El mismo agente se ejecuta en una API de modelo alojada o íntegramente en una GPU privada. La empresa decide en función del coste y de dónde se permite que vayan sus datos.

El reto

El teléfono suena a las siete de la tarde. La respuesta está en un PDF en la unidad compartida. No hay nadie para leerla.

La disponibilidad de una línea de atención al cliente depende exclusivamente de las personas que la atienden, y las preguntas que se reciben son, en su gran mayoría, siempre las mismas: ¿cuál es el horario?, ¿esto está cubierto?, ¿cómo lo reinicio? Las respuestas ya están escritas —en un manual, una política, una lista de precios—, pero no en ningún sitio al que pueda acceder quien llama ni donde un operador pueda encontrarlas mientras alguien espera. Poner una IA al otro lado de la línea resuelve la mitad del problema de la disponibilidad. Alquilarla por minutos lo sustituye silenciosamente por un problema de costes, ya que cuanto mejor funciona, más se utiliza y más cuesta cada mes.

  • Llamadas fuera del horario de oficina

    Por las tardes, los fines de semana y los días festivos, las llamadas se desvían al buzón de voz, y lo que llega allí son, en su mayoría, consultas rutinarias que una persona habría resuelto en un minuto.

  • Respuestas a las que nadie puede llegar

    La información figura en los documentos, pero no en ningún formato que permita consultarla mientras hay alguien esperando en la línea.

  • Tarifa por minuto

    Las plataformas gestionadas de IA para voz cobran por minuto de llamada, por lo que la factura aumenta a medida que crece su uso, lo que supone un incentivo erróneo para poner en marcha una línea de atención al cliente.

Nuestra solución

Un agente, en la línea que ya tienes.

Vocale se sitúa entre el sistema telefónico de una empresa y su base de conocimientos. La centralita (PBX) se conecta a través de un formulario y el enrutamiento se configura en segundo plano. Los documentos se cargan y se indexan. El comportamiento del agente se define en lenguaje sencillo, en lugar de mediante código, y todo el proceso puede ensayarse en un navegador antes de que llegue una llamada real. Una vez que está en funcionamiento, todo lo que ha hecho queda registrado —la transcripción, las búsquedas que ha realizado, los tickets que ha abierto— para que el equipo pueda evaluar si está haciendo bien su trabajo antes de confiarle más tareas.

Se conecta a la centralita, no la rodea

Yeastar y los sistemas SIP compatibles se registran a través de un formulario, y la empresa conserva su proveedor, sus números y su plan de llamadas.

Recuperación antes de que hable

Una pregunta que requiere un dato concreto activa una búsqueda en los documentos indexados, y la respuesta se elabora a partir de los resultados obtenidos; en caso de no encontrarse nada, el agente puede dar esa respuesta.

Ya sea alojado o autoalojado, el comportamiento es el mismo

El habla, el lenguaje y la voz se ejecutan a través de una API de terceros o en una GPU privada. Cambiar de una a otra es cuestión de configuración, no requiere volver a compilar.

Cómo funciona

Pruébalo antes de que lo haga un cliente

A sandbox that runs the whole pipeline in the browser. Pick a caller, start the call, and the transcript arrives live beside it as the agent hears and answers. Every session it has ever handled — browser or phone, inbound or outbound — is one click away in the rail on the left.

La consola del agente de voz Vocale: una gran ventana en estado de espera con un panel de transcripción en tiempo real a su lado, un selector de llamadas y un botón «Iniciar llamada» debajo, además de una barra lateral con el historial de llamadas recientes en la que se han ocultado los números.

Los documentos a los que responde

Files are dropped straight onto the page, then parsed, split and indexed. Each row reports how many pages went in and how many searchable pieces came out, so it is obvious at a glance when a document is ready to be quoted on a call and when it is still being worked on.

La página de la base de conocimientos: un panel de carga mediante «arrastrar y soltar» situado encima de una tabla de documentos indexados en la que se muestran el nombre, el estado, el número de páginas y el número de fragmentos.

Lo que no pudo responder se convierte en una multa

The agent collects the subject, the customer and the urgency while the caller is still on the line and files the ticket itself, transcript attached. Support opens the queue to a list of real problems in the caller's own words instead of a column of missed calls.

La página de incidencias: una tabla con las incidencias de asistencia técnica, en la que se indican el número, el asunto, el cliente, el estado, la prioridad y la fecha de creación; la mayoría de ellas se abren automáticamente durante las llamadas.

Sabe quién llama

An existing customer database connects read-only, with a mapping step for whichever columns hold the name and the number. From then on an inbound call is matched against it before the agent speaks — and the records stay where they are. Vocale reads them; it does not become the place they live.

La página de clientes muestra una base de datos externa sincronizada con 14.039 registros, con los controles «Editar asignaciones» y «Editar conexión». Las columnas de nombre y teléfono aparecen difuminadas.

Números, asignados desde la consola

Telephony is the one part a business should not have to get right alone, so provisioning is an operator job rather than a self-service form. Each number is registered, pointed at an organisation and switched on from here — which doubles as the fastest way to see which tenants are actually taking calls.

La pantalla de números SIP del administrador: contadores del total de números, de los números activos y de los inactivos, y una tabla que asocia cada número a un nombre, una organización y un inquilino, con un botón para activar o desactivar su estado.

Cuánto cuesta cada minuto

Spend is metered the way the models bill it — caller speech, agent speech and replayed history, broken out per model and per organisation. It is what turns the choice between a hosted API and a private GPU into a decision with a number attached rather than an argument.

El panel de control de costes administrativos y de uso: coste total, coste medio por llamada, recuento de llamadas y minutos y coste por minuto, un gráfico de gasto diario, un desglose por tipo de coste y por modelo, y las tarifas vigentes.

Impacto y resultados

Contestaron al primer tono y el precio era como el de un programa informático.

Lo que importa en una línea de atención al cliente no es la precisión en sentido abstracto, sino si se ha respondido a la llamada y si la respuesta ha sido correcta. Vocale responde a todas las llamadas, a cualquier hora, en el idioma del usuario, y deja constancia de la conversación para que se pueda resolver la segunda cuestión. El coste que se indica a continuación es el que la plataforma ha calculado en el nivel de alojamiento durante un mes de llamadas reales; el nivel de autoalojamiento traslada esa línea al hardware que la empresa ya paga, y la cifra por minuto deja de variar por completo.

Cobertura de guardias, sin turnos ni colas
Coste por minuto de llamada facturado por consumo, plan alojado
Idiomas a los que se puede cambiar el agente
Formas de ejecutarlo: API alojada o GPU privada

Diseño del sistema

Qué puede hacer una empresa desde el panel de control

Diagrama de flujo. Un usuario con una centralita Yeastar o similar inicia sesión y accede a un panel de control principal, que se divide en siete áreas: Configuración de telefonía y centralita; Base de conocimientos, con funciones para subir, ver y eliminar documentos; Configuración de agentes de voz, con configuración de mensajes de sistema y una interfaz de prueba para chat y voz; Operaciones en tiempo real y supervisión, con historial de conversaciones y actividad de los agentes; Integración del sistema de tickets, con funciones para conectarse, crear, ver, editar y eliminar; Gestión de la información de clientes, con conexión a la base de datos de clientes y creación de nuevos clientes; y Gestión de cuentas, con edición del perfil, descarga de datos y eliminación de la cuenta.
Siete áreas con un único inicio de sesión. La telefonía y la gestión del conocimiento se configuran una sola vez; las operaciones, la gestión de incidencias y los registros de clientes forman parte del día a día.

Anatomía de un turno de habla único

Diagrama de secuencia de un turno de conversación. El audio WebRTC del usuario llega a un servidor LiveKit, que transmite los fotogramas de audio al agente. La detección de actividad de voz identifica el habla, el búfer se envía a Faster-Whisper y devuelve una transcripción, el turno del usuario se guarda en PostgreSQL, el contexto y el historial del chat se envían al modelo de lenguaje Qwen3-8B gestionado por vLLM, que devuelve los tokens, el texto se normaliza y se agrupa en frases antes de que XTTS-v2 lo convierta en tramas de audio, se guarda el turno del asistente y el audio vuelve al usuario a través de WebRTC.
Entrada y salida de voz en una sola pasada, con ambas mitades transcritas en tiempo real. En el nivel de alojamiento propio, cada casilla del agente es un modelo que se ejecuta en la propia GPU de la empresa.

Lo que había que resolver

Que te interrumpan a mitad de una frase

Solution: Las personas que llaman interrumpen la respuesta en cuanto la han entendido, y un agente que sigue hablando suena poco natural. La detección de actividad de voz corta el audio saliente en cuanto habla la persona que llama y, a continuación, recorta la transcripción del agente a lo que realmente se ha escuchado, de modo que la conversación continúa a partir de la llamada tal y como la ha experimentado la persona que llama, en lugar de la que el sistema había previsto.

Silencio mientras piensa

Solution: La búsqueda en los documentos tarda lo suficiente como para que parezca una llamada interrumpida. El agente suelta una breve frase de relleno natural al cabo de medio segundo y la cancela si la búsqueda da resultado antes, lo que permite que la recuperación de la información se realice sin que se produzca ningún silencio incómodo.

Texto que no se lee en voz alta

Solution: Lo que se escribe para una pantalla no es lo mismo que lo que se escribe para una voz: importes monetarios, fechas expresadas como números, siglas. Una capa de normalización reescribe los importes, las fechas, las horas y las abreviaturas en su forma oral, según el idioma, antes de que lleguen al modelo de voz.

Una GPU, varias conversaciones

Solution: Una sesión de voz en directo almacena sus modelos en la memoria de vídeo, por lo que la capacidad viene limitada por la VRAM y no por la potencia de cálculo bruta. Las sesiones se asignan por tarjeta y la carga de trabajo se distribuye explícitamente entre las tarjetas; si se deja en la configuración predeterminada de agrupación, las tareas de voz y lenguaje se asignan a la misma GPU y se quitan recursos unas a otras.

Preguntas

No. Vocale se conecta al sistema telefónico que ya utilizas —Yeastar y plataformas SIP compatibles— y las llamadas siguen llegando a los números que tus clientes ya tienen. La conexión se establece una sola vez desde el panel de control, y a partir de ahí se configuran la línea troncada y el enrutamiento.

¿Se pierden las llamadas a partir de las cinco?

Vamos a poner a un agente a atenderte.