Un chat de voz
que puedes interrumpir

Una app web para una llamada de voz en vivo con un Managed Agent de Cartesia. Si hablas por encima del agente, se calla, y la transcripción conserva solo las palabras que llegó a decir.
Una llamada en curso: el agente saludó, el usuario preguntó por qué las mareas cambian dos veces al día y la respuesta del agente va apareciendo bajo una etiqueta verde de Speaking, con los botones Mute y End call debajo

Captura de pantalla. La plantilla ejecutándose en local.

Modelos
ink-2, sonic-3.6
Idiomas
Inglés
Licencia
Apache-2.0
Stack
Next.js 16React 19shadcn/uiagents-web
Productos de Cartesia
Managed AgentsInk 2Sonic 3.6

Qué hace

Cartesia ejecuta el agente completo, así que tu servidor solo tiene una tarea. Le da al navegador un token de corta duración, y tu clave de API nunca llega a la página. El mismo agente también puede atender llamadas telefónicas, como hace la plantilla Recepción.

Ejecútalo tú mismo

  1. Instala

    Ejecuta los comandos de abajo con Node 22.22 o posterior. pnpm también funciona. npm run setup:agent crea el agente con POST /v1/agents y no hace nada si el agente guardado todavía existe. ¿Vas a desplegarla? Ejecútalo antes en local, porque el botón de Vercel pide el id.

    npx degit cartesia-ai/cookbook/examples/voice-chat voice-chat
    cd voice-chat
    # add CARTESIA_API_KEY
    cp .env.example .env.local
    npm install
    # creates the agent, writes CARTESIA_AGENT_ID
    npm run setup:agent
    npm run dev
    

    Variables de entorno
    CARTESIA_API_KEY
    play.cartesia.ai/keys
    CARTESIA_AGENT_ID
    Lo escribe npm run setup:agent
    AGENT_MODEL_ID
    Opcional. El LLM del agente, de GET /v1/agents/models
    CARTESIA_VOICE_ID
    Opcional. Una voz de play.cartesia.ai/voices
    APP_PASSWORD
    Opcional en local. Obligatoria en Vercel, o none para que la app sea pública
    TRUST_PROXY
    Opcional. 1 si está detrás de tu propio proxy inverso
  2. Empieza una llamada

    Abre http://localhost:3000 y pulsa Start call. Usa auriculares. La cancelación de eco está activada, pero el sonido de los altavoces del portátil sigue llegando al micrófono y el agente se interrumpe a sí mismo.

Créalo con tu agente de programación

Un prompt que le dice a tu agente de programación por dónde empezar y qué leer primero.

Prompt

Claude CodeCursorCodex

Build a browser voice chat with a Cartesia Managed Agent. Start from https://github.com/cartesia-ai/cookbook/tree/main/examples/voice-chat and follow its AGENTS.md for the commands, files and rules. The server route mints a 60 second access token with only the agent grant through @cartesia/cartesia-js (client.accessToken.create), and the browser opens wss://api.cartesia.ai/v1/agents/websocket/{agent_id} with useCartesiaAgent from lib/agents-web. Create the agent once with npm run setup:agent, which calls POST /v1/agents. The agent runs Ink 2 and Sonic 3.6 for you, so do not add TTS or STT model fields to its config. If I don't have a Cartesia API key yet, follow https://www.cartesia.ai/agent-quickstart.md to get one.

Cómo funciona

MicrófonoPCM a 16 kHz por el WebSocket del agente, con cancelación de eco activada
Ink 2Te escucha y decide cuándo has terminado tu turno
LLMclaude-haiku-4.5 por defecto, se cambia con AGENT_MODEL_ID
Sonic 3.6Dice la respuesta a medida que se escribe
AltavozDescarta el audio en cola cuando interrumpes

Por qué funciona así

Interrumpir vacía la cola de audio

Cuando hablas por encima del agente, Cartesia envía un evento audio_output_clear. La app descarta el audio que tenía en cola y recorta el último mensaje del agente a las palabras que llegó a decir.

El navegador recibe un token de 60 segundos, no tu clave

El servidor crea un token que solo sirve para llamadas a agentes y caduca en 60 segundos. La ruta del token responde 503 si falta la clave de API, y 429 después de 10 tokens por minuto desde una misma dirección.

Adáptalo a ti

Cambia lo que dice

Edita las instrucciones y el saludo en scripts/prompt.ts y luego ejecuta npm run setup:agent -- --force.

Usa otra voz u otro LLM

Define CARTESIA_VOICE_ID o AGENT_MODEL_ID y ejecuta npm run setup:agent -- --force.

Habla en otro idioma

Cambia language.primary en buildBody, dentro de scripts/setup-agent.ts, escribe el prompt en ese idioma y elige una voz que lo hable.

Preguntas

¿Cómo mantengo mi clave de API de Cartesia fuera del navegador?

Tu servidor crea un token de corta duración y le da al navegador solo eso. El token dura 60 segundos y solo sirve para llamadas a agentes, no para síntesis ni transcripción de voz. El servidor entrega como máximo 10 tokens por minuto por dirección.

¿Por qué mis palabras aparecen solo cuando dejo de hablar?

El agente devuelve tus palabras cuando termina tu turno, no mientras hablas, así que tu mensaje muestra puntos hasta entonces. Las palabras del agente aparecen a medida que habla. La receta también muestra una versión en la que usas tu propio LLM, y ahí tus palabras aparecen en vivo mientras hablas.

¿Cuánto cuesta una llamada?

Las llamadas con Managed Agents cuestan $0,06 por minuto más los tokens del LLM. Se facturan en dólares, no de tu saldo de créditos de Cartesia, y cada LLM tiene su propio precio por token.

¿Se graban las llamadas?

Sí. Cartesia graba por defecto el audio y la transcripción de cada llamada de agente. Avisa a tus usuarios y borra las llamadas que no necesites con la API de Cartesia.

¿Hay una guía paso a paso de esta plantilla?

Sí. La receta recorre el código, el README cubre la instalación, las variables de entorno y el despliegue, y la documentación de Managed Agents explica la parte de Cartesia.

Empieza hoy

Habla con un experto.

Habla con nuestro equipo y descubre cómo puede ayudarte Cartesia a crear experiencias de voz de primer nivel.

Contactar con ventas

Empieza a crear.

Accede a nuestros modelos mediante API y lleva un agente de voz a producción en minutos.

Probar Cartesia