Un chat vocal
que vous pouvez interrompre

Une application web pour un appel vocal en direct avec un Managed Agent de Cartesia. Parlez par-dessus l'agent et il s'arrête, et la transcription ne garde que les mots qu'il a vraiment prononcés.
Un appel en cours : l'agent a salué l'utilisateur, l'utilisateur a demandé pourquoi la marée change deux fois par jour, et la réponse de l'agent s'affiche au fil de l'eau sous un badge vert Speaking, avec les boutons Mute et End call en dessous

Capture d'écran. Le modèle lancé en local.

Modèles
ink-2, sonic-3.6
Langues
Anglais
Licence
Apache-2.0
Stack technique
Next.js 16React 19shadcn/uiagents-web
Produits Cartesia
Managed AgentsInk 2Sonic 3.6

Ce qu'il fait

Cartesia fait tourner tout l'agent, donc votre serveur n'a qu'une tâche. Il donne au navigateur un jeton à courte durée de vie, et votre clé API n'arrive jamais dans la page. Le même agent peut aussi répondre au téléphone, comme le fait le modèle Accueil téléphonique.

Lancez-le vous-même

  1. Installez

    Lancez les commandes ci-dessous avec Node 22.22 ou plus récent. pnpm fonctionne aussi. npm run setup:agent crée l'agent avec POST /v1/agents et ne fait rien si l'agent enregistré existe toujours. Vous déployez ? Lancez-la d'abord en local, car le bouton Vercel demande l'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 d'environnement
    CARTESIA_API_KEY
    play.cartesia.ai/keys
    CARTESIA_AGENT_ID
    Écrite par npm run setup:agent
    AGENT_MODEL_ID
    Facultatif. Le LLM de l'agent, d'après GET /v1/agents/models
    CARTESIA_VOICE_ID
    Facultatif. Une voix de play.cartesia.ai/voices
    APP_PASSWORD
    Facultatif en local. Obligatoire sur Vercel, ou none pour rendre l'app publique
    TRUST_PROXY
    Facultatif. 1 derrière votre propre reverse proxy
  2. Lancez un appel

    Ouvrez http://localhost:3000 et appuyez sur Start call. Utilisez un casque. L'annulation d'écho est activée, mais le son des haut-parleurs d'un ordinateur portable passe quand même dans le micro, et l'agent se coupe la parole.

Créez-le avec votre agent de code

Un prompt qui indique à votre agent de code par où commencer et quoi lire en premier.

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.

Comment ça marche

MicroPCM 16 kHz sur le WebSocket de l'agent, avec l'annulation d'écho activée
Ink 2Vous entend et détecte la fin de votre tour de parole
LLMclaude-haiku-4.5 par défaut, à changer avec AGENT_MODEL_ID
Sonic 3.6Prononce la réponse au fil de son écriture
Haut-parleurAbandonne l'audio en attente quand vous interrompez

Pourquoi ça fonctionne ainsi

Interrompre vide la file audio

Quand vous parlez par-dessus l'agent, Cartesia envoie un événement audio_output_clear. L'application jette l'audio en attente et coupe le dernier message de l'agent aux mots qu'il a vraiment prononcés.

Le navigateur reçoit un jeton de 60 secondes, pas votre clé

Le serveur crée un jeton qui ne sert qu'aux appels d'agents et expire au bout de 60 secondes. La route du jeton répond 503 si la clé API manque, et 429 après 10 jetons par minute depuis une même adresse.

Personnalisez-le

Changez ce qu'il dit

Modifiez les instructions et le message d'accueil dans scripts/prompt.ts, puis lancez npm run setup:agent -- --force.

Utilisez une autre voix ou un autre LLM

Définissez CARTESIA_VOICE_ID ou AGENT_MODEL_ID et lancez npm run setup:agent -- --force.

Parlez dans une autre langue

Définissez language.primary dans buildBody de scripts/setup-agent.ts, écrivez le prompt dans cette langue et choisissez une voix qui la parle.

Questions

Comment garder ma clé API Cartesia hors du navigateur ?

Votre serveur crée un jeton à courte durée de vie et ne donne que lui au navigateur. Le jeton dure 60 secondes et ne sert qu'aux appels d'agents, pas à la synthèse ni à la reconnaissance vocale. Le serveur en distribue au plus 10 par minute et par adresse.

Pourquoi mes mots n'apparaissent-ils qu'une fois que j'ai fini de parler ?

L'agent renvoie vos mots à la fin de votre tour, pas pendant que vous parlez, donc votre message affiche des points jusque-là. Les mots de l'agent s'affichent pendant qu'il parle. La recette montre aussi une version où vous utilisez votre propre LLM, et vos mots s'y affichent en direct pendant que vous parlez.

Combien coûte un appel ?

Les appels de Managed Agent coûtent 0,06 $ la minute plus les jetons du LLM. Ils sont facturés en dollars, pas sur votre solde de crédits Cartesia, et chaque LLM a son propre prix par jeton.

Les appels sont-ils enregistrés ?

Oui. Cartesia enregistre par défaut l'audio et la transcription de chaque appel d'agent. Prévenez vos utilisateurs, et supprimez les appels inutiles avec l'API Cartesia.

Existe-t-il un guide pas à pas pour ce modèle ?

Oui. La recette parcourt le code, le README couvre l'installation, les variables d'environnement et le déploiement, et la documentation Managed Agents explique le côté Cartesia.

Commencer aujourd'hui

Parlez à un expert.

Échangez avec notre équipe et découvrez comment Cartesia peut vous aider à créer des expériences vocales de premier plan.

Contacter les ventes

Commencez à développer.

Accédez à nos modèles via l'API et mettez un agent vocal en production en quelques minutes.

Essayer Cartesia