Chat por voz
que você pode interromper

Um app web para uma chamada de voz ao vivo com um Managed Agent da Cartesia. Fale por cima do agente e ele para, e a transcrição guarda só as palavras que ele realmente disse.
Uma chamada ao vivo: o agente cumprimentou o usuário, o usuário perguntou por que a maré muda duas vezes por dia, e a resposta do agente está chegando sob um selo verde de Speaking, com os botões Mute e End call embaixo

Captura de tela. O template rodando localmente.

Modelos
ink-2, sonic-3.6
Idiomas
Inglês
Licença
Apache-2.0
Stack
Next.js 16React 19shadcn/uiagents-web
Produtos da Cartesia
Managed AgentsInk 2Sonic 3.6

O que ele faz

A Cartesia roda o agente inteiro, então seu servidor tem uma única tarefa. Ele entrega ao navegador um token de curta duração, e sua chave de API nunca chega à página. O mesmo agente também pode atender ligações telefônicas, como faz o template Recepção.

Rode você mesmo

  1. Instale

    Rode os comandos abaixo com o Node 22.22 ou mais recente. O pnpm também funciona. npm run setup:agent cria o agente com POST /v1/agents e não faz nada se o agente salvo ainda existir. Vai implantar? Rode o comando localmente primeiro, porque o botão da Vercel pede o 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
    

    Variáveis de ambiente
    CARTESIA_API_KEY
    play.cartesia.ai/keys
    CARTESIA_AGENT_ID
    Gravado por npm run setup:agent
    AGENT_MODEL_ID
    Opcional. O LLM do agente, de GET /v1/agents/models
    CARTESIA_VOICE_ID
    Opcional. Uma voz de play.cartesia.ai/voices
    APP_PASSWORD
    Opcional localmente. Obrigatória na Vercel, ou none para deixar o app público
    TRUST_PROXY
    Opcional. 1 atrás do seu próprio proxy reverso
  2. Comece uma chamada

    Abra http://localhost:3000 e clique em Start call. Use fones de ouvido. O cancelamento de eco está ativado, mas o som dos alto-falantes do notebook ainda vaza para o microfone e o agente interrompe a si mesmo.

Crie com seu agente de programação

Um prompt que diz ao seu agente de programação por onde começar e o que ler primeiro.

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.

Como funciona

MicrofonePCM de 16 kHz pelo WebSocket do agente, com cancelamento de eco ativado
Ink 2Ouve você e decide quando sua vez de falar terminou
LLMclaude-haiku-4.5 por padrão, definido com AGENT_MODEL_ID
Sonic 3.6Fala a resposta à medida que ela é escrita
Alto-falanteDescarta o áudio na fila quando você interrompe

Por que funciona assim

Interromper limpa a fila de áudio

Quando você fala por cima do agente, a Cartesia envia um evento audio_output_clear. O app descarta o áudio que estava na fila e corta a última mensagem do agente nas palavras que ele realmente disse.

O navegador recebe um token de 60 segundos, não a sua chave

O servidor cria um token que só funciona para chamadas com agentes e expira em 60 segundos. A rota do token responde 503 quando falta a chave de API, e 429 depois de 10 tokens por minuto do mesmo endereço.

Deixe com a sua cara

Mude o que ele diz

Edite as instruções e a saudação em scripts/prompt.ts e depois rode npm run setup:agent -- --force.

Use outra voz ou outro LLM

Defina CARTESIA_VOICE_ID ou AGENT_MODEL_ID e rode npm run setup:agent -- --force.

Fale em outro idioma

Defina language.primary em buildBody, no arquivo scripts/setup-agent.ts, escreva o prompt nesse idioma e escolha uma voz que fale esse idioma.

Perguntas

Como mantenho minha chave de API da Cartesia fora do navegador?

Seu servidor cria um token de curta duração e entrega só ele ao navegador. O token dura 60 segundos e só funciona para chamadas com agentes, não para síntese nem transcrição de voz. O servidor entrega no máximo 10 tokens por minuto por endereço.

Por que minhas palavras só aparecem depois que eu paro de falar?

O agente devolve suas palavras quando seu turno termina, não enquanto você fala, então sua mensagem mostra pontinhos até lá. As palavras do agente aparecem enquanto ele fala. A receita também mostra uma versão em que você usa seu próprio LLM, e nela suas palavras aparecem ao vivo enquanto você fala.

Quanto custa uma chamada?

Chamadas de Managed Agent custam US$ 0,06 por minuto mais os tokens do LLM. Elas são cobradas em dólares, não do seu saldo de créditos da Cartesia, e cada LLM tem seu próprio preço por token.

As chamadas são gravadas?

Sim. Por padrão, a Cartesia grava o áudio e a transcrição de cada chamada de agente. Avise seus usuários e apague as chamadas de que não precisa pela API da Cartesia.

Existe um guia passo a passo deste template?

Sim. A receita explica o código, o README cobre a configuração, as variáveis de ambiente e a implantação, e a documentação do Managed Agents explica o lado da Cartesia.

Comece hoje

Fale com um especialista.

Converse com alguém da nossa equipe e descubra como a Cartesia pode ajudar você a criar experiências de voz de alto nível.

Fale com vendas

Comece a criar.

Acesse nossos modelos por API e coloque um agente de voz em produção em minutos.

Experimente a Cartesia