Nexora
A voice-driven, real-time multimodal ad production canvas — the user speaks continuously, and the app generates ad creative, swaps wardrobe/apparel on an avatar, animates stills into short cinematic video clips with sync
Core trick
Streams continuous speech into an agent that edits a shared canvas state, so interruptions revise the in-progress ad without reloading the page.
Description
A voice-driven, real-time multimodal ad production canvas — the user speaks continuously, and the app generates ad creative, swaps wardrobe/apparel on an avatar, animates stills into short cinematic video clips with synced voiceover, and localizes campaigns into Hindi/Kannada, all with no page reloads and sub-second perceived latency.
README excerpt
# VoiceCanvas AI
Voice-driven, real-time multimodal ad production canvas built for the Google DeepMind Hackathon (PS3 + PS4).
Speak a campaign brief. A typographically-correct ad renders on the canvas. Interrupt to edit it. Animate it into a cinematic clip with synced voiceover. Localize into Hindi or Kannada. No page reloads, no forms.
## What is in this repo
| Path | Contents |
|---|---|
| `src/` | Web implementation — React + Vite frontend, FastAPI relay backend |
| `app/` | Kotlin/Compose Android companion app |
## Quick start (web)
Two terminals. See [src/README.md](src/README.md) for the full setup.
**Backend** (Python 3.10+):
```bash
cd src/backend
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
python -m app.main
```
**Frontend** (Node 18+):
```bash
cd src/frontend
npm install
npm run dev
```
- Frontend: http://localhost:5173
- Backend: http://localhost:8000
The app runs fully in mock mode with no API key. Set `USE_MOCKS=false` and add `GEMINI_API_KEY` in `src/backend/.env` to switch to real Gemini calls.
## Architecture overview
```
Browser (React + Canvas) FastAPI relay Google AI
voice -> Web Speech / Gemini Live -> parse_intent ---------> gemini-2.0-flash
canvas render <- asset/video <------- generate_image --------> NB2 Lite
generate_video --------> Veo
translate_c