Histórias interativas
com uma voz para cada personagem

Escolha um tema e um tom, e um LLM escreve uma história em três cenas. O Sonic 3.6 lê em voz alta com uma voz diferente para cada personagem enquanto cada palavra se acende. Depois de cada cena, você toca ou diz o que acontece em seguida.
Story time no fim da primeira cena de Juniper and the Lost Signal: o narrador, o robô Bolt e Juniper têm cada um suas falas, e embaixo aparecem a pergunta What happens next?, dois botões de escolha e um botão Answer out loud

Captura de tela. O template rodando localmente.

Modelos
sonic-3.6, ink-2
Idiomas
Inglês
Licença
Apache-2.0
Stack
Next.js 16React 19AI SDKIndexedDBshadcn/ui
Produtos da Cartesia
Sonic 3.6Ink 2

O que ele faz

Cada história tem três cenas curtas. Um LLM as escreve a partir do tema e do tom que você escolhe, e o Sonic 3.6 as lê em voz alta. O narrador e cada personagem falam com a própria voz, e cada palavra se acende enquanto é lida.

No fim de cada cena, você escolhe o que acontece depois entre duas opções. Toque em uma ou diga em voz alta. A segurança de conteúdo vem ativada, e cada cena é verificada antes de tocar.

Rode você mesmo

  1. Instale

    Rode os comandos abaixo com o Node 22.22 ou mais recente. O pnpm também funciona. Preencha o .env.local com base na tabela abaixo. Se faltar alguma chave, a página diz qual.

    npx degit cartesia-ai/cookbook/examples/story-time story-time
    cd story-time
    # add CARTESIA_API_KEY, LLM_MODEL and the matching LLM key
    cp .env.example .env.local
    npm install
    npm run dev
    

    Variáveis de ambiente
    CARTESIA_API_KEY
    play.cartesia.ai/keys
    LLM_MODEL
    provedor/modelo, por exemplo openai/gpt-5.4-mini
    OPENAI_API_KEY
    Se LLM_MODEL começar com openai/. Recomendada com qualquer modelo, porque ativa a moderação das cenas
    ANTHROPIC_API_KEY
    Se LLM_MODEL começar com anthropic/
    AI_GATEWAY_API_KEY
    Para qualquer outro provedor
    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 história

    Abra a URL que o npm run dev mostra. Escolha um tema e um tom, dê um nome ao herói se quiser e clique em Start the story. Quando uma cena terminar, toque em uma das duas escolhas, ou clique em Answer out loud e diga.

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 an interactive story app with Cartesia. Start from https://github.com/cartesia-ai/cookbook/tree/main/examples/story-time and follow its AGENTS.md for the commands, files and rules. The AI SDK writes each scene. The browser gets a 60 second access token with the tts and stt grants, reads the scene with sonic-3.6 over the TTS WebSocket using one context per line (each with its own voice, emotion and add_timestamps), and hears the listener's choice with ink-2 on /stt/turns/websocket, opening the mic only when they press Answer out loud. Keep the content-safety rules in AGENTS.md. If I don't have a Cartesia API key yet, follow https://www.cartesia.ai/agent-quickstart.md to get one.

Como funciona

CenaO LLM escreve de 4 a 7 falas, cada uma com um personagem e uma emoção, e depois rodam as verificações de segurança
Sonic 3.6Uma conexão por cena, um fluxo separado por fala
Leitura acompanhadaAs marcações de tempo por palavra guiam o destaque
Ink 2Ouve a escolha que você fala, com o microfone ligado só enquanto você responde
EscolhaIdentificada no navegador. Só a opção escolhida volta

Por que funciona assim

Uma voz nova para cada personagem

O Sonic consegue rodar vários fluxos em uma só conexão, cada um com sua voz e sua emoção. Assim o narrador, o herói e um dragão falante se revezam sem reconectar. Cada personagem novo recebe a próxima voz de uma lista.

Suas palavras ficam no navegador

O Ink 2 transforma sua resposta em texto, e a página a associa a uma escolha dentro do próprio navegador. Só a opção escolhida volta para o LLM, nunca o que você disse. O microfone só abre quando você clica em Answer out loud.

Ouvir de novo não faz chamadas à API

Cada cena fica salva no IndexedDB do navegador com o áudio e o tempo de cada palavra. Ouvir de novo uma história da biblioteca toca tudo com o destaque, sem nenhuma chamada.

Deixe com a sua cara

Use outras vozes

Os ids de voz ficam em lib/story.ts. Troque por vozes de play.cartesia.ai/voices.

Faça histórias mais longas

Aumente TOTAL_SCENES em lib/story.ts, que por padrão é 3. Cada cena a mais custa uma chamada ao LLM e a sua narração.

Conte histórias em outro idioma

O Ink 2 e o Sonic também falam espanhol, francês, hindi e japonês. Defina o idioma da narração em lib/narrate.ts e inclua o idioma no prompt da história. Traduza as listas de palavras que o app usa para reconhecer as escolhas faladas e para a segurança. Desligue as configurações de emoção, que só funcionam em inglês.

Perguntas

Como ele mantém as histórias seguras?

Os temas e os tons são opções prontas, e o prompt proíbe violência explícita, conteúdo sexual e ódio. Cada cena também passa por uma lista de palavras, e pelo serviço de moderação da OpenAI se você adicionar uma chave da OpenAI. Nenhum filtro é perfeito, então leia algumas histórias antes de compartilhar.

Para onde vão minhas escolhas e minha voz?

As configurações da história, o nome do herói e suas escolhas vão para o provedor de LLM que você escolher. Se você adicionar uma chave da OpenAI, as configurações e cada cena também vão para a OpenAI para moderação. As respostas faladas vão em streaming para a Cartesia, e o servidor do app não guarda áudio nem histórias.

Minha API key da Cartesia fica exposta no navegador?

Não. A chave fica no servidor. O navegador recebe um token que dura 60 segundos e só serve para voz.

Como funciona o destaque das palavras?

O Sonic envia o horário de início de cada palavra junto com o áudio. A página confere o relógio de reprodução a cada quadro e acende a palavra que está sendo dita.

Por que a primeira cena demora alguns segundos?

O LLM escreve a cena inteira antes de a narração começar, então um modelo menor encurta a espera. Depois, as falas seguintes são geradas enquanto as anteriores tocam.

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 de contextos do WebSocket de TTS 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