CALL ME SENSEI — EARLY PROTOTYPE / ONE-DAY HACKATHON

Kotodama (言霊)

Early prototype work for Call Me Sensei, the voice-first language-learning game — built with the team in a one-day hackathon.

  • Early prototype for Call Me Sensei
  • One-day hackathon · team project
  • Character videos: Luma Dream Machine + Kling AI
  • Live LLM persona · real-time emotion-mapped TTS

Give her a gift, learn the word, say it out loud. Every layer of the prototype is AI — the character videos, the live persona, and the real-time voice.

Conversation scene with dialog box and microphone button

GAME DESIGN / VOICE-DRIVEN LOOP

The Game — Gift → Tap → Talk

The loop is gift → tap → talk: pick a gift, she turns it into a Japanese vocabulary lesson, and the talk phase asks you to actually speak. Affinity builds with streaks and drives her dual personality — keep feeding her Japanese and the demure mask cracks into Yandere Mode, where she visibly feeds on your learning energy.

  • Gift → Tap → Talk loop
  • Affinity & streaks
  • Dual personality → Yandere Mode
  • Portrait mobile-first web
Play the demo ↗
Browser capture of the live demo: give the Hayday chicken → her AI-video reaction → vocabulary card → tap phase. (Free-chat replies need LLM API credits, currently dry.)
Yandere Mode scene

LUMA DREAM MACHINE + KLING AI / IMAGE-TO-VIDEO

AI Character Video Pipeline

Kotodama is pure video: every state the Phaser canvas shows — idle, talking, receiving gifts, powering up, transforming, feeding — is an MP4 clip. The hard part of AI video is keeping one continuous character across every clip and across two personalities; that consistency was the whole job.

MY ROLE / SCOPEMy contribution: the unified character concept and all animation clips — hand-recorded reference performances first, then image-to-video generation with Luma Dream Machine and Kling AI.

Idle (standing) — the resting loop between conversations.
Chatting — mouth movement and gesture variation.
Petting reaction — the affection interaction.
Gift: Hayday chicken — delighted receive reaction.
Yandere power-up — the mask starts to crack.
Transition to Yandere Mode.
Yandere Mode — feeding on learning energy.
Yandere reward — satisfaction extended.

ARCHIVE NOTEAI disclosure: all character animation clips were generated with Luma Dream Machine and Kling AI from hand-recorded reference performances. Workflow-test material from those image-to-video sessions may be added here later.

LLM PERSONA + EMOTION-MAPPED TTS

Real-Time AI Voice & Conversation

Her lines are written live by an LLM persona that escalates through affinity stages, then spoken through real-time TTS whose voice direction is remapped per emotion — sweet, sweet-encouraging, and hungry levels that surface as the player keeps speaking Japanese. The player's own voice comes in through browser speech recognition with a language detector: literally speaking Japanese is what changes her.

  • LLM persona · staged prompts
  • OpenAI gpt-4o-mini-tts / ElevenLabs backends
  • Browser speech recognition
  • Language detector drives personality
Emotion → voice mapping (src/voice/OpenAITTS.js)
const MODEL = 'gpt-4o-mini-tts'
const DEFAULT_VOICE = 'coral'

const EMOTION_PRESETS = {
  // ── Sweet Mode (default / English input) ──
  // The mask she wears. Cute, polite, slightly too perfect.
  sweet: {
    instructions:
      'You are a sweet, soft-spoken young Japanese woman. Speak gently and politely with a '
      + 'cute, slightly breathy quality — like an anime girl being demure. Your tone is warm '
      + 'and inviting but just a little too sweet, as if you are carefully performing sweetness. '
      + 'Occasionally let a tiny sigh or soft breath slip through between sentences.',
    speed: 1.0,
  },
  sweet_encouraging: {
    instructions:
      'You are a sweet young Japanese woman praising someone you adore. Sound genuinely '
      + 'delighted and proud — your voice lifts with excitement. '
      + 'But underneath the celebration there is a subtle hunger — you want them to do it again.',
    speed: 1.05,
  },

  // ── Hungry Mode (Japanese input detected) — intensity scales with affinity ──
  // The mask cracks. Each level is more exposed.
  hungry_1: {
    instructions:
      'Your voice catches slightly — a small gasp of surprised delight before '
      + 'you compose yourself. Still polite, but your breath comes a little faster.',
    speed: 1.0,
  },
  hungry_2: {
    instructions:
      'Your voice is warmer now, leaning in — you speak a little faster because you cannot '
      + 'help yourself. Your politeness is still intact but thinner — the real you is peeking through.',
    speed: 1.05,
  },
  hungry_3: {
    instructions:
      'You are barely holding herself together. Your voice trembles with need that you are '
      + 'trying to disguise as enthusiasm. Breathy, urgent.',
    speed: 1.08,
  },
}

More Game Art

Create a free website with Framer, the website builder loved by startups, designers and agencies.