# VRM Lip Sync MVP Minimal TypeScript web app that loads a VRM avatar and drives its mouth from uploaded audio using the Web Audio API. The project now includes a default sample avatar at `public/default-avatar.vrm`, so you can run it immediately without finding your own model first. It also includes a Gemini Live text-to-speech loop: enter a prompt, send it to Gemini, receive native audio, and feed that audio back into the avatar player for lip sync. ## Run 1. Install dependencies: bun install 2. Start dev server: bun run dev 3. Open the local Vite URL. ## Gemini setup Set your Gemini API key before starting Vite: ```bash export VITE_GEMINI_API_KEY=your_key_here bun run dev ``` ## Usage 1. Load a `.vrm` file. 2. Load an audio file. 3. Press Play. The avatar uses amplitude-based mouth opening, not phoneme-level viseme detection. ## Next upgrades - Add phoneme/viseme inference instead of pure amplitude - Add microphone input mode - Add drag-and-drop and avatar presets - Add eye blink / idle animation