Visper
Visper is an AI-powered storytelling pipeline that transforms the contents of a GitHub repository extracted and analyzed through Fetch.ai’s uAgents into elegant slides, natural-sounding narration, and a final MP4 video i
Core trick
Retrieval grounds narration over a GitHub repo's content, then TTS narration and generated slide images are assembled into an MP4.
Description
Visper is an AI-powered storytelling pipeline that transforms the contents of a GitHub repository extracted and analyzed through Fetch.ai’s uAgents into elegant slides, natural-sounding narration, and a final MP4 video in one automated flow. Built during the Ted AI Hackathon, it combines Gemini models for narration, image generation, and optional TTS with Vectara AI for retrieval-augmented grounding. Visper also integrates Google Cloud TTS and GCS for audio synthesis and cloud delivery. By converting raw repository content into clean, narrated visual summaries, Visper makes technical projects easier to understand and more accessible, especially for blind and low-vision users.
README excerpt
## Visper
Talk to your code. Real‑time voice chat with secure RAG over your repositories.
<p align="center">
<img alt="Voice RAG Chat – listening UI" src="docs/assets/landing-voice-rag.jpeg" width="900" />
</p>
<p align="center">
<img alt="Visper – homepage" src="docs/assets/landing-home.jpeg" width="900" />
</p>
## Quick start
1) Install
```
pip install -r requirements.txt
```
2) Auth
- Developer API (images/text):
```
export GOOGLE_API_KEY="YOUR_API_KEY"
export USE_DEVELOPER_API=true
```
- Cloud (TTS + GCS upload):
```
export GOOGLE_APPLICATION_CREDENTIALS="/absolute/path/to/service-account.json"
```
3) Minimal JSON (project.json)
```
{
"title": "Your/Repo",
"description": "One‑line project summary.",
"user_journey": "Short user flow text.",
"repository": "https://github.com/you/repo",
"tech_stack": "List or paragraph of tech names"
}
```
4) Run end‑to‑end
```
python run.py all \
--slides_json project.json \
--auto_narration \
--narration_model gemini-2.0-flash-001 \
--tts_backend cloud \
--out_dir media \
--gcs_uri gs://YOUR_BUCKET/slides_with_audio.mp4
```
Output: `media/slide_*.png`, `media/narration_*.wav`, `media/slides_with_audio.mp4`
5) Run the API
```
python main.py
# or: uvicorn visper.api.app:app --reload --port 8000
```
Docs: `http://localhost:8000/docs`
## Models and modes
- Images
- Default Imagen: Vertex (`imagen-4.0-generate-001`) or Developer API auto‑resolves `imagen‑3.x`.
- Gemini image models supported if set explicit